<?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>192683</bug_id>
          
          <creation_ts>2018-12-13 15:08:00 -0800</creation_ts>
          <short_desc>Add a class to bundle download configuration parameters together</short_desc>
          <delta_ts>2022-02-14 09:02:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Quesada">david_quesada</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ajrhowarth</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487735</commentid>
    <comment_count>0</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-12-13 15:08:00 -0800</bug_when>
    <thetext>After deciding the destination for a download, the UI process currently sends three things to the Network process - the destination path, a sandbox extension, and whether or not to allow overwriting an existing file. These things could be folded into one data structure, so it can be more easily expanded if we have more configuration about the download to send to the Network process in the future. For example, Cocoa could do this with the NSProgress URL. Conditionally adding a member to the theoretical &quot;DownloadConfiguration&quot; structure will require less code churn than conditionally adding a new parameter to every method signature where we pass the three current pieces of configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487736</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-13 15:08:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/46711066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487749</commentid>
    <comment_count>2</comment_count>
      <attachid>357265</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-12-13 15:44:39 -0800</bug_when>
    <thetext>Created attachment 357265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487751</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-13 15:47:51 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487775</commentid>
    <comment_count>4</comment_count>
      <attachid>357274</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-12-13 17:16:12 -0800</bug_when>
    <thetext>Created attachment 357274
Patch v2

Try to fix gtk and wpm builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487788</commentid>
    <comment_count>5</comment_count>
      <attachid>357274</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-13 17:54:53 -0800</bug_when>
    <thetext>Comment on attachment 357274
Patch v2

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

Nice cleanup. Thanks for updating the soup/glib classes.

None of these comments are important, just got curious and noticed a couple nits:

&gt; Source/WebKit/NetworkProcess/Downloads/Download.h:68
&gt; -    Download(DownloadManager&amp;, DownloadID, NetworkDataTask&amp;, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { });
&gt; +    Download(DownloadManager&amp;, DownloadID, NetworkDataTask&amp;, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { }, DownloadConfiguration&amp;&amp; = { });

Does it really ever make sense to create a Download without a DownloadConfiguration? I suspect not? Unless this really makes sense, it shouldn&apos;t be optional and should move before suggestedFilename.

&gt; Source/WebKit/NetworkProcess/Downloads/Download.h:70
&gt; -    Download(DownloadManager&amp;, DownloadID, NSURLSessionDownloadTask*, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { });
&gt; +    Download(DownloadManager&amp;, DownloadID, NSURLSessionDownloadTask*, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { }, DownloadConfiguration&amp;&amp; = { });

Ditto.

&gt; Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp:128
&gt; -    auto download = std::make_unique&lt;Download&gt;(*this, downloadID, nullptr, sessionID);
&gt; +    auto download = std::make_unique&lt;Download&gt;(*this, downloadID, nullptr, sessionID, String { }, WTFMove(configuration));

Yeah see, here you had to specify suggestedFilename even though it&apos;s not really important just to get to DownloadConfiguration.

&gt; Source/WebKit/NetworkProcess/NetworkDataTask.h:120
&gt; -    virtual void setPendingDownloadLocation(const String&amp; filename, SandboxExtension::Handle&amp;&amp;, bool /*allowOverwrite*/) { m_pendingDownloadLocation = filename; }
&gt; +    virtual void setPendingDownloadConfiguration(DownloadConfiguration&amp;&amp; downloadConfiguration) { m_pendingDownloadLocation = downloadConfiguration.destination; m_downloadConfiguration = WTFMove(downloadConfiguration); }

Hm, normally we limit our inlining to one-liners.

Looks like m_pendingDownloadLocation isn&apos;t really needed anymore and each use can be replaced by downloadConfiguration.destination, right? A bit more verbose, but it&apos;s often good practice to not make more copies of data than are really needed. Either way seems fine.

&gt; Source/WebKit/NetworkProcess/NetworkDataTask.h:123
&gt; +    DownloadConfiguration&amp; downloadConfiguration() { return m_downloadConfiguration; }

I bet a lot would break if a caller were to mutate the DownloadConfiguration, right? Should probably return const DownloadConfiguration&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487790</commentid>
    <comment_count>6</comment_count>
      <attachid>357279</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-12-13 18:01:59 -0800</bug_when>
    <thetext>Created attachment 357279
Patch v2.1

Almost exactly the same, but with a speculative attempt to try to fix the mac 32bit build. I&apos;m just attaching it here to run it through EWS, since it seems the failure is only caused by the additional files this patch adds to the unified sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487804</commentid>
    <comment_count>7</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-12-13 18:54:11 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #5)
&gt; Comment on attachment 357274 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357274&amp;action=review
&gt; 
&gt; Nice cleanup. Thanks for updating the soup/glib classes.
&gt; 
&gt; None of these comments are important, just got curious and noticed a couple
&gt; nits:
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/Download.h:68
&gt; &gt; -    Download(DownloadManager&amp;, DownloadID, NetworkDataTask&amp;, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { });
&gt; &gt; +    Download(DownloadManager&amp;, DownloadID, NetworkDataTask&amp;, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { }, DownloadConfiguration&amp;&amp; = { });
&gt; 
&gt; Does it really ever make sense to create a Download without a
&gt; DownloadConfiguration? I suspect not? Unless this really makes sense, it
&gt; shouldn&apos;t be optional and should move before suggestedFilename.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/Download.h:70
&gt; &gt; -    Download(DownloadManager&amp;, DownloadID, NSURLSessionDownloadTask*, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { });
&gt; &gt; +    Download(DownloadManager&amp;, DownloadID, NSURLSessionDownloadTask*, const PAL::SessionID&amp; sessionID, const String&amp; suggestedFilename = { }, DownloadConfiguration&amp;&amp; = { });
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp:128
&gt; &gt; -    auto download = std::make_unique&lt;Download&gt;(*this, downloadID, nullptr, sessionID);
&gt; &gt; +    auto download = std::make_unique&lt;Download&gt;(*this, downloadID, nullptr, sessionID, String { }, WTFMove(configuration));
&gt; 
&gt; Yeah see, here you had to specify suggestedFilename even though it&apos;s not
&gt; really important just to get to DownloadConfiguration.

Good point. I&apos;ll investigate placing the configuration before the filename as a required argument.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkDataTask.h:120
&gt; &gt; -    virtual void setPendingDownloadLocation(const String&amp; filename, SandboxExtension::Handle&amp;&amp;, bool /*allowOverwrite*/) { m_pendingDownloadLocation = filename; }
&gt; &gt; +    virtual void setPendingDownloadConfiguration(DownloadConfiguration&amp;&amp; downloadConfiguration) { m_pendingDownloadLocation = downloadConfiguration.destination; m_downloadConfiguration = WTFMove(downloadConfiguration); }
&gt; 
&gt; Hm, normally we limit our inlining to one-liners.
&gt; 
&gt; Looks like m_pendingDownloadLocation isn&apos;t really needed anymore and each
&gt; use can be replaced by downloadConfiguration.destination, right? A bit more
&gt; verbose, but it&apos;s often good practice to not make more copies of data than
&gt; are really needed. Either way seems fine.

I had noticed this and thought the same thing. I thought I had a FIXME lying around that I would remove m_pendingDownloadLocation before sending this patch out. I guess I didn&apos;t and it slipped my mind. I&apos;ll also look into this. (Then setPendingDownloadConfiguration() can return to an inlined one-liner.)

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkDataTask.h:123
&gt; &gt; +    DownloadConfiguration&amp; downloadConfiguration() { return m_downloadConfiguration; }
&gt; 
&gt; I bet a lot would break if a caller were to mutate the
&gt; DownloadConfiguration, right? Should probably return const
&gt; DownloadConfiguration&amp;.

You&apos;re right - it wouldn&apos;t be good for this to be unexpectedly mutated. The point of exposing as mutable was to enable moving the DownloadConfiguration from the NetworkDataTaskCocoa to create the Download when a data task is converted into a download. (See NetworkSessionCocoa.mm diffs) I wasn&apos;t sure what the best way to arrange this code was. I&apos;ll look at this some more to see if I can figure out a better way.

Thanks for the comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487808</commentid>
    <comment_count>8</comment_count>
      <attachid>357285</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-12-13 19:02:13 -0800</bug_when>
    <thetext>Created attachment 357285
Patch v2.2

Another attempt to fix the mac builds.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357265</attachid>
            <date>2018-12-13 15:44:39 -0800</date>
            <delta_ts>2018-12-13 17:16:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>file_192683.txt</filename>
            <type>text/plain</type>
            <size>80500</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDkwZjllZjQ1OGM5NmQ1Nzg3MDkxODMzNTc3YTljMWI4MzcwMjgxMGMNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFRodSBEZWMg
MTMgMTU6NDM6NDQgMjAxOCAtMDgwMA0KDQogICAgQWRkIGEgY2xhc3MgdG8gYnVuZGxlIGRvd25s
b2FkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0b2dldGhlcg0KICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODMNCiAgICByZGFyOi8vcHJvYmxlbS80Njcx
MTA2Ng0KICAgIA0KICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNv
dXJjZS9XZWJLaXQ6DQogICAgDQogICAgSW50cm9kdWNlIFdlYktpdDo6RG93bmxvYWRDb25maWd1
cmF0aW9uLCBhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBwaWVjZXMgb2YgZG93bmxvYWQtcmVsYXRl
ZA0KICAgIGNvbmZpZ3VyYXRpb24gLSB0aGUgZGVzdGluYXRpb24gcGF0aCwgYSBjb3JyZXNwb25k
aW5nIHNhbmRib3ggZXh0ZW5zaW9uLCBhbmQgYW4gImFsbG93DQogICAgb3ZlcndyaXRlIiBmbGFn
LiBUbyBzdXBwb3J0IHBvdGVudGlhbCB1c2UgY2FzZXMgd2hlcmUgY2VydGFpbiBhc3BlY3RzIG9m
IHRoZSBleGVjdXRpb24gb2YNCiAgICBhIGRvd25sb2FkIG1heSBiZSBjb25maWd1cmFibGUsIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBjb3VsZCBiZSBpbmNsdWRlZCBpbiB0aGlzIHN0cnVjdHVyZQ0K
ICAgIGFuZCB1c2VkIHdoZXJlIGFwcHJvcHJpYXRlLiBUaGlzIHdpbGwgcmVxdWlyZSBmZXdlciB0
ZWRpb3VzIGNvZGUgY2hhbmdlcyB0aGFuIGl0IHdvdWxkIHRvDQogICAgY29uZGl0aW9uYWxseSBp
bmNsdWRlIHRoZSBwYXJhbWV0ZXJzIGFzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgY2xhc3MgbWVt
YmVycyBldmVyeXdoZXJlDQogICAgdGhlIHRocmVlIGN1cnJlbnQgcGllY2VzIG9mIGNvbmZpZ3Vy
YXRpb24gYXJlIHBhc3NlZCBhcm91bmQgYW5kIHN0b3JlZC4gTWV0aG9kcyByZWxhdGVkIHRvDQog
ICAgImRlY2lkaW5nIHRoZSBkZXN0aW5hdGlvbiIgZm9yIGEgZG93bmxvYWQgaGFzIGJlZW4gcmVu
YW1lZCB0byByZWZsZWN0ICJkZWNpZGluZyB0aGUNCiAgICBjb25maWd1cmF0aW9uIiBmb3IgdGhl
IGRvd25sb2FkLCBzaW5jZSB0aGV5IG5vdyB3b3JrIHdpdGggRG93bmxvYWRDb25maWd1cmF0aW9u
Lg0KICAgIA0KICAgIFRoaXMgc3RydWN0dXJlIGlzIGV4cG9zZWQgaW4gQ29jb2EgQVBJIGJ5IHRo
ZSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gY2xhc3MgKGFuZCByZWxhdGVkDQogICAgX1dLRG93
bmxvYWREZWxlZ2F0ZSBhbmQgV0tQcm9jZXNzUG9vbCBtZXRob2RzIHRoYXQgd29yayB3aXRoIHRo
aXMgY2xhc3MpLiBJdCBkb2Vzbid0IHlldA0KICAgIGV4cG9zZSBhbnkgYWRkaXRpb25hbCBBUEkg
YmV5b25kIHRoZSBkZXN0aW5hdGlvbiBwYXRoIGFuZCBhbGxvd092ZXJ3cml0ZSBmbGFnLiBUaGlz
IHBhdGNoDQogICAgaXMganVzdCBzZXR1cCB0byBkbyBzby4NCiAgICANCiAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6RG93bmxvYWQ6OkRv
d25sb2FkKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQogICAgKFdlYktp
dDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOg0KICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6DQogICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6DQogICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQogICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlc3VtZURvd25sb2FkKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGlu
dWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCiAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoNCiAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToNCiAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25s
b2FkQ29uZmlndXJhdGlvbik6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOg0KICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToNCiAgICAqIFNoYXJlZC9Eb3dubG9h
ZENvbmZpZ3VyYXRpb24uY3BwOiBBZGRlZC4NCiAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3Vy
YXRpb246OmVuY29kZSBjb25zdCk6DQogICAgKFdlYktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9u
OjpkZWNvZGUpOg0KICAgICogU2hhcmVkL0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4N
CiAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OkRvd25sb2FkQ29uZmlndXJhdGlv
bik6DQogICAgKiBTb3VyY2VzLnR4dDoNCiAgICAqIFNvdXJjZXNDb2NvYS50eHQ6DQogICAgKiBV
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6DQogICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOg0KICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6DQogICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xp
ZW50KToNCiAgICAoV0tDb250ZXh0UmVzdW1lRG93bmxvYWQpOg0KICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOg0KICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURv
d25sb2FkRnJvbURhdGE6cGF0aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6DQogICAgKC1bV0tQcm9j
ZXNzUG9vbCBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpvcmlnaW5hdGluZ1dlYlZpZXc6Y29uZmln
dXJhdGlvbjpdKToNCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaDoNCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9u
Lmg6IEFkZGVkLg0KICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENvbmZpZ3Vy
YXRpb24ubW06IEFkZGVkLg0KICAgIChjaGVja1VSTEFyZ3VtZW50KToNCiAgICAoLVtfV0tEb3du
bG9hZENvbmZpZ3VyYXRpb24gZGVzdGluYXRpb25dKToNCiAgICAoLVtfV0tEb3dubG9hZENvbmZp
Z3VyYXRpb24gc2V0RGVzdGluYXRpb246XSk6DQogICAgKC1bX1dLRG93bmxvYWRDb25maWd1cmF0
aW9uIF9kb3dubG9hZENvbmZpZ3VyYXRpb25dKToNCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaDogQWRkZWQuDQogICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaDoNCiAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6DQogICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQuaDoNCiAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToN
CiAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQpOg0KICAgIChXZWJL
aXQ6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToNCiAgICAgICAgQ29uc3VsdCB0aGUgbmV3IF9XS0Rvd25sb2FkRGVsZWdhdGUgbWV0aG9k
IHRoYXQgYWxsb3dzIHNwZWNpZnlpbmcgYSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24uDQogICAg
KiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOg0KICAgIChXZWJLaXQ6OkRv
d25sb2FkUHJveHk6OmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3lu
Yyk6DQogICAgICAgIERyaXZlLWJ5IGZpeHVwIHRvIHIyMzgzODEuIE1vdmUgdGhlIG1fcHJvY2Vz
c1Bvb2wgbmlsLWNoZWNrIHRvIHRoZSB0b3Agb2YgdGhlDQogICAgICAgIGNvbXBsZXRpb24gaGFu
ZGxlci4gVGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGluZyBhIHNhbmRib3ggZXh0ZW5zaW9uIGZv
ciB0aGUgZGVzdGluYXRpb24NCiAgICAgICAgZmlsZSBpZiB3ZSBkb24ndCBhIHByb2Nlc3MgcG9v
bCAodGhlcmVmb3JlIGEgbmV0d29yayBwcm9jZXNzKSB0byBzZW5kIGl0IHRvLg0KICAgICogVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6DQogICAgKiBVSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW46DQogICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOg0KICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6
DQogICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoNCiAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOg0KICAgIA0KICAgIFRvb2xzOg0KICAgIA0KICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToNCiAgICAoLVtDb25maWd1cmF0
aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVDb25maWd1cmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOg0KICAgICgtW0NvbmZp
Z3VyYXRpb25EZWNpZGluZ0Rvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOg0K
ICAgIChURVNUKToNCiAgICAgICAgQWRkIGEgc2ltcGxlIEFQSSB0ZXN0IGZvciBjb25maWd1cmlu
ZyBhIGRvd25sb2FkIHZpYSB0aGUgX1dLRG93bmxvYWREZWxlZ2F0ZSBtZXRob2QNCiAgICAgICAg
dGhhdCBhc2tzIGZvciBhIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi4NCg0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4
IGM5YTQyNzM5N2MxLi41NmU2OTJiZWRlYSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSw5NSBAQA0K
KzIwMTgtMTItMTMgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisN
CisgICAgICAgIEFkZCBhIGNsYXNzIHRvIGJ1bmRsZSBkb3dubG9hZCBjb25maWd1cmF0aW9uIHBh
cmFtZXRlcnMgdG9nZXRoZXINCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTI2ODMNCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ2NzExMDY2DQorDQor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEludHJvZHVj
ZSBXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlvbiwgYSBzdHJ1Y3R1cmUgdG8gaG9sZCB0aGUg
cGllY2VzIG9mIGRvd25sb2FkLXJlbGF0ZWQNCisgICAgICAgIGNvbmZpZ3VyYXRpb24gLSB0aGUg
ZGVzdGluYXRpb24gcGF0aCwgYSBjb3JyZXNwb25kaW5nIHNhbmRib3ggZXh0ZW5zaW9uLCBhbmQg
YW4gImFsbG93DQorICAgICAgICBvdmVyd3JpdGUiIGZsYWcuIFRvIHN1cHBvcnQgcG90ZW50aWFs
IHVzZSBjYXNlcyB3aGVyZSBjZXJ0YWluIGFzcGVjdHMgb2YgdGhlIGV4ZWN1dGlvbiBvZg0KKyAg
ICAgICAgYSBkb3dubG9hZCBtYXkgYmUgY29uZmlndXJhYmxlLCBhZGRpdGlvbmFsIHBhcmFtZXRl
cnMgY291bGQgYmUgaW5jbHVkZWQgaW4gdGhpcyBzdHJ1Y3R1cmUNCisgICAgICAgIGFuZCB1c2Vk
IHdoZXJlIGFwcHJvcHJpYXRlLiBUaGlzIHdpbGwgcmVxdWlyZSBmZXdlciB0ZWRpb3VzIGNvZGUg
Y2hhbmdlcyB0aGFuIGl0IHdvdWxkIHRvDQorICAgICAgICBjb25kaXRpb25hbGx5IGluY2x1ZGUg
dGhlIHBhcmFtZXRlcnMgYXMgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCBjbGFzcyBtZW1iZXJzIGV2
ZXJ5d2hlcmUNCisgICAgICAgIHRoZSB0aHJlZSBjdXJyZW50IHBpZWNlcyBvZiBjb25maWd1cmF0
aW9uIGFyZSBwYXNzZWQgYXJvdW5kIGFuZCBzdG9yZWQuIE1ldGhvZHMgcmVsYXRlZCB0bw0KKyAg
ICAgICAgImRlY2lkaW5nIHRoZSBkZXN0aW5hdGlvbiIgZm9yIGEgZG93bmxvYWQgaGFzIGJlZW4g
cmVuYW1lZCB0byByZWZsZWN0ICJkZWNpZGluZyB0aGUNCisgICAgICAgIGNvbmZpZ3VyYXRpb24i
IGZvciB0aGUgZG93bmxvYWQsIHNpbmNlIHRoZXkgbm93IHdvcmsgd2l0aCBEb3dubG9hZENvbmZp
Z3VyYXRpb24uDQorDQorICAgICAgICBUaGlzIHN0cnVjdHVyZSBpcyBleHBvc2VkIGluIENvY29h
IEFQSSBieSB0aGUgX1dLRG93bmxvYWRDb25maWd1cmF0aW9uIGNsYXNzIChhbmQgcmVsYXRlZA0K
KyAgICAgICAgX1dLRG93bmxvYWREZWxlZ2F0ZSBhbmQgV0tQcm9jZXNzUG9vbCBtZXRob2RzIHRo
YXQgd29yayB3aXRoIHRoaXMgY2xhc3MpLiBJdCBkb2Vzbid0IHlldA0KKyAgICAgICAgZXhwb3Nl
IGFueSBhZGRpdGlvbmFsIEFQSSBiZXlvbmQgdGhlIGRlc3RpbmF0aW9uIHBhdGggYW5kIGFsbG93
T3ZlcndyaXRlIGZsYWcuIFRoaXMgcGF0Y2gNCisgICAgICAgIGlzIGp1c3Qgc2V0dXAgdG8gZG8g
c28uDQorDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6
DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6RG93bmxvYWQpOg0KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkOjpEb3dubG9hZCk6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250
aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6DQorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoNCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06DQorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6cmVzdW1lKToNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmg6DQorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnNldFBlbmRpbmdE
b3dubG9hZENvbmZpZ3VyYXRpb24pOg0KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Ojpkb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2tCbG9iLmNwcDoNCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OnNldFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoNCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpy
ZXN1bWVEb3dubG9hZCk6DQorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKToNCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
Ojpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOg0KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoNCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoNCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06DQorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06DQorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRC
ZWNvbWVEb3dubG9hZFRhc2s6XSk6DQorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZENvbmZpZ3Vy
YXRpb24uY3BwOiBBZGRlZC4NCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlv
bjo6ZW5jb2RlIGNvbnN0KToNCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKToNCisgICAgICAgICogU2hhcmVkL0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oOiBB
ZGRlZC4NCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlvbjo6RG93bmxvYWRD
b25maWd1cmF0aW9uKToNCisgICAgICAgICogU291cmNlcy50eHQ6DQorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQu
aDoNCisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKToNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHA6DQorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOg0KKyAgICAgICAg
KFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tOg0KKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzdW1lRG93
bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToNCisgICAgICAgICgtW1dL
UHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6b3JpZ2luYXRpbmdXZWJWaWV3OmNv
bmZpZ3VyYXRpb246XSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaDoNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZENvbmZpZ3VyYXRpb24uaDogQWRkZWQuDQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4NCisgICAgICAgIChjaGVja1VSTEFy
Z3VtZW50KToNCisgICAgICAgICgtW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBkZXN0aW5hdGlv
bl0pOg0KKyAgICAgICAgKC1bX1dLRG93bmxvYWRDb25maWd1cmF0aW9uIHNldERlc3RpbmF0aW9u
Ol0pOg0KKyAgICAgICAgKC1bX1dLRG93bmxvYWRDb25maWd1cmF0aW9uIF9kb3dubG9hZENvbmZp
Z3VyYXRpb25dKToNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oOiBBZGRlZC4NCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmg6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6DQorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5oOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW06DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQp
Og0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZUNvbmZpZ3VyYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUpOg0KKyAgICAgICAgICAgIENvbnN1bHQgdGhlIG5ldyBfV0tE
b3dubG9hZERlbGVnYXRlIG1ldGhvZCB0aGF0IGFsbG93cyBzcGVjaWZ5aW5nIGEgX1dLRG93bmxv
YWRDb25maWd1cmF0aW9uLg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGVjaWRlQ29uZmln
dXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKToNCisgICAgICAgICAgICBEcml2ZS1i
eSBmaXh1cCB0byByMjM4MzgxLiBNb3ZlIHRoZSBtX3Byb2Nlc3NQb29sIG5pbC1jaGVjayB0byB0
aGUgdG9wIG9mIHRoZQ0KKyAgICAgICAgICAgIGNvbXBsZXRpb24gaGFuZGxlci4gVGhlcmUncyBu
byBwb2ludCBpbiBjcmVhdGluZyBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0aGUgZGVzdGluYXRp
b24NCisgICAgICAgICAgICBmaWxlIGlmIHdlIGRvbid0IGEgcHJvY2VzcyBwb29sICh0aGVyZWZv
cmUgYSBuZXR3b3JrIHByb2Nlc3MpIHRvIHNlbmQgaXQgdG8uDQorICAgICAgICAqIFVJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW46DQorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHA6DQorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzdW1l
RG93bmxvYWQpOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoNCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQorDQogMjAxOC0xMi0xMyAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+DQogDQogICAgICAgICBbbWFjT1Nd
IFJlbW92ZSB3aXRoLXJlcG9ydCBmcm9tIDMgc2VydmljZXMgdGhhdCBhcmUgY3VycmVudGx5IG5l
ZWRlZCBvbiBtYWNPUw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcA0KaW5kZXggMTc3ZjliYTQ5YzMuLjA0NDI4YmQ5MzU1IDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHANCkBAIC00OSw5ICs0OSwxMCBAQA0KIG5hbWVzcGFjZSBXZWJLaXQgew0KIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOw0KIA0KLURvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXIm
IGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOZXR3b3JrRGF0YVRhc2sm
IGRvd25sb2FkLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZE5hbWUpDQorRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93
bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFzayYgZG93
bmxvYWQsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRDb25maWd1cmF0aW9u
KQ0KICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikNCiAgICAgLCBtX2Rv
d25sb2FkSUQoZG93bmxvYWRJRCkNCisgICAgLCBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbihXVEZN
b3ZlKGRvd25sb2FkQ29uZmlndXJhdGlvbikpDQogICAgICwgbV9kb3dubG9hZCgmZG93bmxvYWQp
DQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQ0KICAgICAsIG1fc3VnZ2VzdGVkTmFtZShz
dWdnZXN0ZWROYW1lKQ0KQEAgLTYyLDkgKzYzLDEwIEBAIERvd25sb2FkOjpEb3dubG9hZChEb3du
bG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOZXR3
DQogfQ0KIA0KICNpZiBQTEFURk9STShDT0NPQSkNCi1Eb3dubG9hZDo6RG93bmxvYWQoRG93bmxv
YWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgTlNVUkxT
ZXNzaW9uRG93bmxvYWRUYXNrKiBkb3dubG9hZCwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQ0KK0Rvd25sb2FkOjpEb3dubG9hZChE
b3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBO
U1VSTFNlc3Npb25Eb3dubG9hZFRhc2sqIGRvd25sb2FkLCBjb25zdCBQQUw6OlNlc3Npb25JRCYg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUsIERvd25sb2FkQ29uZmlndXJh
dGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlvbikNCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihk
b3dubG9hZE1hbmFnZXIpDQogICAgICwgbV9kb3dubG9hZElEKGRvd25sb2FkSUQpDQorICAgICwg
bV9kb3dubG9hZENvbmZpZ3VyYXRpb24oV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRpb24pKQ0K
ICAgICAsIG1fZG93bmxvYWRUYXNrKGRvd25sb2FkKQ0KICAgICAsIG1fc2Vzc2lvbklEKHNlc3Np
b25JRCkNCiAgICAgLCBtX3N1Z2dlc3RlZE5hbWUoc3VnZ2VzdGVkTmFtZSkNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaA0KaW5kZXggZDhm
YmRkMWQzOWQuLjEyMjZmNDAyMzFiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaA0KQEAgLTY1LDE0ICs2NSwxNCBAQCBjbGFzcyBX
ZWJQYWdlOw0KIGNsYXNzIERvd25sb2FkIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7DQog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7DQogcHVibGljOg0KLSAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3dubG9hZElE
LCBOZXR3b3JrRGF0YVRhc2smLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsNCisgICAgRG93bmxvYWQoRG93bmxv
YWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgTmV0d29ya0RhdGFUYXNrJiwgY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSwg
RG93bmxvYWRDb25maWd1cmF0aW9uJiYgPSB7IH0pOw0KICNpZiBQTEFURk9STShDT0NPQSkNCi0g
ICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgTlNVUkxTZXNzaW9uRG93
bmxvYWRUYXNrKiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7DQorICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdl
ciYsIERvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayosIGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0s
IERvd25sb2FkQ29uZmlndXJhdGlvbiYmID0geyB9KTsNCiAjZW5kaWYNCiANCiAgICAgfkRvd25s
b2FkKCk7DQogDQotICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7
DQorICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7
DQogICAgIHZvaWQgY2FuY2VsKCk7DQogI2lmIFBMQVRGT1JNKENPQ09BKQ0KICAgICB2b2lkIHB1
Ymxpc2hQcm9ncmVzcyhjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7DQpA
QCAtMTAxLDYgKzEwMSw3IEBAIHByaXZhdGU6DQogDQogICAgIERvd25sb2FkTWFuYWdlciYgbV9k
b3dubG9hZE1hbmFnZXI7DQogICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOw0KKyAgICBEb3du
bG9hZENvbmZpZ3VyYXRpb24gbV9kb3dubG9hZENvbmZpZ3VyYXRpb247DQogDQogICAgIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gbV9ibG9iRmlsZVJlZmVy
ZW5jZXM7DQogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHANCmluZGV4IDcyY2Q3ZTFmZTcxLi5jMDcxNTViYTU0OSAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHANCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwg
c3RkOjp1DQogICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsNCiB9DQog
DQotdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpDQordm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rv
d25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIERvd25sb2FkQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pDQogew0KICAgICBpZiAobV9kb3dubG9hZHNXYWl0aW5n
Rm9yRGVzdGluYXRpb24uY29udGFpbnMoZG93bmxvYWRJRCkpIHsNCiAgICAgICAgIGF1dG8gcGFp
ciA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnRha2UoZG93bmxvYWRJRCk7DQpA
QCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBl
bmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvDQogICAgICAgICBBU1NF
UlQoY29tcGxldGlvbkhhbmRsZXIpOw0KICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0Rvd25sb2Fk
cy5jb250YWlucyhkb3dubG9hZElEKSk7DQogDQotICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7DQorICAgICAgICBuZXR3b3JrRGF0YVRhc2st
PnNldFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
DQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OkRvd25sb2FkKTsNCiAg
ICAgICAgIGlmIChuZXR3b3JrRGF0YVRhc2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpT
dGF0ZTo6Q2FuY2VsaW5nIHx8IG5ldHdvcmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0
YVRhc2s6OlN0YXRlOjpDb21wbGV0ZWQpDQogICAgICAgICAgICAgcmV0dXJuOw0KQEAgLTEyMCwx
NCArMTIwLDE0IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdE
b3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvDQogICAgIH0NCiB9DQogDQotdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkNCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYg
Y29uZmlndXJhdGlvbikNCiB7DQogI2lmICFQTEFURk9STShDT0NPQSkNCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsNCiAjZWxzZQ0KLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7DQorICAgIGF1
dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJ
RCwgbnVsbHB0ciwgc2Vzc2lvbklELCBTdHJpbmcgeyB9LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsNCiANCi0gICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpKTsNCisgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRh
KTsNCiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7DQogICAg
IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7DQogI2VuZGlm
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaA0KaW5kZXggZmJhZDg4OGUwNzkuLmYwN2RmZTU1Yzk0IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oDQpAQCAtMjUsNiArMjUsNyBAQA0KIA0KICNwcmFnbWEgb25jZQ0KIA0KKyNp
bmNsdWRlICJEb3dubG9hZENvbmZpZ3VyYXRpb24uaCINCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5o
Ig0KICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCINCiAjaW5jbHVkZSAiUGVuZGluZ0Rvd25s
b2FkLmgiDQpAQCAtODAsOSArODEsOSBAQCBwdWJsaWM6DQogICAgIHZvaWQgY29udGludWVXaWxs
U2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOw0KICAg
ICB2b2lkIHdpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRh
c2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOw0KICAgICB2b2lkIGNvbnZlcnROZXR3
b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2Fk
PiYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsNCi0gICAgdm9pZCBjb250aW51
ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0
aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGJvb2wgYWxsb3dPdmVyd3JpdGUp
Ow0KKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihE
b3dubG9hZElELCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJik7DQogDQotICAgIHZvaWQgcmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7DQorICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25s
b2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgRG93bmxvYWRDb25m
aWd1cmF0aW9uJiYpOw0KIA0KICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQpOw0K
ICNpZiBQTEFURk9STShDT0NPQSkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQ0KaW5kZXggZDMw
ZTQ3OTJlYTIuLjQ1ZTUwZWNiYmM5IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQ0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQ0KQEAg
LTM1LDkgKzM1LDkgQEANCiANCiBuYW1lc3BhY2UgV2ViS2l0IHsNCiANCi12b2lkIERvd25sb2Fk
OjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpDQordm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSkNCiB7DQotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsNCisgICAgbV9zYW5kYm94
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUobV9kb3dubG9hZENv
bmZpZ3VyYXRpb24uc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KICAgICBpZiAobV9zYW5kYm94
RXh0ZW5zaW9uKQ0KICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7DQogDQpA
QCAtNDgsNiArNDgsNyBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsDQogICAgIH0NCiAgICAgYXV0
byYgY29jb2FTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSY+KCpuZXR3
b3JrU2Vzc2lvbik7DQogICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCld
KTsNCisgICAgYXV0byBwYXRoID0gbV9kb3dubG9hZENvbmZpZ3VyYXRpb24uZGVzdGluYXRpb247
DQogDQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIDxy
ZGFyOi8vcHJvYmxlbS8zNDc0NTE3MT4uDQogI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKQ0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oDQppbmRleCBlMTA0
Y2U1MzExYi4uOTE0NDA0YjU1OWEgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oDQpAQCAtMjUsNiArMjUsNyBAQA0KIA0KICNwcmFnbWEgb25j
ZQ0KIA0KKyNpbmNsdWRlICJEb3dubG9hZENvbmZpZ3VyYXRpb24uaCINCiAjaW5jbHVkZSAiRG93
bmxvYWRJRC5oIg0KICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiDQogI2luY2x1ZGUgPFdl
YkNvcmUvQ3JlZGVudGlhbC5oPg0KQEAgLTExNiw5ICsxMTcsMTAgQEAgcHVibGljOg0KICAgICAg
ICAgbV9wZW5kaW5nRG93bmxvYWQgPSAmcGVuZGluZ0Rvd25sb2FkOw0KICAgICB9DQogDQotICAg
IHZpcnR1YWwgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFsbG93T3ZlcndyaXRl
Ki8pIHsgbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiA9IGZpbGVuYW1lOyB9DQorICAgIHZpcnR1
YWwgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKERvd25sb2FkQ29uZmlndXJh
dGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlvbikgeyBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9u
ID0gZG93bmxvYWRDb25maWd1cmF0aW9uLmRlc3RpbmF0aW9uOyBtX2Rvd25sb2FkQ29uZmlndXJh
dGlvbiA9IFdURk1vdmUoZG93bmxvYWRDb25maWd1cmF0aW9uKTsgfQ0KICAgICBjb25zdCBTdHJp
bmcmIHBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbjsgfQ0KICAgICBib29sIGlzRG93bmxvYWQoKSBjb25zdCB7IHJldHVybiAh
IW1fcGVuZGluZ0Rvd25sb2FkSUQuZG93bmxvYWRJRCgpOyB9DQorICAgIERvd25sb2FkQ29uZmln
dXJhdGlvbiYgZG93bmxvYWRDb25maWd1cmF0aW9uKCkgeyByZXR1cm4gbV9kb3dubG9hZENvbmZp
Z3VyYXRpb247IH0NCiANCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBmaXJz
dFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UmVxdWVzdDsgfQ0KICAgICB2aXJ0dWFs
IFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9DQpA
QCAtMTQ2LDYgKzE0OCw3IEBAIHByb3RlY3RlZDoNCiAgICAgTmV0d29ya0RhdGFUYXNrQ2xpZW50
KiBtX2NsaWVudCB7IG51bGxwdHIgfTsNCiAgICAgUGVuZGluZ0Rvd25sb2FkKiBtX3BlbmRpbmdE
b3dubG9hZCB7IG51bGxwdHIgfTsNCiAgICAgRG93bmxvYWRJRCBtX3BlbmRpbmdEb3dubG9hZElE
Ow0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24gbV9kb3dubG9hZENvbmZpZ3VyYXRpb24geyB9
Ow0KICAgICBTdHJpbmcgbV91c2VyOw0KICAgICBTdHJpbmcgbV9wYXNzd29yZDsNCiAgICAgU3Ry
aW5nIG1fcGFydGl0aW9uOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwDQppbmRleCAwMzZlYzhlZmU4NS4uNGNjMGVkMjNkZmYg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwDQpAQCAtNDM0LDE2ICs0MzQsMTYgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tC
bG9iOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQ0KICAgICBy
ZWFkKCk7DQogfQ0KIA0KLXZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2b2lk
IE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93
bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRDb25maWd1cmF0aW9uKQ0KIHsNCi0gICAgTmV0
d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgeyB9LCBh
bGxvd092ZXJ3cml0ZSk7DQorICAgIE5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2Fk
Q29uZmlndXJhdGlvbihXVEZNb3ZlKGRvd25sb2FkQ29uZmlndXJhdGlvbikpOw0KIA0KICAgICBB
U1NFUlQoIW1fc2FuZGJveEV4dGVuc2lvbik7DQotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsN
CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1v
dmUobV9kb3dubG9hZENvbmZpZ3VyYXRpb24uc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KICAg
ICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQ0KICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5j
b25zdW1lKCk7DQogDQotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQ0KKyAgICBpZiAobV9kb3dubG9hZENv
bmZpZ3VyYXRpb24uYWxsb3dPdmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6OlllcyAmJiBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQ0KICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsNCiB9DQog
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuaA0KaW5kZXggMDBjYzFmOTBkZDEuLmVhZmFjNTRiZjU5IDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgNCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oDQpAQCAtNjIsNyAr
NjIsNyBAQCBwcml2YXRlOg0KICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlk
ZTsNCiAgICAgTmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fc3RhdGU7IH0NCiANCi0gICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlv
bihjb25zdCBTdHJpbmcmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFsbG93
T3ZlcndyaXRlKi8pIG92ZXJyaWRlOw0KKyAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZENvbmZp
Z3VyYXRpb24oRG93bmxvYWRDb25maWd1cmF0aW9uJiYpIG92ZXJyaWRlOw0KICAgICBTdHJpbmcg
c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdCBvdmVycmlkZTsNCiANCiAgICAgLy8gRmlsZVN0cmVh
bUNsaWVudCBtZXRob2RzLg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHANCmluZGV4IDBiMzFmZjc3MzNkLi5hMzRiOWQ0NGQyMiAxMDA2NDQNCi0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwDQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0KQEAgLTc4
OCw5ICs3ODgsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbw0KICAgICBkb3dubG9hZE1hbmFn
ZXIoKS5zdGFydERvd25sb2FkKG51bGxwdHIsIHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVz
dCwgc3VnZ2VzdGVkRmlsZW5hbWUpOw0KIH0NCiANCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1
bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkNCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBkb3dubG9hZENvbmZpZ3Vy
YXRpb24pDQogew0KLSAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9u
SUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkpOw0KKyAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9u
SUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIFdURk1vdmUoZG93bmxvYWRDb25maWd1cmF0aW9u
KSk7DQogfQ0KIA0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKERvd25sb2Fk
SUQgZG93bmxvYWRJRCkNCkBAIC04MjcsMTUgKzgyNywxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0
YVRhcw0KICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNwb25zZS5pc0F0dGFjaG1l
bnRXaXRoRmlsZW5hbWUoKSA/IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkgOiBuZXR3b3Jr
RGF0YVRhc2suc3VnZ2VzdGVkRmlsZW5hbWUoKTsNCiAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2VzdGVk
RmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOw0KIA0KLSAgICBkb3dubG9hZFByb3h5Q29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxv
YWRJRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSksIGRlc3RpbmF0aW9uSUQpOw0KKyAgICBkb3dubG9h
ZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVD
b25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMobmV0d29ya0RhdGFUYXNrLnBl
bmRpbmdEb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKSwgZGVzdGluYXRpb25JRCk7DQog
fQ0KIA0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2Fk
RGVzdGluYXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxs
b3dPdmVyd3JpdGUpDQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5n
RG93bmxvYWRDb25maWd1cmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgRG93bmxvYWRDb25m
aWd1cmF0aW9uJiYgZG93bmxvYWRDb25maWd1cmF0aW9uKQ0KIHsNCi0gICAgaWYgKGRlc3RpbmF0
aW9uLmlzRW1wdHkoKSkNCisgICAgaWYgKGRvd25sb2FkQ29uZmlndXJhdGlvbi5kZXN0aW5hdGlv
bi5pc0VtcHR5KCkpDQogICAgICAgICBkb3dubG9hZE1hbmFnZXIoKS5jYW5jZWxEb3dubG9hZChk
b3dubG9hZElEKTsNCiAgICAgZWxzZQ0KLSAgICAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGlu
dWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlv
biwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3JpdGUpOw0KKyAg
ICAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25m
aWd1cmF0aW9uKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWRDb25maWd1cmF0aW9uKSk7DQog
fQ0KIA0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgY20pDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oDQppbmRleCBm
NWMyZmVkYmZjNy4uYjMwMjhlMWFkNWUgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaA0KQEAgLTI2MiwxMyArMjYyLDEzIEBAIHByaXZhdGU6DQog
ICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7DQogDQogICAgIHZvaWQgZG93bmxvYWRSZXF1
ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsNCi0gICAgdm9pZCByZXN1
bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKTsNCisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93
bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENv
bmZpZ3VyYXRpb24mJik7DQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQog
I2lmIFBMQVRGT1JNKENPQ09BKQ0KICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERv
d25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCiAjZW5k
aWYNCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7DQotICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsNCisgICAgdm9pZCBjb250
aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93bmxvYWRJRCwgRG93bmxv
YWRDb25maWd1cmF0aW9uJiYpOw0KIA0KICAgICB2b2lkIHNldENhY2hlTW9kZWwodWludDMyX3Qp
Ow0KICAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOw0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluDQppbmRleCA1MDc5NWEyODIyNy4uZmQ2MjBjNjFiNzcgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluDQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluDQpA
QCAtNDcsMTQgKzQ3LDE0IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2Vp
dmVyIHsNCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5
cGVzLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zLCBWZWN0b3I8
U3RyaW5nPiBjb29raWVIb3N0TmFtZXMsIFZlY3RvcjxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1l
cywgdWludDY0X3QgY2FsbGJhY2tJRCkNCiANCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpDQotICAg
IFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkNCisgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6
OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIHN0
cnVjdCBXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQ0KICAgICBD
YW5jZWxEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkNCiAjaWYgUExBVEZP
Uk0oQ09DT0EpDQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KICNlbmRpZg0KIA0KICAgICBDb250aW51ZVdpbGxTZW5k
UmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QpDQotICAgIENvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGlu
YXRpb24oV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSkNCisgICAgQ29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRD
b25maWd1cmF0aW9uKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdHJ1Y3QgV2ViS2l0
OjpEb3dubG9hZENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikNCiANCiAjaWYgUExBVEZPUk0o
Q09DT0EpDQogICAgIFNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1MpDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oDQppbmRleCAwMzBmYTUyYmIyMy4uYTM4NDNmYzhkYzMgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaA0KQEAgLTM5LDYgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7DQogDQog
Y2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsNCiANCitzdHJ1Y3QgRG93bmxvYWRDb25maWd1cmF0
aW9uOw0KKw0KIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NvY29hIGZpbmFsIDogcHVibGljIE5ldHdv
cmtEYXRhVGFzayB7DQogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOw0KIHB1
YmxpYzoNCkBAIC02NSw3ICs2Nyw3IEBAIHB1YmxpYzoNCiAgICAgdm9pZCBpbnZhbGlkYXRlQW5k
Q2FuY2VsKCkgb3ZlcnJpZGUgeyB9DQogICAgIE5ldHdvcmtEYXRhVGFzazo6U3RhdGUgc3RhdGUo
KSBjb25zdCBvdmVycmlkZTsNCiANCi0gICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlv
bihjb25zdCBTdHJpbmcmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFsbG93
T3ZlcndyaXRlKi8pIG92ZXJyaWRlOw0KKyAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZENvbmZp
Z3VyYXRpb24oRG93bmxvYWRDb25maWd1cmF0aW9uJiYpIG92ZXJyaWRlOw0KICAgICBTdHJpbmcg
c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdCBvdmVycmlkZTsNCiANCiAgICAgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MoKSB7IHJldHVybiBtX25ldHdvcmtM
b2FkTWV0cmljczsgfQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tDQppbmRleCBjODQxNDFiOGRkNC4uMmRj
M2I5NzA5NjggMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tDQpAQCAtMzgyLDE5ICszODIsMTkgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYNCiAgICAgfQ0KIH0NCiANCi12b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZmlsZW5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpDQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0
UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBkb3du
bG9hZENvbmZpZ3VyYXRpb24pDQogew0KLSAgICBOZXR3b3JrRGF0YVRhc2s6OnNldFBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCB7IH0sIGFsbG93T3ZlcndyaXRlKTsNCisgICAgTmV0
d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKFdURk1vdmUoZG93
bmxvYWRDb25maWd1cmF0aW9uKSk7DQogDQogICAgIEFTU0VSVCghbV9zYW5kYm94RXh0ZW5zaW9u
KTsNCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShtX2Rvd25sb2FkQ29uZmlndXJhdGlv
bi5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24p
DQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCiANCiAgICAgbV90YXNr
LmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlv
bjsNCiANCi0gICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpDQotICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsNCisgICAgaWYgKG1fZG93bmxvYWRDb25m
aWd1cmF0aW9uLmFsbG93T3ZlcndyaXRlID09IEFsbG93T3ZlcndyaXRlOjpZZXMgJiYgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkNCisg
ICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik7DQogfQ0KIA0KIGJvb2wgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3Jk
QmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRs
ZXIpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tDQppbmRleCAyZDRhN2ZkYjBiOS4uOWZiMTczMGVkYjMgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQ0KQEAgLTU1NSw3ICs1NTUsNyBAQCAtICh2b2lkKVVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICopZGF0YQ0KICAgICAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0NvY29hPiBwcm90ZWN0ZWROZXR3
b3JrRGF0YVRhc2soKm5ldHdvcmtEYXRhVGFzayk7DQogICAgICAgICBhdXRvIGRvd25sb2FkSUQg
PSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7DQogICAgICAgICBhdXRvJiBk
b3dubG9hZE1hbmFnZXIgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3du
bG9hZE1hbmFnZXIoKTsNCi0gICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRU
YXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmls
ZW5hbWUoKSk7DQorICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywg
X3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1l
KCksIFdURk1vdmUobmV0d29ya0RhdGFUYXNrLT5kb3dubG9hZENvbmZpZ3VyYXRpb24oKSkpOw0K
ICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25s
b2FkKCpkb3dubG9hZCk7DQogICAgICAgICBBU1NFUlQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsNCiAg
ICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Rvd25sb2FkQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3du
bG9hZENvbmZpZ3VyYXRpb24uY3BwDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAuLjIzNWJiNzIxZThlDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Eb3dubG9hZENvbmZpZ3VyYXRpb24uY3BwDQpAQCAtMCwwICsxLDU5IEBADQorLyoNCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAq
DQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0K
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
DQorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
Tg0KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2lu
Y2x1ZGUgIkRvd25sb2FkQ29uZmlndXJhdGlvbi5oIg0KKw0KKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIg0KKw0KK25hbWVzcGFjZSBXZWJLaXQgew0KKw0KK3ZvaWQgRG93bmxvYWRDb25maWd1
cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdA0KK3sNCisgICAgZW5j
b2RlciA8PCBkZXN0aW5hdGlvbjsNCisgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZS5lbmNvZGUo
ZW5jb2Rlcik7DQorICAgIGVuY29kZXIgPDwgYWxsb3dPdmVyd3JpdGU7DQorfQ0KKw0KK3N0ZDo6
b3B0aW9uYWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBEb3dubG9hZENvbmZpZ3VyYXRpb246OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpDQorew0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRp
b24gY29uZmlnIHsgfTsNCisNCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWcuZGVzdGlu
YXRpb24pKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgYXV0byBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoZGVj
b2Rlcik7DQorICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7DQorDQorICAgIGNvbmZpZy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQorDQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY29uZmlnLmFsbG93T3ZlcndyaXRlKSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7DQorDQorICAgIHJldHVybiB7IFdURk1vdmUoY29uZmlnKSB9Ow0KK30NCisNCit9OyAvLyBu
YW1lc3BhY2UgV2ViS2l0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxv
YWRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3dubG9hZENvbmZpZ3Vy
YXRpb24uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42MTRiODIx
YmQ5Ng0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxvYWRD
b25maWd1cmF0aW9uLmgNCkBAIC0wLDAgKzEsNjkgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQN
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQor
ICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
Ug0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
Rg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLg0KKyAqLw0KKw0KKyNwcmFnbWEgb25jZQ0KKw0KKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiDQorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPg0KKw0KK25hbWVzcGFjZSBJUEMgew0K
K2NsYXNzIERlY29kZXI7DQorY2xhc3MgRW5jb2RlcjsNCit9DQorDQorbmFtZXNwYWNlIFdlYktp
dCB7DQorDQorZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsNCisNCitzdHJ1
Y3QgRG93bmxvYWRDb25maWd1cmF0aW9uIHsNCisNCisgICAgRG93bmxvYWRDb25maWd1cmF0aW9u
KCkgPSBkZWZhdWx0Ow0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24oY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbiwgQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUgPSBBbGxvd092ZXJ3cml0
ZTo6Tm8pDQorICAgICAgICA6IGRlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQ0KKyAgICAgICAgLCBh
bGxvd092ZXJ3cml0ZShhbGxvd092ZXJ3cml0ZSkNCisgICAgew0KKyAgICB9DQorDQorICAgIFN0
cmluZyBkZXN0aW5hdGlvbjsNCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7DQorICAgIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlOw0KKw0K
KyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsNCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7DQor
fTsNCisNCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQNCisNCituYW1lc3BhY2UgV1RGIHsNCisNCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6QWxsb3dPdmVyd3JpdGU+IHsNCisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwNCisgICAgICAgIFdlYktpdDo6QWxsb3dPdmVy
d3JpdGUsDQorICAgICAgICBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywNCisgICAgICAgIFdl
YktpdDo6QWxsb3dPdmVyd3JpdGU6Olllcw0KKyAgICA+Ow0KK307DQorDQorfSAvLyBuYW1lc3Bh
Y2UgV1RGOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0DQppbmRleCAwNTVlYzVlNTc2MS4uNWJjMGZmMDgxODggMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0DQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0DQpAQCAtMTAwLDYgKzEwMCw3IEBAIFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NhY2hlTW9kZWwu
Y3BwDQogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NvbnRleHRN
ZW51Q29udGV4dERhdGEuY3BwDQorU2hhcmVkL0Rvd25sb2FkQ29uZmlndXJhdGlvbi5jcHANCiBT
aGFyZWQvRWRpdG9yU3RhdGUuY3BwDQogU2hhcmVkL0ZvbnRJbmZvLmNwcA0KIFNoYXJlZC9GcmFt
ZUluZm9EYXRhLmNwcA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dA0KaW5kZXggNTVlYWY1OTEzMTcuLmYx
ODQyNTk2OTA4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0DQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQNCkBAIC0yMzAsNiArMjMwLDcgQEAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQ0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tDQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tDQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tEb3dubG9hZC5tbQ0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLm1tDQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tDQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQ0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQ0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgNCmluZGV4IDAyMzc2ZTFlMTEw
Li5hNzcwODgwZTA5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaA0KQEAgLTI1LDYgKzI1LDcgQEANCiANCiAjcHJhZ21hIG9uY2UNCiAN
CisjaW5jbHVkZSAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPg0KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4NCiANCkBA
IC0zOSw4ICs0MCw2IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7DQogY2xh
c3MgRG93bmxvYWRQcm94eTsNCiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsNCiBjbGFzcyBXZWJQcm90
ZWN0aW9uU3BhY2U7DQotDQotZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsN
CiB9DQogDQogbmFtZXNwYWNlIEFQSSB7DQpAQCAtNTMsNyArNTIsNyBAQCBwdWJsaWM6DQogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYpIHsgfQ0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiwgdWludDY0X3QpIHsgfQ0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFs
bG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0NCisgICAgdmly
dHVhbCB2b2lkIGRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlvbiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9DQogICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0NCiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9h
ZFByb3h5JikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgeyB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAN
CmluZGV4IGUzYjQ2OGI4MDExLi5kOGY1Zjg5M2ExNCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCkBAIC0yMDYsMTQgKzIwNiwxNCBAQCB2b2lkIFdL
Q29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBX
S0NvbnRleHREb3dubG9hZA0KICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRv
QVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOw0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwNCisgICAgICAgIHZvaWQgZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93
bmxvYWRDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbA0KICAgICAg
ICAgew0KICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUpDQotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOw0KIA0KICAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUg
PSBmYWxzZTsNCiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRp
b24oQWRvcHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShmaWxl
bmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
Ow0KLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dP
dmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgdG9XVEZTdHJpbmcoZGVzdGluYXRp
b24uZ2V0KCkpKTsNCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHRvV1RGU3RyaW5n
KGRlc3RpbmF0aW9uLmdldCgpKSwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVz
IDogQWxsb3dPdmVyd3JpdGU6Ok5vIH0pOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgdm9pZCBk
aWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwNCkBAIC0yODIs
NyArMjgyLDcgQEAgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLVVJMUmVxdWVzdFINCiANCiBXS0Rvd25sb2FkUmVmIFdL
Q29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RhdGFSZWYg
cmVzdW1lRGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkNCiB7DQotICAgIHJldHVybiB0b0FQSSh0b0lt
cGwoY29udGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIHRvSW1wbChyZXN1bWVEYXRh
KSwgdG9XVEZTdHJpbmcocGF0aCkpKTsNCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0
UmVmKS0+cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgdG9JbXBsKHJlc3VtZURhdGEpLCB7IHRvV1RG
U3RyaW5nKHBhdGgpIH0pKTsNCiB9DQogDQogdm9pZCBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlv
blVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsICBXS1R5
cGVSZWYgdXNlckRhdGFSZWYpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQ0KaW5kZXggYTE4MzgxYWIzNWEuLmVkMWUwNzNkZjg1IDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tDQpAQCAtNDMsNiArNDMsNyBAQA0KICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiDQog
I2ltcG9ydCAiX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiDQogI2ltcG9ydCAiX1dLQXV0b21hdGlv
blNlc3Npb25JbnRlcm5hbC5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbklu
dGVybmFsLmgiDQogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIg0KICNpbXBvcnQgIl9X
S0Rvd25sb2FkSW50ZXJuYWwuaCINCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIg0KQEAgLTU3OCw3ICs1NzksMTUgQEAgLSAoX1dLRG93bmxvYWQgKilfZG93
bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmll
dzoNCiANCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEg
KilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcNCiB7DQotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+
cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBwYXRoKSk7DQorICAgIHJldHVybiB3cmFwcGVyKF9w
cm9jZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCB7IHBhdGggfSkpOw0KK30NCisN
CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1
bWVEYXRhIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0
aW9uOihfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKil3a0NvbmZpZ3VyYXRpb24NCit7DQorICAg
IFdlYktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24geyB9Ow0KKyAgICBp
ZiAod2tDb25maWd1cmF0aW9uKQ0KKyAgICAgICAgY29uZmlndXJhdGlvbiA9IFt3a0NvbmZpZ3Vy
YXRpb24gX2Rvd25sb2FkQ29uZmlndXJhdGlvbl07DQorICAgIHJldHVybiB3cmFwcGVyKF9wcm9j
ZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KSk7DQogfQ0KIA0KIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0Zv
clRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5T
U3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaA0KaW5kZXggM2Rl
MmMwMzYyYmYuLjU1ZmRlMThkNDA3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oDQpAQCAtMzEsNiArMzEs
NyBAQA0KIEBjbGFzcyBXS1dlYlZpZXc7DQogQGNsYXNzIF9XS0F1dG9tYXRpb25TZXNzaW9uOw0K
IEBjbGFzcyBfV0tEb3dubG9hZDsNCitAY2xhc3MgX1dLRG93bmxvYWRDb25maWd1cmF0aW9uOw0K
IEBjbGFzcyBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247DQogQHByb3RvY29sIF9XS0F1dG9t
YXRpb25EZWxlZ2F0ZTsNCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsNCkBAIC04Myw2
ICs4NCw3IEBADQogDQogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsN
CiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1
bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7DQorLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
Y29uZmlndXJhdGlvbjooX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiAN
CiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVu
dCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuDQogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nl
c3M7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg
MDAwMDAwMDAwMDAuLjllZWM0NDBjMGQwDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgNCkBAIC0w
LDAgKzEsNDMgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBh
cmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
DQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
Uw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
Uw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPg0KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4NCisNCisjaWYgV0tfQVBJX0VOQUJMRUQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
Tg0KKw0KK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSkNCitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0DQor
DQorQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgbnVsbGFibGUpIE5TVVJMICpkZXN0aW5h
dGlvbjsNCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd092ZXJ3cml0ZTsNCisNCitA
ZW5kDQorDQorTlNfQVNTVU1FX05PTk5VTExfRU5EDQorDQorI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVEDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl
eCAwMDAwMDAwMDAwMC4uMzJlM2MxNDlhNjcNCi0tLSAvZGV2L251bGwNCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCkBA
IC0wLDAgKzEsNjQgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisg
KiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNp
bXBvcnQgImNvbmZpZy5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVy
bmFsLmgiDQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorc3RhdGljIHZvaWQgY2hlY2tVUkxB
cmd1bWVudChOU1VSTCAqdXJsKQ0KK3sNCisgICAgaWYgKHVybCAmJiAhW3VybCBpc0ZpbGVVUkxd
KQ0KKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgdXJsXTsNCit9DQorDQorQGltcGxlbWVu
dGF0aW9uIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiB7DQorICAgIFJldGFpblB0cjxOU1VSTD4g
bV9kZXN0aW5hdGlvbjsNCit9DQorDQorLSAoTlNVUkwgKilkZXN0aW5hdGlvbg0KK3sNCisgICAg
cmV0dXJuIG1fZGVzdGluYXRpb24uZ2V0KCk7DQorfQ0KKw0KKy0gKHZvaWQpc2V0RGVzdGluYXRp
b246KE5TVVJMICopZGVzdGluYXRpb24NCit7DQorICAgIGNoZWNrVVJMQXJndW1lbnQoZGVzdGlu
YXRpb24pOw0KKyAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb247DQorfQ0KKw0KKy0gKFdl
YktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uKV9kb3dubG9hZENvbmZpZ3VyYXRpb24NCit7DQor
ICAgIFdlYktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZyB7IH07DQorDQorICAgIGNv
bmZpZy5kZXN0aW5hdGlvbiA9IFttX2Rlc3RpbmF0aW9uIHBhdGhdOw0KKyAgICBjb25maWcuYWxs
b3dPdmVyd3JpdGUgPSBfYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZ
ZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXM7DQorDQorICAgIHJldHVybiBjb25maWc7
DQorfQ0KKw0KK0BlbmQNCisNCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0
aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg
MDAwMDAwMDAwMDAuLmViOThmZjAxNDEzDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwu
aA0KQEAgLTAsMCArMSwzOCBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cw0KKyAqIGFyZSBtZXQ6DQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycNCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywNCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTDQorICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTDQorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YNCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQor
DQorI2ltcG9ydCAiX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorI2lmIFdLX0FQSV9F
TkFCTEVEDQorDQorI2ltcG9ydCAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorQGludGVy
ZmFjZSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKCkNCisNCistIChXZWJLaXQ6OkRvd25sb2Fk
Q29uZmlndXJhdGlvbilfZG93bmxvYWRDb25maWd1cmF0aW9uOw0KKw0KK0BlbmQNCisNCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KaW5kZXggZThiZTQwZjg3MDUuLjYy
NTdiMTUwN2U2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4NCiANCiBAY2xhc3MgX1dLRG93bmxvYWQ7DQorQGNs
YXNzIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbjsNCiANCiBAcHJvdG9jb2wgX1dLRG93bmxvYWRE
ZWxlZ2F0ZSA8TlNPYmplY3Q+DQogQG9wdGlvbmFsDQpAQCAtMzgsNiArMzksNyBAQA0KIC0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZToo
TlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOw0KIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGg7DQogLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxl
dGlvbkhhbmRsZXI7DQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxl
bmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRG93bmxvYWRDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsNCiAtICh2b2lkKV9kb3dubG9hZERp
ZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsNCiAtICh2b2lkKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7DQog
LSAodm9pZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQ7DQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWRDbGllbnQuY3BwDQppbmRleCBlYWQ0ZjIzNDk5MS4uMmJjMjc5ZTcwY2IgMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcA0KQEAgLTc0LDEyICs3NCwxMiBAQCBwcml2YXRlOg0KICAgICAgICAgd2Via2l0
RG93bmxvYWROb3RpZnlQcm9ncmVzcyhkb3dubG9hZC5nZXQoKSwgbGVuZ3RoKTsNCiAgICAgfQ0K
IA0KLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGUNCisgICAgdm9pZCBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChEb3dubG9hZENvbmZp
Z3VyYXRpb24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlDQogICAgIHsNCiAgICAg
ICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOw0KICAgICAgICAgYm9vbCBhbGxvd092
ZXJ3cml0ZSA9IGZhbHNlOw0KICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gd2Via2l0RG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZC5nZXQo
KSwgZmlsZW5hbWUudXRmOCgpLCBhbGxvd092ZXJ3cml0ZSk7DQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3
cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVz
dGluYXRpb24sIGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zl
cndyaXRlOjpObyB9KTsNCiAgICAgfQ0KIA0KICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9u
KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3Ry
aW5nJiBwYXRoKSBvdmVycmlkZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5oDQppbmRleCAxMTg4NjZjYzZmMS4uYjdiMjFhODFjOWIgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQpAQCAtNTEs
NyArNTEsNyBAQCBwcml2YXRlOg0KICAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwg
RG93bmxvYWRQcm94eSYpIGZpbmFsOw0KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQ
cm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7DQogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBE
b3dubG9hZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsNCi0gICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFs
bG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsNCisgICAgdm9pZCBkZWNpZGVDb25maWd1
cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94
eSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxv
YWRDb25maWd1cmF0aW9uJiYpPiYmKSBmaW5hbDsNCiAgICAgdm9pZCBkaWRGaW5pc2goV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7DQogICAgIHZvaWQgZGlkRmFpbChXZWJQ
cm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgZmluYWw7DQogICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYpIGZpbmFsOw0KQEAgLTc3LDYgKzc3LDcgQEAgcHJpdmF0ZToNCiAgICAgICAgIGJvb2wg
ZG93bmxvYWREaWRSZWNlaXZlRGF0YSA6IDE7DQogICAgICAgICBib29sIGRvd25sb2FkRGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSA6IDE7DQogICAg
ICAgICBib29sIGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVD
b21wbGV0aW9uSGFuZGxlciA6IDE7DQorICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlQ29uZmln
dXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsNCiAgICAg
ICAgIGJvb2wgZG93bmxvYWREaWRGaW5pc2ggOiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERp
ZEZhaWwgOiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERpZENhbmNlbCA6IDE7DQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQ0KaW5kZXggM2I0
OTYyOGZkZjYuLmI4ZjA5ZmY0M2MwIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tDQpAQCAtNDAsNiArNDAsNyBAQA0KICNpbXBvcnQgIldl
YkNyZWRlbnRpYWwuaCINCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCINCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCINCisjaW1wb3J0ICJfV0tEb3dubG9hZENvbmZpZ3VyYXRpb25JbnRlcm5h
bC5oIg0KICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCINCiAjaW1wb3J0ICJfV0tEb3du
bG9hZEludGVybmFsLmgiDQogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+DQpAQCAtNTcs
NiArNTgsNyBAQCBEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2Fk
RGVsZWdhdGU+IGRlbGVnYXRlKQ0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJl
Y2VpdmVEYXRhID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25s
b2FkOmRpZFJlY2VpdmVEYXRhOildOw0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6YWxsb3dPdmVyd3JpdGU6KV07DQogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21w
bGV0aW9uSGFuZGxlcjopXTsNCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVD
b25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlQ29uZmln
dXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsNCiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRGaW5pc2g6KV07DQogICAgIG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGlkRmFpbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOildOw0KICAgICBtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9kb3dubG9hZERpZENhbmNlbDopXTsNCkBAIC0xNzcsMzIgKzE3OSw0MiBAQCB2
b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3du
bG9hZFByb3h5JiBkb3dubG9hZFBybw0KICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOw0KIH0NCiANCi12b2lkIERvd25s
b2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9j
ZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpDQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRDb25m
aWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQ0KIHsNCiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQ0KICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgp
KSB7DQogICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsNCiAg
ICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsNCi0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgZGVzdGluYXRpb24sIEFsbG93T3ZlcndyaXRlOjpZZXMgfSk7DQogICAg
ICAgICByZXR1cm47DQogICAgIH0NCiAjZW5kaWYNCiANCi0gICAgaWYgKCFtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dP
dmVyd3JpdGUgJiYgIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxlcikNCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgIGlmICghbV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUFsbG93T3ZlcndyaXRlICYmICFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgJiYgIW1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUNvbXBsZXRpb25IYW5kbGVyKQ0KKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7DQogDQotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCisgICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7DQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKndrRG93
bmxvYWRDb25maWd1cmF0aW9uKSB7DQorICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQ0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAg
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQorICAgICAgICAg
ICAgRG93bmxvYWRDb25maWd1cmF0aW9uIGRvd25sb2FkQ29uZmlndXJhdGlvbiB7IH07DQorICAg
ICAgICAgICAgaWYgKHdrRG93bmxvYWRDb25maWd1cmF0aW9uKQ0KKyAgICAgICAgICAgICAgICBk
b3dubG9hZENvbmZpZ3VyYXRpb24gPSBbd2tEb3dubG9hZENvbmZpZ3VyYXRpb24gX2Rvd25sb2Fk
Q29uZmlndXJhdGlvbl07DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShk
b3dubG9hZENvbmZpZ3VyYXRpb24pKTsNCisgICAgICAgIH0pLmdldCgpXTsNCisgICAgfSBlbHNl
IGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3Jp
dGUgPSBOTzsNCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lODQog
ICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOw0KICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5EDQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhbGxvd092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6
Tm8sIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVzdGluYXRp
b24sIGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRl
OjpObyB9KTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgp
LCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0
aW9uKSB7DQogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQ0KICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgY2hlY2tl
ci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQotICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3Jp
dGU6Ok5vLCBkZXN0aW5hdGlvbik7DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBk
ZXN0aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dP
dmVyd3JpdGU6Ok5vIH0pOw0KICAgICAgICAgfSkuZ2V0KCldOw0KICAgICB9DQogfQ0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0K
aW5kZXggNzUxMDJlZTNiMDAuLjBiYWNmZGVjYzdiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwDQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHANCkBAIC0xNzUsMjEgKzE3
NSwyMCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0
aCkNCiAgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgq
bV9wcm9jZXNzUG9vbCwgKnRoaXMsIGxlbmd0aCk7DQogfQ0KIA0KLXZvaWQgRG93bmxvYWRQcm94
eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElE
IGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpDQordm9pZCBEb3du
bG9hZFByb3h5OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMo
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQ0K
IHsNCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQ0KICAgICAgICAgcmV0dXJuOw0KICAgICANCi0g
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1l
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93
bmxvYWRJRF0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRp
b24pIHsNCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOw0KLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkNCi0gICAgICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQotDQorICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlQ29uZmlndXJhdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1l
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93
bmxvYWRJRF0gKERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pIHsNCiAgICAg
ICAgIGlmICghbV9wcm9jZXNzUG9vbCkNCiAgICAgICAgICAgICByZXR1cm47DQogDQorICAgICAg
ICBpZiAoIWNvbmZpZ3VyYXRpb24uZGVzdGluYXRpb24uaXNOdWxsKCkpDQorICAgICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbmZpZ3VyYXRpb24uZGVzdGluYXRpb24s
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgY29uZmlndXJhdGlvbi5zYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsNCisNCiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9
IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpDQotICAgICAgICAgICAgbmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZURlY2lkZVBlbmRp
bmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVzKSwgMCk7
DQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpDb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oZG93bmxvYWRJ
RCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSksIDApOw0KICAgICB9KTsNCiB9DQogDQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgNCmluZGV4
IGYyNDA0OTk1N2EyLi5mMDgxYjVhY2NiYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgNCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJp
dmF0ZToNCiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOw0KICAgICB2b2lkIGRpZENhbmNl
bChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOw0KICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOw0KLSAgICB2
b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJ
RCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7DQorICAgIHZvaWQgZGVjaWRlQ29u
ZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOw0KIA0KICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rv
d25sb2FkUHJveHlNYXA7DQogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9v
bDsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluDQppbmRleCBlYTU2ZGFiMWQ2Mi4uMmViNzkwZmFjNDMg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5tZXNzYWdlcy5pbg0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4NCkBAIC0yNCw3ICsyNCw3IEBAIG1lc3NhZ2VzIC0+
IERvd25sb2FkUHJveHkgew0KICAgICBEaWRTdGFydChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgQXRvbWljU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KICAgICBEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Y2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkNCiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSkpDQotICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lQXN5bmMoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCisgICAgRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUFzeW5jKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWUpDQogDQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQ0KICAgICBEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5n
dGgpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwDQppbmRleCA3
ZmRjYzJmZTgwYS4uNTU0NGM5MTdjZDcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcA0KQEAgLTEyNjEsMTcgKzEyNjEsMTYgQEAgRG93bmxvYWRQcm94eSog
V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IFJlc28NCiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7DQogfQ0KIA0KLURvd25sb2FkUHJv
eHkqIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRp
bmdQYWdlLCBjb25zdCBBUEk6OkRhdGEqIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkN
CitEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2ViUGFnZVBy
b3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBEb3dubG9h
ZENvbmZpZ3VyYXRpb24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogew0KICAgICBhdXRvKiBk
b3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShSZXNvdXJjZVJlcXVlc3QoKSwgaW5p
dGlhdGluZ1BhZ2UpOw0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5n
UGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCk7DQogDQotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlOw0KLSAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQ0KLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQorICAgIGlmICghZG93bmxvYWRD
b25maWd1cmF0aW9uLmRlc3RpbmF0aW9uLmlzRW1wdHkoKSkNCisgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShkb3dubG9hZENvbmZpZ3VyYXRpb24uZGVzdGluYXRpb24sIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgZG93bmxvYWRDb25maWd1cmF0aW9uLnNh
bmRib3hFeHRlbnNpb25IYW5kbGUpOw0KIA0KICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgew0K
LSAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBy
ZXN1bWVEYXRhLT5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
LCAwKTsNCisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpSZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2Fk
SUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBXVEZNb3ZlKGRvd25sb2FkQ29uZmln
dXJhdGlvbikpLCAwKTsNCiAgICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5Ow0KICAgICB9DQog
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgNCmluZGV4IDA3Njc5NGRm
MGNlLi40YzIzMWQ3MmRhNyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgNCkBAIC0yOSw2ICsyOSw3IEBADQogI2luY2x1ZGUgIkFQSU9iamVjdC5oIg0KICNpbmNs
dWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCINCiAjaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIg0KKyNpbmNsdWRlICJEb3dubG9hZENvbmZpZ3VyYXRpb24uaCINCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIg0KICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIN
CiAjaW5jbHVkZSAiSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oIg0K
QEAgLTE4OSw3ICsxOTAsNyBAQCBwdWJsaWM6DQogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRC
dW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1bmRs
ZVBhdGgoKTsgfQ0KIA0KICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZChXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsNCi0gICAgRG93bmxvYWRQcm94eSogcmVz
dW1lRG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRh
KiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOw0KKyAgICBEb3dubG9hZFByb3h5KiBy
ZXN1bWVEb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRh
dGEqIHJlc3VtZURhdGEsIERvd25sb2FkQ29uZmlndXJhdGlvbiYmID0geyB9KTsNCiANCiAgICAg
dm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6
T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0NCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KaW5kZXggNmIxODkwMDg0NTMuLjVlNDVlYjNjNzAy
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvag0KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ag0KQEAgLTEwNzgsOCArMTA3OCwxMCBAQA0KIAkJNjM2MzUzQTUxRTk4NThERjAwMDlGOEFGIC8q
IF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRkFCRTE5MUU5NzBENjUwMDMwMTFENSAvKiBf
V0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCiAJCTYzNzI4MUEyMjFBREM3NDQwMDlFMERFNiAv
KiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDYzNzI4MUEwMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jl
c3MuaCAqLzsgfTsNCiAJCTYzNzI4MUEzMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJv
Z3Jlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1tICovOyB9Ow0K
KwkJNjNCREU3REUyMTkyNDhDODAwOThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNCREU3REMyMTky
NDhDODAwOThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJhdGlvbi5oICovOyB9Ow0KIAkJNjNDMzJD
MjYxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMyQzI0MUU5ODEwRDkwMDY5
OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCiAJCTYzQzMyQzI4MUU5ODExOTAwMDY5OUJEMCAvKiBf
V0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMyQzI3MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9s
b2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCAqLzsgfTsNCisJCTYzRUU0MTc5MjFDMUJCMDQwMDdB
OUY3NCAvKiBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRUU0MTc3MjFDMUJCMDQwMDdBOUY3NCAvKiBfV0tE
b3dubG9hZENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9Ow0KIAkJNjVCODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5z
cGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Ow0KIAkJNkE1MDgwQkYxRjBFREFB
QTAwRTYxN0M1IC8qIFdLV2luZG93RmVhdHVyZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTUwODBCRTFGMEVEQUFBMDBFNjE3QzUgLyog
V0tXaW5kb3dGZWF0dXJlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9Ow0KIAkJNkI4MjFEREMxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggKi87IH07DQpAQCAtMzQ4Nyw5ICszNDg5LDE0IEBA
DQogCQk2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07DQogCQk2MzcyODFBMDIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFBy
b2dyZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRQcm9ncmVzcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9Ow0KIAkJNjM3MjgxQTEyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxv
YWRQcm9ncmVzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRG93bmxvYWRQcm9ncmVzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCisJCTYzQkRFN0RDMjE5MjQ4QzgwMDk4Qzkw
QiAvKiBEb3dubG9hZENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93bmxvYWRDb25m
aWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2M0JERTdERDIxOTI0
OEM4MDA5OEM5MEIgLyogRG93bmxvYWRDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvd25sb2FkQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQogCQk2M0MzMkMyMzFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9u
UG9zaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2M0MzMkMyNDFFOTgx
MEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07DQogCQk2M0MzMkMyNzFFOTgxMTkwMDA2OTlCRDAgLyogX1dLR2VvbG9jYXRp
b25Qb3NpdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
Ow0KKwkJNjNFRTQxNzcyMUMxQkIwNDAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsNCisJCTYzRUU0MTc4MjFDMUJCMDQwMDdBOUY3NCAvKiBfV0tEb3du
bG9hZENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tEb3dubG9hZENv
bmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2M0VFNDE3QjIx
QzFCQkU3MDA3QTlGNzQgLyogX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzRkFCRTE5MUU5NzBENjUwMDMwMTFENSAvKiBfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJ
CTY1NDZBODI5MTMwMDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0
ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsNCiAJCTY1NDZBODJBMTMwMDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5q
ZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07DQpAQCAtNTE1Miw2ICs1MTU5LDggQEANCiAJCQkJN0MwNjVGMjkxQzhDRDk1RjAwQzJE
OTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8sDQogCQkJCTdD
MDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaCAqLywNCiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQu
Y3BwICovLA0KKwkJCQk2M0JERTdEQzIxOTI0OEM4MDA5OEM5MEIgLyogRG93bmxvYWRDb25maWd1
cmF0aW9uLmggKi8sDQorCQkJCTYzQkRFN0REMjE5MjQ4QzgwMDk4QzkwQiAvKiBEb3dubG9hZENv
bmZpZ3VyYXRpb24uY3BwICovLA0KIAkJCSk7DQogCQkJcGF0aCA9IFNoYXJlZDsNCiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOw0KQEAgLTU5OTEsNiArNjAwMCw5IEBADQogCQkJCUExQTRGRTU4
MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLywNCiAJCQkJQTFBNEZFNjAxOERE
NTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCAqLywNCiAJCQkJQTFBNEZFNTkx
OERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLywNCisJCQkJNjNFRTQx
NzcyMUMxQkIwNDAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oICovLA0KKwkJ
CQk2M0VFNDE3ODIxQzFCQjA0MDA3QTlGNzQgLyogX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLm1t
ICovLA0KKwkJCQk2M0VFNDE3QjIxQzFCQkU3MDA3QTlGNzQgLyogX1dLRG93bmxvYWRDb25maWd1
cmF0aW9uSW50ZXJuYWwuaCAqLywNCiAJCQkJMzc5QTg3MzgxOEJCRkUwRjAwNTg4QUYyIC8qIF9X
S0VsZW1lbnRBY3Rpb24uaCAqLywNCiAJCQkJMzc5QTg3MzcxOEJCRkUwRjAwNTg4QUYyIC8qIF9X
S0VsZW1lbnRBY3Rpb24ubW0gKi8sDQogCQkJCTM3OUE4NzNCMThCQkZGMDcwMDU4OEFGMiAvKiBf
V0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaCAqLywNCkBAIC05MzM4LDYgKzkzNTAsNyBAQA0KIAkJ
CQlCQzRBNjI5MjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8sDQogCQkJCTFBMUZFQzFEMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLA0KIAkJCQlCQzRBNjJBODE0NzQ0RUM3MDA2QzY4MUEg
LyogV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sDQorCQkJCTYzQkRF
N0RFMjE5MjQ4QzgwMDk4QzkwQiAvKiBEb3dubG9hZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJz
ICovLA0KIAkJCQkzMUE1MDVGQTE2ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29udGV4dENsaWVudC5o
IGluIEhlYWRlcnMgKi8sDQogCQkJCUJDMDlCOEY5MTQ3NDYwRjcwMDVGNTYyNSAvKiBXZWJDb250
ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sDQogCQkJCUJDREUwNTlCMTFDREE4
QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovLA0KQEAgLTk1MzEsNiArOTU0NCw3IEBADQogCQkJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS0FycmF5LmggaW4gSGVhZGVycyAqLywNCiAJCQkJNTEyRjU4RjYxMkE4OEE1NDAwNjI5
NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovLA0KIAkJCQk1
MTJGNThGODEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLA0KKwkJCQk2M0VFNDE3OTIxQzFCQjA0MDA3QTlGNzQgLyogX1dL
RG93bmxvYWRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywNCiAJCQkJMzdDNEMwOEQxODE0
QUM1QzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywNCiAJCQkJ
MzdDNEMwOTUxODE0QjlFNjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLA0KIAkJCQkzN0M0QzA4NzE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9y
d2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLywNCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cNCmluZGV4IDQzYjFiMzA5OWQxLi43ZDlkNjM0NDkzNSAxMDA2
NDQNCi0tLSBhL1Rvb2xzL0NoYW5nZUxvZw0KKysrIGIvVG9vbHMvQ2hhbmdlTG9nDQpAQCAtMSwz
ICsxLDE4IEBADQorMjAxOC0xMi0xMyAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBw
bGUuY29tPg0KKw0KKyAgICAgICAgQWRkIGEgY2xhc3MgdG8gYnVuZGxlIGRvd25sb2FkIGNvbmZp
Z3VyYXRpb24gcGFyYW1ldGVycyB0b2dldGhlcg0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY4Mw0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDY3
MTEwNjYNCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOg0KKyAgICAg
ICAgKC1bQ29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVj
aWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToNCisgICAgICAgICgtW0NvbmZpZ3VyYXRpb25EZWNpZGluZ0Rvd25sb2FkRGVsZWdhdGUgX2Rv
d25sb2FkRGlkRmluaXNoOl0pOg0KKyAgICAgICAgKFRFU1QpOg0KKyAgICAgICAgICAgIEFkZCBh
IHNpbXBsZSBBUEkgdGVzdCBmb3IgY29uZmlndXJpbmcgYSBkb3dubG9hZCB2aWEgdGhlIF9XS0Rv
d25sb2FkRGVsZWdhdGUgbWV0aG9kDQorICAgICAgICAgICAgdGhhdCBhc2tzIGZvciBhIF9XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi4NCisNCiAyMDE4LTEyLTEzICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4NCiANCiAgICAgICAgIFVucmV2aWV3ZWQgLS0gdXBkYXRlIG15
IHN0YXR1cyB0byAicmV2aWV3ZXIiLg0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tDQppbmRleCBkYWUwZDI3MTBjOC4uOWNlM2QwZjcwYTgg
MTAwNjQ0DQotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tDQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tDQpAQCAtMzUsNiArMzUsNyBAQA0KICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCINCiAj
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4NCiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxv
YWQuaD4NCisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmg+DQogI2lt
cG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4NCiAjaW1wb3J0IDxXZWJLaXQvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+DQogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmg+DQpAQCAtNjIwLDUgKzYyMSw0MSBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3du
bG9hZENhbmNlbGVkV2hpbGVEZWNpZGluZ0Rlc3RpbmF0aW9uKQ0KICAgICBbVGVzdFByb3RvY29s
IHVucmVnaXN0ZXJdOw0KIH0NCiANCitAaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25EZWNpZGluZ0Rv
d25sb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4NCitAZW5kDQor
DQorQGltcGxlbWVudGF0aW9uIENvbmZpZ3VyYXRpb25EZWNpZGluZ0Rvd25sb2FkRGVsZWdhdGUg
ew0KKyAgICBTdHJpbmcgX2Rlc3RpbmF0aW9uUGF0aDsNCit9DQorDQorLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICopKWNvbXBsZXRpb25IYW5kbGVyDQoreyAgICAN
CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7
DQorICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOw0KKyAgICBFWFBFQ1RfVFJVRShm
aWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOw0KKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7DQor
DQorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tEb3dubG9hZENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsNCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0RGVzdGluYXRpb246
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfZGVzdGluYXRpb25QYXRoXV07DQorICAgIFtjb25maWd1
cmF0aW9uIHNldEFsbG93T3ZlcndyaXRlOllFU107DQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
bmZpZ3VyYXRpb24uZ2V0KCkpOw0KK30NCisNCistICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDoo
X1dLRG93bmxvYWQgKilkb3dubG9hZA0KK3sNCisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0VxdWFsQXRQYXRoOl9kZXN0aW5hdGlvblBhdGgg
YW5kUGF0aDpbc291cmNlVVJMIHBhdGhdXSk7DQorICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7DQorICAgIGlzRG9uZSA9IHRydWU7DQorfQ0KKw0K
K0BlbmQNCisNCitURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZERlY2lkZUNvbmZpZ3VyYXRpb24p
DQorew0KKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb252ZXJ0UmVz
cG9uc2VUb0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7DQorICAgIGF1
dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb25maWd1cmF0aW9uRGVjaWRpbmdEb3du
bG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7DQorICAgIHJ1blRlc3QobmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpLCBkb3dubG9hZERlbGVnYXRlLmdldCgpLCBzb3VyY2VVUkwpOw0KK30NCisNCiAj
ZW5kaWYNCiAjZW5kaWYNCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357274</attachid>
            <date>2018-12-13 17:16:12 -0800</date>
            <delta_ts>2018-12-13 17:16:12 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>file_192683.txt</filename>
            <type>text/plain</type>
            <size>82860</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDU4MzZkNWNhNGVlOTI0NDU3NjAxZTk4Y2NiNjk2MDNjY2E4YWM0ZWQNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFRodSBEZWMg
MTMgMTY6MjI6MjggMjAxOCAtMDgwMA0KDQogICAgQWRkIGEgY2xhc3MgdG8gYnVuZGxlIGRvd25s
b2FkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0b2dldGhlcg0KICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODMNCiAgICByZGFyOi8vcHJvYmxlbS80Njcx
MTA2Ng0KICAgIA0KICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNv
dXJjZS9XZWJLaXQ6DQogICAgDQogICAgSW50cm9kdWNlIFdlYktpdDo6RG93bmxvYWRDb25maWd1
cmF0aW9uLCBhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBwaWVjZXMgb2YgZG93bmxvYWQtcmVsYXRl
ZA0KICAgIGNvbmZpZ3VyYXRpb24gLSB0aGUgZGVzdGluYXRpb24gcGF0aCwgYSBjb3JyZXNwb25k
aW5nIHNhbmRib3ggZXh0ZW5zaW9uLCBhbmQgYW4gImFsbG93DQogICAgb3ZlcndyaXRlIiBmbGFn
LiBUbyBzdXBwb3J0IHBvdGVudGlhbCB1c2UgY2FzZXMgd2hlcmUgY2VydGFpbiBhc3BlY3RzIG9m
IHRoZSBleGVjdXRpb24gb2YNCiAgICBhIGRvd25sb2FkIG1heSBiZSBjb25maWd1cmFibGUsIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBjb3VsZCBiZSBpbmNsdWRlZCBpbiB0aGlzIHN0cnVjdHVyZQ0K
ICAgIGFuZCB1c2VkIHdoZXJlIGFwcHJvcHJpYXRlLiBUaGlzIHdpbGwgcmVxdWlyZSBmZXdlciB0
ZWRpb3VzIGNvZGUgY2hhbmdlcyB0aGFuIGl0IHdvdWxkIHRvDQogICAgY29uZGl0aW9uYWxseSBp
bmNsdWRlIHRoZSBwYXJhbWV0ZXJzIGFzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgY2xhc3MgbWVt
YmVycyBldmVyeXdoZXJlDQogICAgdGhlIHRocmVlIGN1cnJlbnQgcGllY2VzIG9mIGNvbmZpZ3Vy
YXRpb24gYXJlIHBhc3NlZCBhcm91bmQgYW5kIHN0b3JlZC4gTWV0aG9kcyByZWxhdGVkIHRvDQog
ICAgImRlY2lkaW5nIHRoZSBkZXN0aW5hdGlvbiIgZm9yIGEgZG93bmxvYWQgaGFzIGJlZW4gcmVu
YW1lZCB0byByZWZsZWN0ICJkZWNpZGluZyB0aGUNCiAgICBjb25maWd1cmF0aW9uIiBmb3IgdGhl
IGRvd25sb2FkLCBzaW5jZSB0aGV5IG5vdyB3b3JrIHdpdGggRG93bmxvYWRDb25maWd1cmF0aW9u
Lg0KICAgIA0KICAgIFRoaXMgc3RydWN0dXJlIGlzIGV4cG9zZWQgaW4gQ29jb2EgQVBJIGJ5IHRo
ZSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gY2xhc3MgKGFuZCByZWxhdGVkDQogICAgX1dLRG93
bmxvYWREZWxlZ2F0ZSBhbmQgV0tQcm9jZXNzUG9vbCBtZXRob2RzIHRoYXQgd29yayB3aXRoIHRo
aXMgY2xhc3MpLiBJdCBkb2Vzbid0IHlldA0KICAgIGV4cG9zZSBhbnkgYWRkaXRpb25hbCBBUEkg
YmV5b25kIHRoZSBkZXN0aW5hdGlvbiBwYXRoIGFuZCBhbGxvd092ZXJ3cml0ZSBmbGFnLiBUaGlz
IHBhdGNoDQogICAgaXMganVzdCBzZXR1cCB0byBkbyBzby4NCiAgICANCiAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6RG93bmxvYWQ6OkRv
d25sb2FkKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQogICAgKFdlYktp
dDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOg0KICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6DQogICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6DQogICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQogICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlc3VtZURvd25sb2FkKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGlu
dWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCiAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoNCiAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToNCiAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25s
b2FkQ29uZmlndXJhdGlvbik6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOg0KICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToNCiAgICAqIE5ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6DQogICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQogICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOiBEZWxldGVk
Lg0KICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmg6DQogICAg
KiBTaGFyZWQvRG93bmxvYWRDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuDQogICAgKFdlYktpdDo6
RG93bmxvYWRDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOg0KICAgIChXZWJLaXQ6OkRvd25s
b2FkQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToNCiAgICAqIFNoYXJlZC9Eb3dubG9hZENvbmZpZ3Vy
YXRpb24uaDogQWRkZWQuDQogICAgKFdlYktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uOjpEb3du
bG9hZENvbmZpZ3VyYXRpb24pOg0KICAgICogU291cmNlcy50eHQ6DQogICAgKiBTb3VyY2VzQ29j
b2EudHh0Og0KICAgICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOg0KICAgIChB
UEk6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToNCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOg0KICAgIChXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudCk6DQogICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToNCiAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToNCiAgICAoLVtXS1Byb2Nl
c3NQb29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOnBhdGg6b3JpZ2luYXRpbmdXZWJWaWV3Ol0p
Og0KICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6b3JpZ2luYXRp
bmdXZWJWaWV3OmNvbmZpZ3VyYXRpb246XSk6DQogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg6DQogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4NCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4NCiAgICAoY2hlY2tVUkxBcmd1bWVudCk6
DQogICAgKC1bX1dLRG93bmxvYWRDb25maWd1cmF0aW9uIGRlc3RpbmF0aW9uXSk6DQogICAgKC1b
X1dLRG93bmxvYWRDb25maWd1cmF0aW9uIHNldERlc3RpbmF0aW9uOl0pOg0KICAgICgtW19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbiBfZG93bmxvYWRDb25maWd1cmF0aW9uXSk6DQogICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVk
Lg0KICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmg6DQogICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOg0KICAgICogVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6DQogICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW06DQogICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xp
ZW50KToNCiAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSk6DQogICAgICAgIENvbnN1bHQgdGhlIG5ldyBfV0tEb3dubG9h
ZERlbGVnYXRlIG1ldGhvZCB0aGF0IGFsbG93cyBzcGVjaWZ5aW5nIGEgX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLg0KICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoN
CiAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQXN5bmMpOg0KICAgICAgICBEcml2ZS1ieSBmaXh1cCB0byByMjM4MzgxLiBN
b3ZlIHRoZSBtX3Byb2Nlc3NQb29sIG5pbC1jaGVjayB0byB0aGUgdG9wIG9mIHRoZQ0KICAgICAg
ICBjb21wbGV0aW9uIGhhbmRsZXIuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBzYW5k
Ym94IGV4dGVuc2lvbiBmb3IgdGhlIGRlc3RpbmF0aW9uDQogICAgICAgIGZpbGUgaWYgd2UgZG9u
J3QgYSBwcm9jZXNzIHBvb2wgKHRoZXJlZm9yZSBhIG5ldHdvcmsgcHJvY2VzcykgdG8gc2VuZCBp
dCB0by4NCiAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOg0KICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOg0KICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoNCiAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cmVzdW1lRG93bmxvYWQpOg0KICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6DQogICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoNCiAgICANCiAgICBUb29sczoNCiAg
ICANCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06DQog
ICAgKC1bQ29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVj
aWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToNCiAgICAoLVtDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZERpZEZpbmlzaDpdKToNCiAgICAoVEVTVCk6DQogICAgICAgIEFkZCBhIHNpbXBsZSBBUEkgdGVz
dCBmb3IgY29uZmlndXJpbmcgYSBkb3dubG9hZCB2aWEgdGhlIF9XS0Rvd25sb2FkRGVsZWdhdGUg
bWV0aG9kDQogICAgICAgIHRoYXQgYXNrcyBmb3IgYSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24u
DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nDQppbmRleCBiNTM4YTlkNjdiMC4uMjg5M2NhY2Q1ODAgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsOTkgQEANCisyMDE4LTEyLTEzICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2Fk
YUBhcHBsZS5jb20+DQorDQorICAgICAgICBBZGQgYSBjbGFzcyB0byBidW5kbGUgZG93bmxvYWQg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvZ2V0aGVyDQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjgzDQorICAgICAgICByZGFyOi8vcHJvYmxl
bS80NjcxMTA2Ng0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQor
ICAgICAgICBJbnRyb2R1Y2UgV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb24sIGEgc3RydWN0
dXJlIHRvIGhvbGQgdGhlIHBpZWNlcyBvZiBkb3dubG9hZC1yZWxhdGVkDQorICAgICAgICBjb25m
aWd1cmF0aW9uIC0gdGhlIGRlc3RpbmF0aW9uIHBhdGgsIGEgY29ycmVzcG9uZGluZyBzYW5kYm94
IGV4dGVuc2lvbiwgYW5kIGFuICJhbGxvdw0KKyAgICAgICAgb3ZlcndyaXRlIiBmbGFnLiBUbyBz
dXBwb3J0IHBvdGVudGlhbCB1c2UgY2FzZXMgd2hlcmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBl
eGVjdXRpb24gb2YNCisgICAgICAgIGEgZG93bmxvYWQgbWF5IGJlIGNvbmZpZ3VyYWJsZSwgYWRk
aXRpb25hbCBwYXJhbWV0ZXJzIGNvdWxkIGJlIGluY2x1ZGVkIGluIHRoaXMgc3RydWN0dXJlDQor
ICAgICAgICBhbmQgdXNlZCB3aGVyZSBhcHByb3ByaWF0ZS4gVGhpcyB3aWxsIHJlcXVpcmUgZmV3
ZXIgdGVkaW91cyBjb2RlIGNoYW5nZXMgdGhhbiBpdCB3b3VsZCB0bw0KKyAgICAgICAgY29uZGl0
aW9uYWxseSBpbmNsdWRlIHRoZSBwYXJhbWV0ZXJzIGFzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQg
Y2xhc3MgbWVtYmVycyBldmVyeXdoZXJlDQorICAgICAgICB0aGUgdGhyZWUgY3VycmVudCBwaWVj
ZXMgb2YgY29uZmlndXJhdGlvbiBhcmUgcGFzc2VkIGFyb3VuZCBhbmQgc3RvcmVkLiBNZXRob2Rz
IHJlbGF0ZWQgdG8NCisgICAgICAgICJkZWNpZGluZyB0aGUgZGVzdGluYXRpb24iIGZvciBhIGRv
d25sb2FkIGhhcyBiZWVuIHJlbmFtZWQgdG8gcmVmbGVjdCAiZGVjaWRpbmcgdGhlDQorICAgICAg
ICBjb25maWd1cmF0aW9uIiBmb3IgdGhlIGRvd25sb2FkLCBzaW5jZSB0aGV5IG5vdyB3b3JrIHdp
dGggRG93bmxvYWRDb25maWd1cmF0aW9uLg0KKw0KKyAgICAgICAgVGhpcyBzdHJ1Y3R1cmUgaXMg
ZXhwb3NlZCBpbiBDb2NvYSBBUEkgYnkgdGhlIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBjbGFz
cyAoYW5kIHJlbGF0ZWQNCisgICAgICAgIF9XS0Rvd25sb2FkRGVsZWdhdGUgYW5kIFdLUHJvY2Vz
c1Bvb2wgbWV0aG9kcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGNsYXNzKS4gSXQgZG9lc24ndCB5ZXQN
CisgICAgICAgIGV4cG9zZSBhbnkgYWRkaXRpb25hbCBBUEkgYmV5b25kIHRoZSBkZXN0aW5hdGlv
biBwYXRoIGFuZCBhbGxvd092ZXJ3cml0ZSBmbGFnLiBUaGlzIHBhdGNoDQorICAgICAgICBpcyBq
dXN0IHNldHVwIHRvIGRvIHNvLg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25sb2FkKToN
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6DQorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6RG93bmxvYWQpOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToN
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOg0KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOg0K
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6DQorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOg0KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6ZG93bmxvYWRDb25maWd1cmF0aW9uKToNCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6DQorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oOg0KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOg0KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6DQorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0
aW9uKToNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoNCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46DQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6DQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOg0KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZENvbmZp
Z3VyYXRpb24pOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOg0KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Np
b246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOg0KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpzZXRQZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik6IERlbGV0ZWQuDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5oOg0KKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRDb25maWd1cmF0aW9u
LmNwcDogQWRkZWQuDQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OmVu
Y29kZSBjb25zdCk6DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OmRl
Y29kZSk6DQorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZENvbmZpZ3VyYXRpb24uaDogQWRkZWQu
DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OkRvd25sb2FkQ29uZmln
dXJhdGlvbik6DQorICAgICAgICAqIFNvdXJjZXMudHh0Og0KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0Og0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6DQor
ICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
Og0KKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToNCisgICAgICAgIChXS0Nv
bnRleHRSZXN1bWVEb3dubG9hZCk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToNCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2Fk
RnJvbURhdGE6cGF0aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6DQorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOm9yaWdpbmF0aW5nV2ViVmlldzpjb25maWd1
cmF0aW9uOl0pOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLmg6IEFkZGVkLg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuDQorICAgICAgICAoY2hlY2tVUkxBcmd1bWVu
dCk6DQorICAgICAgICAoLVtfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gZGVzdGluYXRpb25dKToN
CisgICAgICAgICgtW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBzZXREZXN0aW5hdGlvbjpdKToN
CisgICAgICAgICgtW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBfZG93bmxvYWRDb25maWd1cmF0
aW9uXSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1
cmF0aW9uSW50ZXJuYWwuaDogQWRkZWQuDQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWREZWxlZ2F0ZS5oOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RG93bmxvYWRDbGllbnQuY3BwOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQuaDoNCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
Og0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xpZW50KToNCisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToNCisgICAgICAgICAgICBDb25zdWx0IHRoZSBuZXcgX1dLRG93bmxv
YWREZWxlZ2F0ZSBtZXRob2QgdGhhdCBhbGxvd3Mgc3BlY2lmeWluZyBhIF9XS0Rvd25sb2FkQ29u
ZmlndXJhdGlvbi4NCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZUNvbmZpZ3VyYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6DQorICAgICAgICAgICAgRHJpdmUtYnkgZml4
dXAgdG8gcjIzODM4MS4gTW92ZSB0aGUgbV9wcm9jZXNzUG9vbCBuaWwtY2hlY2sgdG8gdGhlIHRv
cCBvZiB0aGUNCisgICAgICAgICAgICBjb21wbGV0aW9uIGhhbmRsZXIuIFRoZXJlJ3Mgbm8gcG9p
bnQgaW4gY3JlYXRpbmcgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgdGhlIGRlc3RpbmF0aW9uDQor
ICAgICAgICAgICAgZmlsZSBpZiB3ZSBkb24ndCBhIHByb2Nlc3MgcG9vbCAodGhlcmVmb3JlIGEg
bmV0d29yayBwcm9jZXNzKSB0byBzZW5kIGl0IHRvLg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoNCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25s
b2FkKToNCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6DQorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KKw0KIDIwMTgtMTItMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFtQU09OXSBXZSBzaG91bGQg
bm90IG5lZWQgdG8gbmF2aWdhdGUgdG8gJ2Fib3V0OmJsYW5rJyB0byBzdXNwZW5kIHBhZ2VzDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwDQppbmRleCAxNzdmOWJhNDljMy4uMDQ0MjhiZDkzNTUgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KQEAgLTQ5LDkg
KzQ5LDEwIEBADQogbmFtZXNwYWNlIFdlYktpdCB7DQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
DQogDQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2Vy
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFzayYgZG93bmxvYWQsIGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkN
CitEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgTmV0d29ya0RhdGFUYXNrJiBkb3dubG9hZCwgY29uc3QgUEFM
OjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lLCBEb3du
bG9hZENvbmZpZ3VyYXRpb24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogICAgIDogbV9kb3du
bG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2VyKQ0KICAgICAsIG1fZG93bmxvYWRJRChkb3dubG9h
ZElEKQ0KKyAgICAsIG1fZG93bmxvYWRDb25maWd1cmF0aW9uKFdURk1vdmUoZG93bmxvYWRDb25m
aWd1cmF0aW9uKSkNCiAgICAgLCBtX2Rvd25sb2FkKCZkb3dubG9hZCkNCiAgICAgLCBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpDQogICAgICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpDQpA
QCAtNjIsOSArNjMsMTAgQEAgRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93
bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHcNCiB9DQogDQogI2lmIFBM
QVRGT1JNKENPQ09BKQ0KLURvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25s
b2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRh
c2sqIGRvd25sb2FkLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpDQorRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYg
ZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25s
b2FkVGFzayogZG93bmxvYWQsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRD
b25maWd1cmF0aW9uKQ0KICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikN
CiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkNCisgICAgLCBtX2Rvd25sb2FkQ29uZmln
dXJhdGlvbihXVEZNb3ZlKGRvd25sb2FkQ29uZmlndXJhdGlvbikpDQogICAgICwgbV9kb3dubG9h
ZFRhc2soZG93bmxvYWQpDQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQ0KICAgICAsIG1f
c3VnZ2VzdGVkTmFtZShzdWdnZXN0ZWROYW1lKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oDQppbmRleCBkOGZiZGQxZDM5ZC4uMTIyNmY0
MDIzMWIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oDQpAQCAtNjUsMTQgKzY1LDE0IEBAIGNsYXNzIFdlYlBhZ2U7DQogY2xhc3Mg
RG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsNCiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRG93bmxvYWQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsNCiBwdWJsaWM6DQot
ICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFz
ayYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSB7IH0pOw0KKyAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3du
bG9hZElELCBOZXR3b3JrRGF0YVRhc2smLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9LCBEb3dubG9hZENvbmZpZ3Vy
YXRpb24mJiA9IHsgfSk7DQogI2lmIFBMQVRGT1JNKENPQ09BKQ0KLSAgICBEb3dubG9hZChEb3du
bG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sqLCBjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lID0geyB9KTsNCisgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwg
TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSwgRG93bmxvYWRDb25maWd1
cmF0aW9uJiYgPSB7IH0pOw0KICNlbmRpZg0KIA0KICAgICB+RG93bmxvYWQoKTsNCiANCi0gICAg
dm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisgICAgdm9pZCByZXN1
bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsNCiAgICAgdm9pZCBjYW5j
ZWwoKTsNCiAjaWYgUExBVEZPUk0oQ09DT0EpDQogICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNv
bnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCkBAIC0xMDEsNiArMTAxLDcg
QEAgcHJpdmF0ZToNCiANCiAgICAgRG93bmxvYWRNYW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdlcjsN
CiAgICAgRG93bmxvYWRJRCBtX2Rvd25sb2FkSUQ7DQorICAgIERvd25sb2FkQ29uZmlndXJhdGlv
biBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbjsNCiANCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2Jsb2JGaWxlUmVmZXJlbmNlczsNCiAgICAgUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KaW5kZXggNzJjZDdlMWZlNzEuLmMwNzE1NWJhNTQ5IDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcA0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3
b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnUNCiAgICAgbV9w
ZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdE
b3dubG9hZD4oV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOw0KIH0NCiANCi12b2lkIERvd25sb2Fk
TWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2b2lk
IERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0
aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgY29uZmln
dXJhdGlvbikNCiB7DQogICAgIGlmIChtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5j
b250YWlucyhkb3dubG9hZElEKSkgew0KICAgICAgICAgYXV0byBwYWlyID0gbV9kb3dubG9hZHNX
YWl0aW5nRm9yRGVzdGluYXRpb24udGFrZShkb3dubG9hZElEKTsNCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCBkb3dubG8NCiAgICAgICAgIEFTU0VSVChjb21wbGV0aW9uSGFu
ZGxlcik7DQogICAgICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25s
b2FkSUQpKTsNCiANCi0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFs
bG93T3ZlcndyaXRlKTsNCisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25s
b2FkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsNCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6RG93bmxvYWQpOw0KICAgICAgICAgaWYgKG5ldHdv
cmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDYW5jZWxpbmcg
fHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNv
bXBsZXRlZCkNCiAgICAgICAgICAgICByZXR1cm47DQpAQCAtMTIwLDE0ICsxMjAsMTQgQEAgdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG8NCiAgICAgfQ0KIH0NCiANCi12b2lkIERvd25sb2FkTWFuYWdl
cjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQ0KK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQ0K
IHsNCiAjaWYgIVBMQVRGT1JNKENPQ09BKQ0KICAgICBub3RJbXBsZW1lbnRlZCgpOw0KICNlbHNl
DQotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywg
ZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsNCisgICAgYXV0byBkb3dubG9hZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNz
aW9uSUQsIFN0cmluZyB7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbikpOw0KIA0KLSAgICBkb3du
bG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpOw0KKyAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEpOw0KICAgICBBU1NFUlQo
IW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCiAgICAgbV9kb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5o
DQppbmRleCBmYmFkODg4ZTA3OS4uZjA3ZGZlNTVjOTQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaA0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgNCkBA
IC0yNSw2ICsyNSw3IEBADQogDQogI3ByYWdtYSBvbmNlDQogDQorI2luY2x1ZGUgIkRvd25sb2Fk
Q29uZmlndXJhdGlvbi5oIg0KICNpbmNsdWRlICJEb3dubG9hZElELmgiDQogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFzay5oIg0KICNpbmNsdWRlICJQZW5kaW5nRG93bmxvYWQuaCINCkBAIC04MCw5
ICs4MSw5IEBAIHB1YmxpYzoNCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7DQogICAgIHZvaWQgd2lsbERlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7DQogICAgIHZvaWQgY29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9h
ZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJiwgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOw0KLSAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7DQorICAgIHZvaWQgY29u
dGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKERvd25sb2FkSUQsIERvd25s
b2FkQ29uZmlndXJhdGlvbiYmKTsNCiANCi0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisgICAg
dm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJik7DQog
DQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQogI2lmIFBMQVRGT1JNKENP
Q09BKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQppbmRleCBkMzBlNDc5MmVhMi4uNDVlNTBl
Y2JiYzkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQpAQCAtMzUsOSArMzUsOSBAQA0K
IA0KIG5hbWVzcGFjZSBXZWJLaXQgew0KIA0KLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit2b2lkIERvd25s
b2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQ0KIHsNCi0g
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5zYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSk7DQogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pDQogICAg
ICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCiANCkBAIC00OCw2ICs0OCw3IEBA
IHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwNCiAgICAgfQ0KICAgICBhdXRvJiBjb2NvYVNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oKm5ldHdvcmtTZXNzaW9uKTsNCiAg
ICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJl
c3VtZURhdGEuZGF0YSgpIGxlbmd0aDpyZXN1bWVEYXRhLnNpemUoKV0pOw0KKyAgICBhdXRvIHBh
dGggPSBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5kZXN0aW5hdGlvbjsNCiANCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM0
NzQ1MTcxPi4NCiAjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgNCmluZGV4IGUxMDRjZTUzMTFiLi45MTQ0MDRi
NTU5YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgNCkBAIC0yNSw2ICsyNSw3IEBADQogDQogI3ByYWdtYSBvbmNlDQogDQorI2luY2x1ZGUg
IkRvd25sb2FkQ29uZmlndXJhdGlvbi5oIg0KICNpbmNsdWRlICJEb3dubG9hZElELmgiDQogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCINCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFs
Lmg+DQpAQCAtMTE2LDkgKzExNywxMCBAQCBwdWJsaWM6DQogICAgICAgICBtX3BlbmRpbmdEb3du
bG9hZCA9ICZwZW5kaW5nRG93bmxvYWQ7DQogICAgIH0NCiANCi0gICAgdmlydHVhbCB2b2lkIHNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgeyBtX3BlbmRpbmdE
b3dubG9hZExvY2F0aW9uID0gZmlsZW5hbWU7IH0NCisgICAgdmlydHVhbCB2b2lkIHNldFBlbmRp
bmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRD
b25maWd1cmF0aW9uKSB7IG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24gPSBkb3dubG9hZENvbmZp
Z3VyYXRpb24uZGVzdGluYXRpb247IG1fZG93bmxvYWRDb25maWd1cmF0aW9uID0gV1RGTW92ZShk
b3dubG9hZENvbmZpZ3VyYXRpb24pOyB9DQogICAgIGNvbnN0IFN0cmluZyYgcGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOyB9
DQogICAgIGJvb2wgaXNEb3dubG9hZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wZW5kaW5nRG93bmxv
YWRJRC5kb3dubG9hZElEKCk7IH0NCisgICAgRG93bmxvYWRDb25maWd1cmF0aW9uJiBkb3dubG9h
ZENvbmZpZ3VyYXRpb24oKSB7IHJldHVybiBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbjsgfQ0KIA0K
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9DQogICAgIHZpcnR1YWwgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0NCkBAIC0xNDYsNiArMTQ4LDcg
QEAgcHJvdGVjdGVkOg0KICAgICBOZXR3b3JrRGF0YVRhc2tDbGllbnQqIG1fY2xpZW50IHsgbnVs
bHB0ciB9Ow0KICAgICBQZW5kaW5nRG93bmxvYWQqIG1fcGVuZGluZ0Rvd25sb2FkIHsgbnVsbHB0
ciB9Ow0KICAgICBEb3dubG9hZElEIG1fcGVuZGluZ0Rvd25sb2FkSUQ7DQorICAgIERvd25sb2Fk
Q29uZmlndXJhdGlvbiBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbiB7IH07DQogICAgIFN0cmluZyBt
X3VzZXI7DQogICAgIFN0cmluZyBtX3Bhc3N3b3JkOw0KICAgICBTdHJpbmcgbV9wYXJ0aXRpb247
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHANCmluZGV4IDAzNmVjOGVmZTg1Li40Y2MwZWQyM2RmZiAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHANCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHANCkBA
IC00MzQsMTYgKzQzNCwxNiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpDQogICAgIHJlYWQoKTsNCiB9DQogDQot
dm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQ0KK3ZvaWQgTmV0d29ya0RhdGFUYXNr
QmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZENvbmZpZ3VyYXRp
b24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogew0KLSAgICBOZXR3b3JrRGF0YVRhc2s6OnNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCB7IH0sIGFsbG93T3ZlcndyaXRlKTsN
CisgICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKFdU
Rk1vdmUoZG93bmxvYWRDb25maWd1cmF0aW9uKSk7DQogDQogICAgIEFTU0VSVCghbV9zYW5kYm94
RXh0ZW5zaW9uKTsNCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBtX3NhbmRib3hF
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShtX2Rvd25sb2FkQ29u
ZmlndXJhdGlvbi5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQogICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pDQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCiANCi0g
ICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbikpDQorICAgIGlmIChtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5hbGxv
d092ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVzICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpDQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOw0KIH0NCiANCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oDQppbmRleCAwMGNj
MWY5MGRkMS4uZWFmYWM1NGJmNTkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgNCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6
DQogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOw0KICAgICBOZXR3b3Jr
RGF0YVRhc2s6OlN0YXRlIHN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdGF0ZTsg
fQ0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3Zl
cnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9h
ZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50IG1ldGhvZHMu
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0K
aW5kZXggMGIzMWZmNzczM2QuLmEzNGI5ZDQ0ZDIyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwDQpAQCAtNzg4LDkgKzc4OCw5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIERvd25sb2FkSUQgZG93bmxvDQogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxv
YWQobnVsbHB0ciwgc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWRGaWxl
bmFtZSk7DQogfQ0KIA0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlvbikNCiB7DQotICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQorICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRpb24pKTsNCiB9DQogDQogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQ0K
QEAgLTgyNywxNSArODI3LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93
bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzDQogICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgp
ID8gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0
ZWRGaWxlbmFtZSgpOw0KICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVzcG9u
c2UubWltZVR5cGUoKSk7DQogDQotICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQXN5bmMobmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCksIHN1Z2dlc3Rl
ZEZpbGVuYW1lKSwgZGVzdGluYXRpb25JRCk7DQorICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZUNvbmZpZ3VyYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhuZXR3b3JrRGF0YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQo
KSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBkZXN0aW5hdGlvbklEKTsNCiB9DQogDQotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3du
bG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3Vy
YXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBkb3du
bG9hZENvbmZpZ3VyYXRpb24pDQogew0KLSAgICBpZiAoZGVzdGluYXRpb24uaXNFbXB0eSgpKQ0K
KyAgICBpZiAoZG93bmxvYWRDb25maWd1cmF0aW9uLmRlc3RpbmF0aW9uLmlzRW1wdHkoKSkNCiAg
ICAgICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOw0KICAg
ICBlbHNlDQotICAgICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdE
b3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7DQorICAgICAgICBkb3dubG9hZE1h
bmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRpb24pKTsNCiB9DQogDQogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgNCmluZGV4IGY1YzJmZWRiZmM3Li5iMzAy
OGUxYWQ1ZSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oDQpAQCAtMjYyLDEzICsyNjIsMTMgQEAgcHJpdmF0ZToNCiAgICAgdm9pZCBjbGVhckRp
c2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsNCiANCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9u
SUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOw0KLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIERvd25sb2FkQ29uZmlndXJhdGlvbiYmKTsN
CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsNCiAjaWYgUExBVEZPUk0oQ09D
T0EpDQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwgY29uc3Qg
VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KICNlbmRpZg0KICAgICB2b2lkIGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsNCi0gICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOw0KKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZElELCBEb3dubG9hZENvbmZpZ3VyYXRpb24m
Jik7DQogDQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7DQogICAgIHZvaWQgYWxs
b3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCmluZGV4IDUwNzk1
YTI4MjI3Li5mZDYyMGM2MWI3NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCkBAIC00NywxNCArNDcsMTQg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgew0KICAgICBEZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhv
c3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50NjRfdCBjYWxs
YmFja0lEKQ0KIA0KICAgICBEb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCi0gICAgUmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KKyAgICBSZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgc3RydWN0IFdlYktpdDo6RG93
bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pDQogICAgIENhbmNlbERvd25sb2FkKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQ0KICNpZiBQTEFURk9STShDT0NPQSkNCiAgICAg
UHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFVS
TCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpDQogI2VuZGlmDQogDQogICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkN
Ci0gICAgQ29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3Zlcndy
aXRlKQ0KKyAgICBDb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0cnVjdCBXZWJLaXQ6OkRvd25sb2FkQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKQ0KIA0KICNpZiBQTEFURk9STShDT0NPQSkNCiAgICAgU2V0
UU9TKGludCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUykNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgN
CmluZGV4IDAzMGZhNTJiYjIzLi5hMzg0M2ZjOGRjMyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaA0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oDQpA
QCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsNCiANCiBjbGFzcyBOZXR3b3JrU2Vz
c2lvbkNvY29hOw0KIA0KK3N0cnVjdCBEb3dubG9hZENvbmZpZ3VyYXRpb247DQorDQogY2xhc3Mg
TmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsNCiAg
ICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7DQogcHVibGljOg0KQEAgLTY1LDcg
KzY3LDcgQEAgcHVibGljOg0KICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlk
ZSB7IH0NCiAgICAgTmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRl
Ow0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3Zl
cnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9h
ZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcygpIHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0NCmluZGV4IGM4NDE0MWI4ZGQ0Li4yZGMzYjk3MDk2OCAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0NCkBAIC0zODIsMTkgKzM4MiwxOSBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJg0KICAgICB9DQogfQ0KIA0KLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkNCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRD
b25maWd1cmF0aW9uKERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlv
bikNCiB7DQotICAgIE5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
ZmlsZW5hbWUsIHsgfSwgYWxsb3dPdmVyd3JpdGUpOw0KKyAgICBOZXR3b3JrRGF0YVRhc2s6OnNl
dFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRp
b24pKTsNCiANCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOw0KLSAgICBtX3NhbmRi
b3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSk7DQorICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShXVEZNb3ZlKG1fZG93bmxvYWRDb25maWd1cmF0aW9uLnNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsNCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikNCiAgICAgICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOw0KIA0KICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rv
d25sb2FkVGFza0ZpbGUgPSBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOw0KIA0KLSAgICBpZiAo
YWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uKSkNCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZW5hbWUpOw0KKyAgICBpZiAobV9kb3dubG9hZENvbmZpZ3VyYXRpb24uYWxsb3dP
dmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6OlllcyAmJiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQ0KKyAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsNCiB9DQog
DQogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0NCmluZGV4IDJkNGE3ZmRiMGI5Li45ZmIxNzMwZWRiMyAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQ0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tDQpAQCAtNTU1LDcgKzU1NSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhDQogICAgICAg
ICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRhVGFzaygqbmV0
d29ya0RhdGFUYXNrKTsNCiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFz
ay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsNCiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9
IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpOw0K
LSAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9h
ZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5z
ZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsNCisgICAg
ICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRv
d25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lv
bklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSwgV1RGTW92ZShuZXR3
b3JrRGF0YVRhc2stPmRvd25sb2FkQ29uZmlndXJhdGlvbigpKSk7DQogICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsN
CiAgICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOw0KICAgICAgICAgZG93bmxvYWQt
PmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwDQppbmRleCAwYjdiNjM1MGEyNi4uNWIzYjE1NzNk
NjMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcA0KQEAgLTk1LDEwICs5NSwxMCBAQCBTdHJpbmcgTmV0
d29ya0RhdGFUYXNrU291cDo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdA0KICAgICByZXR1cm4g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fcmVzcG9uc2UudXJsKCkubGFzdFBhdGhDb21wb25l
bnQoKSk7DQogfQ0KIA0KLXZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OnNldFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93
bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRDb25maWd1cmF0aW9uKQ0KIHsNCi0gICAgTmV0
d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3JpdGUpOw0KLSAgICBtX2FsbG93
T3ZlcndyaXRlRG93bmxvYWQgPSBhbGxvd092ZXJ3cml0ZTsNCisgICAgTmV0d29ya0RhdGFUYXNr
OjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKFdURk1vdmUoZG93bmxvYWRDb25maWd1
cmF0aW9uKSk7DQorICAgIG1fYWxsb3dPdmVyd3JpdGVEb3dubG9hZCA9IG1fZG93bmxvYWRDb25m
aWd1cmF0aW9uLmFsbG93T3ZlcndyaXRlID09IEFsbG93T3ZlcndyaXRlOjpZZXM7DQogfQ0KIA0K
IHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5oDQppbmRleCBkNzExYzc5MGMzNy4uMTA2NzEwOTNmNjkg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5oDQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOg0KICAgICB2b2lk
IGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsNCiAgICAgTmV0d29ya0RhdGFUYXNrOjpT
dGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBi
b29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3ZlcnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rv
d25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQog
ICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICB2
b2lkIHRpbWVvdXRGaXJlZCgpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3dubG9hZENv
bmZpZ3VyYXRpb24uY3BwDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu
LjIzNWJiNzIxZThlDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9E
b3dubG9hZENvbmZpZ3VyYXRpb24uY3BwDQpAQCAtMCwwICsxLDU5IEBADQorLyoNCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUg
IkRvd25sb2FkQ29uZmlndXJhdGlvbi5oIg0KKw0KKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
Ig0KKw0KK25hbWVzcGFjZSBXZWJLaXQgew0KKw0KK3ZvaWQgRG93bmxvYWRDb25maWd1cmF0aW9u
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdA0KK3sNCisgICAgZW5jb2RlciA8
PCBkZXN0aW5hdGlvbjsNCisgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZS5lbmNvZGUoZW5jb2Rl
cik7DQorICAgIGVuY29kZXIgPDwgYWxsb3dPdmVyd3JpdGU7DQorfQ0KKw0KK3N0ZDo6b3B0aW9u
YWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBEb3dubG9hZENvbmZpZ3VyYXRpb246OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpDQorew0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24gY29u
ZmlnIHsgfTsNCisNCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWcuZGVzdGluYXRpb24p
KQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgYXV0byBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoZGVjb2Rlcik7
DQorICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7DQorDQorICAgIGNvbmZpZy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQorDQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29uZmlnLmFsbG93T3ZlcndyaXRlKSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQor
DQorICAgIHJldHVybiB7IFdURk1vdmUoY29uZmlnKSB9Ow0KK30NCisNCit9OyAvLyBuYW1lc3Bh
Y2UgV2ViS2l0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxvYWRDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3dubG9hZENvbmZpZ3VyYXRpb24u
aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42MTRiODIxYmQ5Ng0K
LS0tIC9kZXYvbnVsbA0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxvYWRDb25maWd1
cmF0aW9uLmgNCkBAIC0wLDAgKzEsNjkgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkN
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K
KyAqLw0KKw0KKyNwcmFnbWEgb25jZQ0KKw0KKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
DQorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPg0KKw0KK25hbWVzcGFjZSBJUEMgew0KK2NsYXNz
IERlY29kZXI7DQorY2xhc3MgRW5jb2RlcjsNCit9DQorDQorbmFtZXNwYWNlIFdlYktpdCB7DQor
DQorZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsNCisNCitzdHJ1Y3QgRG93
bmxvYWRDb25maWd1cmF0aW9uIHsNCisNCisgICAgRG93bmxvYWRDb25maWd1cmF0aW9uKCkgPSBk
ZWZhdWx0Ow0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbiwgQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUgPSBBbGxvd092ZXJ3cml0ZTo6Tm8p
DQorICAgICAgICA6IGRlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQ0KKyAgICAgICAgLCBhbGxvd092
ZXJ3cml0ZShhbGxvd092ZXJ3cml0ZSkNCisgICAgew0KKyAgICB9DQorDQorICAgIFN0cmluZyBk
ZXN0aW5hdGlvbjsNCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7DQorICAgIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlOw0KKw0KKyAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsNCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7DQorfTsNCisN
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQNCisNCituYW1lc3BhY2UgV1RGIHsNCisNCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6QWxsb3dPdmVyd3JpdGU+IHsNCisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwNCisgICAgICAgIFdlYktpdDo6QWxsb3dPdmVyd3JpdGUs
DQorICAgICAgICBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywNCisgICAgICAgIFdlYktpdDo6
QWxsb3dPdmVyd3JpdGU6Olllcw0KKyAgICA+Ow0KK307DQorDQorfSAvLyBuYW1lc3BhY2UgV1RG
Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0DQppbmRleCAwNTVlYzVlNTc2MS4uNWJjMGZmMDgxODggMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0DQorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0DQpAQCAtMTAwLDYgKzEwMCw3IEBAIFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbi5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NhY2hlTW9kZWwuY3BwDQog
U2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NvbnRleHRNZW51Q29u
dGV4dERhdGEuY3BwDQorU2hhcmVkL0Rvd25sb2FkQ29uZmlndXJhdGlvbi5jcHANCiBTaGFyZWQv
RWRpdG9yU3RhdGUuY3BwDQogU2hhcmVkL0ZvbnRJbmZvLmNwcA0KIFNoYXJlZC9GcmFtZUluZm9E
YXRhLmNwcA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dA0KaW5kZXggNTVlYWY1OTEzMTcuLmYxODQyNTk2
OTA4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0DQorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQNCkBAIC0yMzAsNiArMjMwLDcgQEAgVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQ0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tDQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tDQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5tbQ0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0
aW9uLm1tDQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tDQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQ0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgNCmluZGV4IDAyMzc2ZTFlMTEwLi5hNzcw
ODgwZTA5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3du
bG9hZENsaWVudC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaA0KQEAgLTI1LDYgKzI1LDcgQEANCiANCiAjcHJhZ21hIG9uY2UNCiANCisjaW5j
bHVkZSAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPg0KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4NCiANCkBAIC0zOSw4
ICs0MCw2IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7DQogY2xhc3MgRG93
bmxvYWRQcm94eTsNCiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsNCiBjbGFzcyBXZWJQcm90ZWN0aW9u
U3BhY2U7DQotDQotZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsNCiB9DQog
DQogbmFtZXNwYWNlIEFQSSB7DQpAQCAtNTMsNyArNTIsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYpIHsgfQ0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
dWludDY0X3QpIHsgfQ0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0NCisgICAgdmlydHVhbCB2
b2lkIGRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
RnVuY3Rpb248dm9pZChXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9DQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0NCiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
eyB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCmluZGV4
IGUzYjQ2OGI4MDExLi5kOGY1Zjg5M2ExNCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHANCkBAIC0yMDYsMTQgKzIwNiwxNCBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZA0KICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKCZw
cm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOw0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0
aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwNCisgICAgICAgIHZvaWQgZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRD
b25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbA0KICAgICAgICAgew0K
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUpDQotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihBbGxv
d092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOw0KIA0KICAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxz
ZTsNCiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb24oQWRv
cHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUodG9B
UEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShmaWxlbmFtZS5p
bXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOw0KLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3Jp
dGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgdG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0
KCkpKTsNCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHRvV1RGU3RyaW5nKGRlc3Rp
bmF0aW9uLmdldCgpKSwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxs
b3dPdmVyd3JpdGU6Ok5vIH0pOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgdm9pZCBkaWRDcmVh
dGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwNCkBAIC0yODIsNyArMjgy
LDcgQEAgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLVVJMUmVxdWVzdFINCiANCiBXS0Rvd25sb2FkUmVmIFdLQ29udGV4
dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RhdGFSZWYgcmVzdW1l
RGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkNCiB7DQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29u
dGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIHRvSW1wbChyZXN1bWVEYXRhKSwgdG9X
VEZTdHJpbmcocGF0aCkpKTsNCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+
cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgdG9JbXBsKHJlc3VtZURhdGEpLCB7IHRvV1RGU3RyaW5n
KHBhdGgpIH0pKTsNCiB9DQogDQogdm9pZCBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJE
YXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsICBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQ0KaW5kZXggYTE4MzgxYWIzNWEuLmVkMWUwNzNkZjg1IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0N
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
DQpAQCAtNDMsNiArNDMsNyBAQA0KICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiDQogI2ltcG9y
dCAiX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiDQogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Np
b25JbnRlcm5hbC5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFs
LmgiDQogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIg0KICNpbXBvcnQgIl9XS0Rvd25s
b2FkSW50ZXJuYWwuaCINCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRl
cm5hbC5oIg0KQEAgLTU3OCw3ICs1NzksMTUgQEAgLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRV
UkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzoNCiAN
CiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1
bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcNCiB7DQotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1l
RG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KHJlc3VtZURhdGEpLnB0cigpLCBwYXRoKSk7DQorICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNz
UG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCB7IHBhdGggfSkpOw0KK30NCisNCistIChf
V0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uOihf
V0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKil3a0NvbmZpZ3VyYXRpb24NCit7DQorICAgIFdlYktp
dDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24geyB9Ow0KKyAgICBpZiAod2tD
b25maWd1cmF0aW9uKQ0KKyAgICAgICAgY29uZmlndXJhdGlvbiA9IFt3a0NvbmZpZ3VyYXRpb24g
X2Rvd25sb2FkQ29uZmlndXJhdGlvbl07DQorICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9v
bC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7DQog
fQ0KIA0KIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rp
bmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5n
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaA0KaW5kZXggM2RlMmMwMzYy
YmYuLjU1ZmRlMThkNDA3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oDQpAQCAtMzEsNiArMzEsNyBAQA0K
IEBjbGFzcyBXS1dlYlZpZXc7DQogQGNsYXNzIF9XS0F1dG9tYXRpb25TZXNzaW9uOw0KIEBjbGFz
cyBfV0tEb3dubG9hZDsNCitAY2xhc3MgX1dLRG93bmxvYWRDb25maWd1cmF0aW9uOw0KIEBjbGFz
cyBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247DQogQHByb3RvY29sIF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZTsNCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsNCkBAIC04Myw2ICs4NCw3
IEBADQogDQogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiAtIChf
V0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7DQorLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmln
dXJhdGlvbjooX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiANCiAvLyBU
ZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9j
ZXNzZXMgYXJlIHJ1bm5pbmcuDQogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAuLjllZWM0NDBjMGQwDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgNCkBAIC0wLDAgKzEs
NDMgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0
Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPg0KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4N
CisNCisjaWYgV0tfQVBJX0VOQUJMRUQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0K
K1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkN
CitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0DQorDQorQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgbnVsbGFibGUpIE5TVVJMICpkZXN0aW5hdGlvbjsN
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd092ZXJ3cml0ZTsNCisNCitAZW5kDQor
DQorTlNfQVNTVU1FX05PTk5VTExfRU5EDQorDQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw
MDAwMDAwMC4uMzJlM2MxNDlhNjcNCi0tLSAvZGV2L251bGwNCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCkBAIC0wLDAg
KzEsNjQgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUg
bWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0K
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0K
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
DQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQg
ImNvbmZpZy5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmgi
DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVu
dChOU1VSTCAqdXJsKQ0KK3sNCisgICAgaWYgKHVybCAmJiAhW3VybCBpc0ZpbGVVUkxdKQ0KKyAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgdXJsXTsNCit9DQorDQorQGltcGxlbWVudGF0aW9u
IF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiB7DQorICAgIFJldGFpblB0cjxOU1VSTD4gbV9kZXN0
aW5hdGlvbjsNCit9DQorDQorLSAoTlNVUkwgKilkZXN0aW5hdGlvbg0KK3sNCisgICAgcmV0dXJu
IG1fZGVzdGluYXRpb24uZ2V0KCk7DQorfQ0KKw0KKy0gKHZvaWQpc2V0RGVzdGluYXRpb246KE5T
VVJMICopZGVzdGluYXRpb24NCit7DQorICAgIGNoZWNrVVJMQXJndW1lbnQoZGVzdGluYXRpb24p
Ow0KKyAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb247DQorfQ0KKw0KKy0gKFdlYktpdDo6
RG93bmxvYWRDb25maWd1cmF0aW9uKV9kb3dubG9hZENvbmZpZ3VyYXRpb24NCit7DQorICAgIFdl
YktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZyB7IH07DQorDQorICAgIGNvbmZpZy5k
ZXN0aW5hdGlvbiA9IFttX2Rlc3RpbmF0aW9uIHBhdGhdOw0KKyAgICBjb25maWcuYWxsb3dPdmVy
d3JpdGUgPSBfYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBX
ZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXM7DQorDQorICAgIHJldHVybiBjb25maWc7DQorfQ0K
Kw0KK0BlbmQNCisNCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAuLmViOThmZjAxNDEzDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaA0KQEAg
LTAsMCArMSwzOCBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAq
IGFyZSBtZXQ6DQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycNCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywNCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTDQorICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YNCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2lt
cG9ydCAiX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorI2lmIFdLX0FQSV9FTkFCTEVE
DQorDQorI2ltcG9ydCAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorQGludGVyZmFjZSBf
V0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKCkNCisNCistIChXZWJLaXQ6OkRvd25sb2FkQ29uZmln
dXJhdGlvbilfZG93bmxvYWRDb25maWd1cmF0aW9uOw0KKw0KK0BlbmQNCisNCisjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KaW5kZXggZThiZTQwZjg3MDUuLjYyNTdiMTUw
N2U2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkRGVsZWdhdGUuaA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4NCiANCiBAY2xhc3MgX1dLRG93bmxvYWQ7DQorQGNsYXNzIF9X
S0Rvd25sb2FkQ29uZmlndXJhdGlvbjsNCiANCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0
ZSA8TlNPYmplY3Q+DQogQG9wdGlvbmFsDQpAQCAtMzgsNiArMzksNyBAQA0KIC0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlOw0KIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGg7DQogLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhh
bmRsZXI7DQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
Q29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsNCiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlz
aDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsNCiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7DQogLSAodm9p
ZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQ7DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGll
bnQuY3BwDQppbmRleCBlYWQ0ZjIzNDk5MS4uMmJjMjc5ZTcwY2IgMTAwNjQ0DQotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHANCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcA0KQEAgLTc0LDEyICs3NCwxMiBAQCBwcml2YXRlOg0KICAgICAgICAgd2Via2l0RG93bmxv
YWROb3RpZnlQcm9ncmVzcyhkb3dubG9hZC5nZXQoKSwgbGVuZ3RoKTsNCiAgICAgfQ0KIA0KLSAg
ICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGUNCisgICAgdm9pZCBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChEb3dubG9hZENvbmZpZ3VyYXRp
b24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlDQogICAgIHsNCiAgICAgICAgIEdS
ZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3Jl
YXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOw0KICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOw0KICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gd2Via2l0RG93bmxvYWRE
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZC5nZXQoKSwgZmls
ZW5hbWUudXRmOCgpLCBhbGxvd092ZXJ3cml0ZSk7DQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhbGxvd092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6
Tm8sIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVzdGluYXRp
b24sIGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRl
OjpObyB9KTsNCiAgICAgfQ0KIA0KICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBw
YXRoKSBvdmVycmlkZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oDQppbmRleCAxMTg4NjZjYzZmMS4uYjdiMjFhODFjOWIgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQpAQCAtNTEsNyArNTEs
NyBAQCBwcml2YXRlOg0KICAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOw0KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7DQogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsNCi0gICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkm
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3Zl
cndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsNCisgICAgdm9pZCBkZWNpZGVDb25maWd1cmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRDb25m
aWd1cmF0aW9uJiYpPiYmKSBmaW5hbDsNCiAgICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7DQogICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7DQogICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYp
IGZpbmFsOw0KQEAgLTc3LDYgKzc3LDcgQEAgcHJpdmF0ZToNCiAgICAgICAgIGJvb2wgZG93bmxv
YWREaWRSZWNlaXZlRGF0YSA6IDE7DQogICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSA6IDE7DQogICAgICAgICBi
b29sIGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0
aW9uSGFuZGxlciA6IDE7DQorICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsNCiAgICAgICAgIGJv
b2wgZG93bmxvYWREaWRGaW5pc2ggOiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERpZEZhaWwg
OiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERpZENhbmNlbCA6IDE7DQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQ0KaW5kZXggM2I0OTYyOGZk
ZjYuLmI4ZjA5ZmY0M2MwIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvRG93bmxvYWRDbGllbnQubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tDQpAQCAtNDAsNiArNDAsNyBAQA0KICNpbXBvcnQgIldlYkNyZWRl
bnRpYWwuaCINCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCINCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCINCisjaW1wb3J0ICJfV0tEb3dubG9hZENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIg0K
ICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCINCiAjaW1wb3J0ICJfV0tEb3dubG9hZElu
dGVybmFsLmgiDQogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+DQpAQCAtNTcsNiArNTgs
NyBAQCBEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdh
dGU+IGRlbGVnYXRlKQ0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVE
YXRhID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRp
ZFJlY2VpdmVEYXRhOildOw0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6YWxsb3dPdmVyd3JpdGU6KV07DQogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21w
bGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopXTsNCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVDb25maWd1
cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlQ29uZmlndXJhdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsNCiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRGaW5pc2g6KV07DQogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGlkRmFpbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOildOw0KICAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZENhbmNlbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZERpZENhbmNlbDopXTsNCkBAIC0xNzcsMzIgKzE3OSw0MiBAQCB2b2lkIERv
d25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFBybw0KICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOw0KIH0NCiANCi12b2lkIERvd25sb2FkQ2xp
ZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpDQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRDb25maWd1cmF0
aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQ0KIHsNCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQ0KICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7DQog
ICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsNCiAgICAgICAg
IE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsNCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgZGVzdGluYXRpb24sIEFsbG93T3ZlcndyaXRlOjpZZXMgfSk7DQogICAgICAgICBy
ZXR1cm47DQogICAgIH0NCiAjZW5kaWYNCiANCi0gICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5k
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3Jp
dGUgJiYgIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxlcikNCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgIGlmICghbV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFs
bG93T3ZlcndyaXRlICYmICFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgJiYgIW1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNv
bXBsZXRpb25IYW5kbGVyKQ0KKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
DQogDQotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCisgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUNvbXBsZXRpb25IYW5kbGVyKSB7DQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgp
LCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKndrRG93bmxvYWRD
b25maWd1cmF0aW9uKSB7DQorICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQ0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQorICAgICAgICAgICAgRG93
bmxvYWRDb25maWd1cmF0aW9uIGRvd25sb2FkQ29uZmlndXJhdGlvbiB7IH07DQorICAgICAgICAg
ICAgaWYgKHdrRG93bmxvYWRDb25maWd1cmF0aW9uKQ0KKyAgICAgICAgICAgICAgICBkb3dubG9h
ZENvbmZpZ3VyYXRpb24gPSBbd2tEb3dubG9hZENvbmZpZ3VyYXRpb24gX2Rvd25sb2FkQ29uZmln
dXJhdGlvbl07DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb3dubG9h
ZENvbmZpZ3VyYXRpb24pKTsNCisgICAgICAgIH0pLmdldCgpXTsNCisgICAgfSBlbHNlIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBO
TzsNCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lODQogICAgICAg
ICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxl
bmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOw0KICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5EDQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxv
d092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRl
c3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVzdGluYXRpb24sIGFs
bG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObyB9
KTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZp
bGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2Vs
ZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7
DQogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxl
ZCgpKQ0KICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
YWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5v
LCBkZXN0aW5hdGlvbik7DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBkZXN0aW5h
dGlvbiwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3Jp
dGU6Ok5vIH0pOw0KICAgICAgICAgfSkuZ2V0KCldOw0KICAgICB9DQogfQ0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0KaW5kZXgg
NzUxMDJlZTNiMDAuLjBiYWNmZGVjYzdiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHANCkBAIC0xNzUsMjEgKzE3NSwyMCBA
QCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkNCiAg
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqbV9wcm9j
ZXNzUG9vbCwgKnRoaXMsIGxlbmd0aCk7DQogfQ0KIA0KLXZvaWQgRG93bmxvYWRQcm94eTo6ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25s
b2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpDQordm9pZCBEb3dubG9hZFBy
b3h5OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KIHsNCiAg
ICAgaWYgKCFtX3Byb2Nlc3NQb29sKQ0KICAgICAgICAgcmV0dXJuOw0KICAgICANCi0gICAgbV9w
cm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93bmxvYWRJ
RF0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsN
Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
Ow0KLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkNCi0gICAgICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQotDQorICAgIG1fcHJv
Y2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93bmxvYWRJ
RF0gKERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pIHsNCiAgICAgICAgIGlm
ICghbV9wcm9jZXNzUG9vbCkNCiAgICAgICAgICAgICByZXR1cm47DQogDQorICAgICAgICBpZiAo
IWNvbmZpZ3VyYXRpb24uZGVzdGluYXRpb24uaXNOdWxsKCkpDQorICAgICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbmZpZ3VyYXRpb24uZGVzdGluYXRpb24sIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgY29uZmlndXJhdGlvbi5zYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKTsNCisNCiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJv
Y2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpDQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBhbGxvd092ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVzKSwgMCk7DQorICAg
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpD
b250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oZG93bmxvYWRJRCwgV1RG
TW92ZShjb25maWd1cmF0aW9uKSksIDApOw0KICAgICB9KTsNCiB9DQogDQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgNCmluZGV4IGYyNDA0
OTk1N2EyLi5mMDgxYjVhY2NiYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgNCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToN
CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOw0KICAgICB2b2lkIGRpZENhbmNlbChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOw0KICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOw0KLSAgICB2b2lkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7DQorICAgIHZvaWQgZGVjaWRlQ29uZmlndXJh
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUpOw0KIA0KICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2Fk
UHJveHlNYXA7DQogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lm1lc3NhZ2VzLmluDQppbmRleCBlYTU2ZGFiMWQ2Mi4uMmViNzkwZmFjNDMgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5t
ZXNzYWdlcy5pbg0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkubWVzc2FnZXMuaW4NCkBAIC0yNCw3ICsyNCw3IEBAIG1lc3NhZ2VzIC0+IERvd25s
b2FkUHJveHkgew0KICAgICBEaWRTdGFydChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgQXRvbWljU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KICAgICBEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxl
bmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkNCiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVkaXJlY3RSZXNwb25zZSkpDQotICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lQXN5bmMoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBzdWdn
ZXN0ZWRGaWxlbmFtZSkNCisgICAgRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUFzeW5jKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWUpDQogDQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKQ0KICAgICBEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwDQppbmRleCBjOGY4MDVl
ODk4NC4uMGY4YWE5ODY0ODYgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcA0KQEAgLTEyNjEsMTcgKzEyNjEsMTYgQEAgRG93bmxvYWRQcm94eSogV2ViUHJv
Y2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJl
c28NCiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7DQogfQ0KIA0KLURvd25sb2FkUHJveHkqIFdl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdl
LCBjb25zdCBBUEk6OkRhdGEqIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkNCitEb3du
bG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZp
Z3VyYXRpb24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogew0KICAgICBhdXRvKiBkb3dubG9h
ZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGlu
Z1BhZ2UpOw0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/
IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCk7DQogDQotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlOw0KLSAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQ0KLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQorICAgIGlmICghZG93bmxvYWRDb25maWd1
cmF0aW9uLmRlc3RpbmF0aW9uLmlzRW1wdHkoKSkNCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShkb3dubG9hZENvbmZpZ3VyYXRpb24uZGVzdGluYXRpb24sIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgZG93bmxvYWRDb25maWd1cmF0aW9uLnNhbmRib3hF
eHRlbnNpb25IYW5kbGUpOw0KIA0KICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgew0KLSAgICAg
ICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3Vt
ZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXN1bWVE
YXRhLT5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCAwKTsN
CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpSZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwg
cmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBXVEZNb3ZlKGRvd25sb2FkQ29uZmlndXJhdGlv
bikpLCAwKTsNCiAgICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5Ow0KICAgICB9DQogDQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgNCmluZGV4IDA3Njc5NGRmMGNlLi40
YzIzMWQ3MmRhNyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgN
CkBAIC0yOSw2ICsyOSw3IEBADQogI2luY2x1ZGUgIkFQSU9iamVjdC5oIg0KICNpbmNsdWRlICJB
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCINCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIg0KKyNpbmNsdWRlICJEb3dubG9hZENvbmZpZ3VyYXRpb24uaCINCiAjaW5jbHVkZSAi
RG93bmxvYWRQcm94eU1hcC5oIg0KICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCINCiAjaW5j
bHVkZSAiSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oIg0KQEAgLTE4
OSw3ICsxOTAsNyBAQCBwdWJsaWM6DQogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgo
KTsgfQ0KIA0KICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRp
YXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsNCi0gICAgRG93bmxvYWRQcm94eSogcmVzdW1lRG93
bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1
bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOw0KKyAgICBEb3dubG9hZFByb3h5KiByZXN1bWVE
b3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEqIHJl
c3VtZURhdGEsIERvd25sb2FkQ29uZmlndXJhdGlvbiYmID0geyB9KTsNCiANCiAgICAgdm9pZCBz
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0
PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0g
V1RGTW92ZSh1c2VyRGF0YSk7IH0NCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvag0KaW5kZXggNmIxODkwMDg0NTMuLjVlNDVlYjNjNzAyIDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAg
LTEwNzgsOCArMTA3OCwxMCBAQA0KIAkJNjM2MzUzQTUxRTk4NThERjAwMDlGOEFGIC8qIF9XS0dl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRkFCRTE5MUU5NzBENjUwMDMwMTFENSAvKiBfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsNCiAJCTYzNzI4MUEyMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rv
d25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYzNzI4MUEwMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAq
LzsgfTsNCiAJCTYzNzI4MUEzMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzcyODFB
MTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1tICovOyB9Ow0KKwkJNjNC
REU3REUyMTkyNDhDODAwOThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNCREU3REMyMTkyNDhDODAw
OThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJhdGlvbi5oICovOyB9Ow0KIAkJNjNDMzJDMjYxRTk4
MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAv
KiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsNCiAJCTYzQzMyQzI4MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9s
b2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDYzQzMyQzI3MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlv
blBvc2l0aW9uSW50ZXJuYWwuaCAqLzsgfTsNCisJCTYzRUU0MTc5MjFDMUJCMDQwMDdBOUY3NCAv
KiBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYzRUU0MTc3MjFDMUJCMDQwMDdBOUY3NCAvKiBfV0tEb3dubG9h
ZENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9Ow0KIAkJNjVCODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYx
ODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Ow0KIAkJNkE1MDgwQkYxRjBFREFBQTAwRTYx
N0M1IC8qIFdLV2luZG93RmVhdHVyZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTUwODBCRTFGMEVEQUFBMDBFNjE3QzUgLyogV0tXaW5k
b3dGZWF0dXJlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9Ow0KIAkJNkI4MjFEREMxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmggKi87IH07DQpAQCAtMzQ4Nyw5ICszNDg5LDE0IEBADQogCQk2
MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07DQogCQk2MzcyODFBMDIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRQcm9ncmVzcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9Ow0KIAkJNjM3MjgxQTEyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9n
cmVzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRG93bmxvYWRQcm9ncmVzcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCisJCTYzQkRFN0RDMjE5MjQ4QzgwMDk4QzkwQiAvKiBE
b3dubG9hZENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93bmxvYWRDb25maWd1cmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2M0JERTdERDIxOTI0OEM4MDA5
OEM5MEIgLyogRG93bmxvYWRDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
d25sb2FkQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2
M0MzMkMyMzFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2M0MzMkMyNDFFOTgxMEQ5MDA2
OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07DQogCQk2M0MzMkMyNzFFOTgxMTkwMDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJ
NjNFRTQxNzcyMUMxQkIwNDAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsNCisJCTYzRUU0MTc4MjFDMUJCMDQwMDdBOUY3NCAvKiBfV0tEb3dubG9hZENv
bmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tEb3dubG9hZENvbmZpZ3Vy
YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2M0VFNDE3QjIxQzFCQkU3
MDA3QTlGNzQgLyogX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsNCiAJCTYzRkFCRTE5MUU5NzBENjUwMDMwMTFENSAvKiBfV0tHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTY1NDZB
ODI5MTMwMDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CiAJCTY1NDZBODJBMTMwMDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQpAQCAtNTE1Miw2ICs1MTU5LDggQEANCiAJCQkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8sDQogCQkJCTdDMDY1RjJB
MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAq
LywNCiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICov
LA0KKwkJCQk2M0JERTdEQzIxOTI0OEM4MDA5OEM5MEIgLyogRG93bmxvYWRDb25maWd1cmF0aW9u
LmggKi8sDQorCQkJCTYzQkRFN0REMjE5MjQ4QzgwMDk4QzkwQiAvKiBEb3dubG9hZENvbmZpZ3Vy
YXRpb24uY3BwICovLA0KIAkJCSk7DQogCQkJcGF0aCA9IFNoYXJlZDsNCiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOw0KQEAgLTU5OTEsNiArNjAwMCw5IEBADQogCQkJCUExQTRGRTU4MThEQ0U5
RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLywNCiAJCQkJQTFBNEZFNjAxOERENTRBNDAw
QjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCAqLywNCiAJCQkJQTFBNEZFNTkxOERDRTlG
QTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLywNCisJCQkJNjNFRTQxNzcyMUMx
QkIwNDAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oICovLA0KKwkJCQk2M0VF
NDE3ODIxQzFCQjA0MDA3QTlGNzQgLyogX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLm1tICovLA0K
KwkJCQk2M0VFNDE3QjIxQzFCQkU3MDA3QTlGNzQgLyogX1dLRG93bmxvYWRDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCAqLywNCiAJCQkJMzc5QTg3MzgxOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1l
bnRBY3Rpb24uaCAqLywNCiAJCQkJMzc5QTg3MzcxOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1l
bnRBY3Rpb24ubW0gKi8sDQogCQkJCTM3OUE4NzNCMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVt
ZW50QWN0aW9uSW50ZXJuYWwuaCAqLywNCkBAIC05MzM4LDYgKzkzNTAsNyBAQA0KIAkJCQlCQzRB
NjI5MjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sDQogCQkJCTFBMUZFQzFEMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLA0KIAkJCQlCQzRBNjJBODE0NzQ0RUM3MDA2QzY4MUEgLyogV2Vi
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sDQorCQkJCTYzQkRFN0RFMjE5
MjQ4QzgwMDk4QzkwQiAvKiBEb3dubG9hZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLA0K
IAkJCQkzMUE1MDVGQTE2ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29udGV4dENsaWVudC5oIGluIEhl
YWRlcnMgKi8sDQogCQkJCUJDMDlCOEY5MTQ3NDYwRjcwMDVGNTYyNSAvKiBXZWJDb250ZXh0Q29u
bmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sDQogCQkJCUJDREUwNTlCMTFDREE4QUUwMEU0
MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLA0K
QEAgLTk1MzEsNiArOTU0NCw3IEBADQogCQkJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIwQSAvKiBX
S0FycmF5LmggaW4gSGVhZGVycyAqLywNCiAJCQkJNTEyRjU4RjYxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovLA0KIAkJCQk1MTJGNThG
ODEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovLA0KKwkJCQk2M0VFNDE3OTIxQzFCQjA0MDA3QTlGNzQgLyogX1dLRG93bmxv
YWRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywNCiAJCQkJMzdDNEMwOEQxODE0QUM1QzAw
MzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywNCiAJCQkJMzdDNEMw
OTUxODE0QjlFNjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLA0KIAkJCQkzN0M0QzA4NzE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExp
c3RJdGVtLmggaW4gSGVhZGVycyAqLywNCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cNCmluZGV4IGM0MjE1YzhjOTliLi4xODUyNWQ1ZWJiMiAxMDA2NDQNCi0t
LSBhL1Rvb2xzL0NoYW5nZUxvZw0KKysrIGIvVG9vbHMvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDE4
IEBADQorMjAxOC0xMi0xMyAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29t
Pg0KKw0KKyAgICAgICAgQWRkIGEgY2xhc3MgdG8gYnVuZGxlIGRvd25sb2FkIGNvbmZpZ3VyYXRp
b24gcGFyYW1ldGVycyB0b2dldGhlcg0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjY4Mw0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDY3MTEwNjYN
CisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOg0KKyAgICAgICAgKC1b
Q29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlQ29u
ZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToNCisg
ICAgICAgICgtW0NvbmZpZ3VyYXRpb25EZWNpZGluZ0Rvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2Fk
RGlkRmluaXNoOl0pOg0KKyAgICAgICAgKFRFU1QpOg0KKyAgICAgICAgICAgIEFkZCBhIHNpbXBs
ZSBBUEkgdGVzdCBmb3IgY29uZmlndXJpbmcgYSBkb3dubG9hZCB2aWEgdGhlIF9XS0Rvd25sb2Fk
RGVsZWdhdGUgbWV0aG9kDQorICAgICAgICAgICAgdGhhdCBhc2tzIGZvciBhIF9XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbi4NCisNCiAyMDE4LTEyLTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPg0KIA0KICAgICAgICAgW2lPU10gU3VwcG9ydCBkcm9wcGluZyBjb250YWN0
IGNhcmQgZGF0YSAocHVibGljLnZjYXJkKSBpbiBlZGl0YWJsZSBjb250ZW50DQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0NCmluZGV4IGRh
ZTBkMjcxMGM4Li45Y2UzZDBmNzBhOCAxMDA2NDQNCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0NCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0NCkBAIC0zNSw2ICszNSw3IEBADQogI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIg0KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPg0KICNp
bXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPg0KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9h
ZENvbmZpZ3VyYXRpb24uaD4NCiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5o
Pg0KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4NCiAjaW1w
b3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4NCkBAIC02MjAsNSArNjIxLDQxIEBA
IFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkQ2FuY2VsZWRXaGlsZURlY2lkaW5nRGVzdGluYXRp
b24pDQogICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07DQogfQ0KIA0KK0BpbnRlcmZhY2Ug
Q29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tEb3du
bG9hZERlbGVnYXRlPg0KK0BlbmQNCisNCitAaW1wbGVtZW50YXRpb24gQ29uZmlndXJhdGlvbkRl
Y2lkaW5nRG93bmxvYWREZWxlZ2F0ZSB7DQorICAgIFN0cmluZyBfZGVzdGluYXRpb25QYXRoOw0K
K30NCisNCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVD
b25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKikpY29t
cGxldGlvbkhhbmRsZXINCit7ICAgIA0KKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsNCisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRs
ZSk7DQorICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7DQorICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlSGFuZGxlKTsNCisNCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbY29uZmln
dXJhdGlvbiBzZXREZXN0aW5hdGlvbjpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9kZXN0aW5hdGlv
blBhdGhdXTsNCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0QWxsb3dPdmVyd3JpdGU6WUVTXTsNCisg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29uZmlndXJhdGlvbi5nZXQoKSk7DQorfQ0KKw0KKy0gKHZv
aWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkDQorew0KKyAgICBF
WFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzRXF1YWxB
dFBhdGg6X2Rlc3RpbmF0aW9uUGF0aCBhbmRQYXRoOltzb3VyY2VVUkwgcGF0aF1dKTsNCisgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsNCisgICAg
aXNEb25lID0gdHJ1ZTsNCit9DQorDQorQGVuZA0KKw0KK1RFU1QoX1dLRG93bmxvYWQsIERvd25s
b2FkRGVjaWRlQ29uZmlndXJhdGlvbikNCit7DQorICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRl
ID0gYWRvcHROUyhbW0NvbnZlcnRSZXNwb25zZVRvRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsNCisgICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0Nv
bmZpZ3VyYXRpb25EZWNpZGluZ0Rvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsNCisgICAg
cnVuVGVzdChuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCks
IHNvdXJjZVVSTCk7DQorfQ0KKw0KICNlbmRpZg0KICNlbmRpZg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357279</attachid>
            <date>2018-12-13 18:01:59 -0800</date>
            <delta_ts>2018-12-13 18:29:09 -0800</delta_ts>
            <desc>Patch v2.1</desc>
            <filename>file_192683.txt</filename>
            <type>text/plain</type>
            <size>86642</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDk3YzQ3ZGJhMzhlZWQ3NGEwMDlmMTQ2YTA5MTgxZGFiMTE1NTBkNjcNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFRodSBEZWMg
MTMgMTY6MjI6MjggMjAxOCAtMDgwMA0KDQogICAgQWRkIGEgY2xhc3MgdG8gYnVuZGxlIGRvd25s
b2FkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0b2dldGhlcg0KICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODMNCiAgICByZGFyOi8vcHJvYmxlbS80Njcx
MTA2Ng0KICAgIA0KICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNv
dXJjZS9XZWJLaXQ6DQogICAgDQogICAgSW50cm9kdWNlIFdlYktpdDo6RG93bmxvYWRDb25maWd1
cmF0aW9uLCBhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBwaWVjZXMgb2YgZG93bmxvYWQtcmVsYXRl
ZA0KICAgIGNvbmZpZ3VyYXRpb24gLSB0aGUgZGVzdGluYXRpb24gcGF0aCwgYSBjb3JyZXNwb25k
aW5nIHNhbmRib3ggZXh0ZW5zaW9uLCBhbmQgYW4gImFsbG93DQogICAgb3ZlcndyaXRlIiBmbGFn
LiBUbyBzdXBwb3J0IHBvdGVudGlhbCB1c2UgY2FzZXMgd2hlcmUgY2VydGFpbiBhc3BlY3RzIG9m
IHRoZSBleGVjdXRpb24gb2YNCiAgICBhIGRvd25sb2FkIG1heSBiZSBjb25maWd1cmFibGUsIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBjb3VsZCBiZSBpbmNsdWRlZCBpbiB0aGlzIHN0cnVjdHVyZQ0K
ICAgIGFuZCB1c2VkIHdoZXJlIGFwcHJvcHJpYXRlLiBUaGlzIHdpbGwgcmVxdWlyZSBmZXdlciB0
ZWRpb3VzIGNvZGUgY2hhbmdlcyB0aGFuIGl0IHdvdWxkIHRvDQogICAgY29uZGl0aW9uYWxseSBp
bmNsdWRlIHRoZSBwYXJhbWV0ZXJzIGFzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgY2xhc3MgbWVt
YmVycyBldmVyeXdoZXJlDQogICAgdGhlIHRocmVlIGN1cnJlbnQgcGllY2VzIG9mIGNvbmZpZ3Vy
YXRpb24gYXJlIHBhc3NlZCBhcm91bmQgYW5kIHN0b3JlZC4gTWV0aG9kcyByZWxhdGVkIHRvDQog
ICAgImRlY2lkaW5nIHRoZSBkZXN0aW5hdGlvbiIgZm9yIGEgZG93bmxvYWQgaGFzIGJlZW4gcmVu
YW1lZCB0byByZWZsZWN0ICJkZWNpZGluZyB0aGUNCiAgICBjb25maWd1cmF0aW9uIiBmb3IgdGhl
IGRvd25sb2FkLCBzaW5jZSB0aGV5IG5vdyB3b3JrIHdpdGggRG93bmxvYWRDb25maWd1cmF0aW9u
Lg0KICAgIA0KICAgIFRoaXMgc3RydWN0dXJlIGlzIGV4cG9zZWQgaW4gQ29jb2EgQVBJIGJ5IHRo
ZSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gY2xhc3MgKGFuZCByZWxhdGVkDQogICAgX1dLRG93
bmxvYWREZWxlZ2F0ZSBhbmQgV0tQcm9jZXNzUG9vbCBtZXRob2RzIHRoYXQgd29yayB3aXRoIHRo
aXMgY2xhc3MpLiBJdCBkb2Vzbid0IHlldA0KICAgIGV4cG9zZSBhbnkgYWRkaXRpb25hbCBBUEkg
YmV5b25kIHRoZSBkZXN0aW5hdGlvbiBwYXRoIGFuZCBhbGxvd092ZXJ3cml0ZSBmbGFnLiBUaGlz
IHBhdGNoDQogICAgaXMganVzdCBzZXR1cCB0byBkbyBzby4NCiAgICANCiAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6RG93bmxvYWQ6OkRv
d25sb2FkKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQogICAgKFdlYktp
dDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOg0KICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6DQogICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6DQogICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQogICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlc3VtZURvd25sb2FkKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGlu
dWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCiAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoNCiAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToNCiAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25s
b2FkQ29uZmlndXJhdGlvbik6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOg0KICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToNCiAgICAqIE5ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6DQogICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQogICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOiBEZWxldGVk
Lg0KICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmg6DQogICAg
KiBTaGFyZWQvRG93bmxvYWRDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuDQogICAgKFdlYktpdDo6
RG93bmxvYWRDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOg0KICAgIChXZWJLaXQ6OkRvd25s
b2FkQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToNCiAgICAqIFNoYXJlZC9Eb3dubG9hZENvbmZpZ3Vy
YXRpb24uaDogQWRkZWQuDQogICAgKFdlYktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uOjpEb3du
bG9hZENvbmZpZ3VyYXRpb24pOg0KICAgICogU291cmNlcy50eHQ6DQogICAgKiBTb3VyY2VzQ29j
b2EudHh0Og0KICAgICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOg0KICAgIChB
UEk6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToNCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOg0KICAgIChXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudCk6DQogICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToNCiAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToNCiAgICAoLVtXS1Byb2Nl
c3NQb29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOnBhdGg6b3JpZ2luYXRpbmdXZWJWaWV3Ol0p
Og0KICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6b3JpZ2luYXRp
bmdXZWJWaWV3OmNvbmZpZ3VyYXRpb246XSk6DQogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg6DQogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4NCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4NCiAgICAoY2hlY2tVUkxBcmd1bWVudCk6
DQogICAgKC1bX1dLRG93bmxvYWRDb25maWd1cmF0aW9uIGRlc3RpbmF0aW9uXSk6DQogICAgKC1b
X1dLRG93bmxvYWRDb25maWd1cmF0aW9uIHNldERlc3RpbmF0aW9uOl0pOg0KICAgICgtW19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbiBfZG93bmxvYWRDb25maWd1cmF0aW9uXSk6DQogICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVk
Lg0KICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmg6DQogICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOg0KICAgICogVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6DQogICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW06DQogICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xp
ZW50KToNCiAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSk6DQogICAgICAgIENvbnN1bHQgdGhlIG5ldyBfV0tEb3dubG9h
ZERlbGVnYXRlIG1ldGhvZCB0aGF0IGFsbG93cyBzcGVjaWZ5aW5nIGEgX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLg0KICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoN
CiAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQXN5bmMpOg0KICAgICAgICBEcml2ZS1ieSBmaXh1cCB0byByMjM4MzgxLiBN
b3ZlIHRoZSBtX3Byb2Nlc3NQb29sIG5pbC1jaGVjayB0byB0aGUgdG9wIG9mIHRoZQ0KICAgICAg
ICBjb21wbGV0aW9uIGhhbmRsZXIuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBzYW5k
Ym94IGV4dGVuc2lvbiBmb3IgdGhlIGRlc3RpbmF0aW9uDQogICAgICAgIGZpbGUgaWYgd2UgZG9u
J3QgYSBwcm9jZXNzIHBvb2wgKHRoZXJlZm9yZSBhIG5ldHdvcmsgcHJvY2VzcykgdG8gc2VuZCBp
dCB0by4NCiAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOg0KICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOg0KICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoNCiAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cmVzdW1lRG93bmxvYWQpOg0KICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6DQogICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoNCiAgICANCiAgICBUb29sczoNCiAg
ICANCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06DQog
ICAgKC1bQ29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVj
aWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToNCiAgICAoLVtDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZERpZEZpbmlzaDpdKToNCiAgICAoVEVTVCk6DQogICAgICAgIEFkZCBhIHNpbXBsZSBBUEkgdGVz
dCBmb3IgY29uZmlndXJpbmcgYSBkb3dubG9hZCB2aWEgdGhlIF9XS0Rvd25sb2FkRGVsZWdhdGUg
bWV0aG9kDQogICAgICAgIHRoYXQgYXNrcyBmb3IgYSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24u
DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nDQppbmRleCBiNTM4YTlkNjdiMC4uMjg5M2NhY2Q1ODAgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsOTkgQEANCisyMDE4LTEyLTEzICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2Fk
YUBhcHBsZS5jb20+DQorDQorICAgICAgICBBZGQgYSBjbGFzcyB0byBidW5kbGUgZG93bmxvYWQg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvZ2V0aGVyDQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjgzDQorICAgICAgICByZGFyOi8vcHJvYmxl
bS80NjcxMTA2Ng0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQor
ICAgICAgICBJbnRyb2R1Y2UgV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb24sIGEgc3RydWN0
dXJlIHRvIGhvbGQgdGhlIHBpZWNlcyBvZiBkb3dubG9hZC1yZWxhdGVkDQorICAgICAgICBjb25m
aWd1cmF0aW9uIC0gdGhlIGRlc3RpbmF0aW9uIHBhdGgsIGEgY29ycmVzcG9uZGluZyBzYW5kYm94
IGV4dGVuc2lvbiwgYW5kIGFuICJhbGxvdw0KKyAgICAgICAgb3ZlcndyaXRlIiBmbGFnLiBUbyBz
dXBwb3J0IHBvdGVudGlhbCB1c2UgY2FzZXMgd2hlcmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBl
eGVjdXRpb24gb2YNCisgICAgICAgIGEgZG93bmxvYWQgbWF5IGJlIGNvbmZpZ3VyYWJsZSwgYWRk
aXRpb25hbCBwYXJhbWV0ZXJzIGNvdWxkIGJlIGluY2x1ZGVkIGluIHRoaXMgc3RydWN0dXJlDQor
ICAgICAgICBhbmQgdXNlZCB3aGVyZSBhcHByb3ByaWF0ZS4gVGhpcyB3aWxsIHJlcXVpcmUgZmV3
ZXIgdGVkaW91cyBjb2RlIGNoYW5nZXMgdGhhbiBpdCB3b3VsZCB0bw0KKyAgICAgICAgY29uZGl0
aW9uYWxseSBpbmNsdWRlIHRoZSBwYXJhbWV0ZXJzIGFzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQg
Y2xhc3MgbWVtYmVycyBldmVyeXdoZXJlDQorICAgICAgICB0aGUgdGhyZWUgY3VycmVudCBwaWVj
ZXMgb2YgY29uZmlndXJhdGlvbiBhcmUgcGFzc2VkIGFyb3VuZCBhbmQgc3RvcmVkLiBNZXRob2Rz
IHJlbGF0ZWQgdG8NCisgICAgICAgICJkZWNpZGluZyB0aGUgZGVzdGluYXRpb24iIGZvciBhIGRv
d25sb2FkIGhhcyBiZWVuIHJlbmFtZWQgdG8gcmVmbGVjdCAiZGVjaWRpbmcgdGhlDQorICAgICAg
ICBjb25maWd1cmF0aW9uIiBmb3IgdGhlIGRvd25sb2FkLCBzaW5jZSB0aGV5IG5vdyB3b3JrIHdp
dGggRG93bmxvYWRDb25maWd1cmF0aW9uLg0KKw0KKyAgICAgICAgVGhpcyBzdHJ1Y3R1cmUgaXMg
ZXhwb3NlZCBpbiBDb2NvYSBBUEkgYnkgdGhlIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBjbGFz
cyAoYW5kIHJlbGF0ZWQNCisgICAgICAgIF9XS0Rvd25sb2FkRGVsZWdhdGUgYW5kIFdLUHJvY2Vz
c1Bvb2wgbWV0aG9kcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGNsYXNzKS4gSXQgZG9lc24ndCB5ZXQN
CisgICAgICAgIGV4cG9zZSBhbnkgYWRkaXRpb25hbCBBUEkgYmV5b25kIHRoZSBkZXN0aW5hdGlv
biBwYXRoIGFuZCBhbGxvd092ZXJ3cml0ZSBmbGFnLiBUaGlzIHBhdGNoDQorICAgICAgICBpcyBq
dXN0IHNldHVwIHRvIGRvIHNvLg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25sb2FkKToN
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6DQorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6RG93bmxvYWQpOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToN
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOg0KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOg0K
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6DQorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOg0KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6ZG93bmxvYWRDb25maWd1cmF0aW9uKToNCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6DQorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oOg0KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOg0KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6DQorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0
aW9uKToNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoNCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46DQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6DQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOg0KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZENvbmZp
Z3VyYXRpb24pOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOg0KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Np
b246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOg0KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpzZXRQZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik6IERlbGV0ZWQuDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5oOg0KKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRDb25maWd1cmF0aW9u
LmNwcDogQWRkZWQuDQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OmVu
Y29kZSBjb25zdCk6DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OmRl
Y29kZSk6DQorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZENvbmZpZ3VyYXRpb24uaDogQWRkZWQu
DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OkRvd25sb2FkQ29uZmln
dXJhdGlvbik6DQorICAgICAgICAqIFNvdXJjZXMudHh0Og0KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0Og0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6DQor
ICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
Og0KKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToNCisgICAgICAgIChXS0Nv
bnRleHRSZXN1bWVEb3dubG9hZCk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToNCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2Fk
RnJvbURhdGE6cGF0aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6DQorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOm9yaWdpbmF0aW5nV2ViVmlldzpjb25maWd1
cmF0aW9uOl0pOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLmg6IEFkZGVkLg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuDQorICAgICAgICAoY2hlY2tVUkxBcmd1bWVu
dCk6DQorICAgICAgICAoLVtfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gZGVzdGluYXRpb25dKToN
CisgICAgICAgICgtW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBzZXREZXN0aW5hdGlvbjpdKToN
CisgICAgICAgICgtW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBfZG93bmxvYWRDb25maWd1cmF0
aW9uXSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1
cmF0aW9uSW50ZXJuYWwuaDogQWRkZWQuDQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWREZWxlZ2F0ZS5oOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RG93bmxvYWRDbGllbnQuY3BwOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQuaDoNCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
Og0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xpZW50KToNCisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToNCisgICAgICAgICAgICBDb25zdWx0IHRoZSBuZXcgX1dLRG93bmxv
YWREZWxlZ2F0ZSBtZXRob2QgdGhhdCBhbGxvd3Mgc3BlY2lmeWluZyBhIF9XS0Rvd25sb2FkQ29u
ZmlndXJhdGlvbi4NCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZUNvbmZpZ3VyYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6DQorICAgICAgICAgICAgRHJpdmUtYnkgZml4
dXAgdG8gcjIzODM4MS4gTW92ZSB0aGUgbV9wcm9jZXNzUG9vbCBuaWwtY2hlY2sgdG8gdGhlIHRv
cCBvZiB0aGUNCisgICAgICAgICAgICBjb21wbGV0aW9uIGhhbmRsZXIuIFRoZXJlJ3Mgbm8gcG9p
bnQgaW4gY3JlYXRpbmcgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgdGhlIGRlc3RpbmF0aW9uDQor
ICAgICAgICAgICAgZmlsZSBpZiB3ZSBkb24ndCBhIHByb2Nlc3MgcG9vbCAodGhlcmVmb3JlIGEg
bmV0d29yayBwcm9jZXNzKSB0byBzZW5kIGl0IHRvLg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoNCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25s
b2FkKToNCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6DQorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KKw0KIDIwMTgtMTItMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFtQU09OXSBXZSBzaG91bGQg
bm90IG5lZWQgdG8gbmF2aWdhdGUgdG8gJ2Fib3V0OmJsYW5rJyB0byBzdXNwZW5kIHBhZ2VzDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwDQppbmRleCAxNzdmOWJhNDljMy4uMDQ0MjhiZDkzNTUgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KQEAgLTQ5LDkg
KzQ5LDEwIEBADQogbmFtZXNwYWNlIFdlYktpdCB7DQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
DQogDQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2Vy
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFzayYgZG93bmxvYWQsIGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkN
CitEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgTmV0d29ya0RhdGFUYXNrJiBkb3dubG9hZCwgY29uc3QgUEFM
OjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lLCBEb3du
bG9hZENvbmZpZ3VyYXRpb24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogICAgIDogbV9kb3du
bG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2VyKQ0KICAgICAsIG1fZG93bmxvYWRJRChkb3dubG9h
ZElEKQ0KKyAgICAsIG1fZG93bmxvYWRDb25maWd1cmF0aW9uKFdURk1vdmUoZG93bmxvYWRDb25m
aWd1cmF0aW9uKSkNCiAgICAgLCBtX2Rvd25sb2FkKCZkb3dubG9hZCkNCiAgICAgLCBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpDQogICAgICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpDQpA
QCAtNjIsOSArNjMsMTAgQEAgRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93
bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHcNCiB9DQogDQogI2lmIFBM
QVRGT1JNKENPQ09BKQ0KLURvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25s
b2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRh
c2sqIGRvd25sb2FkLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpDQorRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYg
ZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25s
b2FkVGFzayogZG93bmxvYWQsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRD
b25maWd1cmF0aW9uKQ0KICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikN
CiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkNCisgICAgLCBtX2Rvd25sb2FkQ29uZmln
dXJhdGlvbihXVEZNb3ZlKGRvd25sb2FkQ29uZmlndXJhdGlvbikpDQogICAgICwgbV9kb3dubG9h
ZFRhc2soZG93bmxvYWQpDQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQ0KICAgICAsIG1f
c3VnZ2VzdGVkTmFtZShzdWdnZXN0ZWROYW1lKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oDQppbmRleCBkOGZiZGQxZDM5ZC4uMTIyNmY0
MDIzMWIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oDQpAQCAtNjUsMTQgKzY1LDE0IEBAIGNsYXNzIFdlYlBhZ2U7DQogY2xhc3Mg
RG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsNCiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRG93bmxvYWQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsNCiBwdWJsaWM6DQot
ICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFz
ayYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSB7IH0pOw0KKyAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3du
bG9hZElELCBOZXR3b3JrRGF0YVRhc2smLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9LCBEb3dubG9hZENvbmZpZ3Vy
YXRpb24mJiA9IHsgfSk7DQogI2lmIFBMQVRGT1JNKENPQ09BKQ0KLSAgICBEb3dubG9hZChEb3du
bG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sqLCBjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lID0geyB9KTsNCisgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwg
TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSwgRG93bmxvYWRDb25maWd1
cmF0aW9uJiYgPSB7IH0pOw0KICNlbmRpZg0KIA0KICAgICB+RG93bmxvYWQoKTsNCiANCi0gICAg
dm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisgICAgdm9pZCByZXN1
bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsNCiAgICAgdm9pZCBjYW5j
ZWwoKTsNCiAjaWYgUExBVEZPUk0oQ09DT0EpDQogICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNv
bnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCkBAIC0xMDEsNiArMTAxLDcg
QEAgcHJpdmF0ZToNCiANCiAgICAgRG93bmxvYWRNYW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdlcjsN
CiAgICAgRG93bmxvYWRJRCBtX2Rvd25sb2FkSUQ7DQorICAgIERvd25sb2FkQ29uZmlndXJhdGlv
biBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbjsNCiANCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2Jsb2JGaWxlUmVmZXJlbmNlczsNCiAgICAgUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KaW5kZXggNzJjZDdlMWZlNzEuLmMwNzE1NWJhNTQ5IDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcA0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3
b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnUNCiAgICAgbV9w
ZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdE
b3dubG9hZD4oV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOw0KIH0NCiANCi12b2lkIERvd25sb2Fk
TWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2b2lk
IERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0
aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgY29uZmln
dXJhdGlvbikNCiB7DQogICAgIGlmIChtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5j
b250YWlucyhkb3dubG9hZElEKSkgew0KICAgICAgICAgYXV0byBwYWlyID0gbV9kb3dubG9hZHNX
YWl0aW5nRm9yRGVzdGluYXRpb24udGFrZShkb3dubG9hZElEKTsNCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCBkb3dubG8NCiAgICAgICAgIEFTU0VSVChjb21wbGV0aW9uSGFu
ZGxlcik7DQogICAgICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25s
b2FkSUQpKTsNCiANCi0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFs
bG93T3ZlcndyaXRlKTsNCisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25s
b2FkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsNCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6RG93bmxvYWQpOw0KICAgICAgICAgaWYgKG5ldHdv
cmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDYW5jZWxpbmcg
fHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNv
bXBsZXRlZCkNCiAgICAgICAgICAgICByZXR1cm47DQpAQCAtMTIwLDE0ICsxMjAsMTQgQEAgdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG8NCiAgICAgfQ0KIH0NCiANCi12b2lkIERvd25sb2FkTWFuYWdl
cjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQ0KK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQ0K
IHsNCiAjaWYgIVBMQVRGT1JNKENPQ09BKQ0KICAgICBub3RJbXBsZW1lbnRlZCgpOw0KICNlbHNl
DQotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywg
ZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsNCisgICAgYXV0byBkb3dubG9hZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNz
aW9uSUQsIFN0cmluZyB7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbikpOw0KIA0KLSAgICBkb3du
bG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpOw0KKyAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEpOw0KICAgICBBU1NFUlQo
IW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCiAgICAgbV9kb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5o
DQppbmRleCBmYmFkODg4ZTA3OS4uZjA3ZGZlNTVjOTQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaA0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgNCkBA
IC0yNSw2ICsyNSw3IEBADQogDQogI3ByYWdtYSBvbmNlDQogDQorI2luY2x1ZGUgIkRvd25sb2Fk
Q29uZmlndXJhdGlvbi5oIg0KICNpbmNsdWRlICJEb3dubG9hZElELmgiDQogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFzay5oIg0KICNpbmNsdWRlICJQZW5kaW5nRG93bmxvYWQuaCINCkBAIC04MCw5
ICs4MSw5IEBAIHB1YmxpYzoNCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7DQogICAgIHZvaWQgd2lsbERlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7DQogICAgIHZvaWQgY29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9h
ZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJiwgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOw0KLSAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7DQorICAgIHZvaWQgY29u
dGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKERvd25sb2FkSUQsIERvd25s
b2FkQ29uZmlndXJhdGlvbiYmKTsNCiANCi0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisgICAg
dm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJik7DQog
DQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQogI2lmIFBMQVRGT1JNKENP
Q09BKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQppbmRleCBkMzBlNDc5MmVhMi4uNDVlNTBl
Y2JiYzkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQpAQCAtMzUsOSArMzUsOSBAQA0K
IA0KIG5hbWVzcGFjZSBXZWJLaXQgew0KIA0KLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit2b2lkIERvd25s
b2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQ0KIHsNCi0g
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5zYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSk7DQogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pDQogICAg
ICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCiANCkBAIC00OCw2ICs0OCw3IEBA
IHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwNCiAgICAgfQ0KICAgICBhdXRvJiBjb2NvYVNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oKm5ldHdvcmtTZXNzaW9uKTsNCiAg
ICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJl
c3VtZURhdGEuZGF0YSgpIGxlbmd0aDpyZXN1bWVEYXRhLnNpemUoKV0pOw0KKyAgICBhdXRvIHBh
dGggPSBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5kZXN0aW5hdGlvbjsNCiANCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM0
NzQ1MTcxPi4NCiAjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgNCmluZGV4IGUxMDRjZTUzMTFiLi45MTQ0MDRi
NTU5YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgNCkBAIC0yNSw2ICsyNSw3IEBADQogDQogI3ByYWdtYSBvbmNlDQogDQorI2luY2x1ZGUg
IkRvd25sb2FkQ29uZmlndXJhdGlvbi5oIg0KICNpbmNsdWRlICJEb3dubG9hZElELmgiDQogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCINCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFs
Lmg+DQpAQCAtMTE2LDkgKzExNywxMCBAQCBwdWJsaWM6DQogICAgICAgICBtX3BlbmRpbmdEb3du
bG9hZCA9ICZwZW5kaW5nRG93bmxvYWQ7DQogICAgIH0NCiANCi0gICAgdmlydHVhbCB2b2lkIHNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgeyBtX3BlbmRpbmdE
b3dubG9hZExvY2F0aW9uID0gZmlsZW5hbWU7IH0NCisgICAgdmlydHVhbCB2b2lkIHNldFBlbmRp
bmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRD
b25maWd1cmF0aW9uKSB7IG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24gPSBkb3dubG9hZENvbmZp
Z3VyYXRpb24uZGVzdGluYXRpb247IG1fZG93bmxvYWRDb25maWd1cmF0aW9uID0gV1RGTW92ZShk
b3dubG9hZENvbmZpZ3VyYXRpb24pOyB9DQogICAgIGNvbnN0IFN0cmluZyYgcGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOyB9
DQogICAgIGJvb2wgaXNEb3dubG9hZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wZW5kaW5nRG93bmxv
YWRJRC5kb3dubG9hZElEKCk7IH0NCisgICAgRG93bmxvYWRDb25maWd1cmF0aW9uJiBkb3dubG9h
ZENvbmZpZ3VyYXRpb24oKSB7IHJldHVybiBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbjsgfQ0KIA0K
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9DQogICAgIHZpcnR1YWwgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0NCkBAIC0xNDYsNiArMTQ4LDcg
QEAgcHJvdGVjdGVkOg0KICAgICBOZXR3b3JrRGF0YVRhc2tDbGllbnQqIG1fY2xpZW50IHsgbnVs
bHB0ciB9Ow0KICAgICBQZW5kaW5nRG93bmxvYWQqIG1fcGVuZGluZ0Rvd25sb2FkIHsgbnVsbHB0
ciB9Ow0KICAgICBEb3dubG9hZElEIG1fcGVuZGluZ0Rvd25sb2FkSUQ7DQorICAgIERvd25sb2Fk
Q29uZmlndXJhdGlvbiBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbiB7IH07DQogICAgIFN0cmluZyBt
X3VzZXI7DQogICAgIFN0cmluZyBtX3Bhc3N3b3JkOw0KICAgICBTdHJpbmcgbV9wYXJ0aXRpb247
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHANCmluZGV4IDAzNmVjOGVmZTg1Li40Y2MwZWQyM2RmZiAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHANCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHANCkBA
IC00MzQsMTYgKzQzNCwxNiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpDQogICAgIHJlYWQoKTsNCiB9DQogDQot
dm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQ0KK3ZvaWQgTmV0d29ya0RhdGFUYXNr
QmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZENvbmZpZ3VyYXRp
b24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogew0KLSAgICBOZXR3b3JrRGF0YVRhc2s6OnNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCB7IH0sIGFsbG93T3ZlcndyaXRlKTsN
CisgICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKFdU
Rk1vdmUoZG93bmxvYWRDb25maWd1cmF0aW9uKSk7DQogDQogICAgIEFTU0VSVCghbV9zYW5kYm94
RXh0ZW5zaW9uKTsNCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBtX3NhbmRib3hF
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShtX2Rvd25sb2FkQ29u
ZmlndXJhdGlvbi5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQogICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pDQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCiANCi0g
ICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbikpDQorICAgIGlmIChtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5hbGxv
d092ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVzICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpDQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOw0KIH0NCiANCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oDQppbmRleCAwMGNj
MWY5MGRkMS4uZWFmYWM1NGJmNTkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgNCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6
DQogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOw0KICAgICBOZXR3b3Jr
RGF0YVRhc2s6OlN0YXRlIHN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdGF0ZTsg
fQ0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3Zl
cnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9h
ZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50IG1ldGhvZHMu
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0K
aW5kZXggMGIzMWZmNzczM2QuLmEzNGI5ZDQ0ZDIyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwDQpAQCAtNzg4LDkgKzc4OCw5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIERvd25sb2FkSUQgZG93bmxvDQogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxv
YWQobnVsbHB0ciwgc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWRGaWxl
bmFtZSk7DQogfQ0KIA0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlvbikNCiB7DQotICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQorICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRpb24pKTsNCiB9DQogDQogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQ0K
QEAgLTgyNywxNSArODI3LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93
bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzDQogICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgp
ID8gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0
ZWRGaWxlbmFtZSgpOw0KICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVzcG9u
c2UubWltZVR5cGUoKSk7DQogDQotICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQXN5bmMobmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCksIHN1Z2dlc3Rl
ZEZpbGVuYW1lKSwgZGVzdGluYXRpb25JRCk7DQorICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZUNvbmZpZ3VyYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhuZXR3b3JrRGF0YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQo
KSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBkZXN0aW5hdGlvbklEKTsNCiB9DQogDQotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3du
bG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3Vy
YXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBkb3du
bG9hZENvbmZpZ3VyYXRpb24pDQogew0KLSAgICBpZiAoZGVzdGluYXRpb24uaXNFbXB0eSgpKQ0K
KyAgICBpZiAoZG93bmxvYWRDb25maWd1cmF0aW9uLmRlc3RpbmF0aW9uLmlzRW1wdHkoKSkNCiAg
ICAgICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOw0KICAg
ICBlbHNlDQotICAgICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdE
b3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7DQorICAgICAgICBkb3dubG9hZE1h
bmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRpb24pKTsNCiB9DQogDQogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgNCmluZGV4IGY1YzJmZWRiZmM3Li5iMzAy
OGUxYWQ1ZSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oDQpAQCAtMjYyLDEzICsyNjIsMTMgQEAgcHJpdmF0ZToNCiAgICAgdm9pZCBjbGVhckRp
c2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsNCiANCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9u
SUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOw0KLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIERvd25sb2FkQ29uZmlndXJhdGlvbiYmKTsN
CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsNCiAjaWYgUExBVEZPUk0oQ09D
T0EpDQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwgY29uc3Qg
VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KICNlbmRpZg0KICAgICB2b2lkIGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsNCi0gICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOw0KKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZElELCBEb3dubG9hZENvbmZpZ3VyYXRpb24m
Jik7DQogDQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7DQogICAgIHZvaWQgYWxs
b3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCmluZGV4IDUwNzk1
YTI4MjI3Li5mZDYyMGM2MWI3NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCkBAIC00NywxNCArNDcsMTQg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgew0KICAgICBEZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhv
c3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50NjRfdCBjYWxs
YmFja0lEKQ0KIA0KICAgICBEb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCi0gICAgUmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KKyAgICBSZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgc3RydWN0IFdlYktpdDo6RG93
bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pDQogICAgIENhbmNlbERvd25sb2FkKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQ0KICNpZiBQTEFURk9STShDT0NPQSkNCiAgICAg
UHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFVS
TCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpDQogI2VuZGlmDQogDQogICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkN
Ci0gICAgQ29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3Zlcndy
aXRlKQ0KKyAgICBDb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0cnVjdCBXZWJLaXQ6OkRvd25sb2FkQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKQ0KIA0KICNpZiBQTEFURk9STShDT0NPQSkNCiAgICAgU2V0
UU9TKGludCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUykNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgN
CmluZGV4IDAzMGZhNTJiYjIzLi5hMzg0M2ZjOGRjMyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaA0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oDQpA
QCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsNCiANCiBjbGFzcyBOZXR3b3JrU2Vz
c2lvbkNvY29hOw0KIA0KK3N0cnVjdCBEb3dubG9hZENvbmZpZ3VyYXRpb247DQorDQogY2xhc3Mg
TmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsNCiAg
ICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7DQogcHVibGljOg0KQEAgLTY1LDcg
KzY3LDcgQEAgcHVibGljOg0KICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlk
ZSB7IH0NCiAgICAgTmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRl
Ow0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3Zl
cnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9h
ZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcygpIHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0NCmluZGV4IGM4NDE0MWI4ZGQ0Li4yZGMzYjk3MDk2OCAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0NCkBAIC0zODIsMTkgKzM4MiwxOSBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJg0KICAgICB9DQogfQ0KIA0KLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkNCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRD
b25maWd1cmF0aW9uKERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlv
bikNCiB7DQotICAgIE5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
ZmlsZW5hbWUsIHsgfSwgYWxsb3dPdmVyd3JpdGUpOw0KKyAgICBOZXR3b3JrRGF0YVRhc2s6OnNl
dFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRp
b24pKTsNCiANCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOw0KLSAgICBtX3NhbmRi
b3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSk7DQorICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShXVEZNb3ZlKG1fZG93bmxvYWRDb25maWd1cmF0aW9uLnNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsNCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikNCiAgICAgICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOw0KIA0KICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rv
d25sb2FkVGFza0ZpbGUgPSBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOw0KIA0KLSAgICBpZiAo
YWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uKSkNCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZW5hbWUpOw0KKyAgICBpZiAobV9kb3dubG9hZENvbmZpZ3VyYXRpb24uYWxsb3dP
dmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6OlllcyAmJiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQ0KKyAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsNCiB9DQog
DQogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0NCmluZGV4IDJkNGE3ZmRiMGI5Li45ZmIxNzMwZWRiMyAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQ0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tDQpAQCAtNTU1LDcgKzU1NSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhDQogICAgICAg
ICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRhVGFzaygqbmV0
d29ya0RhdGFUYXNrKTsNCiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFz
ay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsNCiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9
IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpOw0K
LSAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9h
ZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5z
ZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsNCisgICAg
ICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRv
d25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lv
bklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSwgV1RGTW92ZShuZXR3
b3JrRGF0YVRhc2stPmRvd25sb2FkQ29uZmlndXJhdGlvbigpKSk7DQogICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsN
CiAgICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOw0KICAgICAgICAgZG93bmxvYWQt
PmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwDQppbmRleCAwYjdiNjM1MGEyNi4uNWIzYjE1NzNk
NjMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcA0KQEAgLTk1LDEwICs5NSwxMCBAQCBTdHJpbmcgTmV0
d29ya0RhdGFUYXNrU291cDo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdA0KICAgICByZXR1cm4g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fcmVzcG9uc2UudXJsKCkubGFzdFBhdGhDb21wb25l
bnQoKSk7DQogfQ0KIA0KLXZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OnNldFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93
bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRDb25maWd1cmF0aW9uKQ0KIHsNCi0gICAgTmV0
d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3JpdGUpOw0KLSAgICBtX2FsbG93
T3ZlcndyaXRlRG93bmxvYWQgPSBhbGxvd092ZXJ3cml0ZTsNCisgICAgTmV0d29ya0RhdGFUYXNr
OjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKFdURk1vdmUoZG93bmxvYWRDb25maWd1
cmF0aW9uKSk7DQorICAgIG1fYWxsb3dPdmVyd3JpdGVEb3dubG9hZCA9IG1fZG93bmxvYWRDb25m
aWd1cmF0aW9uLmFsbG93T3ZlcndyaXRlID09IEFsbG93T3ZlcndyaXRlOjpZZXM7DQogfQ0KIA0K
IHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5oDQppbmRleCBkNzExYzc5MGMzNy4uMTA2NzEwOTNmNjkg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5oDQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOg0KICAgICB2b2lk
IGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsNCiAgICAgTmV0d29ya0RhdGFUYXNrOjpT
dGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBi
b29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3ZlcnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rv
d25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQog
ICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICB2
b2lkIHRpbWVvdXRGaXJlZCgpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3dubG9hZENv
bmZpZ3VyYXRpb24uY3BwDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu
LjIzNWJiNzIxZThlDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9E
b3dubG9hZENvbmZpZ3VyYXRpb24uY3BwDQpAQCAtMCwwICsxLDU5IEBADQorLyoNCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUg
IkRvd25sb2FkQ29uZmlndXJhdGlvbi5oIg0KKw0KKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
Ig0KKw0KK25hbWVzcGFjZSBXZWJLaXQgew0KKw0KK3ZvaWQgRG93bmxvYWRDb25maWd1cmF0aW9u
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdA0KK3sNCisgICAgZW5jb2RlciA8
PCBkZXN0aW5hdGlvbjsNCisgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZS5lbmNvZGUoZW5jb2Rl
cik7DQorICAgIGVuY29kZXIgPDwgYWxsb3dPdmVyd3JpdGU7DQorfQ0KKw0KK3N0ZDo6b3B0aW9u
YWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBEb3dubG9hZENvbmZpZ3VyYXRpb246OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpDQorew0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24gY29u
ZmlnIHsgfTsNCisNCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWcuZGVzdGluYXRpb24p
KQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgYXV0byBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoZGVjb2Rlcik7
DQorICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7DQorDQorICAgIGNvbmZpZy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQorDQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29uZmlnLmFsbG93T3ZlcndyaXRlKSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQor
DQorICAgIHJldHVybiB7IFdURk1vdmUoY29uZmlnKSB9Ow0KK30NCisNCit9OyAvLyBuYW1lc3Bh
Y2UgV2ViS2l0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxvYWRDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3dubG9hZENvbmZpZ3VyYXRpb24u
aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42MTRiODIxYmQ5Ng0K
LS0tIC9kZXYvbnVsbA0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxvYWRDb25maWd1
cmF0aW9uLmgNCkBAIC0wLDAgKzEsNjkgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkN
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K
KyAqLw0KKw0KKyNwcmFnbWEgb25jZQ0KKw0KKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
DQorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPg0KKw0KK25hbWVzcGFjZSBJUEMgew0KK2NsYXNz
IERlY29kZXI7DQorY2xhc3MgRW5jb2RlcjsNCit9DQorDQorbmFtZXNwYWNlIFdlYktpdCB7DQor
DQorZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsNCisNCitzdHJ1Y3QgRG93
bmxvYWRDb25maWd1cmF0aW9uIHsNCisNCisgICAgRG93bmxvYWRDb25maWd1cmF0aW9uKCkgPSBk
ZWZhdWx0Ow0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbiwgQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUgPSBBbGxvd092ZXJ3cml0ZTo6Tm8p
DQorICAgICAgICA6IGRlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQ0KKyAgICAgICAgLCBhbGxvd092
ZXJ3cml0ZShhbGxvd092ZXJ3cml0ZSkNCisgICAgew0KKyAgICB9DQorDQorICAgIFN0cmluZyBk
ZXN0aW5hdGlvbjsNCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7DQorICAgIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlOw0KKw0KKyAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsNCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7DQorfTsNCisN
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQNCisNCituYW1lc3BhY2UgV1RGIHsNCisNCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6QWxsb3dPdmVyd3JpdGU+IHsNCisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwNCisgICAgICAgIFdlYktpdDo6QWxsb3dPdmVyd3JpdGUs
DQorICAgICAgICBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywNCisgICAgICAgIFdlYktpdDo6
QWxsb3dPdmVyd3JpdGU6Olllcw0KKyAgICA+Ow0KK307DQorDQorfSAvLyBuYW1lc3BhY2UgV1RG
Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0DQppbmRleCAwNTVlYzVlNTc2MS4uNWJjMGZmMDgxODggMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0DQorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0DQpAQCAtMTAwLDYgKzEwMCw3IEBAIFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbi5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NhY2hlTW9kZWwuY3BwDQog
U2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NvbnRleHRNZW51Q29u
dGV4dERhdGEuY3BwDQorU2hhcmVkL0Rvd25sb2FkQ29uZmlndXJhdGlvbi5jcHANCiBTaGFyZWQv
RWRpdG9yU3RhdGUuY3BwDQogU2hhcmVkL0ZvbnRJbmZvLmNwcA0KIFNoYXJlZC9GcmFtZUluZm9E
YXRhLmNwcA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dA0KaW5kZXggNTVlYWY1OTEzMTcuLmYxODQyNTk2
OTA4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0DQorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQNCkBAIC0yMzAsNiArMjMwLDcgQEAgVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQ0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tDQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tDQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5tbQ0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0
aW9uLm1tDQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tDQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQ0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgNCmluZGV4IDAyMzc2ZTFlMTEwLi5hNzcw
ODgwZTA5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3du
bG9hZENsaWVudC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaA0KQEAgLTI1LDYgKzI1LDcgQEANCiANCiAjcHJhZ21hIG9uY2UNCiANCisjaW5j
bHVkZSAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPg0KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4NCiANCkBAIC0zOSw4
ICs0MCw2IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7DQogY2xhc3MgRG93
bmxvYWRQcm94eTsNCiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsNCiBjbGFzcyBXZWJQcm90ZWN0aW9u
U3BhY2U7DQotDQotZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsNCiB9DQog
DQogbmFtZXNwYWNlIEFQSSB7DQpAQCAtNTMsNyArNTIsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYpIHsgfQ0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
dWludDY0X3QpIHsgfQ0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0NCisgICAgdmlydHVhbCB2
b2lkIGRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
RnVuY3Rpb248dm9pZChXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9DQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0NCiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
eyB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCmluZGV4
IGUzYjQ2OGI4MDExLi5kOGY1Zjg5M2ExNCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHANCkBAIC0yMDYsMTQgKzIwNiwxNCBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZA0KICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKCZw
cm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOw0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0
aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwNCisgICAgICAgIHZvaWQgZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRD
b25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbA0KICAgICAgICAgew0K
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUpDQotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihBbGxv
d092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOw0KIA0KICAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxz
ZTsNCiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb24oQWRv
cHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUodG9B
UEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShmaWxlbmFtZS5p
bXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOw0KLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3Jp
dGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgdG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0
KCkpKTsNCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHRvV1RGU3RyaW5nKGRlc3Rp
bmF0aW9uLmdldCgpKSwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxs
b3dPdmVyd3JpdGU6Ok5vIH0pOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgdm9pZCBkaWRDcmVh
dGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwNCkBAIC0yODIsNyArMjgy
LDcgQEAgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLVVJMUmVxdWVzdFINCiANCiBXS0Rvd25sb2FkUmVmIFdLQ29udGV4
dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RhdGFSZWYgcmVzdW1l
RGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkNCiB7DQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29u
dGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIHRvSW1wbChyZXN1bWVEYXRhKSwgdG9X
VEZTdHJpbmcocGF0aCkpKTsNCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+
cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgdG9JbXBsKHJlc3VtZURhdGEpLCB7IHRvV1RGU3RyaW5n
KHBhdGgpIH0pKTsNCiB9DQogDQogdm9pZCBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJE
YXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsICBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQ0KaW5kZXggYTE4MzgxYWIzNWEuLmVkMWUwNzNkZjg1IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0N
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
DQpAQCAtNDMsNiArNDMsNyBAQA0KICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiDQogI2ltcG9y
dCAiX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiDQogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Np
b25JbnRlcm5hbC5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFs
LmgiDQogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIg0KICNpbXBvcnQgIl9XS0Rvd25s
b2FkSW50ZXJuYWwuaCINCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRl
cm5hbC5oIg0KQEAgLTU3OCw3ICs1NzksMTUgQEAgLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRV
UkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzoNCiAN
CiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1
bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcNCiB7DQotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1l
RG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KHJlc3VtZURhdGEpLnB0cigpLCBwYXRoKSk7DQorICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNz
UG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCB7IHBhdGggfSkpOw0KK30NCisNCistIChf
V0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uOihf
V0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKil3a0NvbmZpZ3VyYXRpb24NCit7DQorICAgIFdlYktp
dDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24geyB9Ow0KKyAgICBpZiAod2tD
b25maWd1cmF0aW9uKQ0KKyAgICAgICAgY29uZmlndXJhdGlvbiA9IFt3a0NvbmZpZ3VyYXRpb24g
X2Rvd25sb2FkQ29uZmlndXJhdGlvbl07DQorICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9v
bC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7DQog
fQ0KIA0KIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rp
bmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5n
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaA0KaW5kZXggM2RlMmMwMzYy
YmYuLjU1ZmRlMThkNDA3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oDQpAQCAtMzEsNiArMzEsNyBAQA0K
IEBjbGFzcyBXS1dlYlZpZXc7DQogQGNsYXNzIF9XS0F1dG9tYXRpb25TZXNzaW9uOw0KIEBjbGFz
cyBfV0tEb3dubG9hZDsNCitAY2xhc3MgX1dLRG93bmxvYWRDb25maWd1cmF0aW9uOw0KIEBjbGFz
cyBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247DQogQHByb3RvY29sIF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZTsNCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsNCkBAIC04Myw2ICs4NCw3
IEBADQogDQogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiAtIChf
V0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7DQorLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmln
dXJhdGlvbjooX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiANCiAvLyBU
ZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9j
ZXNzZXMgYXJlIHJ1bm5pbmcuDQogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAuLjllZWM0NDBjMGQwDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgNCkBAIC0wLDAgKzEs
NDMgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0
Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPg0KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4N
CisNCisjaWYgV0tfQVBJX0VOQUJMRUQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0K
K1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkN
CitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0DQorDQorQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgbnVsbGFibGUpIE5TVVJMICpkZXN0aW5hdGlvbjsN
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd092ZXJ3cml0ZTsNCisNCitAZW5kDQor
DQorTlNfQVNTVU1FX05PTk5VTExfRU5EDQorDQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw
MDAwMDAwMC4uMzJlM2MxNDlhNjcNCi0tLSAvZGV2L251bGwNCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCkBAIC0wLDAg
KzEsNjQgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUg
bWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0K
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0K
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
DQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQg
ImNvbmZpZy5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmgi
DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVu
dChOU1VSTCAqdXJsKQ0KK3sNCisgICAgaWYgKHVybCAmJiAhW3VybCBpc0ZpbGVVUkxdKQ0KKyAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgdXJsXTsNCit9DQorDQorQGltcGxlbWVudGF0aW9u
IF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiB7DQorICAgIFJldGFpblB0cjxOU1VSTD4gbV9kZXN0
aW5hdGlvbjsNCit9DQorDQorLSAoTlNVUkwgKilkZXN0aW5hdGlvbg0KK3sNCisgICAgcmV0dXJu
IG1fZGVzdGluYXRpb24uZ2V0KCk7DQorfQ0KKw0KKy0gKHZvaWQpc2V0RGVzdGluYXRpb246KE5T
VVJMICopZGVzdGluYXRpb24NCit7DQorICAgIGNoZWNrVVJMQXJndW1lbnQoZGVzdGluYXRpb24p
Ow0KKyAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb247DQorfQ0KKw0KKy0gKFdlYktpdDo6
RG93bmxvYWRDb25maWd1cmF0aW9uKV9kb3dubG9hZENvbmZpZ3VyYXRpb24NCit7DQorICAgIFdl
YktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZyB7IH07DQorDQorICAgIGNvbmZpZy5k
ZXN0aW5hdGlvbiA9IFttX2Rlc3RpbmF0aW9uIHBhdGhdOw0KKyAgICBjb25maWcuYWxsb3dPdmVy
d3JpdGUgPSBfYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBX
ZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXM7DQorDQorICAgIHJldHVybiBjb25maWc7DQorfQ0K
Kw0KK0BlbmQNCisNCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAuLmViOThmZjAxNDEzDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaA0KQEAg
LTAsMCArMSwzOCBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAq
IGFyZSBtZXQ6DQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycNCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywNCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTDQorICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YNCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2lt
cG9ydCAiX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorI2lmIFdLX0FQSV9FTkFCTEVE
DQorDQorI2ltcG9ydCAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorQGludGVyZmFjZSBf
V0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKCkNCisNCistIChXZWJLaXQ6OkRvd25sb2FkQ29uZmln
dXJhdGlvbilfZG93bmxvYWRDb25maWd1cmF0aW9uOw0KKw0KK0BlbmQNCisNCisjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KaW5kZXggZThiZTQwZjg3MDUuLjYyNTdiMTUw
N2U2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkRGVsZWdhdGUuaA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4NCiANCiBAY2xhc3MgX1dLRG93bmxvYWQ7DQorQGNsYXNzIF9X
S0Rvd25sb2FkQ29uZmlndXJhdGlvbjsNCiANCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0
ZSA8TlNPYmplY3Q+DQogQG9wdGlvbmFsDQpAQCAtMzgsNiArMzksNyBAQA0KIC0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlOw0KIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGg7DQogLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhh
bmRsZXI7DQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
Q29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsNCiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlz
aDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsNCiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7DQogLSAodm9p
ZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQ7DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGll
bnQuY3BwDQppbmRleCBlYWQ0ZjIzNDk5MS4uMmJjMjc5ZTcwY2IgMTAwNjQ0DQotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHANCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcA0KQEAgLTc0LDEyICs3NCwxMiBAQCBwcml2YXRlOg0KICAgICAgICAgd2Via2l0RG93bmxv
YWROb3RpZnlQcm9ncmVzcyhkb3dubG9hZC5nZXQoKSwgbGVuZ3RoKTsNCiAgICAgfQ0KIA0KLSAg
ICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGUNCisgICAgdm9pZCBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChEb3dubG9hZENvbmZpZ3VyYXRp
b24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlDQogICAgIHsNCiAgICAgICAgIEdS
ZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3Jl
YXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOw0KICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOw0KICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gd2Via2l0RG93bmxvYWRE
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZC5nZXQoKSwgZmls
ZW5hbWUudXRmOCgpLCBhbGxvd092ZXJ3cml0ZSk7DQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhbGxvd092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6
Tm8sIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVzdGluYXRp
b24sIGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRl
OjpObyB9KTsNCiAgICAgfQ0KIA0KICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBw
YXRoKSBvdmVycmlkZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oDQppbmRleCAxMTg4NjZjYzZmMS4uYjdiMjFhODFjOWIgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQpAQCAtNTEsNyArNTEs
NyBAQCBwcml2YXRlOg0KICAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOw0KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7DQogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsNCi0gICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkm
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3Zl
cndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsNCisgICAgdm9pZCBkZWNpZGVDb25maWd1cmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRDb25m
aWd1cmF0aW9uJiYpPiYmKSBmaW5hbDsNCiAgICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7DQogICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7DQogICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYp
IGZpbmFsOw0KQEAgLTc3LDYgKzc3LDcgQEAgcHJpdmF0ZToNCiAgICAgICAgIGJvb2wgZG93bmxv
YWREaWRSZWNlaXZlRGF0YSA6IDE7DQogICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSA6IDE7DQogICAgICAgICBi
b29sIGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0
aW9uSGFuZGxlciA6IDE7DQorICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsNCiAgICAgICAgIGJv
b2wgZG93bmxvYWREaWRGaW5pc2ggOiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERpZEZhaWwg
OiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERpZENhbmNlbCA6IDE7DQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQ0KaW5kZXggM2I0OTYyOGZk
ZjYuLmI4ZjA5ZmY0M2MwIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvRG93bmxvYWRDbGllbnQubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tDQpAQCAtNDAsNiArNDAsNyBAQA0KICNpbXBvcnQgIldlYkNyZWRl
bnRpYWwuaCINCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCINCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCINCisjaW1wb3J0ICJfV0tEb3dubG9hZENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIg0K
ICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCINCiAjaW1wb3J0ICJfV0tEb3dubG9hZElu
dGVybmFsLmgiDQogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+DQpAQCAtNTcsNiArNTgs
NyBAQCBEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdh
dGU+IGRlbGVnYXRlKQ0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVE
YXRhID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRp
ZFJlY2VpdmVEYXRhOildOw0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6YWxsb3dPdmVyd3JpdGU6KV07DQogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21w
bGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopXTsNCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVDb25maWd1
cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlQ29uZmlndXJhdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsNCiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRGaW5pc2g6KV07DQogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGlkRmFpbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOildOw0KICAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZENhbmNlbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZERpZENhbmNlbDopXTsNCkBAIC0xNzcsMzIgKzE3OSw0MiBAQCB2b2lkIERv
d25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFBybw0KICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOw0KIH0NCiANCi12b2lkIERvd25sb2FkQ2xp
ZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpDQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRDb25maWd1cmF0
aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQ0KIHsNCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQ0KICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7DQog
ICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsNCiAgICAgICAg
IE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsNCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgZGVzdGluYXRpb24sIEFsbG93T3ZlcndyaXRlOjpZZXMgfSk7DQogICAgICAgICBy
ZXR1cm47DQogICAgIH0NCiAjZW5kaWYNCiANCi0gICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5k
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3Jp
dGUgJiYgIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxlcikNCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgIGlmICghbV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFs
bG93T3ZlcndyaXRlICYmICFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgJiYgIW1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNv
bXBsZXRpb25IYW5kbGVyKQ0KKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
DQogDQotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCisgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUNvbXBsZXRpb25IYW5kbGVyKSB7DQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgp
LCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKndrRG93bmxvYWRD
b25maWd1cmF0aW9uKSB7DQorICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQ0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQorICAgICAgICAgICAgRG93
bmxvYWRDb25maWd1cmF0aW9uIGRvd25sb2FkQ29uZmlndXJhdGlvbiB7IH07DQorICAgICAgICAg
ICAgaWYgKHdrRG93bmxvYWRDb25maWd1cmF0aW9uKQ0KKyAgICAgICAgICAgICAgICBkb3dubG9h
ZENvbmZpZ3VyYXRpb24gPSBbd2tEb3dubG9hZENvbmZpZ3VyYXRpb24gX2Rvd25sb2FkQ29uZmln
dXJhdGlvbl07DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb3dubG9h
ZENvbmZpZ3VyYXRpb24pKTsNCisgICAgICAgIH0pLmdldCgpXTsNCisgICAgfSBlbHNlIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBO
TzsNCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lODQogICAgICAg
ICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxl
bmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOw0KICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5EDQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxv
d092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRl
c3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVzdGluYXRpb24sIGFs
bG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObyB9
KTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZp
bGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2Vs
ZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7
DQogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxl
ZCgpKQ0KICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
YWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5v
LCBkZXN0aW5hdGlvbik7DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBkZXN0aW5h
dGlvbiwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3Jp
dGU6Ok5vIH0pOw0KICAgICAgICAgfSkuZ2V0KCldOw0KICAgICB9DQogfQ0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0NCmluZGV4IGQ3NGRkYjM3MDUyLi45
MmUwY2NmY2JkMCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQ0KQEAgLTUyOCw4ICs1MjgsNiBAQCAtIChCT09MKXRyeVRvUGVyZm9ybTooU0VMKWFj
dGlvbiB3aXRoOihpZClvYmplY3QNCiANCiBAZW5kDQogDQotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsNCi0NCiAjaWYgSEFWRShUT1VDSF9CQVIpDQogDQogQGludGVyZmFjZSBXS1RleHRMaXN0VG91
Y2hCYXJWaWV3Q29udHJvbGxlciA6IE5TVmlld0NvbnRyb2xsZXIgew0KQEAgLTUzOCw5ICs1MzYs
OSBAQCBAcHJpdmF0ZQ0KICAgICBMaXN0VHlwZSBfY3VycmVudExpc3RUeXBlOw0KIH0NCiANCi1A
cHJvcGVydHkgKG5vbmF0b21pYykgTGlzdFR5cGUgY3VycmVudExpc3RUeXBlOw0KK0Bwcm9wZXJ0
eSAobm9uYXRvbWljKSBXZWJLaXQ6Okxpc3RUeXBlIGN1cnJlbnRMaXN0VHlwZTsNCiANCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViVmlld0ltcGwqKXdlYlZpZXdJbXBs
Ow0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihXZWJLaXQ6OldlYlZpZXdJ
bXBsKil3ZWJWaWV3SW1wbDsNCiANCiBAZW5kDQogDQpAQCAtNTU3LDcgKzU1NSw3IEBAIHN0YXRp
YyBjb25zdCBOU1VJbnRlZ2VyIG5vTGlzdFNlZ21lbnQgPSAwOw0KIHN0YXRpYyBjb25zdCBOU1VJ
bnRlZ2VyIHVub3JkZXJlZExpc3RTZWdtZW50ID0gMTsNCiBzdGF0aWMgY29uc3QgTlNVSW50ZWdl
ciBvcmRlcmVkTGlzdFNlZ21lbnQgPSAyOw0KIA0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdl
YlZpZXdJbXBsOihXZWJWaWV3SW1wbCopd2ViVmlld0ltcGwNCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhXZWJWaWV3SW1wbDooV2ViS2l0OjpXZWJWaWV3SW1wbCopd2ViVmlld0ltcGwNCiB7DQog
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCkBA
IC02MDAsOSArNTk4LDkgQEAgLSAodm9pZClfc2VsZWN0TGlzdDooaWQpc2VuZGVyDQogICAgICAg
ICAvLyBUaGVyZSBpcyBubyAicmVtb3ZlIGxpc3QiIGVkaXQgY29tbWFuZCwgYnV0IEluc2VydE9y
ZGVyZWRMaXN0IGFuZCBJbnNlcnRVbm9yZGVyZWRMaXN0IGJvdGgNCiAgICAgICAgIC8vIGJlaGF2
ZSBhcyB0b2dnbGVzLCBzbyB3ZSBjYW4gaW52b2tlIHRoZSBhcHByb3ByaWF0ZSBlZGl0IGNvbW1h
bmQgZGVwZW5kaW5nIG9uIG91ciBfY3VycmVudExpc3RUeXBlDQogICAgICAgICAvLyB0byByZW1v
dmUgYW4gZXhpc3RpbmcgbGlzdC4gV2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBpZiBfY3Vy
cmVudExpc3RUeXBlIGlzIE5vTGlzdC4NCi0gICAgICAgIGlmIChfY3VycmVudExpc3RUeXBlID09
IE9yZGVyZWRMaXN0KQ0KKyAgICAgICAgaWYgKF9jdXJyZW50TGlzdFR5cGUgPT0gV2ViS2l0OjpP
cmRlcmVkTGlzdCkNCiAgICAgICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRp
dENvbW1hbmQoQCJJbnNlcnRPcmRlcmVkTGlzdCIsIEAiIik7DQotICAgICAgICBlbHNlIGlmIChf
Y3VycmVudExpc3RUeXBlID09IFVub3JkZXJlZExpc3QpDQorICAgICAgICBlbHNlIGlmIChfY3Vy
cmVudExpc3RUeXBlID09IFdlYktpdDo6VW5vcmRlcmVkTGlzdCkNCiAgICAgICAgICAgICBfd2Vi
Vmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoQCJJbnNlcnRVbm9yZGVyZWRMaXN0
IiwgQCIiKTsNCiAgICAgICAgIGJyZWFrOw0KICAgICBjYXNlIHVub3JkZXJlZExpc3RTZWdtZW50
Og0KQEAgLTYxNiwxNyArNjE0LDE3IEBAIC0gKHZvaWQpX3NlbGVjdExpc3Q6KGlkKXNlbmRlcg0K
ICAgICBfd2ViVmlld0ltcGwtPmRpc21pc3NUZXh0VG91Y2hCYXJQb3BvdmVySXRlbVdpdGhJZGVu
dGlmaWVyKE5TVG91Y2hCYXJJdGVtSWRlbnRpZmllclRleHRMaXN0KTsNCiB9DQogDQotLSAodm9p
ZClzZXRDdXJyZW50TGlzdFR5cGU6KExpc3RUeXBlKWxpc3RUeXBlDQorLSAodm9pZClzZXRDdXJy
ZW50TGlzdFR5cGU6KFdlYktpdDo6TGlzdFR5cGUpbGlzdFR5cGUNCiB7DQogICAgIE5TU2VnbWVu
dGVkQ29udHJvbCAqaW5zZXJ0TGlzdENvbnRyb2wgPSAoTlNTZWdtZW50ZWRDb250cm9sICopc2Vs
Zi52aWV3Ow0KICAgICBzd2l0Y2ggKGxpc3RUeXBlKSB7DQotICAgIGNhc2UgTm9MaXN0Og0KKyAg
ICBjYXNlIFdlYktpdDo6Tm9MaXN0Og0KICAgICAgICAgW2luc2VydExpc3RDb250cm9sIHNldFNl
bGVjdGVkOllFUyBmb3JTZWdtZW50Om5vTGlzdFNlZ21lbnRdOw0KICAgICAgICAgYnJlYWs7DQot
ICAgIGNhc2UgT3JkZXJlZExpc3Q6DQorICAgIGNhc2UgV2ViS2l0OjpPcmRlcmVkTGlzdDoNCiAg
ICAgICAgIFtpbnNlcnRMaXN0Q29udHJvbCBzZXRTZWxlY3RlZDpZRVMgZm9yU2VnbWVudDpvcmRl
cmVkTGlzdFNlZ21lbnRdOw0KICAgICAgICAgYnJlYWs7DQotICAgIGNhc2UgVW5vcmRlcmVkTGlz
dDoNCisgICAgY2FzZSBXZWJLaXQ6OlVub3JkZXJlZExpc3Q6DQogICAgICAgICBbaW5zZXJ0TGlz
dENvbnRyb2wgc2V0U2VsZWN0ZWQ6WUVTIGZvclNlZ21lbnQ6dW5vcmRlcmVkTGlzdFNlZ21lbnRd
Ow0KICAgICAgICAgYnJlYWs7DQogICAgIH0NCkBAIC02NDYsNyArNjQ0LDcgQEAgQHByaXZhdGUN
CiAgICAgUmV0YWluUHRyPFdLVGV4dExpc3RUb3VjaEJhclZpZXdDb250cm9sbGVyPiBfdGV4dExp
c3RUb3VjaEJhclZpZXdDb250cm9sbGVyOw0KIA0KIEBwcml2YXRlDQotICAgIFdlYlZpZXdJbXBs
KiBfd2ViVmlld0ltcGw7DQorICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIF93ZWJWaWV3SW1wbDsN
CiB9DQogDQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdGV4dElzQm9sZDsNCkBAIC02NTUs
NyArNjUzLDcgQEAgQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdGV4dElzVW5kZXJsaW5lZDsN
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNUZXh0QWxpZ25tZW50IGN1cnJlbnRUZXh0QWxpZ25t
ZW50Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgTlNDb2xvciAq
dGV4dENvbG9yOw0KIA0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihXZWJW
aWV3SW1wbCopd2ViVmlld0ltcGw7DQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0lt
cGw6KFdlYktpdDo6V2ViVmlld0ltcGwqKXdlYlZpZXdJbXBsOw0KIEBlbmQNCiANCiBAaW1wbGVt
ZW50YXRpb24gV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcg0KQEAgLTY2NSw3ICs2NjMsNyBA
QCBAc3ludGhlc2l6ZSB0ZXh0SXNJdGFsaWM9X3RleHRJc0l0YWxpYzsNCiBAc3ludGhlc2l6ZSB0
ZXh0SXNVbmRlcmxpbmVkPV90ZXh0SXNVbmRlcmxpbmVkOw0KIEBzeW50aGVzaXplIGN1cnJlbnRU
ZXh0QWxpZ25tZW50PV9jdXJyZW50VGV4dEFsaWdubWVudDsNCiANCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViVmlld0ltcGwqKXdlYlZpZXdJbXBsDQorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoV2ViVmlld0ltcGw6KFdlYktpdDo6V2ViVmlld0ltcGwqKXdlYlZpZXdJ
bXBsDQogew0KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkNCiAgICAgICAgIHJldHVy
biBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwDQppbmRleCA3NTEwMmVlM2IwMC4uMGJhY2ZkZWNjN2IgMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHANCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0K
QEAgLTE3NSwyMSArMTc1LDIwIEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEo
dWludDY0X3QgbGVuZ3RoKQ0KICAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRp
ZFJlY2VpdmVEYXRhKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgbGVuZ3RoKTsNCiB9DQogDQotdm9p
ZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFz
eW5jKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkNCit2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUpDQogew0KICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpDQogICAgICAgICByZXR1
cm47DQogICAgIA0KLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRv
d25sb2FkSUQgPSBkb3dubG9hZElEXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0
cmluZyBkZXN0aW5hdGlvbikgew0KLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7DQotICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgp
KQ0KLSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsNCi0NCisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVDb25m
aWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRv
d25sb2FkSUQgPSBkb3dubG9hZElEXSAoRG93bmxvYWRDb25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikgew0KICAgICAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQ0KICAgICAgICAgICAgIHJldHVy
bjsNCiANCisgICAgICAgIGlmICghY29uZmlndXJhdGlvbi5kZXN0aW5hdGlvbi5pc051bGwoKSkN
CisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uZmlndXJhdGlv
bi5kZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBjb25maWd1
cmF0aW9uLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOw0KKw0KICAgICAgICAgaWYgKGF1dG8qIG5l
dHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkNCi0gICAgICAg
ICAgICBuZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRp
bnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRp
b24sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlID09IEFsbG93T3Zlcndy
aXRlOjpZZXMpLCAwKTsNCisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkQ29uZmlndXJh
dGlvbihkb3dubG9hZElELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSwgMCk7DQogICAgIH0pOw0K
IH0NCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaA0KaW5kZXggZjI0MDQ5OTU3YTIuLmYwODFiNWFjY2JiIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KQEAgLTExNSw3
ICsxMTUsNyBAQCBwcml2YXRlOg0KICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7DQogICAg
IHZvaWQgZGlkQ2FuY2VsKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7DQog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7DQotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVB
c3luYyhEb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsNCisgICAg
dm9pZCBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxv
YWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7DQogDQogICAgIERvd25sb2Fk
UHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsNCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQb29s
PiBtX3Byb2Nlc3NQb29sOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4NCmluZGV4IGVhNTZkYWIxZDYy
Li4yZWI3OTBmYWM0MyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbg0KQEAgLTI0LDcgKzI0LDcg
QEAgbWVzc2FnZXMgLT4gRG93bmxvYWRQcm94eSB7DQogICAgIERpZFN0YXJ0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBBdG9taWNTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpDQog
ICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQ0KICAgICBXaWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKSkNCi0gICAgRGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KKyAgICBEZWNpZGVDb25maWd1cmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCiANCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpDQogICAgIERpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IGxlbmd0aCkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHANCmluZGV4IGM4ZjgwNWU4OTg0Li4wZjhhYTk4NjQ4NiAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcA0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwDQpAQCAtMTI2MSwxNyArMTI2MSwxNiBAQCBE
b3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0
aWF0aW5nUGFnZSwgY29uc3QgUmVzbw0KICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsNCiB9DQog
DQotRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQ
cm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoKQ0KK0Rvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3du
bG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEqIHJlc3Vt
ZURhdGEsIERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlvbikNCiB7
DQogICAgIGF1dG8qIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNl
UmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSk7DQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsNCiANCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7DQotICAgIGlmICghcGF0aC5pc0VtcHR5KCkp
DQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsNCisgICAg
aWYgKCFkb3dubG9hZENvbmZpZ3VyYXRpb24uZGVzdGluYXRpb24uaXNFbXB0eSgpKQ0KKyAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRvd25sb2FkQ29uZmlndXJhdGlvbi5k
ZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBkb3dubG9hZENv
bmZpZ3VyYXRpb24uc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQogDQogICAgIGlmIChuZXR3b3Jr
UHJvY2VzcygpKSB7DQotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LT5k
b3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSksIDApOw0KKyAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRQ
cm94eS0+ZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLT5kYXRhUmVmZXJlbmNlKCksIFdURk1vdmUo
ZG93bmxvYWRDb25maWd1cmF0aW9uKSksIDApOw0KICAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJv
eHk7DQogICAgIH0NCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaA0K
aW5kZXggMDc2Nzk0ZGYwY2UuLjRjMjMxZDcyZGE3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaA0KQEAgLTI5LDYgKzI5LDcgQEANCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiDQogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIg0KICNpbmNs
dWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiDQorI2luY2x1ZGUgIkRvd25sb2FkQ29uZmlndXJh
dGlvbi5oIg0KICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiDQogI2luY2x1ZGUgIkdlbmVy
aWNDYWxsYmFjay5oIg0KICNpbmNsdWRlICJIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFz
ZXNDb3VudGVyLmgiDQpAQCAtMTg5LDcgKzE5MCw3IEBAIHB1YmxpYzoNCiAgICAgY29uc3QgU3Ry
aW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24t
PmluamVjdGVkQnVuZGxlUGF0aCgpOyB9DQogDQogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2Fk
KFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOw0KLSAgICBEb3du
bG9hZFByb3h5KiByZXN1bWVEb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBj
b25zdCBBUEk6OkRhdGEqIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7DQorICAgIERv
d25sb2FkUHJveHkqIHJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgPSB7
IH0pOw0KIA0KICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YShSZWZQdHI8QVBJOjpPYmplY3Q+JiYgdXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEgPSBXVEZNb3ZlKHVzZXJEYXRhKTsgfQ0KIA0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQppbmRleCA2YjE4OTAwODQ1
My4uNWU0NWViM2M3MDIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qDQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qDQpAQCAtMTA3OCw4ICsxMDc4LDEwIEBADQogCQk2MzYzNTNBNTFFOTg1
OERGMDAwOUY4QUYgLyogX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNGQUJFMTkxRTk3MEQ2
NTAwMzAxMUQ1IC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Ow0KIAkJNjM3MjgxQTIyMUFE
Qzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM3MjgxQTAyMUFEQzc0NDAwOUUwREU2IC8qIFdL
RG93bmxvYWRQcm9ncmVzcy5oICovOyB9Ow0KIAkJNjM3MjgxQTMyMUFEQzc0NDAwOUUwREU2IC8q
IFdLRG93bmxvYWRQcm9ncmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDYzNzI4MUExMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jl
c3MubW0gKi87IH07DQorCQk2M0JERTdERTIxOTI0OEM4MDA5OEM5MEIgLyogRG93bmxvYWRDb25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2M0JERTdEQzIxOTI0OEM4MDA5OEM5MEIgLyogRG93bmxvYWRDb25maWd1cmF0aW9uLmggKi87
IH07DQogCQk2M0MzMkMyNjFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNDMzJD
MjQxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Ow0KIAkJNjNDMzJDMjgxRTk4MTE5
MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNDMzJDMjcxRTk4MTE5MDAwNjk5
QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oICovOyB9Ow0KKwkJNjNFRTQx
NzkyMUMxQkIwNDAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNFRTQxNzcyMUMxQkIwNDAw
N0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07DQogCQk2NUI4NkYxRTEyRjExREUzMDBCN0REOEEg
LyogV0tCdW5kbGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07DQogCQk2
QTUwODBCRjFGMEVEQUFBMDBFNjE3QzUgLyogV0tXaW5kb3dGZWF0dXJlc1ByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBNTA4MEJFMUYwRURB
QUEwMEU2MTdDNSAvKiBXS1dpbmRvd0ZlYXR1cmVzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07DQogCQk2QjgyMUREQzFFRUYwNUREMDBEN0FG
NEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI4MjFEREExRUVGMDVERDAwRDdBRjRB
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCAqLzsgfTsNCkBAIC0zNDg3
LDkgKzM0ODksMTQgQEANCiAJCTYzNDg0MjRGMUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNh
dGlvbk1hbmlmZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzNzI4MUEwMjFBREM3NDQwMDlFMERFNiAv
KiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZFByb2dyZXNz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2MzcyODFBMTIxQURDNzQ0MDA5RTBE
RTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tEb3du
bG9hZFByb2dyZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjNCREU3REMy
MTkyNDhDODAwOThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEb3dubG9hZENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCisJ
CTYzQkRFN0REMjE5MjQ4QzgwMDk4QzkwQiAvKiBEb3dubG9hZENvbmZpZ3VyYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG93bmxvYWRDb25maWd1cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsNCiAJCTYzQzMyQzIzMUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJ
CTYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzQzMyQzI3MUU5ODExOTAwMDY5OUJEMCAv
KiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07DQorCQk2M0VFNDE3NzIxQzFCQjA0MDA3QTlGNzQgLyogX1dLRG93bmxv
YWRDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Rvd25sb2FkQ29uZmlndXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjNFRTQxNzgyMUMxQkIwNDAwN0E5
Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CisJCTYzRUU0MTdCMjFDMUJCRTcwMDdBOUY3NCAvKiBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb25JbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNGQUJFMTkxRTk3MEQ2NTAwMzAx
MUQ1IC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9Ow0KIAkJNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxl
UGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjU0NkE4MkExMzAwMDE2NDAwMENFQjFDIC8qIEluamVj
dGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsNCkBAIC01MTUyLDYgKzUxNTksOCBAQA0KIAkJCQk3QzA2NUYy
OTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNw
cCAqLywNCiAJCQkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oICovLA0KIAkJCQlDMDMzN0REMDEyN0EyOTgwMDA4RkY0RjQgLyog
V2ViV2hlZWxFdmVudC5jcHAgKi8sDQorCQkJCTYzQkRFN0RDMjE5MjQ4QzgwMDk4QzkwQiAvKiBE
b3dubG9hZENvbmZpZ3VyYXRpb24uaCAqLywNCisJCQkJNjNCREU3REQyMTkyNDhDODAwOThDOTBC
IC8qIERvd25sb2FkQ29uZmlndXJhdGlvbi5jcHAgKi8sDQogCQkJKTsNCiAJCQlwYXRoID0gU2hh
cmVkOw0KIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7DQpAQCAtNTk5MSw2ICs2MDAwLDkgQEAN
CiAJCQkJQTFBNEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLm1tICovLA0KIAkJ
CQlBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICovLA0K
IAkJCQlBMUE0RkU1OTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oICov
LA0KKwkJCQk2M0VFNDE3NzIxQzFCQjA0MDA3QTlGNzQgLyogX1dLRG93bmxvYWRDb25maWd1cmF0
aW9uLmggKi8sDQorCQkJCTYzRUU0MTc4MjFDMUJCMDQwMDdBOUY3NCAvKiBfV0tEb3dubG9hZENv
bmZpZ3VyYXRpb24ubW0gKi8sDQorCQkJCTYzRUU0MTdCMjFDMUJCRTcwMDdBOUY3NCAvKiBfV0tE
b3dubG9hZENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovLA0KIAkJCQkzNzlBODczODE4QkJGRTBG
MDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5oICovLA0KIAkJCQkzNzlBODczNzE4QkJGRTBG
MDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5tbSAqLywNCiAJCQkJMzc5QTg3M0IxOEJCRkYw
NzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oICovLA0KQEAgLTkzMzgsNiAr
OTM1MCw3IEBADQogCQkJCUJDNEE2MjkyMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLywNCiAJCQkJMUExRkVDMUQxNjI3QjQ1NzAwNzAwRjZEIC8q
IFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sDQogCQkJCUJDNEE2MkE4MTQ3
NDRFQzcwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAq
LywNCisJCQkJNjNCREU3REUyMTkyNDhDODAwOThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTMxQTUwNUZBMTY4MDAyNTUwMEE5MzBFQiAvKiBXZWJD
b250ZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywNCiAJCQkJQkMwOUI4RjkxNDc0NjBGNzAwNUY1
NjI1IC8qIFdlYkNvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywNCiAJCQkJ
QkNERTA1OUIxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sDQpAQCAtOTUzMSw2ICs5NTQ0LDcgQEANCiAJCQkJQkM0MDc1RjQx
MjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuaCBpbiBIZWFkZXJzICovLA0KIAkJCQk1MTJGNThG
NjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRl
cnMgKi8sDQogCQkJCTUxMkY1OEY4MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sDQorCQkJCTYzRUU0MTc5MjFDMUJCMDQw
MDdBOUY3NCAvKiBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLA0KIAkJ
CQkzN0M0QzA4RDE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFk
ZXJzICovLA0KIAkJCQkzN0M0QzA5NTE4MTRCOUU2MDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExp
c3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTM3QzRDMDg3MTgxNDlDNUIwMDM2ODhC
OSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLA0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZw0KaW5kZXggYzQyMTVjOGM5OWIuLjE4
NTI1ZDVlYmIyIDEwMDY0NA0KLS0tIGEvVG9vbHMvQ2hhbmdlTG9nDQorKysgYi9Ub29scy9DaGFu
Z2VMb2cNCkBAIC0xLDMgKzEsMTggQEANCisyMDE4LTEyLTEzICBEYXZpZCBRdWVzYWRhICA8ZGF2
aWRfcXVlc2FkYUBhcHBsZS5jb20+DQorDQorICAgICAgICBBZGQgYSBjbGFzcyB0byBidW5kbGUg
ZG93bmxvYWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvZ2V0aGVyDQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjgzDQorICAgICAgICByZGFy
Oi8vcHJvYmxlbS80NjcxMTA2Ng0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuDQorDQorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06DQorICAgICAgICAoLVtDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZDpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOg0KKyAgICAgICAgKC1bQ29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6DQorICAgICAgICAoVEVTVCk6DQorICAg
ICAgICAgICAgQWRkIGEgc2ltcGxlIEFQSSB0ZXN0IGZvciBjb25maWd1cmluZyBhIGRvd25sb2Fk
IHZpYSB0aGUgX1dLRG93bmxvYWREZWxlZ2F0ZSBtZXRob2QNCisgICAgICAgICAgICB0aGF0IGFz
a3MgZm9yIGEgX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLg0KKw0KIDIwMTgtMTItMTMgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+DQogDQogICAgICAgICBbaU9TXSBTdXBw
b3J0IGRyb3BwaW5nIGNvbnRhY3QgY2FyZCBkYXRhIChwdWJsaWMudmNhcmQpIGluIGVkaXRhYmxl
IGNvbnRlbnQNCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZC5tbQ0KaW5kZXggZGFlMGQyNzEwYzguLjljZTNkMGY3MGE4IDEwMDY0NA0KLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQ0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQ0KQEAgLTM1
LDYgKzM1LDcgQEANCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiDQogI2ltcG9ydCA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+DQogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+DQorI2ltcG9y
dCA8V2ViS2l0L19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oPg0KICNpbXBvcnQgPFdlYktpdC9f
V0tEb3dubG9hZERlbGVnYXRlLmg+DQogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oPg0KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPg0K
QEAgLTYyMCw1ICs2MjEsNDEgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRDYW5jZWxlZFdo
aWxlRGVjaWRpbmdEZXN0aW5hdGlvbikNCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsN
CiB9DQogDQorQGludGVyZmFjZSBDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRl
IDogTlNPYmplY3QgPF9XS0Rvd25sb2FkRGVsZWdhdGU+DQorQGVuZA0KKw0KK0BpbXBsZW1lbnRh
dGlvbiBDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRlIHsNCisgICAgU3RyaW5n
IF9kZXN0aW5hdGlvblBhdGg7DQorfQ0KKw0KKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5T
U3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbiAqKSljb21wbGV0aW9uSGFuZGxlcg0KK3sgICAgDQorICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOw0KKyAgICBfZGVzdGlu
YXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RX
ZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsNCisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsNCisgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOw0KKw0KKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLRG93bmxvYWRDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7DQorICAgIFtjb25maWd1cmF0aW9uIHNldERlc3RpbmF0aW9uOltOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2Rlc3RpbmF0aW9uUGF0aF1dOw0KKyAgICBbY29uZmlndXJhdGlvbiBzZXRBbGxv
d092ZXJ3cml0ZTpZRVNdOw0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb25maWd1cmF0aW9uLmdl
dCgpKTsNCit9DQorDQorLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQNCit7DQorICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY29udGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRpb25QYXRoIGFuZFBhdGg6W3NvdXJj
ZVVSTCBwYXRoXV0pOw0KKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0
aW5hdGlvblBhdGgpOw0KKyAgICBpc0RvbmUgPSB0cnVlOw0KK30NCisNCitAZW5kDQorDQorVEVT
VChfV0tEb3dubG9hZCwgRG93bmxvYWREZWNpZGVDb25maWd1cmF0aW9uKQ0KK3sNCisgICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udmVydFJlc3BvbnNlVG9Eb3dubG9h
ZE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOw0KKyAgICBhdXRvIGRvd25sb2FkRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbQ29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWREZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOw0KKyAgICBydW5UZXN0KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgZG93
bmxvYWREZWxlZ2F0ZS5nZXQoKSwgc291cmNlVVJMKTsNCit9DQorDQogI2VuZGlmDQogI2VuZGlm
DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357285</attachid>
            <date>2018-12-13 19:02:13 -0800</date>
            <delta_ts>2018-12-14 09:21:53 -0800</delta_ts>
            <desc>Patch v2.2</desc>
            <filename>file_192683.txt</filename>
            <type>text/plain</type>
            <size>86708</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IGE2ZGI2ODE1MmU5NGQ3YTBkY2JkOWM3MjMzZTgwNmM1ZWFkZGIxODUNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFRodSBEZWMg
MTMgMTY6MjI6MjggMjAxOCAtMDgwMA0KDQogICAgQWRkIGEgY2xhc3MgdG8gYnVuZGxlIGRvd25s
b2FkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0b2dldGhlcg0KICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODMNCiAgICByZGFyOi8vcHJvYmxlbS80Njcx
MTA2Ng0KICAgIA0KICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNv
dXJjZS9XZWJLaXQ6DQogICAgDQogICAgSW50cm9kdWNlIFdlYktpdDo6RG93bmxvYWRDb25maWd1
cmF0aW9uLCBhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBwaWVjZXMgb2YgZG93bmxvYWQtcmVsYXRl
ZA0KICAgIGNvbmZpZ3VyYXRpb24gLSB0aGUgZGVzdGluYXRpb24gcGF0aCwgYSBjb3JyZXNwb25k
aW5nIHNhbmRib3ggZXh0ZW5zaW9uLCBhbmQgYW4gImFsbG93DQogICAgb3ZlcndyaXRlIiBmbGFn
LiBUbyBzdXBwb3J0IHBvdGVudGlhbCB1c2UgY2FzZXMgd2hlcmUgY2VydGFpbiBhc3BlY3RzIG9m
IHRoZSBleGVjdXRpb24gb2YNCiAgICBhIGRvd25sb2FkIG1heSBiZSBjb25maWd1cmFibGUsIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBjb3VsZCBiZSBpbmNsdWRlZCBpbiB0aGlzIHN0cnVjdHVyZQ0K
ICAgIGFuZCB1c2VkIHdoZXJlIGFwcHJvcHJpYXRlLiBUaGlzIHdpbGwgcmVxdWlyZSBmZXdlciB0
ZWRpb3VzIGNvZGUgY2hhbmdlcyB0aGFuIGl0IHdvdWxkIHRvDQogICAgY29uZGl0aW9uYWxseSBp
bmNsdWRlIHRoZSBwYXJhbWV0ZXJzIGFzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgY2xhc3MgbWVt
YmVycyBldmVyeXdoZXJlDQogICAgdGhlIHRocmVlIGN1cnJlbnQgcGllY2VzIG9mIGNvbmZpZ3Vy
YXRpb24gYXJlIHBhc3NlZCBhcm91bmQgYW5kIHN0b3JlZC4gTWV0aG9kcyByZWxhdGVkIHRvDQog
ICAgImRlY2lkaW5nIHRoZSBkZXN0aW5hdGlvbiIgZm9yIGEgZG93bmxvYWQgaGFzIGJlZW4gcmVu
YW1lZCB0byByZWZsZWN0ICJkZWNpZGluZyB0aGUNCiAgICBjb25maWd1cmF0aW9uIiBmb3IgdGhl
IGRvd25sb2FkLCBzaW5jZSB0aGV5IG5vdyB3b3JrIHdpdGggRG93bmxvYWRDb25maWd1cmF0aW9u
Lg0KICAgIA0KICAgIFRoaXMgc3RydWN0dXJlIGlzIGV4cG9zZWQgaW4gQ29jb2EgQVBJIGJ5IHRo
ZSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gY2xhc3MgKGFuZCByZWxhdGVkDQogICAgX1dLRG93
bmxvYWREZWxlZ2F0ZSBhbmQgV0tQcm9jZXNzUG9vbCBtZXRob2RzIHRoYXQgd29yayB3aXRoIHRo
aXMgY2xhc3MpLiBJdCBkb2Vzbid0IHlldA0KICAgIGV4cG9zZSBhbnkgYWRkaXRpb25hbCBBUEkg
YmV5b25kIHRoZSBkZXN0aW5hdGlvbiBwYXRoIGFuZCBhbGxvd092ZXJ3cml0ZSBmbGFnLiBUaGlz
IHBhdGNoDQogICAgaXMganVzdCBzZXR1cCB0byBkbyBzby4NCiAgICANCiAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6RG93bmxvYWQ6OkRv
d25sb2FkKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQogICAgKFdlYktp
dDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6DQogICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToNCiAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOg0KICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkb3dubG9hZENvbmZpZ3VyYXRpb24pOg0KICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6DQogICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6DQogICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQogICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlc3VtZURvd25sb2FkKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKToNCiAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGlu
dWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCiAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoNCiAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToNCiAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25s
b2FkQ29uZmlndXJhdGlvbik6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOg0KICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToNCiAgICAqIE5ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6DQogICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQogICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOiBEZWxldGVk
Lg0KICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmg6DQogICAg
KiBTaGFyZWQvRG93bmxvYWRDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuDQogICAgKFdlYktpdDo6
RG93bmxvYWRDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOg0KICAgIChXZWJLaXQ6OkRvd25s
b2FkQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToNCiAgICAqIFNoYXJlZC9Eb3dubG9hZENvbmZpZ3Vy
YXRpb24uaDogQWRkZWQuDQogICAgKFdlYktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uOjpEb3du
bG9hZENvbmZpZ3VyYXRpb24pOg0KICAgICogU291cmNlcy50eHQ6DQogICAgKiBTb3VyY2VzQ29j
b2EudHh0Og0KICAgICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOg0KICAgIChB
UEk6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToNCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOg0KICAgIChXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudCk6DQogICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToNCiAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToNCiAgICAoLVtXS1Byb2Nl
c3NQb29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOnBhdGg6b3JpZ2luYXRpbmdXZWJWaWV3Ol0p
Og0KICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6b3JpZ2luYXRp
bmdXZWJWaWV3OmNvbmZpZ3VyYXRpb246XSk6DQogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg6DQogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4NCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4NCiAgICAoY2hlY2tVUkxBcmd1bWVudCk6
DQogICAgKC1bX1dLRG93bmxvYWRDb25maWd1cmF0aW9uIGRlc3RpbmF0aW9uXSk6DQogICAgKC1b
X1dLRG93bmxvYWRDb25maWd1cmF0aW9uIHNldERlc3RpbmF0aW9uOl0pOg0KICAgICgtW19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbiBfZG93bmxvYWRDb25maWd1cmF0aW9uXSk6DQogICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVk
Lg0KICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmg6DQogICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOg0KICAgICogVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6DQogICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW06DQogICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xp
ZW50KToNCiAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSk6DQogICAgICAgIENvbnN1bHQgdGhlIG5ldyBfV0tEb3dubG9h
ZERlbGVnYXRlIG1ldGhvZCB0aGF0IGFsbG93cyBzcGVjaWZ5aW5nIGEgX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLg0KICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoN
CiAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQXN5bmMpOg0KICAgICAgICBEcml2ZS1ieSBmaXh1cCB0byByMjM4MzgxLiBN
b3ZlIHRoZSBtX3Byb2Nlc3NQb29sIG5pbC1jaGVjayB0byB0aGUgdG9wIG9mIHRoZQ0KICAgICAg
ICBjb21wbGV0aW9uIGhhbmRsZXIuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBzYW5k
Ym94IGV4dGVuc2lvbiBmb3IgdGhlIGRlc3RpbmF0aW9uDQogICAgICAgIGZpbGUgaWYgd2UgZG9u
J3QgYSBwcm9jZXNzIHBvb2wgKHRoZXJlZm9yZSBhIG5ldHdvcmsgcHJvY2VzcykgdG8gc2VuZCBp
dCB0by4NCiAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOg0KICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOg0KICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoNCiAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cmVzdW1lRG93bmxvYWQpOg0KICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6DQogICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoNCiAgICANCiAgICBUb29sczoNCiAg
ICANCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06DQog
ICAgKC1bQ29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVj
aWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToNCiAgICAoLVtDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZERpZEZpbmlzaDpdKToNCiAgICAoVEVTVCk6DQogICAgICAgIEFkZCBhIHNpbXBsZSBBUEkgdGVz
dCBmb3IgY29uZmlndXJpbmcgYSBkb3dubG9hZCB2aWEgdGhlIF9XS0Rvd25sb2FkRGVsZWdhdGUg
bWV0aG9kDQogICAgICAgIHRoYXQgYXNrcyBmb3IgYSBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24u
DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nDQppbmRleCBiNTM4YTlkNjdiMC4uMjg5M2NhY2Q1ODAgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsOTkgQEANCisyMDE4LTEyLTEzICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2Fk
YUBhcHBsZS5jb20+DQorDQorICAgICAgICBBZGQgYSBjbGFzcyB0byBidW5kbGUgZG93bmxvYWQg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvZ2V0aGVyDQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjgzDQorICAgICAgICByZGFyOi8vcHJvYmxl
bS80NjcxMTA2Ng0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQor
ICAgICAgICBJbnRyb2R1Y2UgV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb24sIGEgc3RydWN0
dXJlIHRvIGhvbGQgdGhlIHBpZWNlcyBvZiBkb3dubG9hZC1yZWxhdGVkDQorICAgICAgICBjb25m
aWd1cmF0aW9uIC0gdGhlIGRlc3RpbmF0aW9uIHBhdGgsIGEgY29ycmVzcG9uZGluZyBzYW5kYm94
IGV4dGVuc2lvbiwgYW5kIGFuICJhbGxvdw0KKyAgICAgICAgb3ZlcndyaXRlIiBmbGFnLiBUbyBz
dXBwb3J0IHBvdGVudGlhbCB1c2UgY2FzZXMgd2hlcmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBl
eGVjdXRpb24gb2YNCisgICAgICAgIGEgZG93bmxvYWQgbWF5IGJlIGNvbmZpZ3VyYWJsZSwgYWRk
aXRpb25hbCBwYXJhbWV0ZXJzIGNvdWxkIGJlIGluY2x1ZGVkIGluIHRoaXMgc3RydWN0dXJlDQor
ICAgICAgICBhbmQgdXNlZCB3aGVyZSBhcHByb3ByaWF0ZS4gVGhpcyB3aWxsIHJlcXVpcmUgZmV3
ZXIgdGVkaW91cyBjb2RlIGNoYW5nZXMgdGhhbiBpdCB3b3VsZCB0bw0KKyAgICAgICAgY29uZGl0
aW9uYWxseSBpbmNsdWRlIHRoZSBwYXJhbWV0ZXJzIGFzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQg
Y2xhc3MgbWVtYmVycyBldmVyeXdoZXJlDQorICAgICAgICB0aGUgdGhyZWUgY3VycmVudCBwaWVj
ZXMgb2YgY29uZmlndXJhdGlvbiBhcmUgcGFzc2VkIGFyb3VuZCBhbmQgc3RvcmVkLiBNZXRob2Rz
IHJlbGF0ZWQgdG8NCisgICAgICAgICJkZWNpZGluZyB0aGUgZGVzdGluYXRpb24iIGZvciBhIGRv
d25sb2FkIGhhcyBiZWVuIHJlbmFtZWQgdG8gcmVmbGVjdCAiZGVjaWRpbmcgdGhlDQorICAgICAg
ICBjb25maWd1cmF0aW9uIiBmb3IgdGhlIGRvd25sb2FkLCBzaW5jZSB0aGV5IG5vdyB3b3JrIHdp
dGggRG93bmxvYWRDb25maWd1cmF0aW9uLg0KKw0KKyAgICAgICAgVGhpcyBzdHJ1Y3R1cmUgaXMg
ZXhwb3NlZCBpbiBDb2NvYSBBUEkgYnkgdGhlIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBjbGFz
cyAoYW5kIHJlbGF0ZWQNCisgICAgICAgIF9XS0Rvd25sb2FkRGVsZWdhdGUgYW5kIFdLUHJvY2Vz
c1Bvb2wgbWV0aG9kcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGNsYXNzKS4gSXQgZG9lc24ndCB5ZXQN
CisgICAgICAgIGV4cG9zZSBhbnkgYWRkaXRpb25hbCBBUEkgYmV5b25kIHRoZSBkZXN0aW5hdGlv
biBwYXRoIGFuZCBhbGxvd092ZXJ3cml0ZSBmbGFnLiBUaGlzIHBhdGNoDQorICAgICAgICBpcyBq
dXN0IHNldHVwIHRvIGRvIHNvLg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25sb2FkKToN
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6DQorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6RG93bmxvYWQpOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToN
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOg0KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOg0K
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6DQorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOg0KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6ZG93bmxvYWRDb25maWd1cmF0aW9uKToNCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6DQorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKToNCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oOg0KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOg0KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6DQorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0
aW9uKToNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoNCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46DQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6DQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOg0KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZENvbmZp
Z3VyYXRpb24pOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOg0KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Np
b246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOg0KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbik6DQor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpzZXRQZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik6IERlbGV0ZWQuDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5oOg0KKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRDb25maWd1cmF0aW9u
LmNwcDogQWRkZWQuDQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OmVu
Y29kZSBjb25zdCk6DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OmRl
Y29kZSk6DQorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZENvbmZpZ3VyYXRpb24uaDogQWRkZWQu
DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENvbmZpZ3VyYXRpb246OkRvd25sb2FkQ29uZmln
dXJhdGlvbik6DQorICAgICAgICAqIFNvdXJjZXMudHh0Og0KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0Og0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6DQor
ICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
Og0KKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToNCisgICAgICAgIChXS0Nv
bnRleHRSZXN1bWVEb3dubG9hZCk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToNCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2Fk
RnJvbURhdGE6cGF0aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6DQorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOm9yaWdpbmF0aW5nV2ViVmlldzpjb25maWd1
cmF0aW9uOl0pOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLmg6IEFkZGVkLg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuDQorICAgICAgICAoY2hlY2tVUkxBcmd1bWVu
dCk6DQorICAgICAgICAoLVtfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gZGVzdGluYXRpb25dKToN
CisgICAgICAgICgtW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBzZXREZXN0aW5hdGlvbjpdKToN
CisgICAgICAgICgtW19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiBfZG93bmxvYWRDb25maWd1cmF0
aW9uXSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1
cmF0aW9uSW50ZXJuYWwuaDogQWRkZWQuDQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWREZWxlZ2F0ZS5oOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RG93bmxvYWRDbGllbnQuY3BwOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQuaDoNCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
Og0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xpZW50KToNCisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToNCisgICAgICAgICAgICBDb25zdWx0IHRoZSBuZXcgX1dLRG93bmxv
YWREZWxlZ2F0ZSBtZXRob2QgdGhhdCBhbGxvd3Mgc3BlY2lmeWluZyBhIF9XS0Rvd25sb2FkQ29u
ZmlndXJhdGlvbi4NCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZUNvbmZpZ3VyYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6DQorICAgICAgICAgICAgRHJpdmUtYnkgZml4
dXAgdG8gcjIzODM4MS4gTW92ZSB0aGUgbV9wcm9jZXNzUG9vbCBuaWwtY2hlY2sgdG8gdGhlIHRv
cCBvZiB0aGUNCisgICAgICAgICAgICBjb21wbGV0aW9uIGhhbmRsZXIuIFRoZXJlJ3Mgbm8gcG9p
bnQgaW4gY3JlYXRpbmcgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgdGhlIGRlc3RpbmF0aW9uDQor
ICAgICAgICAgICAgZmlsZSBpZiB3ZSBkb24ndCBhIHByb2Nlc3MgcG9vbCAodGhlcmVmb3JlIGEg
bmV0d29yayBwcm9jZXNzKSB0byBzZW5kIGl0IHRvLg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoNCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25s
b2FkKToNCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6DQorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KKw0KIDIwMTgtMTItMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFtQU09OXSBXZSBzaG91bGQg
bm90IG5lZWQgdG8gbmF2aWdhdGUgdG8gJ2Fib3V0OmJsYW5rJyB0byBzdXNwZW5kIHBhZ2VzDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwDQppbmRleCAxNzdmOWJhNDljMy4uMDQ0MjhiZDkzNTUgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KQEAgLTQ5LDkg
KzQ5LDEwIEBADQogbmFtZXNwYWNlIFdlYktpdCB7DQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
DQogDQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2Vy
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFzayYgZG93bmxvYWQsIGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkN
CitEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgTmV0d29ya0RhdGFUYXNrJiBkb3dubG9hZCwgY29uc3QgUEFM
OjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lLCBEb3du
bG9hZENvbmZpZ3VyYXRpb24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogICAgIDogbV9kb3du
bG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2VyKQ0KICAgICAsIG1fZG93bmxvYWRJRChkb3dubG9h
ZElEKQ0KKyAgICAsIG1fZG93bmxvYWRDb25maWd1cmF0aW9uKFdURk1vdmUoZG93bmxvYWRDb25m
aWd1cmF0aW9uKSkNCiAgICAgLCBtX2Rvd25sb2FkKCZkb3dubG9hZCkNCiAgICAgLCBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpDQogICAgICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpDQpA
QCAtNjIsOSArNjMsMTAgQEAgRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93
bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHcNCiB9DQogDQogI2lmIFBM
QVRGT1JNKENPQ09BKQ0KLURvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25s
b2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRh
c2sqIGRvd25sb2FkLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpDQorRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYg
ZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25s
b2FkVGFzayogZG93bmxvYWQsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRD
b25maWd1cmF0aW9uKQ0KICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikN
CiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkNCisgICAgLCBtX2Rvd25sb2FkQ29uZmln
dXJhdGlvbihXVEZNb3ZlKGRvd25sb2FkQ29uZmlndXJhdGlvbikpDQogICAgICwgbV9kb3dubG9h
ZFRhc2soZG93bmxvYWQpDQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQ0KICAgICAsIG1f
c3VnZ2VzdGVkTmFtZShzdWdnZXN0ZWROYW1lKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oDQppbmRleCBkOGZiZGQxZDM5ZC4uMTIyNmY0
MDIzMWIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oDQpAQCAtNjUsMTQgKzY1LDE0IEBAIGNsYXNzIFdlYlBhZ2U7DQogY2xhc3Mg
RG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsNCiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRG93bmxvYWQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsNCiBwdWJsaWM6DQot
ICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFz
ayYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSB7IH0pOw0KKyAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3du
bG9hZElELCBOZXR3b3JrRGF0YVRhc2smLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9LCBEb3dubG9hZENvbmZpZ3Vy
YXRpb24mJiA9IHsgfSk7DQogI2lmIFBMQVRGT1JNKENPQ09BKQ0KLSAgICBEb3dubG9hZChEb3du
bG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sqLCBjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lID0geyB9KTsNCisgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwg
TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSwgRG93bmxvYWRDb25maWd1
cmF0aW9uJiYgPSB7IH0pOw0KICNlbmRpZg0KIA0KICAgICB+RG93bmxvYWQoKTsNCiANCi0gICAg
dm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisgICAgdm9pZCByZXN1
bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsNCiAgICAgdm9pZCBjYW5j
ZWwoKTsNCiAjaWYgUExBVEZPUk0oQ09DT0EpDQogICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNv
bnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCkBAIC0xMDEsNiArMTAxLDcg
QEAgcHJpdmF0ZToNCiANCiAgICAgRG93bmxvYWRNYW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdlcjsN
CiAgICAgRG93bmxvYWRJRCBtX2Rvd25sb2FkSUQ7DQorICAgIERvd25sb2FkQ29uZmlndXJhdGlv
biBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbjsNCiANCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2Jsb2JGaWxlUmVmZXJlbmNlczsNCiAgICAgUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KaW5kZXggNzJjZDdlMWZlNzEuLmMwNzE1NWJhNTQ5IDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcA0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3
b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnUNCiAgICAgbV9w
ZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdE
b3dubG9hZD4oV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOw0KIH0NCiANCi12b2lkIERvd25sb2Fk
TWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2b2lk
IERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0
aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgRG93bmxvYWRDb25maWd1cmF0aW9uJiYgY29uZmln
dXJhdGlvbikNCiB7DQogICAgIGlmIChtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5j
b250YWlucyhkb3dubG9hZElEKSkgew0KICAgICAgICAgYXV0byBwYWlyID0gbV9kb3dubG9hZHNX
YWl0aW5nRm9yRGVzdGluYXRpb24udGFrZShkb3dubG9hZElEKTsNCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCBkb3dubG8NCiAgICAgICAgIEFTU0VSVChjb21wbGV0aW9uSGFu
ZGxlcik7DQogICAgICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25s
b2FkSUQpKTsNCiANCi0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFs
bG93T3ZlcndyaXRlKTsNCisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25s
b2FkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsNCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6RG93bmxvYWQpOw0KICAgICAgICAgaWYgKG5ldHdv
cmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDYW5jZWxpbmcg
fHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNv
bXBsZXRlZCkNCiAgICAgICAgICAgICByZXR1cm47DQpAQCAtMTIwLDE0ICsxMjAsMTQgQEAgdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG8NCiAgICAgfQ0KIH0NCiANCi12b2lkIERvd25sb2FkTWFuYWdl
cjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQ0KK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQ0K
IHsNCiAjaWYgIVBMQVRGT1JNKENPQ09BKQ0KICAgICBub3RJbXBsZW1lbnRlZCgpOw0KICNlbHNl
DQotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywg
ZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsNCisgICAgYXV0byBkb3dubG9hZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNz
aW9uSUQsIFN0cmluZyB7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbikpOw0KIA0KLSAgICBkb3du
bG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpOw0KKyAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEpOw0KICAgICBBU1NFUlQo
IW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCiAgICAgbV9kb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5o
DQppbmRleCBmYmFkODg4ZTA3OS4uZjA3ZGZlNTVjOTQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaA0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgNCkBA
IC0yNSw2ICsyNSw3IEBADQogDQogI3ByYWdtYSBvbmNlDQogDQorI2luY2x1ZGUgIkRvd25sb2Fk
Q29uZmlndXJhdGlvbi5oIg0KICNpbmNsdWRlICJEb3dubG9hZElELmgiDQogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFzay5oIg0KICNpbmNsdWRlICJQZW5kaW5nRG93bmxvYWQuaCINCkBAIC04MCw5
ICs4MSw5IEBAIHB1YmxpYzoNCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7DQogICAgIHZvaWQgd2lsbERlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7DQogICAgIHZvaWQgY29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9h
ZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJiwgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOw0KLSAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7DQorICAgIHZvaWQgY29u
dGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKERvd25sb2FkSUQsIERvd25s
b2FkQ29uZmlndXJhdGlvbiYmKTsNCiANCi0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisgICAg
dm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJik7DQog
DQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQogI2lmIFBMQVRGT1JNKENP
Q09BKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQppbmRleCBkMzBlNDc5MmVhMi4uNDVlNTBl
Y2JiYzkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQpAQCAtMzUsOSArMzUsOSBAQA0K
IA0KIG5hbWVzcGFjZSBXZWJLaXQgew0KIA0KLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit2b2lkIERvd25s
b2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQ0KIHsNCi0g
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5zYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSk7DQogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pDQogICAg
ICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCiANCkBAIC00OCw2ICs0OCw3IEBA
IHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwNCiAgICAgfQ0KICAgICBhdXRvJiBjb2NvYVNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oKm5ldHdvcmtTZXNzaW9uKTsNCiAg
ICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJl
c3VtZURhdGEuZGF0YSgpIGxlbmd0aDpyZXN1bWVEYXRhLnNpemUoKV0pOw0KKyAgICBhdXRvIHBh
dGggPSBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5kZXN0aW5hdGlvbjsNCiANCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM0
NzQ1MTcxPi4NCiAjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgNCmluZGV4IGUxMDRjZTUzMTFiLi45MTQ0MDRi
NTU5YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgNCkBAIC0yNSw2ICsyNSw3IEBADQogDQogI3ByYWdtYSBvbmNlDQogDQorI2luY2x1ZGUg
IkRvd25sb2FkQ29uZmlndXJhdGlvbi5oIg0KICNpbmNsdWRlICJEb3dubG9hZElELmgiDQogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCINCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFs
Lmg+DQpAQCAtMTE2LDkgKzExNywxMCBAQCBwdWJsaWM6DQogICAgICAgICBtX3BlbmRpbmdEb3du
bG9hZCA9ICZwZW5kaW5nRG93bmxvYWQ7DQogICAgIH0NCiANCi0gICAgdmlydHVhbCB2b2lkIHNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgeyBtX3BlbmRpbmdE
b3dubG9hZExvY2F0aW9uID0gZmlsZW5hbWU7IH0NCisgICAgdmlydHVhbCB2b2lkIHNldFBlbmRp
bmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRD
b25maWd1cmF0aW9uKSB7IG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24gPSBkb3dubG9hZENvbmZp
Z3VyYXRpb24uZGVzdGluYXRpb247IG1fZG93bmxvYWRDb25maWd1cmF0aW9uID0gV1RGTW92ZShk
b3dubG9hZENvbmZpZ3VyYXRpb24pOyB9DQogICAgIGNvbnN0IFN0cmluZyYgcGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOyB9
DQogICAgIGJvb2wgaXNEb3dubG9hZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wZW5kaW5nRG93bmxv
YWRJRC5kb3dubG9hZElEKCk7IH0NCisgICAgRG93bmxvYWRDb25maWd1cmF0aW9uJiBkb3dubG9h
ZENvbmZpZ3VyYXRpb24oKSB7IHJldHVybiBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbjsgfQ0KIA0K
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9DQogICAgIHZpcnR1YWwgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0NCkBAIC0xNDYsNiArMTQ4LDcg
QEAgcHJvdGVjdGVkOg0KICAgICBOZXR3b3JrRGF0YVRhc2tDbGllbnQqIG1fY2xpZW50IHsgbnVs
bHB0ciB9Ow0KICAgICBQZW5kaW5nRG93bmxvYWQqIG1fcGVuZGluZ0Rvd25sb2FkIHsgbnVsbHB0
ciB9Ow0KICAgICBEb3dubG9hZElEIG1fcGVuZGluZ0Rvd25sb2FkSUQ7DQorICAgIERvd25sb2Fk
Q29uZmlndXJhdGlvbiBtX2Rvd25sb2FkQ29uZmlndXJhdGlvbiB7IH07DQogICAgIFN0cmluZyBt
X3VzZXI7DQogICAgIFN0cmluZyBtX3Bhc3N3b3JkOw0KICAgICBTdHJpbmcgbV9wYXJ0aXRpb247
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHANCmluZGV4IDAzNmVjOGVmZTg1Li40Y2MwZWQyM2RmZiAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHANCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHANCkBA
IC00MzQsMTYgKzQzNCwxNiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpDQogICAgIHJlYWQoKTsNCiB9DQogDQot
dm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQ0KK3ZvaWQgTmV0d29ya0RhdGFUYXNr
QmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZENvbmZpZ3VyYXRp
b24mJiBkb3dubG9hZENvbmZpZ3VyYXRpb24pDQogew0KLSAgICBOZXR3b3JrRGF0YVRhc2s6OnNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCB7IH0sIGFsbG93T3ZlcndyaXRlKTsN
CisgICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKFdU
Rk1vdmUoZG93bmxvYWRDb25maWd1cmF0aW9uKSk7DQogDQogICAgIEFTU0VSVCghbV9zYW5kYm94
RXh0ZW5zaW9uKTsNCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBtX3NhbmRib3hF
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShtX2Rvd25sb2FkQ29u
ZmlndXJhdGlvbi5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQogICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pDQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCiANCi0g
ICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbikpDQorICAgIGlmIChtX2Rvd25sb2FkQ29uZmlndXJhdGlvbi5hbGxv
d092ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVzICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpDQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOw0KIH0NCiANCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oDQppbmRleCAwMGNj
MWY5MGRkMS4uZWFmYWM1NGJmNTkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgNCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6
DQogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOw0KICAgICBOZXR3b3Jr
RGF0YVRhc2s6OlN0YXRlIHN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdGF0ZTsg
fQ0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3Zl
cnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9h
ZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50IG1ldGhvZHMu
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0K
aW5kZXggMGIzMWZmNzczM2QuLmEzNGI5ZDQ0ZDIyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwDQpAQCAtNzg4LDkgKzc4OCw5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIERvd25sb2FkSUQgZG93bmxvDQogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxv
YWQobnVsbHB0ciwgc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWRGaWxl
bmFtZSk7DQogfQ0KIA0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlvbikNCiB7DQotICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQorICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRpb24pKTsNCiB9DQogDQogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQ0K
QEAgLTgyNywxNSArODI3LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93
bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzDQogICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgp
ID8gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0
ZWRGaWxlbmFtZSgpOw0KICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVzcG9u
c2UubWltZVR5cGUoKSk7DQogDQotICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQXN5bmMobmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCksIHN1Z2dlc3Rl
ZEZpbGVuYW1lKSwgZGVzdGluYXRpb25JRCk7DQorICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZUNvbmZpZ3VyYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhuZXR3b3JrRGF0YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQo
KSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBkZXN0aW5hdGlvbklEKTsNCiB9DQogDQotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3du
bG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3Vy
YXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBkb3du
bG9hZENvbmZpZ3VyYXRpb24pDQogew0KLSAgICBpZiAoZGVzdGluYXRpb24uaXNFbXB0eSgpKQ0K
KyAgICBpZiAoZG93bmxvYWRDb25maWd1cmF0aW9uLmRlc3RpbmF0aW9uLmlzRW1wdHkoKSkNCiAg
ICAgICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOw0KICAg
ICBlbHNlDQotICAgICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdE
b3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7DQorICAgICAgICBkb3dubG9hZE1h
bmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRpb24pKTsNCiB9DQogDQogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgNCmluZGV4IGY1YzJmZWRiZmM3Li5iMzAy
OGUxYWQ1ZSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oDQpAQCAtMjYyLDEzICsyNjIsMTMgQEAgcHJpdmF0ZToNCiAgICAgdm9pZCBjbGVhckRp
c2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsNCiANCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9u
SUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOw0KLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIERvd25sb2FkQ29uZmlndXJhdGlvbiYmKTsN
CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsNCiAjaWYgUExBVEZPUk0oQ09D
T0EpDQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwgY29uc3Qg
VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KICNlbmRpZg0KICAgICB2b2lkIGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsNCi0gICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOw0KKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZElELCBEb3dubG9hZENvbmZpZ3VyYXRpb24m
Jik7DQogDQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7DQogICAgIHZvaWQgYWxs
b3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCmluZGV4IDUwNzk1
YTI4MjI3Li5mZDYyMGM2MWI3NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCkBAIC00NywxNCArNDcsMTQg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgew0KICAgICBEZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhv
c3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50NjRfdCBjYWxs
YmFja0lEKQ0KIA0KICAgICBEb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCi0gICAgUmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KKyAgICBSZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgc3RydWN0IFdlYktpdDo6RG93
bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pDQogICAgIENhbmNlbERvd25sb2FkKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQ0KICNpZiBQTEFURk9STShDT0NPQSkNCiAgICAg
UHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFVS
TCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpDQogI2VuZGlmDQogDQogICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkN
Ci0gICAgQ29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3Zlcndy
aXRlKQ0KKyAgICBDb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0cnVjdCBXZWJLaXQ6OkRvd25sb2FkQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKQ0KIA0KICNpZiBQTEFURk9STShDT0NPQSkNCiAgICAgU2V0
UU9TKGludCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUykNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgN
CmluZGV4IDAzMGZhNTJiYjIzLi5hMzg0M2ZjOGRjMyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaA0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oDQpA
QCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsNCiANCiBjbGFzcyBOZXR3b3JrU2Vz
c2lvbkNvY29hOw0KIA0KK3N0cnVjdCBEb3dubG9hZENvbmZpZ3VyYXRpb247DQorDQogY2xhc3Mg
TmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsNCiAg
ICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7DQogcHVibGljOg0KQEAgLTY1LDcg
KzY3LDcgQEAgcHVibGljOg0KICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlk
ZSB7IH0NCiAgICAgTmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRl
Ow0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3Zl
cnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9h
ZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcygpIHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0NCmluZGV4IGM4NDE0MWI4ZGQ0Li4yZGMzYjk3MDk2OCAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0NCkBAIC0zODIsMTkgKzM4MiwxOSBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJg0KICAgICB9DQogfQ0KIA0KLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkNCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRD
b25maWd1cmF0aW9uKERvd25sb2FkQ29uZmlndXJhdGlvbiYmIGRvd25sb2FkQ29uZmlndXJhdGlv
bikNCiB7DQotICAgIE5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
ZmlsZW5hbWUsIHsgfSwgYWxsb3dPdmVyd3JpdGUpOw0KKyAgICBOZXR3b3JrRGF0YVRhc2s6OnNl
dFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oV1RGTW92ZShkb3dubG9hZENvbmZpZ3VyYXRp
b24pKTsNCiANCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOw0KLSAgICBtX3NhbmRi
b3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSk7DQorICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShXVEZNb3ZlKG1fZG93bmxvYWRDb25maWd1cmF0aW9uLnNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsNCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikNCiAgICAgICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOw0KIA0KICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rv
d25sb2FkVGFza0ZpbGUgPSBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOw0KIA0KLSAgICBpZiAo
YWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uKSkNCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZW5hbWUpOw0KKyAgICBpZiAobV9kb3dubG9hZENvbmZpZ3VyYXRpb24uYWxsb3dP
dmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6OlllcyAmJiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQ0KKyAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsNCiB9DQog
DQogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0NCmluZGV4IDJkNGE3ZmRiMGI5Li45ZmIxNzMwZWRiMyAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQ0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tDQpAQCAtNTU1LDcgKzU1NSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhDQogICAgICAg
ICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRhVGFzaygqbmV0
d29ya0RhdGFUYXNrKTsNCiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFz
ay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsNCiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9
IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpOw0K
LSAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9h
ZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5z
ZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsNCisgICAg
ICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRv
d25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lv
bklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSwgV1RGTW92ZShuZXR3
b3JrRGF0YVRhc2stPmRvd25sb2FkQ29uZmlndXJhdGlvbigpKSk7DQogICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsN
CiAgICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOw0KICAgICAgICAgZG93bmxvYWQt
PmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwDQppbmRleCAwYjdiNjM1MGEyNi4uNWIzYjE1NzNk
NjMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcA0KQEAgLTk1LDEwICs5NSwxMCBAQCBTdHJpbmcgTmV0
d29ya0RhdGFUYXNrU291cDo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdA0KICAgICByZXR1cm4g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fcmVzcG9uc2UudXJsKCkubGFzdFBhdGhDb21wb25l
bnQoKSk7DQogfQ0KIA0KLXZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCit2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OnNldFBlbmRpbmdEb3dubG9hZENvbmZpZ3VyYXRpb24oRG93
bmxvYWRDb25maWd1cmF0aW9uJiYgZG93bmxvYWRDb25maWd1cmF0aW9uKQ0KIHsNCi0gICAgTmV0
d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3JpdGUpOw0KLSAgICBtX2FsbG93
T3ZlcndyaXRlRG93bmxvYWQgPSBhbGxvd092ZXJ3cml0ZTsNCisgICAgTmV0d29ya0RhdGFUYXNr
OjpzZXRQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKFdURk1vdmUoZG93bmxvYWRDb25maWd1
cmF0aW9uKSk7DQorICAgIG1fYWxsb3dPdmVyd3JpdGVEb3dubG9hZCA9IG1fZG93bmxvYWRDb25m
aWd1cmF0aW9uLmFsbG93T3ZlcndyaXRlID09IEFsbG93T3ZlcndyaXRlOjpZZXM7DQogfQ0KIA0K
IHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5oDQppbmRleCBkNzExYzc5MGMzNy4uMTA2NzEwOTNmNjkg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5oDQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOg0KICAgICB2b2lk
IGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsNCiAgICAgTmV0d29ya0RhdGFUYXNrOjpT
dGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KLSAgICB2b2lkIHNldFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBi
b29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3ZlcnJpZGU7DQorICAgIHZvaWQgc2V0UGVuZGluZ0Rv
d25sb2FkQ29uZmlndXJhdGlvbihEb3dubG9hZENvbmZpZ3VyYXRpb24mJikgb3ZlcnJpZGU7DQog
ICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICB2
b2lkIHRpbWVvdXRGaXJlZCgpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3dubG9hZENv
bmZpZ3VyYXRpb24uY3BwDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu
LjIzNWJiNzIxZThlDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9E
b3dubG9hZENvbmZpZ3VyYXRpb24uY3BwDQpAQCAtMCwwICsxLDU5IEBADQorLyoNCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUg
IkRvd25sb2FkQ29uZmlndXJhdGlvbi5oIg0KKw0KKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
Ig0KKw0KK25hbWVzcGFjZSBXZWJLaXQgew0KKw0KK3ZvaWQgRG93bmxvYWRDb25maWd1cmF0aW9u
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdA0KK3sNCisgICAgZW5jb2RlciA8
PCBkZXN0aW5hdGlvbjsNCisgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZS5lbmNvZGUoZW5jb2Rl
cik7DQorICAgIGVuY29kZXIgPDwgYWxsb3dPdmVyd3JpdGU7DQorfQ0KKw0KK3N0ZDo6b3B0aW9u
YWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBEb3dubG9hZENvbmZpZ3VyYXRpb246OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpDQorew0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24gY29u
ZmlnIHsgfTsNCisNCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWcuZGVzdGluYXRpb24p
KQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgYXV0byBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoZGVjb2Rlcik7
DQorICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7DQorDQorICAgIGNvbmZpZy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7DQorDQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29uZmlnLmFsbG93T3ZlcndyaXRlKSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQor
DQorICAgIHJldHVybiB7IFdURk1vdmUoY29uZmlnKSB9Ow0KK30NCisNCit9OyAvLyBuYW1lc3Bh
Y2UgV2ViS2l0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxvYWRDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb3dubG9hZENvbmZpZ3VyYXRpb24u
aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42MTRiODIxYmQ5Ng0K
LS0tIC9kZXYvbnVsbA0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG93bmxvYWRDb25maWd1
cmF0aW9uLmgNCkBAIC0wLDAgKzEsNjkgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkN
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K
KyAqLw0KKw0KKyNwcmFnbWEgb25jZQ0KKw0KKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
DQorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPg0KKw0KK25hbWVzcGFjZSBJUEMgew0KK2NsYXNz
IERlY29kZXI7DQorY2xhc3MgRW5jb2RlcjsNCit9DQorDQorbmFtZXNwYWNlIFdlYktpdCB7DQor
DQorZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsNCisNCitzdHJ1Y3QgRG93
bmxvYWRDb25maWd1cmF0aW9uIHsNCisNCisgICAgRG93bmxvYWRDb25maWd1cmF0aW9uKCkgPSBk
ZWZhdWx0Ow0KKyAgICBEb3dubG9hZENvbmZpZ3VyYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbiwgQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUgPSBBbGxvd092ZXJ3cml0ZTo6Tm8p
DQorICAgICAgICA6IGRlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQ0KKyAgICAgICAgLCBhbGxvd092
ZXJ3cml0ZShhbGxvd092ZXJ3cml0ZSkNCisgICAgew0KKyAgICB9DQorDQorICAgIFN0cmluZyBk
ZXN0aW5hdGlvbjsNCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7DQorICAgIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlOw0KKw0KKyAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsNCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RG93bmxvYWRDb25maWd1cmF0aW9uPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7DQorfTsNCisN
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQNCisNCituYW1lc3BhY2UgV1RGIHsNCisNCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6QWxsb3dPdmVyd3JpdGU+IHsNCisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwNCisgICAgICAgIFdlYktpdDo6QWxsb3dPdmVyd3JpdGUs
DQorICAgICAgICBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywNCisgICAgICAgIFdlYktpdDo6
QWxsb3dPdmVyd3JpdGU6Olllcw0KKyAgICA+Ow0KK307DQorDQorfSAvLyBuYW1lc3BhY2UgV1RG
Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0DQppbmRleCAwNTVlYzVlNTc2MS4uNWJjMGZmMDgxODggMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0DQorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0DQpAQCAtMTAwLDYgKzEwMCw3IEBAIFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbi5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NhY2hlTW9kZWwuY3BwDQog
U2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgQG5vLXVuaWZ5DQogU2hhcmVkL0NvbnRleHRNZW51Q29u
dGV4dERhdGEuY3BwDQorU2hhcmVkL0Rvd25sb2FkQ29uZmlndXJhdGlvbi5jcHANCiBTaGFyZWQv
RWRpdG9yU3RhdGUuY3BwDQogU2hhcmVkL0ZvbnRJbmZvLmNwcA0KIFNoYXJlZC9GcmFtZUluZm9E
YXRhLmNwcA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dA0KaW5kZXggNTVlYWY1OTEzMTcuLmYxODQyNTk2
OTA4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0DQorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQNCkBAIC0yMzAsNiArMjMwLDcgQEAgVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQ0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tDQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tDQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5tbQ0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0
aW9uLm1tDQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tDQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQ0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgNCmluZGV4IDAyMzc2ZTFlMTEwLi5hNzcw
ODgwZTA5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3du
bG9hZENsaWVudC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaA0KQEAgLTI1LDYgKzI1LDcgQEANCiANCiAjcHJhZ21hIG9uY2UNCiANCisjaW5j
bHVkZSAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPg0KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4NCiANCkBAIC0zOSw4
ICs0MCw2IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7DQogY2xhc3MgRG93
bmxvYWRQcm94eTsNCiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsNCiBjbGFzcyBXZWJQcm90ZWN0aW9u
U3BhY2U7DQotDQotZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsNCiB9DQog
DQogbmFtZXNwYWNlIEFQSSB7DQpAQCAtNTMsNyArNTIsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYpIHsgfQ0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
dWludDY0X3QpIHsgfQ0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0NCisgICAgdmlydHVhbCB2
b2lkIGRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
RnVuY3Rpb248dm9pZChXZWJLaXQ6OkRvd25sb2FkQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9DQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0NCiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JikgeyB9DQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
eyB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCmluZGV4
IGUzYjQ2OGI4MDExLi5kOGY1Zjg5M2ExNCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHANCkBAIC0yMDYsMTQgKzIwNiwxNCBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZA0KICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKCZw
cm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOw0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0
aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwNCisgICAgICAgIHZvaWQgZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRD
b25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbA0KICAgICAgICAgew0K
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUpDQotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihBbGxv
d092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOw0KIA0KICAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxz
ZTsNCiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb24oQWRv
cHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUodG9B
UEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShmaWxlbmFtZS5p
bXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOw0KLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3Jp
dGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgdG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0
KCkpKTsNCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHRvV1RGU3RyaW5nKGRlc3Rp
bmF0aW9uLmdldCgpKSwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxs
b3dPdmVyd3JpdGU6Ok5vIH0pOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgdm9pZCBkaWRDcmVh
dGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwNCkBAIC0yODIsNyArMjgy
LDcgQEAgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLVVJMUmVxdWVzdFINCiANCiBXS0Rvd25sb2FkUmVmIFdLQ29udGV4
dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RhdGFSZWYgcmVzdW1l
RGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkNCiB7DQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29u
dGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIHRvSW1wbChyZXN1bWVEYXRhKSwgdG9X
VEZTdHJpbmcocGF0aCkpKTsNCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+
cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgdG9JbXBsKHJlc3VtZURhdGEpLCB7IHRvV1RGU3RyaW5n
KHBhdGgpIH0pKTsNCiB9DQogDQogdm9pZCBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJE
YXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsICBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQ0KaW5kZXggYTE4MzgxYWIzNWEuLmVkMWUwNzNkZjg1IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0N
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
DQpAQCAtNDMsNiArNDMsNyBAQA0KICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiDQogI2ltcG9y
dCAiX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiDQogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Np
b25JbnRlcm5hbC5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFs
LmgiDQogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIg0KICNpbXBvcnQgIl9XS0Rvd25s
b2FkSW50ZXJuYWwuaCINCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRl
cm5hbC5oIg0KQEAgLTU3OCw3ICs1NzksMTUgQEAgLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRV
UkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzoNCiAN
CiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1
bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcNCiB7DQotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1l
RG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KHJlc3VtZURhdGEpLnB0cigpLCBwYXRoKSk7DQorICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNz
UG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCB7IHBhdGggfSkpOw0KK30NCisNCistIChf
V0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uOihf
V0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKil3a0NvbmZpZ3VyYXRpb24NCit7DQorICAgIFdlYktp
dDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24geyB9Ow0KKyAgICBpZiAod2tD
b25maWd1cmF0aW9uKQ0KKyAgICAgICAgY29uZmlndXJhdGlvbiA9IFt3a0NvbmZpZ3VyYXRpb24g
X2Rvd25sb2FkQ29uZmlndXJhdGlvbl07DQorICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9v
bC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7DQog
fQ0KIA0KIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rp
bmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5n
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaA0KaW5kZXggM2RlMmMwMzYy
YmYuLjU1ZmRlMThkNDA3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oDQpAQCAtMzEsNiArMzEsNyBAQA0K
IEBjbGFzcyBXS1dlYlZpZXc7DQogQGNsYXNzIF9XS0F1dG9tYXRpb25TZXNzaW9uOw0KIEBjbGFz
cyBfV0tEb3dubG9hZDsNCitAY2xhc3MgX1dLRG93bmxvYWRDb25maWd1cmF0aW9uOw0KIEBjbGFz
cyBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247DQogQHByb3RvY29sIF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZTsNCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsNCkBAIC04Myw2ICs4NCw3
IEBADQogDQogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiAtIChf
V0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7DQorLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmln
dXJhdGlvbjooX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiANCiAvLyBU
ZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9j
ZXNzZXMgYXJlIHJ1bm5pbmcuDQogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAuLjllZWM0NDBjMGQwDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgNCkBAIC0wLDAgKzEs
NDMgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0
Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPg0KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4N
CisNCisjaWYgV0tfQVBJX0VOQUJMRUQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0K
K1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkN
CitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0DQorDQorQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgbnVsbGFibGUpIE5TVVJMICpkZXN0aW5hdGlvbjsN
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd092ZXJ3cml0ZTsNCisNCitAZW5kDQor
DQorTlNfQVNTVU1FX05PTk5VTExfRU5EDQorDQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw
MDAwMDAwMC4uMzJlM2MxNDlhNjcNCi0tLSAvZGV2L251bGwNCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENvbmZpZ3VyYXRpb24ubW0NCkBAIC0wLDAg
KzEsNjQgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUg
bWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0K
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0K
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
DQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQg
ImNvbmZpZy5oIg0KKyNpbXBvcnQgIl9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmgi
DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVu
dChOU1VSTCAqdXJsKQ0KK3sNCisgICAgaWYgKHVybCAmJiAhW3VybCBpc0ZpbGVVUkxdKQ0KKyAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgdXJsXTsNCit9DQorDQorQGltcGxlbWVudGF0aW9u
IF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbiB7DQorICAgIFJldGFpblB0cjxOU1VSTD4gbV9kZXN0
aW5hdGlvbjsNCit9DQorDQorLSAoTlNVUkwgKilkZXN0aW5hdGlvbg0KK3sNCisgICAgcmV0dXJu
IG1fZGVzdGluYXRpb24uZ2V0KCk7DQorfQ0KKw0KKy0gKHZvaWQpc2V0RGVzdGluYXRpb246KE5T
VVJMICopZGVzdGluYXRpb24NCit7DQorICAgIGNoZWNrVVJMQXJndW1lbnQoZGVzdGluYXRpb24p
Ow0KKyAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb247DQorfQ0KKw0KKy0gKFdlYktpdDo6
RG93bmxvYWRDb25maWd1cmF0aW9uKV9kb3dubG9hZENvbmZpZ3VyYXRpb24NCit7DQorICAgIFdl
YktpdDo6RG93bmxvYWRDb25maWd1cmF0aW9uIGNvbmZpZyB7IH07DQorDQorICAgIGNvbmZpZy5k
ZXN0aW5hdGlvbiA9IFttX2Rlc3RpbmF0aW9uIHBhdGhdOw0KKyAgICBjb25maWcuYWxsb3dPdmVy
d3JpdGUgPSBfYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBX
ZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXM7DQorDQorICAgIHJldHVybiBjb25maWc7DQorfQ0K
Kw0KK0BlbmQNCisNCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZENv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAuLmViOThmZjAxNDEzDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRDb25maWd1cmF0aW9uSW50ZXJuYWwuaA0KQEAg
LTAsMCArMSwzOCBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAq
IGFyZSBtZXQ6DQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycNCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywNCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTDQorICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YNCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2lt
cG9ydCAiX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorI2lmIFdLX0FQSV9FTkFCTEVE
DQorDQorI2ltcG9ydCAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQorDQorQGludGVyZmFjZSBf
V0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKCkNCisNCistIChXZWJLaXQ6OkRvd25sb2FkQ29uZmln
dXJhdGlvbilfZG93bmxvYWRDb25maWd1cmF0aW9uOw0KKw0KK0BlbmQNCisNCisjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KaW5kZXggZThiZTQwZjg3MDUuLjYyNTdiMTUw
N2U2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkRGVsZWdhdGUuaA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaA0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4NCiANCiBAY2xhc3MgX1dLRG93bmxvYWQ7DQorQGNsYXNzIF9X
S0Rvd25sb2FkQ29uZmlndXJhdGlvbjsNCiANCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0
ZSA8TlNPYmplY3Q+DQogQG9wdGlvbmFsDQpAQCAtMzgsNiArMzksNyBAQA0KIC0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlOw0KIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGg7DQogLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhh
bmRsZXI7DQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
Q29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRG93bmxvYWRDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsNCiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlz
aDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsNCiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7DQogLSAodm9p
ZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQ7DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGll
bnQuY3BwDQppbmRleCBlYWQ0ZjIzNDk5MS4uMmJjMjc5ZTcwY2IgMTAwNjQ0DQotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHANCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcA0KQEAgLTc0LDEyICs3NCwxMiBAQCBwcml2YXRlOg0KICAgICAgICAgd2Via2l0RG93bmxv
YWROb3RpZnlQcm9ncmVzcyhkb3dubG9hZC5nZXQoKSwgbGVuZ3RoKTsNCiAgICAgfQ0KIA0KLSAg
ICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGUNCisgICAgdm9pZCBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChEb3dubG9hZENvbmZpZ3VyYXRp
b24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlDQogICAgIHsNCiAgICAgICAgIEdS
ZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3Jl
YXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOw0KICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOw0KICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gd2Via2l0RG93bmxvYWRE
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZC5nZXQoKSwgZmls
ZW5hbWUudXRmOCgpLCBhbGxvd092ZXJ3cml0ZSk7DQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhbGxvd092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6
Tm8sIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVzdGluYXRp
b24sIGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRl
OjpObyB9KTsNCiAgICAgfQ0KIA0KICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBw
YXRoKSBvdmVycmlkZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oDQppbmRleCAxMTg4NjZjYzZmMS4uYjdiMjFhODFjOWIgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oDQpAQCAtNTEsNyArNTEs
NyBAQCBwcml2YXRlOg0KICAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOw0KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7DQogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsNCi0gICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkm
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3Zl
cndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsNCisgICAgdm9pZCBkZWNpZGVDb25maWd1cmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRDb25m
aWd1cmF0aW9uJiYpPiYmKSBmaW5hbDsNCiAgICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7DQogICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7DQogICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYp
IGZpbmFsOw0KQEAgLTc3LDYgKzc3LDcgQEAgcHJpdmF0ZToNCiAgICAgICAgIGJvb2wgZG93bmxv
YWREaWRSZWNlaXZlRGF0YSA6IDE7DQogICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSA6IDE7DQogICAgICAgICBi
b29sIGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0
aW9uSGFuZGxlciA6IDE7DQorICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsNCiAgICAgICAgIGJv
b2wgZG93bmxvYWREaWRGaW5pc2ggOiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERpZEZhaWwg
OiAxOw0KICAgICAgICAgYm9vbCBkb3dubG9hZERpZENhbmNlbCA6IDE7DQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQ0KaW5kZXggM2I0OTYyOGZk
ZjYuLmI4ZjA5ZmY0M2MwIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvRG93bmxvYWRDbGllbnQubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tDQpAQCAtNDAsNiArNDAsNyBAQA0KICNpbXBvcnQgIldlYkNyZWRl
bnRpYWwuaCINCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCINCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCINCisjaW1wb3J0ICJfV0tEb3dubG9hZENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIg0K
ICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCINCiAjaW1wb3J0ICJfV0tEb3dubG9hZElu
dGVybmFsLmgiDQogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+DQpAQCAtNTcsNiArNTgs
NyBAQCBEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdh
dGU+IGRlbGVnYXRlKQ0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVE
YXRhID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRp
ZFJlY2VpdmVEYXRhOildOw0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6YWxsb3dPdmVyd3JpdGU6KV07DQogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21w
bGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopXTsNCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVDb25maWd1
cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlQ29uZmlndXJhdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsNCiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRGaW5pc2g6KV07DQogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGlkRmFpbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOildOw0KICAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZENhbmNlbCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZERpZENhbmNlbDopXTsNCkBAIC0xNzcsMzIgKzE3OSw0MiBAQCB2b2lkIERv
d25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFBybw0KICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOw0KIH0NCiANCi12b2lkIERvd25sb2FkQ2xp
ZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpDQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoRG93bmxvYWRDb25maWd1cmF0
aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQ0KIHsNCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQ0KICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7DQog
ICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsNCiAgICAgICAg
IE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsNCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgZGVzdGluYXRpb24sIEFsbG93T3ZlcndyaXRlOjpZZXMgfSk7DQogICAgICAgICBy
ZXR1cm47DQogICAgIH0NCiAjZW5kaWYNCiANCi0gICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5k
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3Jp
dGUgJiYgIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxlcikNCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7DQorICAgIGlmICghbV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFs
bG93T3ZlcndyaXRlICYmICFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgJiYgIW1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNv
bXBsZXRpb25IYW5kbGVyKQ0KKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
DQogDQotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCisgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUNvbXBsZXRpb25IYW5kbGVyKSB7DQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVDb25maWd1cmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgp
LCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24gKndrRG93bmxvYWRD
b25maWd1cmF0aW9uKSB7DQorICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQ0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQorICAgICAgICAgICAgRG93
bmxvYWRDb25maWd1cmF0aW9uIGRvd25sb2FkQ29uZmlndXJhdGlvbiB7IH07DQorICAgICAgICAg
ICAgaWYgKHdrRG93bmxvYWRDb25maWd1cmF0aW9uKQ0KKyAgICAgICAgICAgICAgICBkb3dubG9h
ZENvbmZpZ3VyYXRpb24gPSBbd2tEb3dubG9hZENvbmZpZ3VyYXRpb24gX2Rvd25sb2FkQ29uZmln
dXJhdGlvbl07DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb3dubG9h
ZENvbmZpZ3VyYXRpb24pKTsNCisgICAgICAgIH0pLmdldCgpXTsNCisgICAgfSBlbHNlIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsNCiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBO
TzsNCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lODQogICAgICAg
ICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxl
bmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOw0KICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5EDQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxv
d092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRl
c3RpbmF0aW9uKTsNCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGVzdGluYXRpb24sIGFs
bG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObyB9
KTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZp
bGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2Vs
ZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7
DQogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxl
ZCgpKQ0KICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7DQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
YWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5v
LCBkZXN0aW5hdGlvbik7DQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBkZXN0aW5h
dGlvbiwgYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3Jp
dGU6Ok5vIH0pOw0KICAgICAgICAgfSkuZ2V0KCldOw0KICAgICB9DQogfQ0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0NCmluZGV4IGQ3NGRkYjM3MDUyLi4x
NTM2NTA4NDBhMCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQ0KQEAgLTUyOCwxOSArNTI4LDE3IEBAIC0gKEJPT0wpdHJ5VG9QZXJmb3JtOihTRUwp
YWN0aW9uIHdpdGg6KGlkKW9iamVjdA0KIA0KIEBlbmQNCiANCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0Ow0KLQ0KICNpZiBIQVZFKFRPVUNIX0JBUikNCiANCiBAaW50ZXJmYWNlIFdLVGV4dExpc3RU
b3VjaEJhclZpZXdDb250cm9sbGVyIDogTlNWaWV3Q29udHJvbGxlciB7DQogQHByaXZhdGUNCi0g
ICAgV2ViVmlld0ltcGwqIF93ZWJWaWV3SW1wbDsNCi0gICAgTGlzdFR5cGUgX2N1cnJlbnRMaXN0
VHlwZTsNCisgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogX3dlYlZpZXdJbXBsOw0KKyAgICBXZWJL
aXQ6Okxpc3RUeXBlIF9jdXJyZW50TGlzdFR5cGU7DQogfQ0KIA0KLUBwcm9wZXJ0eSAobm9uYXRv
bWljKSBMaXN0VHlwZSBjdXJyZW50TGlzdFR5cGU7DQorQHByb3BlcnR5IChub25hdG9taWMpIFdl
YktpdDo6TGlzdFR5cGUgY3VycmVudExpc3RUeXBlOw0KIA0KLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFdlYlZpZXdJbXBsOihXZWJWaWV3SW1wbCopd2ViVmlld0ltcGw7DQorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoV2ViVmlld0ltcGw6KFdlYktpdDo6V2ViVmlld0ltcGwqKXdlYlZpZXdJbXBs
Ow0KIA0KIEBlbmQNCiANCkBAIC01NTcsNyArNTU1LDcgQEAgc3RhdGljIGNvbnN0IE5TVUludGVn
ZXIgbm9MaXN0U2VnbWVudCA9IDA7DQogc3RhdGljIGNvbnN0IE5TVUludGVnZXIgdW5vcmRlcmVk
TGlzdFNlZ21lbnQgPSAxOw0KIHN0YXRpYyBjb25zdCBOU1VJbnRlZ2VyIG9yZGVyZWRMaXN0U2Vn
bWVudCA9IDI7DQogDQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ltcGw6KFdlYlZp
ZXdJbXBsKil3ZWJWaWV3SW1wbA0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBs
OihXZWJLaXQ6OldlYlZpZXdJbXBsKil3ZWJWaWV3SW1wbA0KIHsNCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpDQogICAgICAgICByZXR1cm4gbmlsOw0KQEAgLTYwMCw5ICs1OTgsOSBA
QCAtICh2b2lkKV9zZWxlY3RMaXN0OihpZClzZW5kZXINCiAgICAgICAgIC8vIFRoZXJlIGlzIG5v
ICJyZW1vdmUgbGlzdCIgZWRpdCBjb21tYW5kLCBidXQgSW5zZXJ0T3JkZXJlZExpc3QgYW5kIElu
c2VydFVub3JkZXJlZExpc3QgYm90aA0KICAgICAgICAgLy8gYmVoYXZlIGFzIHRvZ2dsZXMsIHNv
IHdlIGNhbiBpbnZva2UgdGhlIGFwcHJvcHJpYXRlIGVkaXQgY29tbWFuZCBkZXBlbmRpbmcgb24g
b3VyIF9jdXJyZW50TGlzdFR5cGUNCiAgICAgICAgIC8vIHRvIHJlbW92ZSBhbiBleGlzdGluZyBs
aXN0LiBXZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIGlmIF9jdXJyZW50TGlzdFR5cGUgaXMg
Tm9MaXN0Lg0KLSAgICAgICAgaWYgKF9jdXJyZW50TGlzdFR5cGUgPT0gT3JkZXJlZExpc3QpDQor
ICAgICAgICBpZiAoX2N1cnJlbnRMaXN0VHlwZSA9PSBXZWJLaXQ6Ok9yZGVyZWRMaXN0KQ0KICAg
ICAgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZChAIkluc2Vy
dE9yZGVyZWRMaXN0IiwgQCIiKTsNCi0gICAgICAgIGVsc2UgaWYgKF9jdXJyZW50TGlzdFR5cGUg
PT0gVW5vcmRlcmVkTGlzdCkNCisgICAgICAgIGVsc2UgaWYgKF9jdXJyZW50TGlzdFR5cGUgPT0g
V2ViS2l0OjpVbm9yZGVyZWRMaXN0KQ0KICAgICAgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgp
LmV4ZWN1dGVFZGl0Q29tbWFuZChAIkluc2VydFVub3JkZXJlZExpc3QiLCBAIiIpOw0KICAgICAg
ICAgYnJlYWs7DQogICAgIGNhc2UgdW5vcmRlcmVkTGlzdFNlZ21lbnQ6DQpAQCAtNjE2LDE3ICs2
MTQsMTcgQEAgLSAodm9pZClfc2VsZWN0TGlzdDooaWQpc2VuZGVyDQogICAgIF93ZWJWaWV3SW1w
bC0+ZGlzbWlzc1RleHRUb3VjaEJhclBvcG92ZXJJdGVtV2l0aElkZW50aWZpZXIoTlNUb3VjaEJh
ckl0ZW1JZGVudGlmaWVyVGV4dExpc3QpOw0KIH0NCiANCi0tICh2b2lkKXNldEN1cnJlbnRMaXN0
VHlwZTooTGlzdFR5cGUpbGlzdFR5cGUNCistICh2b2lkKXNldEN1cnJlbnRMaXN0VHlwZTooV2Vi
S2l0OjpMaXN0VHlwZSlsaXN0VHlwZQ0KIHsNCiAgICAgTlNTZWdtZW50ZWRDb250cm9sICppbnNl
cnRMaXN0Q29udHJvbCA9IChOU1NlZ21lbnRlZENvbnRyb2wgKilzZWxmLnZpZXc7DQogICAgIHN3
aXRjaCAobGlzdFR5cGUpIHsNCi0gICAgY2FzZSBOb0xpc3Q6DQorICAgIGNhc2UgV2ViS2l0OjpO
b0xpc3Q6DQogICAgICAgICBbaW5zZXJ0TGlzdENvbnRyb2wgc2V0U2VsZWN0ZWQ6WUVTIGZvclNl
Z21lbnQ6bm9MaXN0U2VnbWVudF07DQogICAgICAgICBicmVhazsNCi0gICAgY2FzZSBPcmRlcmVk
TGlzdDoNCisgICAgY2FzZSBXZWJLaXQ6Ok9yZGVyZWRMaXN0Og0KICAgICAgICAgW2luc2VydExp
c3RDb250cm9sIHNldFNlbGVjdGVkOllFUyBmb3JTZWdtZW50Om9yZGVyZWRMaXN0U2VnbWVudF07
DQogICAgICAgICBicmVhazsNCi0gICAgY2FzZSBVbm9yZGVyZWRMaXN0Og0KKyAgICBjYXNlIFdl
YktpdDo6VW5vcmRlcmVkTGlzdDoNCiAgICAgICAgIFtpbnNlcnRMaXN0Q29udHJvbCBzZXRTZWxl
Y3RlZDpZRVMgZm9yU2VnbWVudDp1bm9yZGVyZWRMaXN0U2VnbWVudF07DQogICAgICAgICBicmVh
azsNCiAgICAgfQ0KQEAgLTY0Niw3ICs2NDQsNyBAQCBAcHJpdmF0ZQ0KICAgICBSZXRhaW5QdHI8
V0tUZXh0TGlzdFRvdWNoQmFyVmlld0NvbnRyb2xsZXI+IF90ZXh0TGlzdFRvdWNoQmFyVmlld0Nv
bnRyb2xsZXI7DQogDQogQHByaXZhdGUNCi0gICAgV2ViVmlld0ltcGwqIF93ZWJWaWV3SW1wbDsN
CisgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogX3dlYlZpZXdJbXBsOw0KIH0NCiANCiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCB0ZXh0SXNCb2xkOw0KQEAgLTY1NSw3ICs2NTMsNyBAQCBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCB0ZXh0SXNVbmRlcmxpbmVkOw0KIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBOU1RleHRBbGlnbm1lbnQgY3VycmVudFRleHRBbGlnbm1lbnQ7DQogQHByb3BlcnR5
IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBOU0NvbG9yICp0ZXh0Q29sb3I7DQogDQot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ltcGw6KFdlYlZpZXdJbXBsKil3ZWJWaWV3
SW1wbDsNCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViS2l0OjpXZWJW
aWV3SW1wbCopd2ViVmlld0ltcGw7DQogQGVuZA0KIA0KIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRU
b3VjaEJhckl0ZW1Db250cm9sbGVyDQpAQCAtNjY1LDcgKzY2Myw3IEBAIEBzeW50aGVzaXplIHRl
eHRJc0l0YWxpYz1fdGV4dElzSXRhbGljOw0KIEBzeW50aGVzaXplIHRleHRJc1VuZGVybGluZWQ9
X3RleHRJc1VuZGVybGluZWQ7DQogQHN5bnRoZXNpemUgY3VycmVudFRleHRBbGlnbm1lbnQ9X2N1
cnJlbnRUZXh0QWxpZ25tZW50Ow0KIA0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJ
bXBsOihXZWJWaWV3SW1wbCopd2ViVmlld0ltcGwNCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWV3SW1wbDooV2ViS2l0OjpXZWJWaWV3SW1wbCopd2ViVmlld0ltcGwNCiB7DQogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHANCmlu
ZGV4IDc1MTAyZWUzYjAwLi4wYmFjZmRlY2M3YiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwDQpAQCAtMTc1LDIxICsxNzUs
MjAgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgp
DQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKm1f
cHJvY2Vzc1Bvb2wsICp0aGlzLCBsZW5ndGgpOw0KIH0NCiANCi12b2lkIERvd25sb2FkUHJveHk6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBk
b3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KK3ZvaWQgRG93bmxv
YWRQcm94eTo6ZGVjaWRlQ29uZmlndXJhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkNCiB7
DQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkNCiAgICAgICAgIHJldHVybjsNCiAgICAgDQotICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG93bmxvYWRJRCA9IGRvd25s
b2FkSURdIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9u
KSB7DQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZTsNCi0gICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpDQotICAgICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOw0KLQ0KKyAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG93bmxvYWRJRCA9IGRvd25s
b2FkSURdIChEb3dubG9hZENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKSB7DQogICAgICAg
ICBpZiAoIW1fcHJvY2Vzc1Bvb2wpDQogICAgICAgICAgICAgcmV0dXJuOw0KIA0KKyAgICAgICAg
aWYgKCFjb25maWd1cmF0aW9uLmRlc3RpbmF0aW9uLmlzTnVsbCgpKQ0KKyAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25maWd1cmF0aW9uLmRlc3RpbmF0aW9uLCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGNvbmZpZ3VyYXRpb24uc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7DQorDQogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBt
X3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQ0KLSAgICAgICAgICAgIG5ldHdvcmtQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVEZWNpZGVQZW5kaW5n
RG93bmxvYWREZXN0aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6OlllcyksIDApOw0K
KyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6Q29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRDb25maWd1cmF0aW9uKGRvd25sb2FkSUQs
IFdURk1vdmUoY29uZmlndXJhdGlvbikpLCAwKTsNCiAgICAgfSk7DQogfQ0KIA0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oDQppbmRleCBm
MjQwNDk5NTdhMi4uZjA4MWI1YWNjYmIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oDQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZh
dGU6DQogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsNCiAgICAgdm9pZCBkaWRDYW5jZWwo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsNCiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsNCi0gICAgdm9p
ZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOw0KKyAgICB2b2lkIGRlY2lkZUNvbmZp
Z3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElELCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsNCiANCiAgICAgRG93bmxvYWRQcm94eU1hcCYgbV9kb3du
bG9hZFByb3h5TWFwOw0KICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5tZXNzYWdlcy5pbg0KaW5kZXggZWE1NmRhYjFkNjIuLjJlYjc5MGZhYzQzIDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkubWVzc2FnZXMuaW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluDQpAQCAtMjQsNyArMjQsNyBAQCBtZXNzYWdlcyAtPiBE
b3dubG9hZFByb3h5IHsNCiAgICAgRGlkU3RhcnQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIEF0b21pY1N0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCiAgICAgRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNo
YWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpDQogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpKQ0KLSAgICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZUFzeW5jKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcg
c3VnZ2VzdGVkRmlsZW5hbWUpDQorICAgIERlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVBc3luYyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lKQ0KIA0KICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkNCiAgICAgRGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3Ro
KQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcA0KaW5kZXggYzhm
ODA1ZTg5ODQuLjBmOGFhOTg2NDg2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHANCkBAIC0xMjYxLDE3ICsxMjYxLDE2IEBAIERvd25sb2FkUHJveHkqIFdl
YlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBSZXNvDQogICAgIHJldHVybiBkb3dubG9hZFByb3h5Ow0KIH0NCiANCi1Eb3dubG9hZFByb3h5
KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpDQor
RG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94
eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgRG93bmxvYWRD
b25maWd1cmF0aW9uJiYgZG93bmxvYWRDb25maWd1cmF0aW9uKQ0KIHsNCiAgICAgYXV0byogZG93
bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoUmVzb3VyY2VSZXF1ZXN0KCksIGluaXRp
YXRpbmdQYWdlKTsNCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlhdGluZ1Bh
Z2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOw0KIA0KLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsNCi0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkNCi0gICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOw0KKyAgICBpZiAoIWRvd25sb2FkQ29u
ZmlndXJhdGlvbi5kZXN0aW5hdGlvbi5pc0VtcHR5KCkpDQorICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoZG93bmxvYWRDb25maWd1cmF0aW9uLmRlc3RpbmF0aW9uLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGRvd25sb2FkQ29uZmlndXJhdGlvbi5zYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsNCiANCiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsNCi0g
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVz
dW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwg
MCk7DQorICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElE
KCksIHJlc3VtZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgV1RGTW92ZShkb3dubG9hZENvbmZpZ3Vy
YXRpb24pKSwgMCk7DQogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsNCiAgICAgfQ0KIA0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oDQppbmRleCAwNzY3OTRkZjBj
ZS4uNGMyMzFkNzJkYTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oDQpAQCAtMjksNiArMjksNyBAQA0KICNpbmNsdWRlICJBUElPYmplY3QuaCINCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiDQogI2luY2x1ZGUgIkFQSVdlYnNpdGVE
YXRhU3RvcmUuaCINCisjaW5jbHVkZSAiRG93bmxvYWRDb25maWd1cmF0aW9uLmgiDQogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHlNYXAuaCINCiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiDQog
I2luY2x1ZGUgIkhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCINCkBA
IC0xODksNyArMTkwLDcgQEAgcHVibGljOg0KICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVu
ZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQ
YXRoKCk7IH0NCiANCiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7DQotICAgIERvd25sb2FkUHJveHkqIHJlc3Vt
ZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSog
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKTsNCisgICAgRG93bmxvYWRQcm94eSogcmVz
dW1lRG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRh
KiByZXN1bWVEYXRhLCBEb3dubG9hZENvbmZpZ3VyYXRpb24mJiA9IHsgfSk7DQogDQogICAgIHZv
aWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFJlZlB0cjxBUEk6Ok9i
amVjdD4mJiB1c2VyRGF0YSkgeyBtX2luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSA9IFdURk1vdmUodXNlckRhdGEpOyB9DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oNCmluZGV4IDZiMTg5MDA4NDUzLi41ZTQ1ZWIzYzcwMiAx
MDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oNCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oN
CkBAIC0xMDc4LDggKzEwNzgsMTAgQEANCiAJCTYzNjM1M0E1MUU5ODU4REYwMDA5RjhBRiAvKiBf
V0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0ZBQkUxOTFFOTcwRDY1MDAzMDExRDUgLyogX1dL
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07DQogCQk2MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyog
V0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2MzcyODFBMDIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNz
LmggKi87IH07DQogCQk2MzcyODFBMzIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dy
ZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM3
MjgxQTEyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5tbSAqLzsgfTsNCisJ
CTYzQkRFN0RFMjE5MjQ4QzgwMDk4QzkwQiAvKiBEb3dubG9hZENvbmZpZ3VyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQkRFN0RDMjE5MjQ4
QzgwMDk4QzkwQiAvKiBEb3dubG9hZENvbmZpZ3VyYXRpb24uaCAqLzsgfTsNCiAJCTYzQzMyQzI2
MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyNDFFOTgxMEQ5MDA2OTlC
RDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07DQogCQk2M0MzMkMyODFFOTgxMTkwMDA2OTlCRDAgLyogX1dL
R2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyNzFFOTgxMTkwMDA2OTlCRDAgLyogX1dLR2VvbG9j
YXRpb25Qb3NpdGlvbkludGVybmFsLmggKi87IH07DQorCQk2M0VFNDE3OTIxQzFCQjA0MDA3QTlG
NzQgLyogX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0VFNDE3NzIxQzFCQjA0MDA3QTlGNzQgLyogX1dLRG93
bmxvYWRDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsNCiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3Bl
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVC
ODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCiAJCTZBNTA4MEJGMUYwRURBQUEw
MEU2MTdDNSAvKiBXS1dpbmRvd0ZlYXR1cmVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkE1MDgwQkUxRjBFREFBQTAwRTYxN0M1IC8qIFdL
V2luZG93RmVhdHVyZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsNCiAJCTZCODIxRERDMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovOyB9Ow0KQEAgLTM0ODcsOSArMzQ4OSwxNCBAQA0K
IAkJNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9Ow0KIAkJNjM3MjgxQTAyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9n
cmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkUHJvZ3Jlc3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsNCiAJCTYzNzI4MUExMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2Fk
UHJvZ3Jlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Rvd25sb2FkUHJvZ3Jlc3MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2M0JERTdEQzIxOTI0OEM4MDA5OEM5MEIg
LyogRG93bmxvYWRDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkQ29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjNCREU3REQyMTkyNDhD
ODAwOThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEb3dubG9hZENvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0K
IAkJNjNDMzJDMjMxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBv
c2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNDMzJDMjQxRTk4MTBE
OTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9Ow0KIAkJNjNDMzJDMjcxRTk4MTE5MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tH
ZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CisJCTYzRUU0MTc3MjFDMUJCMDQwMDdBOUY3NCAvKiBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07DQorCQk2M0VFNDE3ODIxQzFCQjA0MDA3QTlGNzQgLyogX1dLRG93bmxv
YWRDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLRG93bmxvYWRDb25m
aWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjNFRTQxN0IyMUMx
QkJFNzAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07DQogCQk2M0ZBQkUxOTFFOTcwRDY1MDAzMDExRDUgLyogX1dLR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2
NTQ2QTgyOTEzMDAwMTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2Fk
Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07DQogCQk2NTQ2QTgyQTEzMDAwMTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVz
b3VyY2VMb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVj
dGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9Ow0KQEAgLTUxNTIsNiArNTE1OSw4IEBADQogCQkJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1
MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovLA0KIAkJCQk3QzA2
NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmggKi8sDQogCQkJCUMwMzM3REQwMTI3QTI5ODAwMDhGRjRGNCAvKiBXZWJXaGVlbEV2ZW50LmNw
cCAqLywNCisJCQkJNjNCREU3REMyMTkyNDhDODAwOThDOTBCIC8qIERvd25sb2FkQ29uZmlndXJh
dGlvbi5oICovLA0KKwkJCQk2M0JERTdERDIxOTI0OEM4MDA5OEM5MEIgLyogRG93bmxvYWRDb25m
aWd1cmF0aW9uLmNwcCAqLywNCiAJCQkpOw0KIAkJCXBhdGggPSBTaGFyZWQ7DQogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsNCkBAIC01OTkxLDYgKzYwMDAsOSBAQA0KIAkJCQlBMUE0RkU1ODE4
RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQubW0gKi8sDQogCQkJCUExQTRGRTYwMThERDU0
QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggKi8sDQogCQkJCUExQTRGRTU5MThE
Q0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggKi8sDQorCQkJCTYzRUU0MTc3
MjFDMUJCMDQwMDdBOUY3NCAvKiBfV0tEb3dubG9hZENvbmZpZ3VyYXRpb24uaCAqLywNCisJCQkJ
NjNFRTQxNzgyMUMxQkIwNDAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5tbSAq
LywNCisJCQkJNjNFRTQxN0IyMUMxQkJFNzAwN0E5Rjc0IC8qIF9XS0Rvd25sb2FkQ29uZmlndXJh
dGlvbkludGVybmFsLmggKi8sDQogCQkJCTM3OUE4NzM4MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tF
bGVtZW50QWN0aW9uLmggKi8sDQogCQkJCTM3OUE4NzM3MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tF
bGVtZW50QWN0aW9uLm1tICovLA0KIAkJCQkzNzlBODczQjE4QkJGRjA3MDA1ODhBRjIgLyogX1dL
RWxlbWVudEFjdGlvbkludGVybmFsLmggKi8sDQpAQCAtOTMzOCw2ICs5MzUwLDcgQEANCiAJCQkJ
QkM0QTYyOTIxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovLA0KIAkJCQkxQTFGRUMxRDE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywNCiAJCQkJQkM0QTYyQTgxNDc0NEVDNzAwNkM2ODFBIC8q
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovLA0KKwkJCQk2M0JERTdE
RTIxOTI0OEM4MDA5OEM5MEIgLyogRG93bmxvYWRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAq
LywNCiAJCQkJMzFBNTA1RkExNjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuaCBp
biBIZWFkZXJzICovLA0KIAkJCQlCQzA5QjhGOTE0NzQ2MEY3MDA1RjU2MjUgLyogV2ViQ29udGV4
dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLA0KIAkJCQlCQ0RFMDU5QjExQ0RBOEFF
MDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywNCkBAIC05NTMxLDYgKzk1NDQsNyBAQA0KIAkJCQlCQzQwNzVGNDEyNEZGMDI3MDA2OEYyMEEg
LyogV0tBcnJheS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTUxMkY1OEY2MTJBODhBNTQwMDYyOTUz
MCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywNCiAJCQkJNTEy
RjU4RjgxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywNCisJCQkJNjNFRTQxNzkyMUMxQkIwNDAwN0E5Rjc0IC8qIF9XS0Rv
d25sb2FkQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTM3QzRDMDhEMTgxNEFD
NUMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTM3
QzRDMDk1MTgxNEI5RTYwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEludGVybmFsLmggaW4g
SGVhZGVycyAqLywNCiAJCQkJMzdDNEMwODcxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0Zvcndh
cmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sDQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nDQppbmRleCA5MDc4ZWExNWU1Ny4uMzUwM2VhMzk4NjYgMTAwNjQ0
DQotLS0gYS9Ub29scy9DaGFuZ2VMb2cNCisrKyBiL1Rvb2xzL0NoYW5nZUxvZw0KQEAgLTEsMyAr
MSwxOCBAQA0KKzIwMTgtMTItMTMgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxl
LmNvbT4NCisNCisgICAgICAgIEFkZCBhIGNsYXNzIHRvIGJ1bmRsZSBkb3dubG9hZCBjb25maWd1
cmF0aW9uIHBhcmFtZXRlcnMgdG9nZXRoZXINCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODMNCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ2NzEx
MDY2DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToNCisgICAgICAg
ICgtW0NvbmZpZ3VyYXRpb25EZWNpZGluZ0Rvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lk
ZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6
DQorICAgICAgICAoLVtDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRlIF9kb3du
bG9hZERpZEZpbmlzaDpdKToNCisgICAgICAgIChURVNUKToNCisgICAgICAgICAgICBBZGQgYSBz
aW1wbGUgQVBJIHRlc3QgZm9yIGNvbmZpZ3VyaW5nIGEgZG93bmxvYWQgdmlhIHRoZSBfV0tEb3du
bG9hZERlbGVnYXRlIG1ldGhvZA0KKyAgICAgICAgICAgIHRoYXQgYXNrcyBmb3IgYSBfV0tEb3du
bG9hZENvbmZpZ3VyYXRpb24uDQorDQogMjAxOC0xMi0xMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQHNvbnkuY29tPg0KIA0KICAgICAgICAgVW5yZXZpZXdlZC4gQ2hhbmdlZCBteSBzdGF0
dXMgdG8gYSByZXZpZXdlci4NCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQ0KaW5kZXggZGFlMGQyNzEwYzguLjljZTNkMGY3MGE4IDEwMDY0
NA0KLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQ0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQ0KQEAgLTM1LDYgKzM1LDcgQEANCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiDQogI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+DQogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+
DQorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkQ29uZmlndXJhdGlvbi5oPg0KICNpbXBvcnQg
PFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+DQogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZS5oPg0KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oPg0KQEAgLTYyMCw1ICs2MjEsNDEgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRD
YW5jZWxlZFdoaWxlRGVjaWRpbmdEZXN0aW5hdGlvbikNCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJl
Z2lzdGVyXTsNCiB9DQogDQorQGludGVyZmFjZSBDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9h
ZERlbGVnYXRlIDogTlNPYmplY3QgPF9XS0Rvd25sb2FkRGVsZWdhdGU+DQorQGVuZA0KKw0KK0Bp
bXBsZW1lbnRhdGlvbiBDb25maWd1cmF0aW9uRGVjaWRpbmdEb3dubG9hZERlbGVnYXRlIHsNCisg
ICAgU3RyaW5nIF9kZXN0aW5hdGlvblBhdGg7DQorfQ0KKw0KKy0gKHZvaWQpX2Rvd25sb2FkOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZUNvbmZpZ3VyYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S0Rvd25sb2FkQ29uZmlndXJhdGlvbiAqKSljb21wbGV0aW9uSGFuZGxlcg0KK3sgICAgDQorICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOw0KKyAg
ICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsNCisgICAgRVhQRUNUX1RSVUUoZmlsZUhh
bmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsN
CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOw0KKw0KKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLRG93bmxvYWRDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7DQorICAgIFtjb25maWd1cmF0aW9uIHNldERlc3RpbmF0aW9uOltOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6X2Rlc3RpbmF0aW9uUGF0aF1dOw0KKyAgICBbY29uZmlndXJhdGlv
biBzZXRBbGxvd092ZXJ3cml0ZTpZRVNdOw0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb25maWd1
cmF0aW9uLmdldCgpKTsNCit9DQorDQorLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQNCit7DQorICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY29udGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRpb25QYXRoIGFuZFBh
dGg6W3NvdXJjZVVSTCBwYXRoXV0pOw0KKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOw0KKyAgICBpc0RvbmUgPSB0cnVlOw0KK30NCisNCitAZW5k
DQorDQorVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWREZWNpZGVDb25maWd1cmF0aW9uKQ0KK3sN
CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udmVydFJlc3BvbnNl
VG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOw0KKyAgICBhdXRvIGRv
d25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29uZmlndXJhdGlvbkRlY2lkaW5nRG93bmxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOw0KKyAgICBydW5UZXN0KG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSwgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKSwgc291cmNlVVJMKTsNCit9DQorDQogI2VuZGlm
DQogI2VuZGlmDQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>