<?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>196281</bug_id>
          
          <creation_ts>2019-03-26 17:27:04 -0700</creation_ts>
          <short_desc>Resource Load Statistics: IPC to the WebsiteDataStore in the UI process from NetworkProcess::deleteWebsiteDataForRegistrableDomains()</short_desc>
          <delta_ts>2019-03-28 18:16:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1521553</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-26 17:27:04 -0700</bug_when>
    <thetext>The move of ITP to the network process requires that it calls the UI process when clearing website data (previously the other way around).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521554</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-26 17:27:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/48938748&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521564</commentid>
    <comment_count>2</comment_count>
      <attachid>366029</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-26 18:01:20 -0700</bug_when>
    <thetext>Created attachment 366029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521566</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-26 18:03:30 -0700</bug_when>
    <thetext>Attachment 366029 did not pass style-queue:


ERROR: Source/WebKit/Shared/WebsiteData/WebsiteData.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521567</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-26 18:04:37 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #3)
&gt; Attachment 366029 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/Shared/WebsiteData/WebsiteData.h:42:  enum members
&gt; should use InterCaps with an initial capital letter or initial &apos;k&apos; for
&gt; C-style enums.  [readability/enum_casing] [4]
&gt; Total errors found: 1 in 25 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

I belive the style checker is wrong, complaining about the capitalization of:

enum class WebsiteDataProcessType { Network, UI };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521591</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-26 19:17:00 -0700</bug_when>
    <thetext>Non-Cocoa build failures seem to be about a new convenience function not being used. It’s currently only used in my code which is behind the Resource Load Statistics flag.

The mac-debug test failures are unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521770</commentid>
    <comment_count>6</comment_count>
      <attachid>366088</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-27 12:05:04 -0700</bug_when>
    <thetext>Created attachment 366088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521773</commentid>
    <comment_count>7</comment_count>
      <attachid>366029</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-27 12:06:18 -0700</bug_when>
    <thetext>Comment on attachment 366029
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1688
&gt; +        parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::DeleteWebsiteDataInUIProcessForRegistrableDomains(sessionID, dataTypesForUIProcess, fetchOptions, domainsToDeleteAllButCookiesFor, callbackID), 0);

This seems like a prime candidate for sendWithAsyncReply.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp:117
&gt; +bool WebsiteDataRecord::matches(const RegistrableDomain&amp; domain) const

This needs a WebCore:: or we need a using namespace WebCore inside the namespace WebKit.

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2075
&gt; +    WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;IsStatisticsHasLocalStorage&quot;));

auto messageName = adoptWK(...)

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:1435
&gt; +        WKRetainPtr&lt;WKTypeRef&gt; result(AdoptWK, WKBooleanCreate(hasLocalStorage));

auto result = adoptWK(...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521774</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-27 12:06:50 -0700</bug_when>
    <thetext>Attachment 366088 did not pass style-queue:


ERROR: Source/WebKit/Shared/WebsiteData/WebsiteData.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521776</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-27 12:14:34 -0700</bug_when>
    <thetext>Sorry, I saw your comments after preparing the latest patch.

(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 366029 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=366029&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1688
&gt; &gt; +        parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::DeleteWebsiteDataInUIProcessForRegistrableDomains(sessionID, dataTypesForUIProcess, fetchOptions, domainsToDeleteAllButCookiesFor, callbackID), 0);
&gt; 
&gt; This seems like a prime candidate for sendWithAsyncReply.

Yes. Chris pointed this out in-person. Fixed in the latest patch.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp:117
&gt; &gt; +bool WebsiteDataRecord::matches(const RegistrableDomain&amp; domain) const
&gt; 
&gt; This needs a WebCore:: or we need a using namespace WebCore inside the
&gt; namespace WebKit.

Will fix.

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2075
&gt; &gt; +    WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;IsStatisticsHasLocalStorage&quot;));
&gt; 
&gt; auto messageName = adoptWK(...)

Will fix.

&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:1435
&gt; &gt; +        WKRetainPtr&lt;WKTypeRef&gt; result(AdoptWK, WKBooleanCreate(hasLocalStorage));
&gt; 
&gt; auto result = adoptWK(...)

Will fix.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521780</commentid>
    <comment_count>10</comment_count>
      <attachid>366091</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-27 12:19:40 -0700</bug_when>
    <thetext>Created attachment 366091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521781</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-27 12:21:31 -0700</bug_when>
    <thetext>Attachment 366091 did not pass style-queue:


ERROR: Source/WebKit/Shared/WebsiteData/WebsiteData.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521796</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-27 13:06:16 -0700</bug_when>
    <thetext>Non-Cocoa build failures are probably because of a missing header include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521898</commentid>
    <comment_count>13</comment_count>
      <attachid>366125</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-27 16:13:06 -0700</bug_when>
    <thetext>Created attachment 366125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521903</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-27 16:20:52 -0700</bug_when>
    <thetext>Attachment 366125 did not pass style-queue:


ERROR: Source/WebKit/Shared/WebsiteData/WebsiteData.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521925</commentid>
    <comment_count>15</comment_count>
      <attachid>366125</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-27 17:07:05 -0700</bug_when>
    <thetext>Comment on attachment 366125
Patch

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

&gt; Source/WebKit/Shared/WebsiteData/WebsiteData.cpp:98
&gt; +    case WebsiteDataType::MemoryCache:
&gt; +        return WebsiteDataProcessType::UI;

This is in the web process.

&gt; Source/WebKit/Shared/WebsiteData/WebsiteData.cpp:106
&gt; +    case WebsiteDataType::WebSQLDatabases:
&gt; +        return WebsiteDataProcessType::UI;

I&apos;m not sure if this is correct.  I thought this was in the Network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521926</commentid>
    <comment_count>16</comment_count>
      <attachid>366125</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-27 17:08:39 -0700</bug_when>
    <thetext>Comment on attachment 366125
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:627
&gt; +void WebsiteDataStore::fetchDataForRegistrableDomains(OptionSet&lt;WebsiteDataType&gt; dataTypes, OptionSet&lt;WebsiteDataFetchOption&gt; fetchOptions, const Vector&lt;RegistrableDomain&gt;&amp; domains, CompletionHandler&lt;void(Vector&lt;WebsiteDataRecord&gt;&amp;&amp;, HashSet&lt;RegistrableDomain&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)

Same needing WebCore:: or using namespace WebCore here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522190</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-28 13:28:55 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; Comment on attachment 366125 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=366125&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/WebsiteData/WebsiteData.cpp:98
&gt; &gt; +    case WebsiteDataType::MemoryCache:
&gt; &gt; +        return WebsiteDataProcessType::UI;
&gt; 
&gt; This is in the web process.

Sure. My thinking was that the WebsiteDataStore in the UI process manages removal of this type but you&apos;re absolutely right.

&gt; &gt; Source/WebKit/Shared/WebsiteData/WebsiteData.cpp:106
&gt; &gt; +    case WebsiteDataType::WebSQLDatabases:
&gt; &gt; +        return WebsiteDataProcessType::UI;
&gt; 
&gt; I&apos;m not sure if this is correct.  I thought this was in the Network process.

Doesn&apos;t look like it. WebKit::NetworkProcess doesn&apos;t handle the type whereas WebKit::WebsiteDataStore does, like so:

    if (dataTypes.contains(WebsiteDataType::WebSQLDatabases) &amp;&amp; isPersistent()) {
        callbackAggregator-&gt;addPendingCallback();

        m_queue-&gt;dispatch([webSQLDatabaseDirectory = m_configuration-&gt;webSQLDatabaseDirectory().isolatedCopy(), callbackAggregator, modifiedSince] {
            WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory)-&gt;deleteDatabasesModifiedSince(modifiedSince);

            RunLoop::main().dispatch([callbackAggregator] {
                callbackAggregator-&gt;removePendingCallback();
            });
        });
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522192</commentid>
    <comment_count>18</comment_count>
      <attachid>366198</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-28 13:32:25 -0700</bug_when>
    <thetext>Created attachment 366198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522196</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-28 13:34:50 -0700</bug_when>
    <thetext>Attachment 366198 did not pass style-queue:


ERROR: Source/WebKit/Shared/WebsiteData/WebsiteData.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522218</commentid>
    <comment_count>20</comment_count>
      <attachid>366206</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-28 14:31:23 -0700</bug_when>
    <thetext>Created attachment 366206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522220</commentid>
    <comment_count>21</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-28 14:31:59 -0700</bug_when>
    <thetext>Trying to fix the Wincairo build failure. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522222</commentid>
    <comment_count>22</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-28 14:34:18 -0700</bug_when>
    <thetext>Attachment 366206 did not pass style-queue:


ERROR: Source/WebKit/Shared/WebsiteData/WebsiteData.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522292</commentid>
    <comment_count>23</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-28 16:53:47 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=196374 on the style checker issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522308</commentid>
    <comment_count>24</comment_count>
      <attachid>366206</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-28 17:48:30 -0700</bug_when>
    <thetext>Comment on attachment 366206
Patch

Thank you, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522312</commentid>
    <comment_count>25</comment_count>
      <attachid>366206</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-28 18:16:05 -0700</bug_when>
    <thetext>Comment on attachment 366206
Patch

Clearing flags on attachment: 366206

Committed r243632: &lt;https://trac.webkit.org/changeset/243632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522313</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-28 18:16:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366029</attachid>
            <date>2019-03-26 18:01:20 -0700</date>
            <delta_ts>2019-03-27 12:14:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196281-20190326180120.patch</filename>
            <type>text/plain</type>
            <size>50911</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyODIwMmI5ZTRlODQ2ZDBm
NmZhZDUyNWFiNGJlNGMzNDdjYTI0ZGYuLjAzMTc4MmNjZWY3OGUyN2Y3YjU1YTk1YmJkN2Q5MTkz
NjZlYzI1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTktMDMtMjYgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4gdGhlIFVJIHByb2Nlc3MgZnJv
bSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjgx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW92ZSBvZiBSZXNvdXJjZSBMb2FkIFN0
YXRpc3RpY3MgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyByZXF1aXJlcyB0aGF0IGl0CisgICAgICAg
IGNhbGxzIHRoZSBVSSBwcm9jZXNzIHdoZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIChwcmV2aW91
c2x5IHRoZSBvdGhlciB3YXkKKyAgICAgICAgYXJvdW5kKS4gVGhpcyBwYXRjaCBhY2hpZXZlcyB0
aGF0LgorCisgICAgICAgIFNwZWNpZmljYWxseSwgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkgbm93CisgICAgICAgIGZpbHRlcnMgaXRzIFdl
YnNpdGVEYXRhVHlwZXMgZG93biB0byBqdXN0IHRoZSBvbmVzIGFwcGxpY2FibGUgZm9yIHRoZSBV
SQorICAgICAgICBwcm9jZXNzIGFuZCB0aGVuIGNhbGxzIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMgb3ZlcgorICAgICAgICBJUEMuCisKKyAgICAgICAg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucygpIG9uCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIHNpZGUgbWFrZXMgdXNl
IG9mIHRoZSByZS1pbnRyb2R1Y2VkCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVsZXZhbnQKKyAg
ICAgICAgZGF0YSByZWNvcmRzIGFuZCBjYWxsIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
KS4gVGhlIHJlLWludHJvZHVjZWQKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKCkgd2FzIHJlbW92ZWQgYXMgZGVhZCBjb2RlIGluCisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDIwNTYvd2Via2l0LCB0aGVu
IHVuZGVyIHRoZSBuYW1lCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKCkuIFRoZSByZWFzb24gaXQKKyAgICAgICAgd2Fz
IGRlYWQgY29kZSB3YXMgdGhlIGxhY2sgb2YgSVBDIGNhbGwgdGhhdCB0aGlzIHBhdGNoIGFkZHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmdlbmVyYXRlQ2FsbGJhY2tJRCk6CisgICAgICAgICAgIFNpbmNlIHdlIG5vdyBu
ZWVkIHRvIG1hbmFnZSBhIGNhbGxiYWNrIGZyb20gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyk6CisgICAgICAgICAgIE5vdyBjYWxscyBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW5zIG92ZXIgSVBDIGlmIHRoZXJlCisgICAgICAgICAgIGFyZSBX
ZWJzaXRlRGF0YVR5cGVzIGFwcGxpY2FibGUgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uSW5VSVByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCk6CisgICAgICAgICAgIENhbGxiYWNrIGZ1
bmN0aW9uYWxpdHkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGE6OmZpbHRlcik6CisgICAgICAgICAgICBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gbWFu
YWdlIHByb2Nlc3Mgb3duZXJzaGlwIG9mIHdlYnNpdGUgZGF0YSB0eXBlcy4KKyAgICAgICAgKiBT
aGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVj
dHVyZSwgY2FsbGVkIGJ5IHRoZSBUZXN0UnVubmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyk6
CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG92ZXIgSVBDIGZyb20gdGhl
IG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6bWF0
Y2hlcyBjb25zdCk6CisgICAgICAgICAgICBOb3cgbWF0Y2hlcyB3aXRoIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGluc3RlYWQgb2YgYSBzdHJpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICAgICBSZXBsYWNlZCBieSBXZWJzaXRlRGF0YVJlY29yZDo6bWF0
Y2hlcygpLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29y
ZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKToKKyAgICAgICAgICAgIFJlLWludHJvZHVjZWQuIEl0IHdhcyByZW1vdmVk
IGFzIGRlYWQgY29kZSBpbiByMjQyMDU2LgorICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTmV0d29y
a1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAg
ICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUsIGNhbGxlZCBieSB0aGUgVGVzdFJ1bm5lci4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTAz
LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBU
aGUgbmV0d29yayBwcm9jZXNzIGlzIG5vdCBleGl0aW5nIHJlbGlhYmx5IHdoZW4gdGhlIFdlYlBy
b2Nlc3NQb29sIGlzIGRlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAz
YWM1YTlmNGEyLi45OGMwZDU2MDFhODc1MmY5NDBlNWViMmNkN2RkZTk1ZmFjOGY3NjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
NTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTEyNSw2ICsxMjQsMTMgQEAgc3Rh
dGljIHZvaWQgY2FsbEV4aXRTb29uKElQQzo6Q29ubmVjdGlvbiopCiAgICAgfSk7CiB9CiAKK3N0
YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQoreworICAgIHN0YXRpYyB1aW50NjRf
dCBjYWxsYmFja0lEOworICAgIAorICAgIHJldHVybiArK2NhbGxiYWNrSUQ7Cit9CisKIE5ldHdv
cmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKCp0aGlzKQog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0xNTI1LDIzICsxNTMxLDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgIAogICAgICAgICB+Q2FsbGJhY2tBZ2dyZWdh
dG9yKCkKICAgICAgICAgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlciksIHdlYnNpdGVE
YXRhID0gV1RGTW92ZShtX3dlYnNpdGVEYXRhKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluczsKLSAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGhvc3RuYW1lV2l0aENvb2tpZXMgOiB3ZWJzaXRlRGF0YS5ob3N0TmFt
ZXNXaXRoQ29va2llcykKLSAgICAgICAgICAgICAgICAgICAgZG9tYWlucy5hZGQoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3RuYW1lV2l0aENvb2tpZXMpKTsK
LQotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdG5hbWVXaXRoSFNUUyA6IHdl
YnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpCi0gICAgICAgICAgICAgICAgICAgIGRv
bWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0
bmFtZVdpdGhIU1RTKSk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogd2Vic2l0ZURhdGEuZW50cmllcykKLSAgICAgICAgICAgICAgICAgICAgZG9tYWlucy5hZGQo
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5Lm9yaWdpbi5o
b3N0KSk7Ci0KKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW5zID0gV1RGTW92
ZShtX2RvbWFpbnMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihkb21haW5zKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgICAgIFdlYnNpdGVEYXRhIG1fd2Vic2l0
ZURhdGE7CisgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluczsKICAg
ICB9OwogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBD
YWxsYmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHNob3VsZE5vdGlmeVBhZ2VdIChjb25zdCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYgZG9tYWluc1dpdGhEYXRhKSBtdXRhYmxlIHsKQEAgLTE1NTMsNyArMTU0OSw4
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgIH0pOwogICAgIH0pKTsKIAotICAg
IGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURh
dGE7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhDb29raWVzOworICAgIEhhc2hT
ZXQ8U3RyaW5nPiBob3N0TmFtZXNXaXRoSFNUU0NhY2hlOwogCiAgICAgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVDb29raWVzRm9yOwogICAgIFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yOwpAQCAt
MTU3NSwxMyArMTU3MiwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVz
V2l0aENvb2tpZXMpOworICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhob3N0TmFtZXNXaXRoQ29va2llcyk7CiAKLSAgICAgICAgICAgIGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
ZG9tYWluc1RvRGVsZXRlQ29va2llc0Zvciwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRo
Q29va2llcyk7CisgICAgICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmls
dGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUNvb2tpZXNGb3IsIGhvc3RO
YW1lc1dpdGhDb29raWVzKTsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlLCBXZWJD
b3JlOjpJbmNsdWRlSHR0cE9ubHlDb29raWVzOjpZZXMpOwogCi0gICAgICAgICAgICBob3N0bmFt
ZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFp
bnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0Zvciwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0
TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3QgOiBo
b3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoaG9zdCkpOworCisgICAgICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVs
ZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0
dHBPbmx5Q29va2llc0ZvciwgaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgICAgICAgICAgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RuYW1lc1dp
dGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tpZXM6Ok5vKTsK
KworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aENvb2tp
ZXNUb0RlbGV0ZSkKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9t
YWlucy5rZXlzKCkpCkBAIC0xNTkyLDggKzE1OTUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAg
ICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgd2Vi
c2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICAgICAgICAgIGhvc3Ru
YW1lc1dpdGhIU1RTVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWlu
c1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvciwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRo
SFNUU0NhY2hlKTsKKyAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisgICAgICAgICAgICBo
b3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRv
bWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwor
CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFk
ZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOworCiAg
ICAgICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NjAxLDkgKzE2MDgsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogICAgIC8qCiAgICAg
Ly8gRklYTUU6IE5vIEFQSSB0byBkZWxldGUgY3JlZGVudGlhbHMgYnkgb3JpZ2luCisgICAgSGFz
aFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKICAgICAgICAg
aWYgKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0
b3JlLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5j
cmVkZW50aWFsU3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgICAg
IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsKICAgICB9CiAgICAgKi8K
ICAgICAKQEAgLTE2MTIsOCArMTYyMCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGF1dG8gZW50cmllc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGVudHJpZXMp
OwogCi0gICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmll
cy5hcHBlbmRWZWN0b3IoZW50cmllc1RvRGVsZXRlKTsKLSAgICAgICAgICAgIAorICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGVudHJpZXNUb0RlbGV0ZSkKKyAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5Lm9yaWdpbi5ob3N0KSk7CisKICAgICAgICAg
ICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzVG9EZWxldGUpCiAgICAgICAgICAgICAgICAg
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCp0aGlzLCBzZXNzaW9u
SUQsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGVudHJ5Lm9yaWdpbiB9LCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgfSk7CkBA
IC0xNjI3LDExICsxNjM2LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHNlc3Npb25JRCwgZG9tYWluc1RvRGVs
ZXRlQWxsQnV0Q29va2llc0ZvciA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxC
dXRDb29raWVzRm9yKSwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKSwgc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0g
ewogICAgICAgICAgICAgICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IGVudHJpZXNUb0Rl
bGV0ZTsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlY3VyaXR5T3JpZ2luIDog
c2VjdXJpdHlPcmlnaW5zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVs
ZXRlQWxsQnV0Q29va2llc0Zvci5jb250YWlucyhSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCkpKQorICAgICAgICAgICAgICAgICAg
ICBhdXRvIGRvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9z
dChzZWN1cml0eU9yaWdpbi5ob3N0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkb21haW5z
VG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKGRvbWFpbikpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBlbnRyaWVzVG9EZWxl
dGUuYXBwZW5kKHNlY3VyaXR5T3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4s
IFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOworICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoZG9tYWluKTsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZGJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9z
ZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoZW50cmllc1RvRGVsZXRlLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKQEAgLTE2NDcs
NyArMTY1Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAgICBmb3IgKGF1
dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IHNlY3VyaXR5T3JpZ2luLCBX
ZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLCAwIH0pOworICAgICAg
ICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCkpOwogICAg
ICAgICAgICAgICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNsZWFyKHNlY3VyaXR5
T3JpZ2luLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CkBAIC0xNjYyLDExICsxNjcyLDIx
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAgICAgICAgaWYgKCFkb21haW5z
VG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkpKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBlbnRyaWVzVG9EZWxldGUuYXBwZW5kKGVu
dHJ5Lm9yaWdpbik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNp
dGVEYXRhLmVudHJpZXMuYXBwZW5kKGVudHJ5KTsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KGVudHJ5Lm9yaWdpbi5ob3N0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjbGVhckRpc2tDYWNoZUVudHJpZXMoY2FjaGUoKSwgZW50cmllc1RvRGVsZXRlLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICAg
ICAgfSk7CiAgICAgfQorCisgICAgYXV0byBkYXRhVHlwZXNGb3JVSVByb2Nlc3MgPSBXZWJzaXRl
RGF0YTo6ZmlsdGVyKHdlYnNpdGVEYXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJ
KTsKKyAgICBpZiAoIWRhdGFUeXBlc0ZvclVJUHJvY2Vzcy5pc0VtcHR5KCkgJiYgIWRvbWFpbnNU
b0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IuaXNFbXB0eSgpKSB7CisgICAgICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKKyAgICAgICAgbV9wZW5kaW5nRGVsZXRl
V2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluc0NhbGxiYWNrcy5hZGQo
Y2FsbGJhY2tJRCwgW2RvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIChhdXRvIGRvbWFpbnMpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKKyAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkRlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXNGb3JVSVByb2Nlc3MsIGZldGNoT3B0aW9ucywg
ZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tJRCksIDApOworICAgIH0K
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVk
ZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtMTc3Niw2ICsxNzk2LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAg
ICAgICAgIH0pOwogICAgIH0KIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6bm90aWZ5V2Vic2l0
ZURhdGFEZWxldGlvbkluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
eworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW5zQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CisgICAg
Y2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIE5ldHdvcmtQcm9jZXNz
OjpmaW5kQ2FjaGVFbmdpbmUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA1MjlmODc5
MjIwZjZlNTFhMzQwZWU0Yjc2M2EyMDIzMWE3NDY3ZWVhLi5mMTRhNjI1OTQ0NjhhMGU0NWU4NmY5
NTcxNGRiODUwZWUyZTc5NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5oPgpAQCAtMjU4LDYgKzI1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFp
bnNGaW5pc2hlZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKICNlbmRpZgogCiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKQEAgLTUzMSw2ICs1MzMsMTAgQEAg
cHJpdmF0ZToKICAgICBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciBtX25ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKSAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+KT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnNDYWxsYmFja3M7CisjZW5kaWYKKwogICAgIHN0cnVj
dCBTdG9yYWdlUXVvdGFNYW5hZ2VycyB7CiAgICAgICAgIHVpbnQ2NF90IGRlZmF1bHRRdW90YSB7
IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CiAgICAgICAg
IHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDdk
OWQyZTA2MGIxNzAzZjY5ODJhZTIwMWRhNmY0YzdjMDI2NjUwM2UuLjIzNjgwMWQzY2U0YTA5ZTJi
OTAwY2I2ZTBlODQ5YmRjNWUyYTNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTM5LDYgKzEzOSw3
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q3Jvc3NT
aXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKICAgICBEZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBp
bmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAoKSBBc3luYworICAgIE5vdGlmeVdlYnNpdGVEYXRh
RGVsZXRpb25JblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCmluZGV4IDAxMjQ1MTliZTk1ZWNl
YmFhNzBjZDc1NDMwNDAzMzkwZDdhMWRjMDkuLjIxNTNiNWRhZDE4NDY5ZTE5MThkZGVlZWYyOTRl
YzU1NDJhZGYxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5o
IgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVR5
cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtODYsNCArODcsNTkgQEAgYm9vbCBXZWJzaXRl
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vic2l0ZURhdGEmIHJlc3VsdCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBXZWJzaXRlRGF0
YTo6b3duZXJQcm9jZXNzKFdlYnNpdGVEYXRhVHlwZSBkYXRhVHlwZSkKK3sKKyAgICBzd2l0Y2gg
KGRhdGFUeXBlKSB7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXM6CisgICAgICAg
IHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0
ZURhdGFUeXBlOjpEaXNrQ2FjaGU6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NU
eXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZToKKyAg
ICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJOworICAgIGNhc2UgV2Vic2l0
ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZToKKyAgICAgICAgcmV0dXJuIFdl
YnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpTZXNz
aW9uU3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJOwor
ICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U6CisgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6V2Vi
U1FMRGF0YWJhc2VzOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUk7
CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlczoKKyAgICAgICAg
cmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisgICAgY2FzZSBXZWJzaXRl
RGF0YVR5cGU6Ok1lZGlhS2V5czoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGU6CisgICAgICAgIHJl
dHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0ZURh
dGFUeXBlOjpTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6VUk7CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisg
ICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGE6CisgICAgICAgIHJldHVybiBXZWJz
aXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyNlbmRpZgorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9j
ZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHM6
CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnM6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBl
OjpOZXR3b3JrOworI2VuZGlmCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlOgor
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNl
IFdlYnNpdGVEYXRhVHlwZTo6RGV2aWNlSWRIYXNoU2FsdDoKKyAgICAgICAgcmV0dXJuIFdlYnNp
dGVEYXRhUHJvY2Vzc1R5cGU6OlVJOworICAgIH0KK30KKworT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gV2Vic2l0ZURhdGE6OmZpbHRlcihPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB1bmZp
bHRlcmVkV2Vic2l0ZURhdGFUeXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBXZWJzaXRlRGF0
YVByb2Nlc3NUeXBlKQoreworICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZpbHRlcmVk
OworICAgIGZvciAoYXV0byBkYXRhVHlwZSA6IHVuZmlsdGVyZWRXZWJzaXRlRGF0YVR5cGVzKSB7
CisgICAgICAgIGlmIChvd25lclByb2Nlc3MoZGF0YVR5cGUpID09IFdlYnNpdGVEYXRhUHJvY2Vz
c1R5cGUpCisgICAgICAgICAgICBmaWx0ZXJlZC5hZGQoZGF0YVR5cGUpOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gZmlsdGVyZWQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCmluZGV4IGI2MDhmNGYyYTQwYTBlNDY4OWIwYzNmYzgz
M2E0NGU0MjhmNGJmMDEuLjc1MWM2YjM0OWY1MWRkY2E2YWY1YzQ4Y2Q5YjAxMmQ2NDg1MjIzYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaApA
QCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBXZWJzaXRl
RGF0YVR5cGU7CiAKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSB7IE5ldHdvcmss
IFVJIH07CisKIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbjsKQEAgLTYyLDYgKzY0LDggQEAg
c3RydWN0IFdlYnNpdGVEYXRhIHsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBXZWJzaXRlRGF0YSYp
OworICAgIHN0YXRpYyBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlIG93bmVyUHJvY2VzcyhXZWJzaXRl
RGF0YVR5cGUpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmaWx0ZXIo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUpOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggOTAyODViMzlkYzU2NzQ3ZmJmZTMyNjhkYzZkMzY4ZmFm
MjE0MzU4ZC4uYjVkOGUyYTkzMTljY2EwMDA4YjhlOTZjZWZhNTY2NGExODVkODM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCkBAIC00NDksNiArNDQ5LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkCiAj
ZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2VGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5oYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0xvY2FsU3RvcmFnZSkg
eworICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRleHQpOworICAgIH0pOwor
I2Vsc2UKKyAgICBjYWxsYmFjayhmYWxzZSwgY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmlu
ZGV4IGU2YTJhMDA3ZjAxMmY0Mjg2ODI4YmFhZTI1Mjc5Zjk1YTlmNTU3ZGEuLjQ3OWNhZDQ2MzFm
Y2U5YjQzYTRlZTgzODExYWZjZTFlMTIyNjRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC05OSw2ICs5OSw4
IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91
Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFj
ayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29v
a2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGlu
ZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBi
b29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrKTsK
K3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2VGdW5jdGlvbikoYm9vbCBoYXNMb2NhbFN0b3JhZ2UsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2VGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25k
cywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4
QWdlQ2FwRnVuY3Rpb24pOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDBiOTFlMzkxZTM5ODNkNDFlYjUyMjY0MTYzNGJkYmE0Zjk2
YTVlMWEuLmRkYWJiNjk5ZDA1YTcxMjI4YjgxOWJhZDcyOTM2NmRiM2I4MTAzZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtOTkxLDYgKzk5MSwyMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29ucwogICAg
IAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0
ZUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluLCBpbmNsdWRlSHR0cE9ubHlDb29r
aWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQorCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFp
bnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBk
YXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMs
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucywgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3sKKyAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNz
aW9uSUQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUgfHwgZGF0YVR5cGVz
LmlzRW1wdHkoKSB8fCBkb21haW5zLmlzRW1wdHkoKSkgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Tm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkluVUlQcm9jZXNzRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoeyB9LCBjYWxsYmFja0lEKSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB3ZWJzaXRlRGF0YVN0b3JlLT5mZXRjaERhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnMoZGF0YVR5cGVzLCBmZXRjaE9wdGlvbnMsIGRvbWFpbnMsIFt0aGlzLCBk
YXRhVHlwZXMsIHdlYnNpdGVEYXRhU3RvcmUgPSBtYWtlUmVmKCp3ZWJzaXRlRGF0YVN0b3JlKSwg
Y2FsbGJhY2tJRF0gKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4mJiBtYXRjaGluZ0RhdGFSZWNv
cmRzLCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnNXaXRoTWF0
Y2hpbmdEYXRhUmVjb3JkcykgeworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRh
KGRhdGFUeXBlcywgV1RGTW92ZShtYXRjaGluZ0RhdGFSZWNvcmRzKSwgW3RoaXMsIGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUoZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFS
ZWNvcmRzKSwgY2FsbGJhY2tJRF0gKCkgeworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6Ok5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25JblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWluc0ZpbmlzaGVkKGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcywgY2Fs
bGJhY2tJRCksIDApOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogI2VuZGlmIC8vIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzNzIzNTZi
ODY4MmMyOTkzMzk1MGQ3NWEwYmYzMWI4ODdkMjEzNTBjLi5mNmY5MzkwZTMzMjIyZGQyMmQxOGJi
MDhjZTU1ZjY5NGZkNGExMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdh
dGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVz
ZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVz
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29s
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5z
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+LCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3BlbmQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1NjM4ODliZDhmNjhmMTdjNDY1
MmVhNDliODE2ZmMzMzY3N2RiYWFlLi5lMmUwYTQzNDZhNTI3ZjhkY2ZhZTc4MjU2NjBhNjdhMWZi
NmE5ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00OCw2ICs0OCw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIE5v
dGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAgICBO
b3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90
YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMpCiAgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2Vy
RGlkR3JhbnRBY2Nlc3MpIEFzeW5jCisgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gZG9tYWlucywgdWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgQ29udGVudEV4dGVuc2lvblJ1bGVzKFdlYktp
dDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuY3BwCmluZGV4IDU2ZDQwYzdjYjI1ZGUwOWIyMDM0MGFkODNkM2M4MjBlMGUxZjQzYTcuLjY2
NTZhNDc2OGY0OTljMGU0ZGUyZGU2MDMxNDgzYTUyZGQ2YzgzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5n
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljU3VmZml4Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTEzLDIwICsxMTQsMjAgQEAgc3RhdGljIGlu
bGluZSBib29sIGhvc3RJc0luRG9tYWluKFN0cmluZ1ZpZXcgaG9zdCwgU3RyaW5nVmlldyBkb21h
aW4pCiAgICAgcmV0dXJuICFzdWZmaXhPZmZzZXQgfHwgaG9zdFtzdWZmaXhPZmZzZXQgLSAxXSA9
PSAnLic7CiB9CiAKLWJvb2wgV2Vic2l0ZURhdGFSZWNvcmQ6Om1hdGNoZXNUb3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bikgY29uc3QKK2Jvb2wgV2Vic2l0ZURhdGFSZWNvcmQ6Om1hdGNoZXMoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsKLSAgICBpZiAodG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbi5pc0VtcHR5KCkpCisgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNv
b2tpZXMpKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdE5hbWUgOiBjb29raWVIb3N0
TmFtZXMpIHsKLSAgICAgICAgICAgIGlmIChob3N0SXNJbkRvbWFpbihob3N0TmFtZSwgdG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbikpCisgICAgICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4o
aG9zdE5hbWUsIGRvbWFpbi5zdHJpbmcoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmRPcmln
aW5EYXRhIDogb3JpZ2lucykgewotICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4oZGF0YVJlY29y
ZE9yaWdpbkRhdGEuaG9zdCwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikpCisgICAgICAg
IGlmIChob3N0SXNJbkRvbWFpbihkYXRhUmVjb3JkT3JpZ2luRGF0YS5ob3N0LCBkb21haW4uc3Ry
aW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaApp
bmRleCBjY2YzMGE3OWFiZDA1ODJlYTAwODFiYTNkZmYzMDJiYzdlODNiNGMyLi4zZGZmNDAxNmM0
NDRmMjhhY2Q2Y2U4YWU3Mjk4ODE1MzUwM2RhODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IH0KIApAQCAtNzIsNyArNzMsNyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogICAgIEhh
c2hTZXQ8U3RyaW5nPiBvcmlnaW5zV2l0aENyZWRlbnRpYWxzOwogICAgIEhhc2hTZXQ8U3RyaW5n
PiBIU1RTQ2FjaGVIb3N0TmFtZXM7CiAKLSAgICBib29sIG1hdGNoZXNUb3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlcyhjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDk3OGQ2
N2QxMmM3NWIxYWJmYzExNDQ4NGNhZDNmMzc3ZDIzNTk1YzMuLjFhZmY3M2M2OGNhMjhmZTEwMzI0
OTEyMjVhNTcwZDliODY0YmJkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC02MjMsMzcgKzYyMyw0
NCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgIGNhbGxiYWNrQWdncmVnYXRvci0+Y2Fs
bElmTmVlZGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29y
ZD4mJiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgZmV0Y2hEYXRhQW5kQXBwbHkoZGF0YVR5cGVzLCBmZXRjaE9wdGlvbnMsIG1fcXVl
dWUuY29weVJlZigpLCBbZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBleGlzdGlu
Z0RhdGFSZWNvcmRzKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisgICAgICAgIAorICAgICAgICBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IG1hdGNoaW5n
RGF0YVJlY29yZHM7CisgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkczsKKyAgICAgICAgZm9yIChhdXRvJiYgZGF0YVJlY29yZCA6
IGV4aXN0aW5nRGF0YVJlY29yZHMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDog
ZG9tYWlucykgeworICAgICAgICAgICAgICAgIGlmIChkYXRhUmVjb3JkLm1hdGNoZXMoZG9tYWlu
KSkgeworICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0RhdGFSZWNvcmRzLmFwcGVuZChXVEZN
b3ZlKGRhdGFSZWNvcmQpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9tYWluc1dpdGhNYXRjaGlu
Z0RhdGFSZWNvcmRzLmFkZChkb21haW4uaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYXRjaGluZ0RhdGFSZWNvcmRzID0gV1RGTW92ZSht
YXRjaGluZ0RhdGFSZWNvcmRzKSwgZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzID0gV1RG
TW92ZShkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIFdU
Rk1vdmUoZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorI2VuZGlmCisKIHN0YXRpYyBQcm9jZXNzQWNjZXNzVHlwZSBjb21wdXRlTmV0d29y
a1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBib29sIGlzTm9uUGVyc2lzdGVudFN0b3JlKQogewogICAgIFByb2Nlc3NB
Y2Nlc3NUeXBlIHByb2Nlc3NBY2Nlc3NUeXBlID0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5vbmU7CiAK
LSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsK
LSAgICAgICAgaWYgKGlzTm9uUGVyc2lzdGVudFN0b3JlKQotICAgICAgICAgICAgcHJvY2Vzc0Fj
Y2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6
Ok9ubHlJZkxhdW5jaGVkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJvY2Vzc0FjY2Vz
c1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Okxh
dW5jaCk7CisgICAgZm9yIChhdXRvIGRhdGFUeXBlIDogZGF0YVR5cGVzKSB7CisgICAgICAgIGlm
IChkYXRhVHlwZSA9PSBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpIHsKKyAgICAgICAgICAgIGlm
IChpc05vblBlcnNpc3RlbnRTdG9yZSkKKyAgICAgICAgICAgICAgICBwcm9jZXNzQWNjZXNzVHlw
ZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6T25seUlm
TGF1bmNoZWQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb2Nlc3NBY2Nl
c3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpM
YXVuY2gpOworICAgICAgICB9IGVsc2UgaWYgKFdlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MoZGF0
YVR5cGUpID09IFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcmspCisgICAgICAgICAgICBy
ZXR1cm4gUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaDsKICAgICB9Ci0KLSAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSAmJiAhaXNOb25QZXJzaXN0
ZW50U3RvcmUpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0Fj
Y2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwotCi0gICAgaWYgKGRhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCi0gICAgICAgIHByb2Nlc3NB
Y2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBl
OjpMYXVuY2gpOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkNyZWRlbnRpYWxzKSkKLSAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9j
ZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7Ci0KLSAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKQotICAgICAgICBwcm9j
ZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNz
VHlwZTo6TGF1bmNoKTsKLQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAg
ICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vz
c0FjY2Vzc1R5cGU6OkxhdW5jaCk7CiAgICAgCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucykgJiYgIWlzTm9uUGVyc2lzdGVudFN0b3JlKQotICAgICAgICBwcm9jZXNz
QWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlw
ZTo6TGF1bmNoKTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIHByb2Nlc3NBY2Nlc3NUeXBlOwogfQog
CkBAIC0xNzk1LDYgKzE4MDIsMjUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVDb29r
aWVzRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgYm9vbCBpbmNsdWRlSHR0cE8KICAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLT5kZWxldGVDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgaW5jbHVkZUh0dHBPbmx5Q29va2ll
cywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7CiAgICAgfQogfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0xvY2FsU3RvcmFnZUZv
clRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3N0b3JhZ2VNYW5hZ2VyKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fc3RvcmFnZU1hbmFnZXItPmdldExvY2FsU3RvcmFnZU9yaWdpbnMoW3VybCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSGFzaFNldDxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgb3JpZ2lucykgbXV0YWJsZSB7CisgICAgICAg
IGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgeworICAgICAgICAgICAgaWYgKG9yaWdpbi5o
b3N0ID09IHVybC5ob3N0KCkpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0
cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSk7Cit9CiAjZW5kaWYg
Ly8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29u
ZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCAyNTM5ZmY5NzEwZGYzZjY4YWU2NzU3YjUyNzY4YTM4MzIxNWJkYjZjLi4wYzZm
Mzk2YzhhZDAxNDhjYzRmZmUzMTk3Y2MwOTQ3OWQ2NjM1ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02
MSw2ICs2MSw3IEBAIGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0K
IApAQCAtMTI1LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGEoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4mLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICB2b2lkIGZldGNoRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiYsIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGNsZWFyUHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKQEAgLTE3MSw2ICsxNzMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVz
dGluZyhjb25zdCBVUkwmIGZyb21VUkwsIGNvbnN0IFVSTCYgdG9VUkwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlD
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaGFzTG9jYWxT
dG9yYWdlRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBjb25zdDsKICNlbmRpZgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA5OWRiZTU0ZGM1YzQ1MmYxNTE5MzIwZGUyZjRkOWI3ODI4ZWVkNjQ3Li41
NjMwNmEyMDcwMWM4NWI0ODIzY2FjYzVlNjlmY2ZlZjczZWJlMTE2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTkt
MDMtMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVz
b3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4gdGhl
IFVJIHByb2Nlc3MgZnJvbSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2MjgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgdGhlIGZ1bmN0aW9uIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSgpIHRvIHRoZQorICAg
ICAgICBUZXN0UnVubmVyLiBXaXRoIGl0LCB0aGUgcGFnZSBjYW4gcXVlcnkgdGhlIFdlYnNpdGVE
YXRhU3RvcmUgaW4gdGhlCisgICAgICAgIFVJIHByb2Nlc3MgdG8gbWFrZSBzdXJlIHRoYXQgaXQg
c2VlcyBMb2NhbFN0b3JhZ2UuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpp
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTAzLTI2ICBLZWl0aCBSb2xs
aW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGhlIHdheSBnZW5lcmF0
ZS14Y2ZpbGVsaXN0cyByZXR1cm5zIHN0cmluZ3MgZnJvbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCmluZGV4IDQ4MWNlZWI4MjlhNGE5ZDFmMDA3YmIyNTQ2YTAxNGI2Zjk3NmI1
NzYuLjA4N2RhODQ2NTI1N2ZiZTY5ZDM1OGJmNTc3MGVmNzIzMmM2OTU1YjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbApAQCAtMzIxLDYgKzMyMSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVy
IHsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9k
aWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkIGxvbmcgaG91cnMsIG9iamVjdCBjYWxsYmFjayk7CiAg
ICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKG9iamVjdCBj
YWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoRE9NU3Ry
aW5nIGhvc3ROYW1lLCBib29sZWFuIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOworICAgIGJvb2xl
YW4gaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKERPTVN0cmluZyBob3N0TmFtZSk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOwogICAgIHZv
aWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUob2JqZWN0IGNvbXBsZXRpb25IYW5k
bGVyKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggMjZmMjU3NWJkMjU3MzM2OGUyY2Q4NjM1NjU5YjM1ZTZhMmEx
ZGIwZi4uODY0MWEwNmI1NWM3ZDc1ZWU5NTE0N2U4YTk2MTEwMzlmZDM5ODZhMyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC0yMDcwLDYgKzIwNzAsMTYgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRGVsZXRl
Q29va2llc0Zvckhvc3QoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgaW5jbHUKICAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwog
fQogCitib29sIFRlc3RSdW5uZXI6OmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShKU1N0cmlu
Z1JlZiBob3N0TmFtZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzU3RhdGlzdGljc0hh
c0xvY2FsU3RvcmFnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJv
ZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpKTsKKyAgICBX
S1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2Uo
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksICZyZXR1cm5E
YXRhKTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tCb29sZWFuR2V0
VHlwZUlEKCkpOworICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19j
YXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwogdm9pZCBUZXN0UnVu
bmVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCiB7CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAiKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmlu
ZGV4IDNiZjNkMWE4ZjUxNzdlNTgxYWVmODhiNDI0MWFhOTlkZDAwZmMxMDguLjdhMzU1YTg4YmM5
NzRjMzFjMWQ2MDdkNWVlZjA0N2VlMTZhNTI3NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MzEsNiArNDMxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bChKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEZWxldGVDb29raWVz
Rm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFs
Q2FsbGJhY2soKTsKKyAgICBib29sIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShKU1N0cmlu
Z1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91
YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUo
SlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERp
ZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlM2RiNjU5MmFmYjhlMWE4N2VjNjczOWM1MWMzM2Vl
ODk2NjY2MGY3Li42ZWZiMmNiOWEzZmJhMWM0NTQ1ZWNmODIxOWQzMzA1MWQ2ODllZGQzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzM4Nyw2ICszMzg3
LDE1IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9z
dChXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1CiAgICAgcnVuVW50aWwoY29udGV4dC5kb25l
LCBub1RpbWVvdXQpOwogfQogCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NIYXNM
b2NhbFN0b3JhZ2UoV0tTdHJpbmdSZWYgaG9zdCkKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBX
S0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBSZXNv
dXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShkYXRhU3RvcmUsIGhvc3QsICZj
b250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NCb29sZWFuUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1
blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICByZXR1cm4gY29udGV4dC5yZXN1
bHQ7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChkb3VibGUgc2Vjb25kcykKIHsKICAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRX
ZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAppbmRleCAxODQ3MTcyZDgxN2IzYTJmYzY0NmViNzJiM2QyOTAyZjIy
ZWNlOTBhLi4yOTU5YTY5OTNiYzZjYjk2ZWRlMjBkZWYxZmE2NTRmMGQ0OWYxZDlmIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNDIsNiArMjQyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVN
b2RpZmllZFNpbmNlSG91cnModW5zaWduZWQpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwogICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tp
ZXNGb3JIb3N0KFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcyk7
CisgICAgYm9vbCBpc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoV0tTdHJpbmdSZWYgaG9zdE5h
bWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRz
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNjdhMTU1ZTIwYTk4ZmU4
YjcyMGQzNjczMWZjOTFmYjMxY2Q0Mzc5ZS4uYmIwMGM3ZTM4NjdmYmRiMDYwYmJlNjExNDZlOGI2
Mzc2ZjNhOTBlYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
QEAgLTE0MjcsNiArMTQyNywxNSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIklzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSIpKSB7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQo
KSk7CisgICAgICAgIAorICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIGJvb2wgaGFzTG9jYWxTdG9yYWdl
ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFn
ZShob3N0TmFtZSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0KEFkb3B0
V0ssIFdLQm9vbGVhbkNyZWF0ZShoYXNMb2NhbFN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCIpKSB7CiAgICAgICAgIEFTU0VS
VChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CiAgICAg
ICAgIFdLRG91YmxlUmVmIHNlY29uZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2Fn
ZUJvZHkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDc3ODdlOTA4NTAzYmY1ZTQ3MjRmZTdkODQyMzNlYTVkYmNmNzAyNDAu
LjJkOTY1MzdlYWJiMzQwNzQ2MjNjMTVjMTFmNGRmNWQyOGE2NzA5ZDUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0wMy0yNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IElQQyB0byB0aGUgV2Vic2l0ZURh
dGFTdG9yZSBpbiB0aGUgVUkgcHJvY2VzcyBmcm9tIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTM4NzQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgdGVzdCBub3cgY292ZXJzIExvY2FsU3RvcmFnZSB0b28uCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNp
dGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWw6CisKIDIw
MTktMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YmFzaWMgbGF5b3V0IHRlc3QgY292ZXJhZ2UgZm9yIEZpbGUgUGlja2VyIG9uIGlPUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNp
dGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGlu
ay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAyYWEyYmQ5YWNhMzIwZTUyOTQ3MDU3M2U3
MTNiNGRkOGIyZDlmNjdlLi5kMzZkZmM0OGI4YTIyZjlmYjRjMTVjMzNlMmNkNWZhMjdiMTE1YWJj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1k
ZWNvcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVk
LXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywxMyBAQCBD
aGVjayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGdldHMgcmVtb3ZlZCBhZnRlciBhIG5h
dmlnYXRpb24gd2l0aCBsaW5rIGRlYwogQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29r
aWUgZXhpc3RzLgogQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgogQmVm
b3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCi0KK0JlZm9y
ZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCiBCZWZvcmUgZGVsZXRp
b246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgogCiBBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29v
a2llIGV4aXN0cy4KIEFmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgog
QWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KLQorQWZ0
ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KIEFmdGVyIGRl
bGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1v
dmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1y
ZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sCmlu
ZGV4IGM5MTdhOTQ2ZDM2ZGRlZDE1NTY3ZTZhNzM2NjBjNTU3ZTc3NTlhYjguLjFkMDhhOTk2OTYy
Nzg0YTYxODE4YjEyMDg3MWI4YTc1ZGZkMTc5ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3It
c2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKQEAgLTkx
LDYgKzkxLDQ0IEBACiAgICAgICAgIH07CiAgICAgfQogCisgICAgY29uc3QgbWF4SW50ZXJ2YWxz
ID0gMjA7CisgICAgbGV0IGludGVydmFsQ291bnRlcjsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNv
bnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFs
dWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0
ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyID0gMDsKKyAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAo
IWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
TG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVyID09PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2Uu
Z2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2Nh
bFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXIgPT09IG1heEludGVydmFscykgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAg
ICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9y
YWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRv
ZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFB
bmRDb250aW51ZSgpIHsKICAgICAgICAgLy8gV3JpdGUgY29va2llcy4KICAgICAgICAgYXdhaXQg
ZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2ll
TmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4i
IH0pOwpAQCAtOTgsMjEgKzEzNiwzMSBAQAogICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGll
bnRTaWRlQ29va2llTmFtZSArICI9MSI7CiAKICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsK
LSAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKIAotICAgICAgICAvLyBXcml0ZSBJbmRl
eGVkREIuCi0gICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgcHJvY2Vzc1dlYnNpdGVEYXRhQW5k
Q29udGludWUpOworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxT
dG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAg
ICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9y
ZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMo
ZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091
dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewog
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCk7CisgICAgICAgIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgIH0KIAot
ICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0
ZURhdGFBbmRDb250aW51ZSgpIHsKICAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOwotICAgICAg
ICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOwotICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0
cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1
ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1
ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366088</attachid>
            <date>2019-03-27 12:05:04 -0700</date>
            <delta_ts>2019-03-27 12:19:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196281-20190327120504.patch</filename>
            <type>text/plain</type>
            <size>47480</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyODIwMmI5ZTRlODQ2ZDBm
NmZhZDUyNWFiNGJlNGMzNDdjYTI0ZGYuLmZkODM0MWExYWJiYzJmMzAyMzNlMjRmY2Q3NDVlNTJi
ZGQ2NjljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMjcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4gdGhlIFVJIHByb2Nlc3MgZnJv
bSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjgx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW92ZSBvZiBSZXNvdXJjZSBMb2FkIFN0
YXRpc3RpY3MgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyByZXF1aXJlcyB0aGF0IGl0CisgICAgICAg
IGNhbGxzIHRoZSBVSSBwcm9jZXNzIHdoZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIChwcmV2aW91
c2x5IHRoZSBvdGhlciB3YXkKKyAgICAgICAgYXJvdW5kKS4gVGhpcyBwYXRjaCBhY2hpZXZlcyB0
aGF0LgorCisgICAgICAgIFNwZWNpZmljYWxseSwgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkgbm93CisgICAgICAgIGZpbHRlcnMgaXRzIFdl
YnNpdGVEYXRhVHlwZXMgZG93biB0byBqdXN0IHRoZSBvbmVzIGFwcGxpY2FibGUgZm9yIHRoZSBV
SQorICAgICAgICBwcm9jZXNzIGFuZCB0aGVuIGNhbGxzIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMgb3ZlcgorICAgICAgICBJUEMuCisKKyAgICAgICAg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucygpIG9uCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIHNpZGUgbWFrZXMgdXNl
IG9mIHRoZSByZS1pbnRyb2R1Y2VkCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVsZXZhbnQKKyAg
ICAgICAgZGF0YSByZWNvcmRzIGFuZCBjYWxsIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
KS4gVGhlIHJlLWludHJvZHVjZWQKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKCkgd2FzIHJlbW92ZWQgYXMgZGVhZCBjb2RlIGluCisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDIwNTYvd2Via2l0LCB0aGVu
IHVuZGVyIHRoZSBuYW1lCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKCkuIFRoZSByZWFzb24gaXQKKyAgICAgICAgd2Fz
IGRlYWQgY29kZSB3YXMgdGhlIGxhY2sgb2YgSVBDIGNhbGwgdGhhdCB0aGlzIHBhdGNoIGFkZHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyk6CisgICAgICAgICAgIE5vdyBjYWxscyBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW5zIG92ZXIgSVBDIGlmIHRoZXJlCisgICAgICAgICAgIGFy
ZSBXZWJzaXRlRGF0YVR5cGVzIGFwcGxpY2FibGUgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6
b3duZXJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OmZpbHRlcik6Cisg
ICAgICAgICAgICBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gbWFuYWdlIHByb2Nlc3Mgb3duZXJz
aGlwIG9mIHdlYnNpdGUgZGF0YSB0eXBlcy4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2Nh
bFN0b3JhZ2UpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZSwgY2FsbGVkIGJ5IHRo
ZSBUZXN0UnVubmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0
ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgICAgICBOZXcg
ZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICAgICBO
b3cgbWF0Y2hlcyB3aXRoIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGluc3RlYWQgb2YgYSBz
dHJpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZXBs
YWNlZCBieSBXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcygpLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgICAg
IFJlLWludHJvZHVjZWQuIEl0IHdhcyByZW1vdmVkIGFzIGRlYWQgY29kZSBpbiByMjQyMDU2Lgor
ICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJl
bW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3Jh
Z2VGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUsIGNh
bGxlZCBieSB0aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBUaGUgbmV0d29yayBwcm9jZXNzIGlzIG5vdCBl
eGl0aW5nIHJlbGlhYmx5IHdoZW4gdGhlIFdlYlByb2Nlc3NQb29sIGlzIGRlc3Ryb3llZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3
M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAzYWM1YTlmNGEyLi42NjRmYTU3N2E0NTk5ZDI2
ZDc0NDQ1M2U0ZjA5NDYyZGMwY2U3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIldl
YlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKQEAgLTE1MjUsMjMgKzE1MjQsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICAgICAgCiAgICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0ZURh
dGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdG5hbWVX
aXRoQ29va2llcyA6IHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKQotICAgICAgICAg
ICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoaG9zdG5hbWVXaXRoQ29va2llcykpOwotCi0gICAgICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBob3N0bmFtZVdpdGhIU1RTIDogd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3RuYW1lV2l0aEhTVFMpKTsKLQotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0YS5lbnRyaWVzKQot
ICAgICAgICAgICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKTsKLQorICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbnMgPSBXVEZNb3ZlKG1fZG9tYWlucyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRvbWFpbnMpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKLSAgICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKKyAgICAgICAgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zOwogICAgIH07CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZigqbmV3IENhbGxiYWNrQWdncmVnYXRvcihbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2hvdWxkTm90
aWZ5UGFnZV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERh
dGEpIG11dGFibGUgewpAQCAtMTU1Myw3ICsxNTQyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgfSk7CiAgICAgfSkpOwogCi0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBIYXNoU2V0PFN0cmluZz4g
aG9zdE5hbWVzV2l0aENvb2tpZXM7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGU7CiAKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0
ZUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxl
dGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3I7CkBAIC0xNTc1LDEzICsxNTY1LDE5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3ROYW1l
c1dpdGhDb29raWVzKTsKIAotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
ZG9tYWluc1RvRGVsZXRlQ29va2llc0ZvciwgaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tp
ZXM6Olllcyk7CiAKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBm
aWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlD
b29raWVzRm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxl
dGUpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKKyAgICAg
ICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLCBob3N0TmFt
ZXNXaXRoQ29va2llcyk7CiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29y
ZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8pOworCisgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkKQEAgLTE1OTIsOCAr
MTU4OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAgICAgICAg
Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUg
PSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2ll
c0ZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKICAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MDEsOSArMTYwMSwxMCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaQogCiAgICAgLyoKICAgICAvLyBGSVhNRTogTm8gQVBJIHRvIGRlbGV0
ZSBjcmVkZW50aWFscyBieSBvcmlnaW4KKyAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhD
cmVkZW50aWFsczsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzKSkgewogICAgICAgICBpZiAoc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUub3JpZ2luc1dpdGhDcmVkZW50aWFs
cyA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2lu
c1dpdGhDcmVkZW50aWFscygpOworICAgICAgICAgICAgb3JpZ2luc1dpdGhDcmVkZW50aWFscyA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dp
dGhDcmVkZW50aWFscygpOwogICAgIH0KICAgICAqLwogICAgIApAQCAtMTYxMiw4ICsxNjEzLDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIAogICAgICAgICAgICAgYXV0
byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1Rv
RGVsZXRlQWxsQnV0Q29va2llc0ZvciwgZW50cmllcyk7CiAKLSAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzVG9E
ZWxldGUpOwotICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogZW50cmllc1RvRGVsZXRlKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
ZW50cnkub3JpZ2luLmhvc3QpKTsKKwogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
ZW50cnkub3JpZ2luIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKQEAgLTE2MjcsMTEgKzE2MjksMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMg
PSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRh
aW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9y
aWdpbi5ob3N0KSkpCisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9tYWluID0gUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoZG9tYWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoc2VjdXJpdHlPcmlnaW4p
OwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV9kb21haW5zLmFkZChkb21haW4pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlkYlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwpAQCAtMTY0Nyw3ICsxNjUwLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2kKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1
cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
SG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSk7CiAgICAgICAgICAgICAgICAgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCkuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKQEAgLTE2NjIsMTEgKzE2NjUsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5
Lm9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnkub3JpZ2luKTsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoZW50
cnkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhv
c3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhj
YWNoZSgpLCBlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAgICBhdXRv
IGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFU
eXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOworICAgIGlmICghZGF0YVR5cGVzRm9y
VUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWlu
IDogZG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cy5hZGQoZG9tYWluKTsKKyAgICAgICAgfTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
ZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25J
RCwgZGF0YVR5cGVzRm9yVUlQcm9jZXNzLCBmZXRjaE9wdGlvbnMsIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNTI5Zjg3OTIyMGY2ZTUxYTM0MGVlNGI3NjNhMjAyMzFhNzQ2N2VlYS4uZDg1MzAxYzhhYjVk
NTY1ZGRhMzQxMmQyMjlmN2IxZjdjMjNlZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCAwMTI0NTE5YmU5NWVjZWJhYTcwY2Q3NTQzMDQw
MzM5MGQ3YTFkYzA5Li4yMTUzYjVkYWQxODQ2OWUxOTE4ZGRlZWVmMjk0ZWM1NTQyYWRmMTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKQEAgLTg2LDQgKzg3LDU5IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1dlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vz
cyhXZWJzaXRlRGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgewor
ICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsK
KyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGU6CisgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGU6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nl
c3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2U6Cisg
ICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9j
ZXNzVHlwZTo6VUk7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlczoK
KyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJOworICAgIGNhc2UgV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM6CisgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpNZWRp
YUtleXM6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBj
YXNlIFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6U2VhcmNo
RmllbGRSZWNlbnRTZWFyY2hlczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIGNhc2UgV2Vic2l0
ZURhdGFUeXBlOjpQbHVnSW5EYXRhOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNz
VHlwZTo6VUk7CisjZW5kaWYKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdv
cms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzOgorICAgICAgICByZXR1
cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNl
bmRpZgorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZToKKyAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5
cGU6OkRldmljZUlkSGFzaFNhbHQ6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NU
eXBlOjpVSTsKKyAgICB9Cit9CisKK09wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IFdlYnNpdGVE
YXRhOjpmaWx0ZXIoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdW5maWx0ZXJlZFdlYnNpdGVE
YXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSkK
K3sKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmaWx0ZXJlZDsKKyAgICBmb3IgKGF1
dG8gZGF0YVR5cGUgOiB1bmZpbHRlcmVkV2Vic2l0ZURhdGFUeXBlcykgeworICAgICAgICBpZiAo
b3duZXJQcm9jZXNzKGRhdGFUeXBlKSA9PSBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKQorICAgICAg
ICAgICAgZmlsdGVyZWQuYWRkKGRhdGFUeXBlKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZp
bHRlcmVkOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGEuaAppbmRleCBiNjA4ZjRmMmE0MGEwZTQ2ODliMGMzZmM4MzNhNDRlNDI4ZjRiZjAx
Li43NTFjNmIzNDlmNTFkZGNhNmFmNWM0OGNkOWIwMTJkNjQ4NTIyM2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKQEAgLTM5LDYgKzM5LDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogCitl
bnVtIGNsYXNzIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgeyBOZXR3b3JrLCBVSSB9OworCiBzdHJ1
Y3QgV2Vic2l0ZURhdGEgewogICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAgIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CkBAIC02Miw2ICs2NCw4IEBAIHN0cnVjdCBXZWJzaXRl
RGF0YSB7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGEmKTsKKyAgICBzdGF0aWMg
V2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBvd25lclByb2Nlc3MoV2Vic2l0ZURhdGFUeXBlKTsKKyAg
ICBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmlsdGVyKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCmluZGV4IDkwMjg1YjM5ZGM1Njc0N2ZiZmUzMjY4ZGM2ZDM2OGZhZjIxNDM1OGQuLmI1ZDhl
MmE5MzE5Y2NhMDAwOGI4ZTk2Y2VmYTU2NjRhMTg1ZDgzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAt
NDQ5LDYgKzQ0OSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVD
b29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZAogI2VuZGlmCiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2Fs
bGJhY2spCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9y
YWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgY2Fs
bGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY2Fs
bGJhY2soZmFsc2UsIGNvbnRleHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBlNmEyYTAwN2Yw
MTJmNDI4NjgyOGJhYWUyNTI3OWY5NWE5ZjU1N2RhLi40NzljYWQ0NjMxZmNlOWI0M2E0ZWU4Mzgx
MWFmY2UxZTEyMjY0Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtOTksNiArOTksOCBAQCB0eXBlZGVmIHZv
aWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFS
ZW1vdmFsRnVuY3RpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xl
YXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
RGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQg
KCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24pKGJv
b2wgaGFzTG9jYWxTdG9yYWdlLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2Fs
bGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nh
Y2hlTWF4QWdlQ2FwRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9u
KTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCAwYjkxZTM5MWUzOTgzZDQxZWI1MjI2NDE2MzRiZGJhNGY5NmE1ZTFhLi5jMTYzMWY5
NzExNTlkMzAyOGRlOWYyOTE5MzlmOTI3Mjc1MWRiNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTk5
MSw2ICs5OTEsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICAKICAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVDb29raWVzRm9yVGVz
dGluZyhzZXNzaW9uSUQsIGRvbWFpbiwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxl
dGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNl
c3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlIHx8IGRhdGFUeXBlcy5pc0VtcHR5
KCkgfHwgZG9tYWlucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYnNpdGVEYXRhU3RvcmUtPmZldGNo
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgZG9tYWlu
cywgW2RhdGFUeXBlcywgd2Vic2l0ZURhdGFTdG9yZSA9IG1ha2VSZWYoKndlYnNpdGVEYXRhU3Rv
cmUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVj
dG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmIG1hdGNoaW5nRGF0YVJlY29yZHMsIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRz
KSBtdXRhYmxlIHsKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShkYXRhVHlw
ZXMsIFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIFtkb21haW5zV2l0aE1hdGNoaW5nRGF0
YVJlY29yZHMgPSBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zV2l0aE1hdGNoaW5n
RGF0YVJlY29yZHMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKICNlbmRpZiAvLyBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzcyMzU2
Yjg2ODJjMjk5MzM5NTBkNzVhMGJmMzFiODg3ZDIxMzUwYy4uNWVmNTExMTdkMjljODE1OWNlZDQ0
NzU2MWQ1ZDgyNjlhNGYwODFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE0OSw2ICsxNDksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmln
YXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJl
c2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2ll
c0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9v
bCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTYzODg5YmQ4ZjY4ZjE3YzQ2NTJlYTQ5YjgxNmZj
MzM2NzdkYmFhZS4uMTZlNWYzMDVmYjBlYzQyYzllNzMwODdlZTQ1ZGVlYzVkMmRhMjhmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDgsNiArNDgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBOb3RpZnlXZWJzaXRl
RGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKQogICAgIFJl
cXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNj
ZXNzKSBBc3luYworICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAppbmRl
eCA1NmQ0MGM3Y2IyNWRlMDliMjAzNDBhZDgzZDNjODIwZTBlMWY0M2E3Li42NjU2YTQ3NjhmNDk5
YzBlNGRlMmRlNjAzMTQ4M2E1MmRkNmM4MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFi
bGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKQEAgLTExMywyMCArMTE0LDIwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBo
b3N0SXNJbkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1ZpZXcgZG9tYWluKQogICAgIHJl
dHVybiAhc3VmZml4T2Zmc2V0IHx8IGhvc3Rbc3VmZml4T2Zmc2V0IC0gMV0gPT0gJy4nOwogfQog
Ci1ib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbihjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pIGNvbnN0Citi
b29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4uaXNF
bXB0eSgpKQorICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3ROYW1lIDogY29va2llSG9zdE5hbWVzKSB7Ci0g
ICAgICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4oaG9zdE5hbWUsIHRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW4pKQorICAgICAgICAgICAgaWYgKGhvc3RJc0luRG9tYWluKGhvc3ROYW1lLCBk
b21haW4uc3RyaW5nKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkT3JpZ2luRGF0YSA6IG9y
aWdpbnMpIHsKLSAgICAgICAgaWYgKGhvc3RJc0luRG9tYWluKGRhdGFSZWNvcmRPcmlnaW5EYXRh
Lmhvc3QsIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pKQorICAgICAgICBpZiAoaG9zdElz
SW5Eb21haW4oZGF0YVJlY29yZE9yaWdpbkRhdGEuaG9zdCwgZG9tYWluLnN0cmluZygpKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKaW5kZXggY2NmMzBh
NzlhYmQwNTgyZWEwMDgxYmEzZGZmMzAyYmM3ZTgzYjRjMi4uM2RmZjQwMTZjNDQ0ZjI4YWNkNmNl
OGFlNzI5ODgxNTM1MDNkYTg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKQEAgLTcy
LDcgKzczLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICAgICBIYXNoU2V0PFN0cmlu
Zz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKICAgICBIYXNoU2V0PFN0cmluZz4gSFNUU0NhY2hl
SG9zdE5hbWVzOwogCi0gICAgYm9vbCBtYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbigpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NzhkNjdkMTJjNzViMWFi
ZmMxMTQ0ODRjYWQzZjM3N2QyMzU5NWMzLi4xYWZmNzNjNjhjYTI4ZmUxMDMyNDkxMjI1YTU3MGQ5
Yjg2NGJiZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNjIzLDM3ICs2MjMsNDQgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIE8KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgp
OwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+
IGZldGNoT3B0aW9ucywgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiYsIEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGZl
dGNoRGF0YUFuZEFwcGx5KGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zLCBtX3F1ZXVlLmNvcHlSZWYo
KSwgW2RvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgZXhpc3RpbmdEYXRhUmVjb3Jk
cykgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiBtYXRjaGluZ0RhdGFSZWNvcmRz
OworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5n
RGF0YVJlY29yZHM7CisgICAgICAgIGZvciAoYXV0byYmIGRhdGFSZWNvcmQgOiBleGlzdGluZ0Rh
dGFSZWNvcmRzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZGF0YVJlY29yZC5tYXRjaGVzKGRvbWFpbikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hpbmdEYXRhUmVjb3Jkcy5hcHBlbmQoV1RGTW92ZShkYXRhUmVj
b3JkKSk7CisgICAgICAgICAgICAgICAgICAgIGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3Jk
cy5hZGQoZG9tYWluLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUobWF0Y2hpbmdEYXRh
UmVjb3JkcyksIGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUoZG9tYWlu
c1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1hdGNoaW5nRGF0YVJlY29yZHMpLCBXVEZNb3ZlKGRvbWFp
bnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKyNl
bmRpZgorCiBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNj
ZXNzVHlwZUZvckRhdGFSZW1vdmFsKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgYm9vbCBpc05vblBlcnNpc3RlbnRTdG9yZSkKIHsKICAgICBQcm9jZXNzQWNjZXNzVHlwZSBw
cm9jZXNzQWNjZXNzVHlwZSA9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lOwogCi0gICAgaWYgKGRh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7Ci0gICAgICAgIGlm
IChpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0g
c3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVu
Y2hlZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3Rk
OjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOworICAg
IGZvciAoYXV0byBkYXRhVHlwZSA6IGRhdGFUeXBlcykgeworICAgICAgICBpZiAoZGF0YVR5cGUg
PT0gV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSB7CisgICAgICAgICAgICBpZiAoaXNOb25QZXJz
aXN0ZW50U3RvcmUpCisgICAgICAgICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1h
eChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0
ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKGRhdGFUeXBlKSA9PSBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrKQorICAgICAgICAgICAgcmV0dXJuIFByb2Nl
c3NBY2Nlc3NUeXBlOjpMYXVuY2g7CiAgICAgfQotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkgJiYgIWlzTm9uUGVyc2lzdGVudFN0b3JlKQot
ICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQ
cm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKLQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQotICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9
IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsK
LQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFs
cykpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5
cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKLSAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5
cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5j
aCk7Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiAhaXNOb25QZXJzaXN0ZW50U3RvcmUpCi0gICAgICAgIHByb2Nlc3NB
Y2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBl
OjpMYXVuY2gpOwogICAgIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMpICYmICFpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUg
PSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7
Ci0jZW5kaWYKLQogICAgIHJldHVybiBwcm9jZXNzQWNjZXNzVHlwZTsKIH0KIApAQCAtMTc5NSw2
ICsxODAyLDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlQ29va2llc0ZvclRlc3Rp
bmcoY29uc3QgVVJMJiB1cmwsIGJvb2wgaW5jbHVkZUh0dHBPCiAgICAgICAgICAgICBuZXR3b3Jr
UHJvY2Vzcy0+ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0K
IH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKGNv
bnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9zdG9yYWdlTWFuYWdlcikgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X3N0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFt1cmwsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhhc2hTZXQ8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYmIG9yaWdpbnMpIG11dGFibGUgeworICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGlmIChvcmlnaW4uaG9zdCA9PSB1cmwu
aG9zdCgpKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0pOworfQogI2VuZGlmIC8vIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
MjUzOWZmOTcxMGRmM2Y2OGFlNjc1N2I1Mjc2OGEzODMyMTViZGI2Yy4uMGM2ZjM5NmM4YWQwMTQ4
Y2M0ZmZlMzE5N2NjMDk0NzlkNjYzNWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjEsNiArNjEsNyBA
QCBjbGFzcyBIVFRQQ29va2llU3RvcmU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKQEAgLTEyNSw2
ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgdm9pZCBmZXRjaERhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmLCBIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNl
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVh
clVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNzEsNiArMTczLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoY29uc3Qg
VVJMJiBmcm9tVVJMLCBjb25zdCBVUkwmIHRvVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tp
ZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0xvY2FsU3RvcmFnZUZvclRl
c3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7
CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggOTlkYmU1NGRjNWM0NTJmMTUxOTMyMGRlMmY0ZDliNzgyOGVlZDY0Ny4uOGQwNjZmNmZiODYy
ZDA1NzliMDRkMTk1NTQzZGRlYTNjMGI3NzcxNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAzLTI3ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogSVBDIHRvIHRoZSBXZWJzaXRlRGF0YVN0b3JlIGluIHRoZSBVSSBwcm9jZXNz
IGZyb20gTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjI4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5Mzg3NDg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBmdW5j
dGlvbiBpc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoKSB0byB0aGUKKyAgICAgICAgVGVzdFJ1
bm5lci4gV2l0aCBpdCwgdGhlIHBhZ2UgY2FuIHF1ZXJ5IHRoZSBXZWJzaXRlRGF0YVN0b3JlIGlu
IHRoZQorICAgICAgICBVSSBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IHNlZXMgTG9jYWxT
dG9yYWdlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjppc1N0YXRp
c3RpY3NIYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNz
SGFzTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wMy0yNiAgS2VpdGggUm9sbGluICA8a3JvbGxp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRoZSB3YXkgZ2VuZXJhdGUteGNmaWxlbGlz
dHMgcmV0dXJucyBzdHJpbmdzIGZyb20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAppbmRleCA0ODFjZWViODI5YTRhOWQxZjAwN2JiMjU0NmEwMTRiNmY5NzZiNTc2Li4wODdkYTg0
NjUyNTdmYmU2OWQzNThiZjU3NzBlZjcyMzJjNjk1NWIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKQEAgLTMyMSw2ICszMjEsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VI
b3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3Rh
dGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChvYmplY3QgY2FsbGJhY2spOwog
ICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KERPTVN0cmluZyBob3N0TmFt
ZSwgYm9vbGVhbiBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKKyAgICBib29sZWFuIGlzU3RhdGlz
dGljc0hhc0xvY2FsU3RvcmFnZShET01TdHJpbmcgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IDI2ZjI1NzViZDI1NzMzNjhlMmNkODYzNTY1OWIzNWU2YTJhMWRiMGYuLjg2NDFh
MDZiNTVjN2Q3NWVlOTUxNDdlOGE5NjExMDM5ZmQzOTg2YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA3MCw2
ICsyMDcwLDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JI
b3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIGluY2x1CiAgICAgV0tCdW5kbGVQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAorYm9vbCBU
ZXN0UnVubmVyOjppc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoSlNTdHJpbmdSZWYgaG9zdE5h
bWUpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1lKSk7CisgICAgV0tUeXBlUmVmIHJl
dHVybkRhdGEgPSBudWxscHRyOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCAmcmV0dXJuRGF0YSk7CisgICAg
QVNTRVJUKFdLR2V0VHlwZUlEKHJldHVybkRhdGEpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsK
KyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxXS0Jvb2xl
YW5SZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQogewogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwIikpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAzYmYzZDFh
OGY1MTc3ZTU4MWFlZjg4YjQyNDFhYTk5ZGQwMGZjMTA4Li43YTM1NWE4OGJjOTc0YzMxYzFkNjA3
ZDVlZWYwNDdlZTE2YTUyNzYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDMxLDYgKzQzMSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoSlNT
dHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzQ2FsbENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrKCk7
CisgICAgYm9vbCBpc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoSlNTdHJpbmdSZWYgaG9zdE5h
bWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRz
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYg
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29u
c2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggZTNkYjY1OTJhZmI4ZTFhODdlYzY3MzljNTFjMzNlZTg5NjY2NjBmNy4u
NmVmYjJjYjlhM2ZiYTFjNDU0NWVjZjgyMTlkMzMwNTFkNjg5ZWRkMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMzODcsNiArMzM4NywxNSBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoV0tTdHJpbmdS
ZWYgaG9zdCwgYm9vbCBpbmNsdQogICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0
KTsKIH0KIAorYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
KFdLU3RyaW5nUmVmIGhvc3QpCit7CisgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0
V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgUmVzb3VyY2VTdGF0aXN0
aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoZGF0YVN0b3JlLCBob3N0LCAmY29udGV4dCwgcmVz
b3VyY2VTdGF0aXN0aWNzQm9vbGVhblJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250
ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgcmV0dXJuIGNvbnRleHQucmVzdWx0OworfQorCiB2
b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNl
Y29uZHMpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFT
dG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKaW5kZXggMTg0NzE3MmQ4MTdiM2EyZmM2NDZlYjcyYjNkMjkwMmYyMmVjZTkwYS4uMjk1
OWE2OTkzYmM2Y2I5NmVkZTIwZGVmMWZhNjU0ZjBkNDlmMWQ5ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjQyLDYgKzI0Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5j
ZUhvdXJzKHVuc2lnbmVkKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWwoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdChX
S1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOworICAgIGJvb2wg
aXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDY3YTE1NWUyMGE5OGZlOGI3MjBkMzY3MzFm
YzkxZmIzMWNkNDM3OWUuLmJiMDBjN2UzODY3ZmJkYjA2MGJiZTYxMTQ2ZThiNjM3NmYzYTkwZWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNDI3LDYg
KzE0MjcsMTUgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJJc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UiKSkgeworICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAg
ICAKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4obWVzc2FnZUJvZHkpOworICAgICAgICBib29sIGhhc0xvY2FsU3RvcmFnZSA9IFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoaG9zdE5hbWUp
OworICAgICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdChBZG9wdFdLLCBXS0Jvb2xl
YW5DcmVhdGUoaGFzTG9jYWxTdG9yYWdlKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RvdWJs
ZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA3Nzg3ZTkwODUwM2JmNWU0NzI0ZmU3ZDg0MjMzZWE1ZGJjZjcwMjQwLi4xN2NkODBiNzQy
MjYwMTI3YmQyYjY0OGYwOTFmYWU4NDQyYmFjYTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTktMDMtMjcgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4g
dGhlIFVJIHByb2Nlc3MgZnJvbSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2MjgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHRlc3Qg
bm93IGNvdmVycyBMb2NhbFN0b3JhZ2UgdG9vLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRl
ZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRl
LW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sOgorCiAyMDE5LTAzLTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIGxheW91
dCB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlIFBpY2tlciBvbiBpT1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVt
b3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNp
dGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlv
bi1leHBlY3RlZC50eHQKaW5kZXggMmFhMmJkOWFjYTMyMGU1Mjk0NzA1NzNlNzEzYjRkZDhiMmQ5
ZjY3ZS4uZDM2ZGZjNDhiOGEyMmY5ZmI0YzE1YzMzZTJjZDVmYTI3YjExNWFiYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUt
ZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxp
bmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQKQEAgLTMsMTMgKzMsMTMgQEAgQ2hlY2sgdGhhdCBu
b24tY29va2llIHdlYnNpdGUgZGF0YSBnZXRzIHJlbW92ZWQgYWZ0ZXIgYSBuYXZpZ2F0aW9uIHdp
dGggbGluayBkZWMKIEJlZm9yZSBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4K
IEJlZm9yZSBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KIEJlZm9yZSBkZWxldGlv
bjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgotCitCZWZvcmUgZGVsZXRpb246
IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgogQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50
cnkgZG9lcyBleGlzdC4KIAogQWZ0ZXIgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMu
CiBBZnRlciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KIEFmdGVyIGRlbGV0
aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCi0KK0FmdGVyIGRlbGV0aW9u
OiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBub3QgZXhpc3QuCiBBZnRlciBkZWxldGlvbjogSURC
IGVudHJ5IGRvZXMgbm90IGV4aXN0LgogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0
ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3It
c2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbAppbmRleCBjOTE3YTk0
NmQzNmRkZWQxNTU2N2U2YTczNjYwYzU1N2U3NzU5YWI4Li4xZDA4YTk5Njk2Mjc4NGE2MTgxOGIx
MjA4NzFiOGE3NWRmZDE3OWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdh
dGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRl
LW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sCkBAIC05MSw2ICs5MSw0NCBA
QAogICAgICAgICB9OwogICAgIH0KIAorICAgIGNvbnN0IG1heEludGVydmFscyA9IDIwOworICAg
IGxldCBpbnRlcnZhbENvdW50ZXI7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7
CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0
b3JhZ2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVl
IjsKKyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24s
IGNhbGxiYWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlciA9IDA7CisgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVs
ZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3RvcmFn
ZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFs
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlciA9PT0g
bWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tM
b2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoZGVzdGluYXRpb25PcmlnaW4pKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9j
YWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRl
bGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFs
dWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAg
ICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sg
dW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyID09PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uo
ZGVzdGluYXRpb25PcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZh
bHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAi
ICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsg
IiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFj
aygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUo
KSB7CiAgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCiAgICAgICAgIGF3YWl0IGZldGNoKCIvY29v
a2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0
dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKQEAgLTk4
LDIxICsxMzYsMzEgQEAKICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tp
ZU5hbWUgKyAiPTEiOwogCiAgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7Ci0gICAgICAgIGFk
ZExpbmVicmVha1RvT3V0cHV0KCk7CiAKLSAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgotICAg
ICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgY2hlY2tJ
REJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsK
KyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJ
dGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBX
cml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKICAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAg
ICAgICBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICB9CiAKLSAgICAgICAgYWRk
TGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29u
dGludWUoKSB7CiAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKLSAgICAgICAgYWRkTGluZWJy
ZWFrVG9PdXRwdXQoKTsKLSAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmlu
aXNoVGVzdCk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRl
c3QpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366091</attachid>
            <date>2019-03-27 12:19:40 -0700</date>
            <delta_ts>2019-03-27 16:12:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196281-20190327121939.patch</filename>
            <type>text/plain</type>
            <size>47434</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyODIwMmI5ZTRlODQ2ZDBm
NmZhZDUyNWFiNGJlNGMzNDdjYTI0ZGYuLmZkODM0MWExYWJiYzJmMzAyMzNlMjRmY2Q3NDVlNTJi
ZGQ2NjljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMjcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4gdGhlIFVJIHByb2Nlc3MgZnJv
bSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjgx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW92ZSBvZiBSZXNvdXJjZSBMb2FkIFN0
YXRpc3RpY3MgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyByZXF1aXJlcyB0aGF0IGl0CisgICAgICAg
IGNhbGxzIHRoZSBVSSBwcm9jZXNzIHdoZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIChwcmV2aW91
c2x5IHRoZSBvdGhlciB3YXkKKyAgICAgICAgYXJvdW5kKS4gVGhpcyBwYXRjaCBhY2hpZXZlcyB0
aGF0LgorCisgICAgICAgIFNwZWNpZmljYWxseSwgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkgbm93CisgICAgICAgIGZpbHRlcnMgaXRzIFdl
YnNpdGVEYXRhVHlwZXMgZG93biB0byBqdXN0IHRoZSBvbmVzIGFwcGxpY2FibGUgZm9yIHRoZSBV
SQorICAgICAgICBwcm9jZXNzIGFuZCB0aGVuIGNhbGxzIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMgb3ZlcgorICAgICAgICBJUEMuCisKKyAgICAgICAg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucygpIG9uCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIHNpZGUgbWFrZXMgdXNl
IG9mIHRoZSByZS1pbnRyb2R1Y2VkCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVsZXZhbnQKKyAg
ICAgICAgZGF0YSByZWNvcmRzIGFuZCBjYWxsIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
KS4gVGhlIHJlLWludHJvZHVjZWQKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKCkgd2FzIHJlbW92ZWQgYXMgZGVhZCBjb2RlIGluCisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDIwNTYvd2Via2l0LCB0aGVu
IHVuZGVyIHRoZSBuYW1lCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKCkuIFRoZSByZWFzb24gaXQKKyAgICAgICAgd2Fz
IGRlYWQgY29kZSB3YXMgdGhlIGxhY2sgb2YgSVBDIGNhbGwgdGhhdCB0aGlzIHBhdGNoIGFkZHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyk6CisgICAgICAgICAgIE5vdyBjYWxscyBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW5zIG92ZXIgSVBDIGlmIHRoZXJlCisgICAgICAgICAgIGFy
ZSBXZWJzaXRlRGF0YVR5cGVzIGFwcGxpY2FibGUgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6
b3duZXJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OmZpbHRlcik6Cisg
ICAgICAgICAgICBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gbWFuYWdlIHByb2Nlc3Mgb3duZXJz
aGlwIG9mIHdlYnNpdGUgZGF0YSB0eXBlcy4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2Nh
bFN0b3JhZ2UpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZSwgY2FsbGVkIGJ5IHRo
ZSBUZXN0UnVubmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0
ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgICAgICBOZXcg
ZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICAgICBO
b3cgbWF0Y2hlcyB3aXRoIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGluc3RlYWQgb2YgYSBz
dHJpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZXBs
YWNlZCBieSBXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcygpLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgICAg
IFJlLWludHJvZHVjZWQuIEl0IHdhcyByZW1vdmVkIGFzIGRlYWQgY29kZSBpbiByMjQyMDU2Lgor
ICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJl
bW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3Jh
Z2VGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUsIGNh
bGxlZCBieSB0aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBUaGUgbmV0d29yayBwcm9jZXNzIGlzIG5vdCBl
eGl0aW5nIHJlbGlhYmx5IHdoZW4gdGhlIFdlYlByb2Nlc3NQb29sIGlzIGRlc3Ryb3llZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3
M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAzYWM1YTlmNGEyLi42NjRmYTU3N2E0NTk5ZDI2
ZDc0NDQ1M2U0ZjA5NDYyZGMwY2U3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIldl
YlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKQEAgLTE1MjUsMjMgKzE1MjQsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICAgICAgCiAgICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0ZURh
dGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdG5hbWVX
aXRoQ29va2llcyA6IHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKQotICAgICAgICAg
ICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoaG9zdG5hbWVXaXRoQ29va2llcykpOwotCi0gICAgICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBob3N0bmFtZVdpdGhIU1RTIDogd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3RuYW1lV2l0aEhTVFMpKTsKLQotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0YS5lbnRyaWVzKQot
ICAgICAgICAgICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKTsKLQorICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbnMgPSBXVEZNb3ZlKG1fZG9tYWlucyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRvbWFpbnMpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKLSAgICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKKyAgICAgICAgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zOwogICAgIH07CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZigqbmV3IENhbGxiYWNrQWdncmVnYXRvcihbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2hvdWxkTm90
aWZ5UGFnZV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERh
dGEpIG11dGFibGUgewpAQCAtMTU1Myw3ICsxNTQyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgfSk7CiAgICAgfSkpOwogCi0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBIYXNoU2V0PFN0cmluZz4g
aG9zdE5hbWVzV2l0aENvb2tpZXM7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGU7CiAKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0
ZUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxl
dGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3I7CkBAIC0xNTc1LDEzICsxNTY1LDE5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3ROYW1l
c1dpdGhDb29raWVzKTsKIAotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
ZG9tYWluc1RvRGVsZXRlQ29va2llc0ZvciwgaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tp
ZXM6Olllcyk7CiAKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBm
aWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlD
b29raWVzRm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxl
dGUpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKKyAgICAg
ICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLCBob3N0TmFt
ZXNXaXRoQ29va2llcyk7CiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29y
ZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8pOworCisgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkKQEAgLTE1OTIsOCAr
MTU4OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAgICAgICAg
Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUg
PSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2ll
c0ZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKICAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MDEsOSArMTYwMSwxMCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaQogCiAgICAgLyoKICAgICAvLyBGSVhNRTogTm8gQVBJIHRvIGRlbGV0
ZSBjcmVkZW50aWFscyBieSBvcmlnaW4KKyAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhD
cmVkZW50aWFsczsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzKSkgewogICAgICAgICBpZiAoc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUub3JpZ2luc1dpdGhDcmVkZW50aWFs
cyA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2lu
c1dpdGhDcmVkZW50aWFscygpOworICAgICAgICAgICAgb3JpZ2luc1dpdGhDcmVkZW50aWFscyA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dp
dGhDcmVkZW50aWFscygpOwogICAgIH0KICAgICAqLwogICAgIApAQCAtMTYxMiw4ICsxNjEzLDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIAogICAgICAgICAgICAgYXV0
byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1Rv
RGVsZXRlQWxsQnV0Q29va2llc0ZvciwgZW50cmllcyk7CiAKLSAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzVG9E
ZWxldGUpOwotICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogZW50cmllc1RvRGVsZXRlKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
ZW50cnkub3JpZ2luLmhvc3QpKTsKKwogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
ZW50cnkub3JpZ2luIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKQEAgLTE2MjcsMTEgKzE2MjksMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMg
PSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRh
aW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9y
aWdpbi5ob3N0KSkpCisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9tYWluID0gUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoZG9tYWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoc2VjdXJpdHlPcmlnaW4p
OwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV9kb21haW5zLmFkZChkb21haW4pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlkYlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwpAQCAtMTY0Nyw3ICsxNjUwLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2kKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1
cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
SG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSk7CiAgICAgICAgICAgICAgICAgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCkuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKQEAgLTE2NjIsMTEgKzE2NjUsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5
Lm9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnkub3JpZ2luKTsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoZW50
cnkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhv
c3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhj
YWNoZSgpLCBlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAgICBhdXRv
IGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFU
eXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOworICAgIGlmICghZGF0YVR5cGVzRm9y
VUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWlu
IDogZG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cy5hZGQoZG9tYWluKTsKKyAgICAgICAgfTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
ZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25J
RCwgZGF0YVR5cGVzRm9yVUlQcm9jZXNzLCBmZXRjaE9wdGlvbnMsIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNTI5Zjg3OTIyMGY2ZTUxYTM0MGVlNGI3NjNhMjAyMzFhNzQ2N2VlYS4uZDg1MzAxYzhhYjVk
NTY1ZGRhMzQxMmQyMjlmN2IxZjdjMjNlZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCAwMTI0NTE5YmU5NWVjZWJhYTcwY2Q3NTQzMDQw
MzM5MGQ3YTFkYzA5Li4yMTUzYjVkYWQxODQ2OWUxOTE4ZGRlZWVmMjk0ZWM1NTQyYWRmMTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKQEAgLTg2LDQgKzg3LDU5IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1dlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vz
cyhXZWJzaXRlRGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgewor
ICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsK
KyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGU6CisgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGU6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nl
c3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2U6Cisg
ICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9j
ZXNzVHlwZTo6VUk7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlczoK
KyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJOworICAgIGNhc2UgV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM6CisgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpNZWRp
YUtleXM6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBj
YXNlIFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6U2VhcmNo
RmllbGRSZWNlbnRTZWFyY2hlczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIGNhc2UgV2Vic2l0
ZURhdGFUeXBlOjpQbHVnSW5EYXRhOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNz
VHlwZTo6VUk7CisjZW5kaWYKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdv
cms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzOgorICAgICAgICByZXR1
cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNl
bmRpZgorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZToKKyAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5
cGU6OkRldmljZUlkSGFzaFNhbHQ6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NU
eXBlOjpVSTsKKyAgICB9Cit9CisKK09wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IFdlYnNpdGVE
YXRhOjpmaWx0ZXIoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdW5maWx0ZXJlZFdlYnNpdGVE
YXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSkK
K3sKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmaWx0ZXJlZDsKKyAgICBmb3IgKGF1
dG8gZGF0YVR5cGUgOiB1bmZpbHRlcmVkV2Vic2l0ZURhdGFUeXBlcykgeworICAgICAgICBpZiAo
b3duZXJQcm9jZXNzKGRhdGFUeXBlKSA9PSBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKQorICAgICAg
ICAgICAgZmlsdGVyZWQuYWRkKGRhdGFUeXBlKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZp
bHRlcmVkOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGEuaAppbmRleCBiNjA4ZjRmMmE0MGEwZTQ2ODliMGMzZmM4MzNhNDRlNDI4ZjRiZjAx
Li43NTFjNmIzNDlmNTFkZGNhNmFmNWM0OGNkOWIwMTJkNjQ4NTIyM2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKQEAgLTM5LDYgKzM5LDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogCitl
bnVtIGNsYXNzIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgeyBOZXR3b3JrLCBVSSB9OworCiBzdHJ1
Y3QgV2Vic2l0ZURhdGEgewogICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAgIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CkBAIC02Miw2ICs2NCw4IEBAIHN0cnVjdCBXZWJzaXRl
RGF0YSB7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGEmKTsKKyAgICBzdGF0aWMg
V2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBvd25lclByb2Nlc3MoV2Vic2l0ZURhdGFUeXBlKTsKKyAg
ICBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmlsdGVyKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCmluZGV4IDkwMjg1YjM5ZGM1Njc0N2ZiZmUzMjY4ZGM2ZDM2OGZhZjIxNDM1OGQuLmI1ZDhl
MmE5MzE5Y2NhMDAwOGI4ZTk2Y2VmYTU2NjRhMTg1ZDgzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAt
NDQ5LDYgKzQ0OSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVD
b29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZAogI2VuZGlmCiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2Fs
bGJhY2spCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9y
YWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgY2Fs
bGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY2Fs
bGJhY2soZmFsc2UsIGNvbnRleHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBlNmEyYTAwN2Yw
MTJmNDI4NjgyOGJhYWUyNTI3OWY5NWE5ZjU1N2RhLi40NzljYWQ0NjMxZmNlOWI0M2E0ZWU4Mzgx
MWFmY2UxZTEyMjY0Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtOTksNiArOTksOCBAQCB0eXBlZGVmIHZv
aWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFS
ZW1vdmFsRnVuY3RpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xl
YXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
RGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQg
KCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24pKGJv
b2wgaGFzTG9jYWxTdG9yYWdlLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2Fs
bGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nh
Y2hlTWF4QWdlQ2FwRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9u
KTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCAwYjkxZTM5MWUzOTgzZDQxZWI1MjI2NDE2MzRiZGJhNGY5NmE1ZTFhLi5jMTYzMWY5
NzExNTlkMzAyOGRlOWYyOTE5MzlmOTI3Mjc1MWRiNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTk5
MSw2ICs5OTEsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICAKICAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVDb29raWVzRm9yVGVz
dGluZyhzZXNzaW9uSUQsIGRvbWFpbiwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxl
dGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNl
c3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlIHx8IGRhdGFUeXBlcy5pc0VtcHR5
KCkgfHwgZG9tYWlucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYnNpdGVEYXRhU3RvcmUtPmZldGNo
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgZG9tYWlu
cywgW2RhdGFUeXBlcywgd2Vic2l0ZURhdGFTdG9yZSA9IG1ha2VSZWYoKndlYnNpdGVEYXRhU3Rv
cmUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVj
dG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmIG1hdGNoaW5nRGF0YVJlY29yZHMsIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRz
KSBtdXRhYmxlIHsKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShkYXRhVHlw
ZXMsIFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIFtkb21haW5zV2l0aE1hdGNoaW5nRGF0
YVJlY29yZHMgPSBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zV2l0aE1hdGNoaW5n
RGF0YVJlY29yZHMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKICNlbmRpZiAvLyBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzcyMzU2
Yjg2ODJjMjk5MzM5NTBkNzVhMGJmMzFiODg3ZDIxMzUwYy4uNWVmNTExMTdkMjljODE1OWNlZDQ0
NzU2MWQ1ZDgyNjlhNGYwODFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE0OSw2ICsxNDksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmln
YXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJl
c2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2ll
c0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9v
bCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTYzODg5YmQ4ZjY4ZjE3YzQ2NTJlYTQ5YjgxNmZj
MzM2NzdkYmFhZS4uMTZlNWYzMDVmYjBlYzQyYzllNzMwODdlZTQ1ZGVlYzVkMmRhMjhmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDgsNiArNDgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBOb3RpZnlXZWJzaXRl
RGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKQogICAgIFJl
cXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNj
ZXNzKSBBc3luYworICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAppbmRl
eCA1NmQ0MGM3Y2IyNWRlMDliMjAzNDBhZDgzZDNjODIwZTBlMWY0M2E3Li4zZmNiYzhmY2IxNmIw
NTAzMWMwOWJjNTExY2FiZDRlYWRlMTZjYzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFi
bGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKQEAgLTExMywyMCArMTE0LDIwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBo
b3N0SXNJbkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1ZpZXcgZG9tYWluKQogICAgIHJl
dHVybiAhc3VmZml4T2Zmc2V0IHx8IGhvc3Rbc3VmZml4T2Zmc2V0IC0gMV0gPT0gJy4nOwogfQog
Ci1ib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbihjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pIGNvbnN0Citi
b29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4uaXNFbXB0eSgpKQorICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDb29r
aWVzKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3ROYW1lIDogY29va2llSG9zdE5h
bWVzKSB7Ci0gICAgICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4oaG9zdE5hbWUsIHRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW4pKQorICAgICAgICAgICAgaWYgKGhvc3RJc0luRG9tYWluKGhv
c3ROYW1lLCBkb21haW4uc3RyaW5nKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkT3JpZ2lu
RGF0YSA6IG9yaWdpbnMpIHsKLSAgICAgICAgaWYgKGhvc3RJc0luRG9tYWluKGRhdGFSZWNvcmRP
cmlnaW5EYXRhLmhvc3QsIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pKQorICAgICAgICBp
ZiAoaG9zdElzSW5Eb21haW4oZGF0YVJlY29yZE9yaWdpbkRhdGEuaG9zdCwgZG9tYWluLnN0cmlu
ZygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKaW5k
ZXggY2NmMzBhNzlhYmQwNTgyZWEwMDgxYmEzZGZmMzAyYmM3ZTgzYjRjMi4uM2RmZjQwMTZjNDQ0
ZjI4YWNkNmNlOGFlNzI5ODgxNTM1MDNkYTg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9
CiAKQEAgLTcyLDcgKzczLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICAgICBIYXNo
U2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKICAgICBIYXNoU2V0PFN0cmluZz4g
SFNUU0NhY2hlSG9zdE5hbWVzOwogCi0gICAgYm9vbCBtYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbigpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NzhkNjdk
MTJjNzViMWFiZmMxMTQ0ODRjYWQzZjM3N2QyMzU5NWMzLi4xYWZmNzNjNjhjYTI4ZmUxMDMyNDkx
MjI1YTU3MGQ5Yjg2NGJiZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNjIzLDM3ICs2MjMsNDQg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJ
Zk5lZWRlZCgpOwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3Zv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+
JiYsIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGZldGNoRGF0YUFuZEFwcGx5KGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zLCBtX3F1ZXVl
LmNvcHlSZWYoKSwgW2RvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgZXhpc3RpbmdE
YXRhUmVjb3JkcykgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworICAgICAgICAKKyAgICAgICAgVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiBtYXRjaGluZ0Rh
dGFSZWNvcmRzOworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0
aE1hdGNoaW5nRGF0YVJlY29yZHM7CisgICAgICAgIGZvciAoYXV0byYmIGRhdGFSZWNvcmQgOiBl
eGlzdGluZ0RhdGFSZWNvcmRzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRv
bWFpbnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YVJlY29yZC5tYXRjaGVzKGRvbWFpbikp
IHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdEYXRhUmVjb3Jkcy5hcHBlbmQoV1RGTW92
ZShkYXRhUmVjb3JkKSk7CisgICAgICAgICAgICAgICAgICAgIGRvbWFpbnNXaXRoTWF0Y2hpbmdE
YXRhUmVjb3Jkcy5hZGQoZG9tYWluLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUobWF0
Y2hpbmdEYXRhUmVjb3JkcyksIGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1v
dmUoZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1hdGNoaW5nRGF0YVJlY29yZHMpLCBXVEZN
b3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykpOworICAgICAgICB9KTsKKyAgICB9
KTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0ZU5ldHdvcmtQ
cm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgYm9vbCBpc05vblBlcnNpc3RlbnRTdG9yZSkKIHsKICAgICBQcm9jZXNzQWNj
ZXNzVHlwZSBwcm9jZXNzQWNjZXNzVHlwZSA9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lOwogCi0g
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7Ci0g
ICAgICAgIGlmIChpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nl
c3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpP
bmx5SWZMYXVuY2hlZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NU
eXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVu
Y2gpOworICAgIGZvciAoYXV0byBkYXRhVHlwZSA6IGRhdGFUeXBlcykgeworICAgICAgICBpZiAo
ZGF0YVR5cGUgPT0gV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSB7CisgICAgICAgICAgICBpZiAo
aXNOb25QZXJzaXN0ZW50U3RvcmUpCisgICAgICAgICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUg
PSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxh
dW5jaGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9jZXNzQWNjZXNz
VHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1
bmNoKTsKKyAgICAgICAgfSBlbHNlIGlmIChXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKGRhdGFU
eXBlKSA9PSBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrKQorICAgICAgICAgICAgcmV0
dXJuIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2g7CiAgICAgfQotCi0gICAgaWYgKGRhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkgJiYgIWlzTm9uUGVyc2lzdGVu
dFN0b3JlKQotICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nl
c3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKLQotICAgIGlmIChkYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQotICAgICAgICBwcm9jZXNzQWNj
ZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6
TGF1bmNoKTsKLQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpD
cmVkZW50aWFscykpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vz
c0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwotCi0gICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKLSAgICAgICAgcHJvY2Vz
c0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5
cGU6OkxhdW5jaCk7Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhaXNOb25QZXJzaXN0ZW50U3RvcmUpCi0gICAgICAg
IHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NB
Y2Nlc3NUeXBlOjpMYXVuY2gpOwogICAgIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMpICYmICFpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgcHJvY2Vzc0Fj
Y2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6
OkxhdW5jaCk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBwcm9jZXNzQWNjZXNzVHlwZTsKIH0KIApA
QCAtMTc5NSw2ICsxODAyLDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlQ29va2ll
c0ZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIGJvb2wgaW5jbHVkZUh0dHBPCiAgICAgICAgICAg
ICBuZXR3b3JrUHJvY2Vzcy0+ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMs
IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OwogICAgIH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3JhZ2VGb3JU
ZXN0aW5nKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9zdG9yYWdlTWFuYWdlcikgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFt1cmwsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhhc2hTZXQ8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIG9yaWdpbnMpIG11dGFibGUgeworICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGlmIChvcmlnaW4uaG9z
dCA9PSB1cmwuaG9zdCgpKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0pOworfQogI2VuZGlmIC8v
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggMjUzOWZmOTcxMGRmM2Y2OGFlNjc1N2I1Mjc2OGEzODMyMTViZGI2Yy4uMGM2ZjM5
NmM4YWQwMTQ4Y2M0ZmZlMzE5N2NjMDk0NzlkNjYzNWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjEs
NiArNjEsNyBAQCBjbGFzcyBIVFRQQ29va2llU3RvcmU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAK
QEAgLTEyNSw2ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiwgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgdm9pZCBmZXRjaERhdGFGb3JSZWdpc3RyYWJsZURvbWFp
bnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmLCBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhclByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNzEsNiArMTczLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoY29uc3QgVVJMJiBmcm9tVVJMLCBjb25zdCBVUkwmIHRvVVJMLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3Jh
dGlvbkZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0xvY2FsU3Rv
cmFnZUZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggOTlkYmU1NGRjNWM0NTJmMTUxOTMyMGRlMmY0ZDliNzgyOGVlZDY0Ny4uOGQw
NjZmNmZiODYyZDA1NzliMDRkMTk1NTQzZGRlYTNjMGI3NzcxNCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAz
LTI3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291
cmNlIExvYWQgU3RhdGlzdGljczogSVBDIHRvIHRoZSBXZWJzaXRlRGF0YVN0b3JlIGluIHRoZSBV
SSBwcm9jZXNzIGZyb20gTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjI4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5Mzg3NDg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHRoZSBmdW5jdGlvbiBpc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoKSB0byB0aGUKKyAgICAg
ICAgVGVzdFJ1bm5lci4gV2l0aCBpdCwgdGhlIHBhZ2UgY2FuIHF1ZXJ5IHRoZSBXZWJzaXRlRGF0
YVN0b3JlIGluIHRoZQorICAgICAgICBVSSBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IHNl
ZXMgTG9jYWxTdG9yYWdlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
Ojppc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aXNT
dGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wMy0yNiAgS2VpdGggUm9sbGlu
ICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRoZSB3YXkgZ2VuZXJhdGUt
eGNmaWxlbGlzdHMgcmV0dXJucyBzdHJpbmdzIGZyb20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAppbmRleCA0ODFjZWViODI5YTRhOWQxZjAwN2JiMjU0NmEwMTRiNmY5NzZiNTc2
Li4wODdkYTg0NjUyNTdmYmU2OWQzNThiZjU3NzBlZjcyMzJjNjk1NWIwIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKQEAgLTMyMSw2ICszMjEsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7
CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlm
aWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJhY2spOwogICAg
IHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChvYmplY3QgY2Fs
bGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KERPTVN0cmlu
ZyBob3N0TmFtZSwgYm9vbGVhbiBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKKyAgICBib29sZWFu
IGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShET01TdHJpbmcgaG9zdE5hbWUpOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxl
cik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCmluZGV4IDI2ZjI1NzViZDI1NzMzNjhlMmNkODYzNTY1OWIzNWU2YTJhMWRi
MGYuLmQ3MzZmMGQxZjdjYTZhODU5MTYwOGM0MjgxZmU0NThlNmZjMDU1MDIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApA
QCAtMjA3MCw2ICsyMDcwLDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNv
b2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIGluY2x1CiAgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0K
IAorYm9vbCBUZXN0UnVubmVyOjppc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoSlNTdHJpbmdS
ZWYgaG9zdE5hbWUpCit7CisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIklzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSIpKTsKKyAg
ICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyho
b3N0TmFtZSkpOworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAgICBXS0J1
bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRh
KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVl
KGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOwor
fQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUg
c2Vjb25kcykKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcCIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKaW5kZXggM2JmM2QxYThmNTE3N2U1ODFhZWY4OGI0MjQxYWE5OWRkMDBm
YzEwOC4uN2EzNTVhODhiYzk3NGMzMWMxZDYwN2Q1ZWVmMDQ3ZWUxNmE1Mjc2MSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAg
LTQzMSw2ICs0MzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlz
dGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIGluY2x1
ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxDbGVhclRocm91Z2hX
ZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpOworICAgIGJvb2wgaXNTdGF0aXN0aWNzSGFzTG9j
YWxTdG9yYWdlKEpTU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3ND
YWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUzZGI2NTkyYWZiOGUx
YTg3ZWM2NzM5YzUxYzMzZWU4OTY2NjYwZjcuLjZlZmIyY2I5YTNmYmExYzQ1NDVlY2Y4MjE5ZDMz
MDUxZDY4OWVkZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC0zMzg3LDYgKzMzODcsMTUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0Rl
bGV0ZUNvb2tpZXNGb3JIb3N0KFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaW5jbHUKICAgICBydW5V
bnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CiB9CiAKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
OmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1N0cmluZ1JlZiBob3N0KQoreworICAgIGF1
dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250
ZXh0KCkpOworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0
aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKGRh
dGFTdG9yZSwgaG9zdCwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc0Jvb2xlYW5SZXN1bHRD
YWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIHJl
dHVybiBjb250ZXh0LnJlc3VsdDsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlz
dGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIGRhdGFTdG9y
ZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDE4NDcxNzJkODE3YjNhMmZj
NjQ2ZWI3MmIzZDI5MDJmMjJlY2U5MGEuLjI5NTlhNjk5M2JjNmNiOTZlZGUyMGRlZjFmYTY1NGYw
ZDQ5ZjFkOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI0
Miw2ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzKTsKKyAgICBib29sIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShX
S1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VD
YXAoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRl
eCA2N2ExNTVlMjBhOThmZThiNzIwZDM2NzMxZmM5MWZiMzFjZDQzNzllLi40YzcwMzdiN2Y1Nzc1
YzY2N2RmMzhiMDMxM2MxZGFjMDA0YWJlNTIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtMTQyNyw2ICsxNDI3LDE1IEBAIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSXNTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3RO
YW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYm9v
bCBoYXNMb2NhbFN0b3JhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaXNTdGF0aXN0
aWNzSGFzTG9jYWxTdG9yYWdlKGhvc3ROYW1lKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShoYXNMb2NhbFN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCIpKSB7CiAgICAgICAgIEFTU0VS
VChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CiAgICAg
ICAgIFdLRG91YmxlUmVmIHNlY29uZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2Fn
ZUJvZHkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDc3ODdlOTA4NTAzYmY1ZTQ3MjRmZTdkODQyMzNlYTVkYmNmNzAyNDAu
LjE3Y2Q4MGI3NDIyNjAxMjdiZDJiNjQ4ZjA5MWZhZTg0NDJiYWNhOTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0wMy0yNyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IElQQyB0byB0aGUgV2Vic2l0ZURh
dGFTdG9yZSBpbiB0aGUgVUkgcHJvY2VzcyBmcm9tIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTM4NzQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgdGVzdCBub3cgY292ZXJzIExvY2FsU3RvcmFnZSB0b28uCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNp
dGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWw6CisKIDIw
MTktMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YmFzaWMgbGF5b3V0IHRlc3QgY292ZXJhZ2UgZm9yIEZpbGUgUGlja2VyIG9uIGlPUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNp
dGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGlu
ay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAyYWEyYmQ5YWNhMzIwZTUyOTQ3MDU3M2U3
MTNiNGRkOGIyZDlmNjdlLi5kMzZkZmM0OGI4YTIyZjlmYjRjMTVjMzNlMmNkNWZhMjdiMTE1YWJj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1k
ZWNvcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVk
LXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywxMyBAQCBD
aGVjayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGdldHMgcmVtb3ZlZCBhZnRlciBhIG5h
dmlnYXRpb24gd2l0aCBsaW5rIGRlYwogQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29r
aWUgZXhpc3RzLgogQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgogQmVm
b3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCi0KK0JlZm9y
ZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCiBCZWZvcmUgZGVsZXRp
b246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgogCiBBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29v
a2llIGV4aXN0cy4KIEFmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgog
QWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KLQorQWZ0
ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KIEFmdGVyIGRl
bGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1v
dmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1y
ZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sCmlu
ZGV4IGM5MTdhOTQ2ZDM2ZGRlZDE1NTY3ZTZhNzM2NjBjNTU3ZTc3NTlhYjguLjFkMDhhOTk2OTYy
Nzg0YTYxODE4YjEyMDg3MWI4YTc1ZGZkMTc5ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3It
c2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKQEAgLTkx
LDYgKzkxLDQ0IEBACiAgICAgICAgIH07CiAgICAgfQogCisgICAgY29uc3QgbWF4SW50ZXJ2YWxz
ID0gMjA7CisgICAgbGV0IGludGVydmFsQ291bnRlcjsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNv
bnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFs
dWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0
ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyID0gMDsKKyAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAo
IWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
TG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVyID09PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2Uu
Z2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2Nh
bFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXIgPT09IG1heEludGVydmFscykgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAg
ICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9y
YWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRv
ZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFB
bmRDb250aW51ZSgpIHsKICAgICAgICAgLy8gV3JpdGUgY29va2llcy4KICAgICAgICAgYXdhaXQg
ZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2ll
TmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4i
IH0pOwpAQCAtOTgsMjEgKzEzNiwzMSBAQAogICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGll
bnRTaWRlQ29va2llTmFtZSArICI9MSI7CiAKICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsK
LSAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKIAotICAgICAgICAvLyBXcml0ZSBJbmRl
eGVkREIuCi0gICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgcHJvY2Vzc1dlYnNpdGVEYXRhQW5k
Q29udGludWUpOworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxT
dG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAg
ICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9y
ZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMo
ZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091
dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewog
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCk7CisgICAgICAgIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgIH0KIAot
ICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0
ZURhdGFBbmRDb250aW51ZSgpIHsKICAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOwotICAgICAg
ICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOwotICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0
cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1
ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1
ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366125</attachid>
            <date>2019-03-27 16:13:06 -0700</date>
            <delta_ts>2019-03-28 13:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196281-20190327161301.patch</filename>
            <type>text/plain</type>
            <size>47617</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyODIwMmI5ZTRlODQ2ZDBm
NmZhZDUyNWFiNGJlNGMzNDdjYTI0ZGYuLmZkODM0MWExYWJiYzJmMzAyMzNlMjRmY2Q3NDVlNTJi
ZGQ2NjljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMjcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4gdGhlIFVJIHByb2Nlc3MgZnJv
bSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjgx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW92ZSBvZiBSZXNvdXJjZSBMb2FkIFN0
YXRpc3RpY3MgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyByZXF1aXJlcyB0aGF0IGl0CisgICAgICAg
IGNhbGxzIHRoZSBVSSBwcm9jZXNzIHdoZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIChwcmV2aW91
c2x5IHRoZSBvdGhlciB3YXkKKyAgICAgICAgYXJvdW5kKS4gVGhpcyBwYXRjaCBhY2hpZXZlcyB0
aGF0LgorCisgICAgICAgIFNwZWNpZmljYWxseSwgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkgbm93CisgICAgICAgIGZpbHRlcnMgaXRzIFdl
YnNpdGVEYXRhVHlwZXMgZG93biB0byBqdXN0IHRoZSBvbmVzIGFwcGxpY2FibGUgZm9yIHRoZSBV
SQorICAgICAgICBwcm9jZXNzIGFuZCB0aGVuIGNhbGxzIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMgb3ZlcgorICAgICAgICBJUEMuCisKKyAgICAgICAg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucygpIG9uCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIHNpZGUgbWFrZXMgdXNl
IG9mIHRoZSByZS1pbnRyb2R1Y2VkCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVsZXZhbnQKKyAg
ICAgICAgZGF0YSByZWNvcmRzIGFuZCBjYWxsIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
KS4gVGhlIHJlLWludHJvZHVjZWQKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKCkgd2FzIHJlbW92ZWQgYXMgZGVhZCBjb2RlIGluCisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDIwNTYvd2Via2l0LCB0aGVu
IHVuZGVyIHRoZSBuYW1lCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKCkuIFRoZSByZWFzb24gaXQKKyAgICAgICAgd2Fz
IGRlYWQgY29kZSB3YXMgdGhlIGxhY2sgb2YgSVBDIGNhbGwgdGhhdCB0aGlzIHBhdGNoIGFkZHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyk6CisgICAgICAgICAgIE5vdyBjYWxscyBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW5zIG92ZXIgSVBDIGlmIHRoZXJlCisgICAgICAgICAgIGFy
ZSBXZWJzaXRlRGF0YVR5cGVzIGFwcGxpY2FibGUgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6
b3duZXJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OmZpbHRlcik6Cisg
ICAgICAgICAgICBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gbWFuYWdlIHByb2Nlc3Mgb3duZXJz
aGlwIG9mIHdlYnNpdGUgZGF0YSB0eXBlcy4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2Nh
bFN0b3JhZ2UpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZSwgY2FsbGVkIGJ5IHRo
ZSBUZXN0UnVubmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0
ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgICAgICBOZXcg
ZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICAgICBO
b3cgbWF0Y2hlcyB3aXRoIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGluc3RlYWQgb2YgYSBz
dHJpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZXBs
YWNlZCBieSBXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcygpLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgICAg
IFJlLWludHJvZHVjZWQuIEl0IHdhcyByZW1vdmVkIGFzIGRlYWQgY29kZSBpbiByMjQyMDU2Lgor
ICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJl
bW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3Jh
Z2VGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUsIGNh
bGxlZCBieSB0aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBUaGUgbmV0d29yayBwcm9jZXNzIGlzIG5vdCBl
eGl0aW5nIHJlbGlhYmx5IHdoZW4gdGhlIFdlYlByb2Nlc3NQb29sIGlzIGRlc3Ryb3llZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3
M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAzYWM1YTlmNGEyLi42NjRmYTU3N2E0NTk5ZDI2
ZDc0NDQ1M2U0ZjA5NDYyZGMwY2U3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIldl
YlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKQEAgLTE1MjUsMjMgKzE1MjQsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICAgICAgCiAgICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0ZURh
dGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdG5hbWVX
aXRoQ29va2llcyA6IHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKQotICAgICAgICAg
ICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoaG9zdG5hbWVXaXRoQ29va2llcykpOwotCi0gICAgICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBob3N0bmFtZVdpdGhIU1RTIDogd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3RuYW1lV2l0aEhTVFMpKTsKLQotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0YS5lbnRyaWVzKQot
ICAgICAgICAgICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKTsKLQorICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbnMgPSBXVEZNb3ZlKG1fZG9tYWlucyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRvbWFpbnMpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKLSAgICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKKyAgICAgICAgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zOwogICAgIH07CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZigqbmV3IENhbGxiYWNrQWdncmVnYXRvcihbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2hvdWxkTm90
aWZ5UGFnZV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERh
dGEpIG11dGFibGUgewpAQCAtMTU1Myw3ICsxNTQyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgfSk7CiAgICAgfSkpOwogCi0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBIYXNoU2V0PFN0cmluZz4g
aG9zdE5hbWVzV2l0aENvb2tpZXM7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGU7CiAKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0
ZUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxl
dGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3I7CkBAIC0xNTc1LDEzICsxNTY1LDE5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3ROYW1l
c1dpdGhDb29raWVzKTsKIAotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
ZG9tYWluc1RvRGVsZXRlQ29va2llc0ZvciwgaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tp
ZXM6Olllcyk7CiAKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBm
aWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlD
b29raWVzRm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxl
dGUpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKKyAgICAg
ICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLCBob3N0TmFt
ZXNXaXRoQ29va2llcyk7CiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29y
ZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8pOworCisgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkKQEAgLTE1OTIsOCAr
MTU4OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAgICAgICAg
Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUg
PSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2ll
c0ZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKICAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MDEsOSArMTYwMSwxMCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaQogCiAgICAgLyoKICAgICAvLyBGSVhNRTogTm8gQVBJIHRvIGRlbGV0
ZSBjcmVkZW50aWFscyBieSBvcmlnaW4KKyAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhD
cmVkZW50aWFsczsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzKSkgewogICAgICAgICBpZiAoc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUub3JpZ2luc1dpdGhDcmVkZW50aWFs
cyA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2lu
c1dpdGhDcmVkZW50aWFscygpOworICAgICAgICAgICAgb3JpZ2luc1dpdGhDcmVkZW50aWFscyA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dp
dGhDcmVkZW50aWFscygpOwogICAgIH0KICAgICAqLwogICAgIApAQCAtMTYxMiw4ICsxNjEzLDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIAogICAgICAgICAgICAgYXV0
byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1Rv
RGVsZXRlQWxsQnV0Q29va2llc0ZvciwgZW50cmllcyk7CiAKLSAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzVG9E
ZWxldGUpOwotICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogZW50cmllc1RvRGVsZXRlKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
ZW50cnkub3JpZ2luLmhvc3QpKTsKKwogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
ZW50cnkub3JpZ2luIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKQEAgLTE2MjcsMTEgKzE2MjksMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMg
PSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRh
aW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9y
aWdpbi5ob3N0KSkpCisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9tYWluID0gUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoZG9tYWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoc2VjdXJpdHlPcmlnaW4p
OwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV9kb21haW5zLmFkZChkb21haW4pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlkYlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwpAQCAtMTY0Nyw3ICsxNjUwLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2kKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1
cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
SG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSk7CiAgICAgICAgICAgICAgICAgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCkuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKQEAgLTE2NjIsMTEgKzE2NjUsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5
Lm9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnkub3JpZ2luKTsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoZW50
cnkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhv
c3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhj
YWNoZSgpLCBlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAgICBhdXRv
IGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFU
eXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOworICAgIGlmICghZGF0YVR5cGVzRm9y
VUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWlu
IDogZG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cy5hZGQoZG9tYWluKTsKKyAgICAgICAgfTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
ZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25J
RCwgZGF0YVR5cGVzRm9yVUlQcm9jZXNzLCBmZXRjaE9wdGlvbnMsIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNTI5Zjg3OTIyMGY2ZTUxYTM0MGVlNGI3NjNhMjAyMzFhNzQ2N2VlYS4uZDg1MzAxYzhhYjVk
NTY1ZGRhMzQxMmQyMjlmN2IxZjdjMjNlZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCAwMTI0NTE5YmU5NWVjZWJhYTcwY2Q3NTQzMDQw
MzM5MGQ3YTFkYzA5Li4yMTUzYjVkYWQxODQ2OWUxOTE4ZGRlZWVmMjk0ZWM1NTQyYWRmMTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKQEAgLTg2LDQgKzg3LDU5IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1dlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vz
cyhXZWJzaXRlRGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgewor
ICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsK
KyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGU6CisgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGU6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nl
c3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2U6Cisg
ICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9j
ZXNzVHlwZTo6VUk7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlczoK
KyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJOworICAgIGNhc2UgV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM6CisgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpNZWRp
YUtleXM6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBj
YXNlIFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6U2VhcmNo
RmllbGRSZWNlbnRTZWFyY2hlczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIGNhc2UgV2Vic2l0
ZURhdGFUeXBlOjpQbHVnSW5EYXRhOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNz
VHlwZTo6VUk7CisjZW5kaWYKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdv
cms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzOgorICAgICAgICByZXR1
cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNl
bmRpZgorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZToKKyAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5
cGU6OkRldmljZUlkSGFzaFNhbHQ6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NU
eXBlOjpVSTsKKyAgICB9Cit9CisKK09wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IFdlYnNpdGVE
YXRhOjpmaWx0ZXIoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdW5maWx0ZXJlZFdlYnNpdGVE
YXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSkK
K3sKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmaWx0ZXJlZDsKKyAgICBmb3IgKGF1
dG8gZGF0YVR5cGUgOiB1bmZpbHRlcmVkV2Vic2l0ZURhdGFUeXBlcykgeworICAgICAgICBpZiAo
b3duZXJQcm9jZXNzKGRhdGFUeXBlKSA9PSBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKQorICAgICAg
ICAgICAgZmlsdGVyZWQuYWRkKGRhdGFUeXBlKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZp
bHRlcmVkOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGEuaAppbmRleCBiNjA4ZjRmMmE0MGEwZTQ2ODliMGMzZmM4MzNhNDRlNDI4ZjRiZjAx
Li5hMzA4YWU2MzIzNTFkMGUzNDM3YzA5ODlhMzVlZGY2YTBkZGQ4YmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAg
LTM5LDYgKzQwLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgV2Vic2l0ZURh
dGFUeXBlOwogCitlbnVtIGNsYXNzIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgeyBOZXR3b3JrLCBV
SSB9OworCiBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAg
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CkBAIC02Miw2ICs2NSw4IEBAIHN0
cnVjdCBXZWJzaXRlRGF0YSB7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGEmKTsK
KyAgICBzdGF0aWMgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBvd25lclByb2Nlc3MoV2Vic2l0ZURh
dGFUeXBlKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmlsdGVyKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCmluZGV4IDkwMjg1YjM5ZGM1Njc0N2ZiZmUzMjY4ZGM2ZDM2OGZhZjIx
NDM1OGQuLmI1ZDhlMmE5MzE5Y2NhMDAwOGI4ZTk2Y2VmYTU2NjRhMTg1ZDgzODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcApAQCAtNDQ5LDYgKzQ0OSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZAogI2Vu
ZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFn
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
RnVuY3Rpb24gY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
aGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsK
KyAgICAgICAgY2FsbGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKKyAgICB9KTsKKyNl
bHNlCisgICAgY2FsbGJhY2soZmFsc2UsIGNvbnRleHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFj
aykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCBlNmEyYTAwN2YwMTJmNDI4NjgyOGJhYWUyNTI3OWY5NWE5ZjU1N2RhLi40NzljYWQ0NjMxZmNl
OWI0M2E0ZWU4MzgxMWFmY2UxZTEyMjY0Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtOTksNiArOTksOCBA
QCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsRnVuY3RpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2sp
OwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tp
ZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3Rpbmco
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9v
bCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjayk7Cit0
eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
RnVuY3Rpb24pKGJvb2wgaGFzTG9jYWxTdG9yYWdlLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwor
V0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFn
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
RnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhB
Z2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFn
ZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAwYjkxZTM5MWUzOTgzZDQxZWI1MjI2NDE2MzRiZGJhNGY5NmE1
ZTFhLi5jMTYzMWY5NzExNTlkMzAyOGRlOWYyOTE5MzlmOTI3Mjc1MWRiNGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKQEAgLTk5MSw2ICs5OTEsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxl
dGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICAK
ICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVD
b29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiwgaW5jbHVkZUh0dHBPbmx5Q29va2ll
cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9t
U2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlIHx8IGRhdGFU
eXBlcy5pc0VtcHR5KCkgfHwgZG9tYWlucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYnNpdGVEYXRh
U3RvcmUtPmZldGNoRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIGZldGNoT3B0
aW9ucywgZG9tYWlucywgW2RhdGFUeXBlcywgd2Vic2l0ZURhdGFTdG9yZSA9IG1ha2VSZWYoKndl
YnNpdGVEYXRhU3RvcmUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmIG1hdGNoaW5nRGF0YVJlY29yZHMs
IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWluc1dpdGhNYXRjaGlu
Z0RhdGFSZWNvcmRzKSBtdXRhYmxlIHsKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3Zl
RGF0YShkYXRhVHlwZXMsIFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIFtkb21haW5zV2l0
aE1hdGNoaW5nRGF0YVJlY29yZHMgPSBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVj
b3JkcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKICNl
bmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggMzcyMzU2Yjg2ODJjMjk5MzM5NTBkNzVhMGJmMzFiODg3ZDIxMzUwYy4uNWVmNTExMTdk
MjljODE1OWNlZDQ0NzU2MWQ1ZDgyNjlhNGYwODFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE0OSw2ICsx
NDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYs
IGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5k
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTYzODg5YmQ4ZjY4ZjE3YzQ2
NTJlYTQ5YjgxNmZjMzM2NzdkYmFhZS4uMTZlNWYzMDVmYjBlYzQyYzllNzMwODdlZTQ1ZGVlYzVk
MmRhMjhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDgsNiArNDgsNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBO
b3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAg
Tm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRv
dGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dp
dGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zKQogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNl
ckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NG
b3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJL
aXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3Jk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmNwcAppbmRleCA1NmQ0MGM3Y2IyNWRlMDliMjAzNDBhZDgzZDNjODIwZTBlMWY0M2E3Li4z
ZmNiYzhmY2IxNmIwNTAzMWMwOWJjNTExY2FiZDRlYWRlMTZjYzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTExMywyMCArMTE0LDIwIEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBob3N0SXNJbkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1ZpZXcgZG9t
YWluKQogICAgIHJldHVybiAhc3VmZml4T2Zmc2V0IHx8IGhvc3Rbc3VmZml4T2Zmc2V0IC0gMV0g
PT0gJy4nOwogfQogCi1ib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4pIGNvbnN0Citib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKHRvcFByaXZhdGVs
eUNvbnRyb2xsZWREb21haW4uaXNFbXB0eSgpKQorICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3ROYW1lIDog
Y29va2llSG9zdE5hbWVzKSB7Ci0gICAgICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4oaG9zdE5h
bWUsIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pKQorICAgICAgICAgICAgaWYgKGhvc3RJ
c0luRG9tYWluKGhvc3ROYW1lLCBkb21haW4uc3RyaW5nKCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRh
UmVjb3JkT3JpZ2luRGF0YSA6IG9yaWdpbnMpIHsKLSAgICAgICAgaWYgKGhvc3RJc0luRG9tYWlu
KGRhdGFSZWNvcmRPcmlnaW5EYXRhLmhvc3QsIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4p
KQorICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4oZGF0YVJlY29yZE9yaWdpbkRhdGEuaG9zdCwg
ZG9tYWluLnN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmgKaW5kZXggY2NmMzBhNzlhYmQwNTgyZWEwMDgxYmEzZGZmMzAyYmM3ZTgzYjRjMi4u
M2RmZjQwMTZjNDQ0ZjI4YWNkNmNlOGFlNzI5ODgxNTM1MDNkYTg2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5o
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47CiB9CiAKQEAgLTcyLDcgKzczLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3Jk
IHsKICAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKICAgICBIYXNo
U2V0PFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzOwogCi0gICAgYm9vbCBtYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIG1h
dGNoZXMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBTdHJp
bmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCA5NzhkNjdkMTJjNzViMWFiZmMxMTQ0ODRjYWQzZjM3N2QyMzU5NWMzLi4xYWZmNzNjNjhj
YTI4ZmUxMDMyNDkxMjI1YTU3MGQ5Yjg2NGJiZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNjIz
LDM3ICs2MjMsNDQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPmNhbGxJZk5lZWRlZCgpOwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgY29uc3QgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0
ZURhdGFSZWNvcmQ+JiYsIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGZldGNoRGF0YUFuZEFwcGx5KGRhdGFUeXBlcywgZmV0Y2hPcHRp
b25zLCBtX3F1ZXVlLmNvcHlSZWYoKSwgW2RvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRv
JiYgZXhpc3RpbmdEYXRhUmVjb3JkcykgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworICAgICAgICAKKyAgICAgICAgVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3Jk
PiBtYXRjaGluZ0RhdGFSZWNvcmRzOworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHM7CisgICAgICAgIGZvciAoYXV0byYmIGRh
dGFSZWNvcmQgOiBleGlzdGluZ0RhdGFSZWNvcmRzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YVJlY29yZC5tYXRj
aGVzKGRvbWFpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdEYXRhUmVjb3Jkcy5h
cHBlbmQoV1RGTW92ZShkYXRhUmVjb3JkKSk7CisgICAgICAgICAgICAgICAgICAgIGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3Jkcy5hZGQoZG9tYWluLmlzb2xhdGVkQ29weSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWF0Y2hpbmdEYXRhUmVjb3JkcyA9
IFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVj
b3JkcyA9IFdURk1vdmUoZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1hdGNoaW5nRGF0YVJl
Y29yZHMpLCBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykpOworICAgICAg
ICB9KTsKKyAgICB9KTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29t
cHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgYm9vbCBpc05vblBlcnNpc3RlbnRTdG9yZSkKIHsKICAg
ICBQcm9jZXNzQWNjZXNzVHlwZSBwcm9jZXNzQWNjZXNzVHlwZSA9IFByb2Nlc3NBY2Nlc3NUeXBl
OjpOb25lOwogCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNv
b2tpZXMpKSB7Ci0gICAgICAgIGlmIChpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgICAg
IHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NB
Y2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBy
b2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nl
c3NUeXBlOjpMYXVuY2gpOworICAgIGZvciAoYXV0byBkYXRhVHlwZSA6IGRhdGFUeXBlcykgewor
ICAgICAgICBpZiAoZGF0YVR5cGUgPT0gV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSB7CisgICAg
ICAgICAgICBpZiAoaXNOb25QZXJzaXN0ZW50U3RvcmUpCisgICAgICAgICAgICAgICAgcHJvY2Vz
c0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5
cGU6Ok9ubHlJZkxhdW5jaGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBw
cm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNj
ZXNzVHlwZTo6TGF1bmNoKTsKKyAgICAgICAgfSBlbHNlIGlmIChXZWJzaXRlRGF0YTo6b3duZXJQ
cm9jZXNzKGRhdGFUeXBlKSA9PSBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrKQorICAg
ICAgICAgICAgcmV0dXJuIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2g7CiAgICAgfQotCi0gICAg
aWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkgJiYgIWlz
Tm9uUGVyc2lzdGVudFN0b3JlKQotICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4
KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKLQotICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQotICAgICAg
ICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNz
QWNjZXNzVHlwZTo6TGF1bmNoKTsKLQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3Rk
OjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwotCi0g
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKLSAg
ICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJv
Y2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhaXNOb25QZXJzaXN0ZW50U3Rv
cmUpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5
cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwogICAgIAotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmICFpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAg
ICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vz
c0FjY2Vzc1R5cGU6OkxhdW5jaCk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBwcm9jZXNzQWNjZXNz
VHlwZTsKIH0KIApAQCAtMTc5NSw2ICsxODAyLDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIGJvb2wgaW5jbHVkZUh0dHBP
CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcobV9z
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIGluY2x1ZGVIdHRw
T25seUNvb2tpZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOwogICAgIH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2Nh
bFN0b3JhZ2VGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9zdG9yYWdl
TWFuYWdlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmln
aW5zKFt1cmwsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIG9yaWdpbnMpIG11dGFibGUg
eworICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGlm
IChvcmlnaW4uaG9zdCA9PSB1cmwuaG9zdCgpKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0pOwor
fQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKaW5kZXggMjUzOWZmOTcxMGRmM2Y2OGFlNjc1N2I1Mjc2OGEzODMyMTVi
ZGI2Yy4uMGM2ZjM5NmM4YWQwMTQ4Y2M0ZmZlMzE5N2NjMDk0NzlkNjYzNWQyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBIVFRQQ29va2llU3RvcmU7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiB9CiAKQEAgLTEyNSw2ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2Vic2l0ZURhdGFS
ZWNvcmQ+JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgdm9pZCBmZXRjaERhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJz
aXRlRGF0YUZldGNoT3B0aW9uPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYm
LCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBj
bGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNzEsNiAr
MTczLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbkZvclRlc3RpbmcoY29uc3QgVVJMJiBmcm9tVVJMLCBjb25zdCBVUkwmIHRvVVJMLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVk
ZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IGhhc0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTlkYmU1NGRjNWM0NTJmMTUxOTMyMGRlMmY0ZDliNzgy
OGVlZDY0Ny4uOGQwNjZmNmZiODYyZDA1NzliMDRkMTk1NTQzZGRlYTNjMGI3NzcxNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE5LTAzLTI3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogSVBDIHRvIHRoZSBXZWJzaXRlRGF0YVN0
b3JlIGluIHRoZSBVSSBwcm9jZXNzIGZyb20gTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NjI4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5Mzg3
NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIHRoZSBmdW5jdGlvbiBpc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoKSB0
byB0aGUKKyAgICAgICAgVGVzdFJ1bm5lci4gV2l0aCBpdCwgdGhlIHBhZ2UgY2FuIHF1ZXJ5IHRo
ZSBXZWJzaXRlRGF0YVN0b3JlIGluIHRoZQorICAgICAgICBVSSBwcm9jZXNzIHRvIG1ha2Ugc3Vy
ZSB0aGF0IGl0IHNlZXMgTG9jYWxTdG9yYWdlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjppc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wMy0yNiAg
S2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRoZSB3
YXkgZ2VuZXJhdGUteGNmaWxlbGlzdHMgcmV0dXJucyBzdHJpbmdzIGZyb20gZnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0ODFjZWViODI5YTRhOWQxZjAwN2JiMjU0NmEw
MTRiNmY5NzZiNTc2Li4wODdkYTg0NjUyNTdmYmU2OWQzNThiZjU3NzBlZjcyMzJjNjk1NWIwIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTMyMSw2ICszMjEsNyBAQCBpbnRlcmZhY2Ug
VGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2Fs
bGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bChvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JI
b3N0KERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsK
KyAgICBib29sZWFuIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShET01TdHJpbmcgaG9zdE5h
bWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRz
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKG9iamVjdCBjb21w
bGV0aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDI2ZjI1NzViZDI1NzMzNjhlMmNkODYzNTY1
OWIzNWU2YTJhMWRiMGYuLmQ3MzZmMGQxZjdjYTZhODU5MTYwOGM0MjgxZmU0NThlNmZjMDU1MDIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtMjA3MCw2ICsyMDcwLDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlz
dGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIGluY2x1
CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBu
dWxscHRyKTsKIH0KIAorYm9vbCBUZXN0UnVubmVyOjppc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzU3RhdGlzdGljc0hhc0xvY2FsU3Rv
cmFnZSIpKTsKKyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhKU1N0cmluZyhob3N0TmFtZSkpOworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0
cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCBtZXNzYWdlQm9keS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJ
RChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLQm9v
bGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRh
KSkuZ2V0KCkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFn
ZUNhcChkb3VibGUgc2Vjb25kcykKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRp
c3RpY3NDYWNoZU1heEFnZUNhcCIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggM2JmM2QxYThmNTE3N2U1ODFhZWY4OGI0
MjQxYWE5OWRkMDBmYzEwOC4uN2EzNTVhODhiYzk3NGMzMWMxZDYwN2Q1ZWVmMDQ3ZWUxNmE1Mjc2
MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTQzMSw2ICs0MzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAg
IHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxD
bGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpOworICAgIGJvb2wgaXNTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlKEpTU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVy
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxi
YWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUz
ZGI2NTkyYWZiOGUxYTg3ZWM2NzM5YzUxYzMzZWU4OTY2NjYwZjcuLjZlZmIyY2I5YTNmYmExYzQ1
NDVlY2Y4MjE5ZDMzMDUxZDY4OWVkZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCkBAIC0zMzg3LDYgKzMzODcsMTUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaW5j
bHUKICAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CiB9CiAKK2Jvb2wgVGVz
dENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1N0cmluZ1JlZiBob3N0
KQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUo
cGxhdGZvcm1Db250ZXh0KCkpOworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4
dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9j
YWxTdG9yYWdlKGRhdGFTdG9yZSwgaG9zdCwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc0Jv
b2xlYW5SZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVv
dXQpOworICAgIHJldHVybiBjb250ZXh0LnJlc3VsdDsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1
dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250
ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDE4NDcx
NzJkODE3YjNhMmZjNjQ2ZWI3MmIzZDI5MDJmMjJlY2U5MGEuLjI5NTlhNjk5M2JjNmNiOTZlZGUy
MGRlZjFmYTY1NGYwZDQ5ZjFkOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKQEAgLTI0Miw2ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CiAg
ICAgdm9pZCBzdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYgaG9zdCwg
Ym9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKKyAgICBib29sIGlzU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZShXS1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
Q2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCA2N2ExNTVlMjBhOThmZThiNzIwZDM2NzMxZmM5MWZiMzFjZDQzNzllLi40
YzcwMzdiN2Y1Nzc1YzY2N2RmMzhiMDMxM2MxZGFjMDA0YWJlNTIwIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTQyNyw2ICsxNDI3LDE1IEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSXNTdGF0aXN0
aWNzSGFzTG9jYWxTdG9yYWdlIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3Nh
Z2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3Ry
aW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KTsK
KyAgICAgICAgYm9vbCBoYXNMb2NhbFN0b3JhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKGhvc3ROYW1lKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShoYXNMb2NhbFN0b3JhZ2UpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCIpKSB7CiAg
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEb3VibGVHZXRUeXBl
SUQoKSk7CiAgICAgICAgIFdLRG91YmxlUmVmIHNlY29uZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJs
ZVJlZj4obWVzc2FnZUJvZHkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc3ODdlOTA4NTAzYmY1ZTQ3MjRmZTdkODQyMzNl
YTVkYmNmNzAyNDAuLjE3Y2Q4MGI3NDIyNjAxMjdiZDJiNjQ4ZjA5MWZhZTg0NDJiYWNhOTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMy0yNyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IElQQyB0byB0
aGUgV2Vic2l0ZURhdGFTdG9yZSBpbiB0aGUgVUkgcHJvY2VzcyBmcm9tIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyODEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ4OTM4NzQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgdGVzdCBub3cgY292ZXJzIExvY2FsU3RvcmFnZSB0b28uCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJl
bW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0
ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9u
Lmh0bWw6CisKIDIwMTktMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgYmFzaWMgbGF5b3V0IHRlc3QgY292ZXJhZ2UgZm9yIEZpbGUgUGlja2VyIG9u
IGlPUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxp
bmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVk
LXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAyYWEyYmQ5YWNhMzIw
ZTUyOTQ3MDU3M2U3MTNiNGRkOGIyZDlmNjdlLi5kMzZkZmM0OGI4YTIyZjlmYjRjMTVjMzNlMmNk
NWZhMjdiMTE1YWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRv
LXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNp
dGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMywx
MyArMywxMyBAQCBDaGVjayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGdldHMgcmVtb3Zl
ZCBhZnRlciBhIG5hdmlnYXRpb24gd2l0aCBsaW5rIGRlYwogQmVmb3JlIGRlbGV0aW9uOiBDbGll
bnQtc2lkZSBjb29raWUgZXhpc3RzLgogQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUg
ZXhpc3RzLgogQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlz
dHMuCi0KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCiBC
ZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgogCiBBZnRlciBkZWxldGlvbjog
SHR0cE9ubHkgY29va2llIGV4aXN0cy4KIEFmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29r
aWUgZXhpc3RzLgogQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4
aXN0cy4KLQorQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIG5vdCBleGlz
dC4KIEFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCiAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNp
dGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dl
YnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3Jh
dGlvbi5odG1sCmluZGV4IGM5MTdhOTQ2ZDM2ZGRlZDE1NTY3ZTZhNzM2NjBjNTU3ZTc3NTlhYjgu
LjFkMDhhOTk2OTYyNzg0YTYxODE4YjEyMDg3MWI4YTc1ZGZkMTc5ZjYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEt
cmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0
ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9u
Lmh0bWwKQEAgLTkxLDYgKzkxLDQ0IEBACiAgICAgICAgIH07CiAgICAgfQogCisgICAgY29uc3Qg
bWF4SW50ZXJ2YWxzID0gMjA7CisgICAgbGV0IGludGVydmFsQ291bnRlcjsKKyAgICBsZXQgY2hl
Y2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZh
bElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9j
YWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdl
RXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3Vu
dGVyID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOwor
ICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50
aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJ
bnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYg
KCsraW50ZXJ2YWxDb3VudGVyID09PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShkZXN0aW5h
dGlvbk9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xv
Y2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBs
b2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZh
bHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlz
dC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXIgPT09IG1heElu
dGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
Q2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0
b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlv
bjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8g
ImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRl
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKICAgICAgICAgLy8gV3JpdGUgY29va2llcy4KICAg
ICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tp
ZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAi
c2FtZS1vcmlnaW4iIH0pOwpAQCAtOTgsMjEgKzEzNiwzMSBAQAogICAgICAgICBkb2N1bWVudC5j
b29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CiAKICAgICAgICAgY2hlY2tDb29r
aWVzKGZhbHNlKTsKLSAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKIAotICAgICAgICAv
LyBXcml0ZSBJbmRleGVkREIuCi0gICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgcHJvY2Vzc1dl
YnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAg
ICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdl
VmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24o
KSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0
ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRh
U3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRM
aW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURh
dGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENv
bnRpbnVlKCkgewogICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzKCk7CisgICAgICAgIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgp
OworICAgIH0KIAotICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgIGZ1bmN0aW9u
IGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKICAgICAgICAgY2hlY2tDb29raWVzKHRy
dWUpOwotICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOwotICAgICAgICBjaGVja0lEQkRh
dGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3Rv
cmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366198</attachid>
            <date>2019-03-28 13:32:25 -0700</date>
            <delta_ts>2019-03-28 14:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196281-20190328133224.patch</filename>
            <type>text/plain</type>
            <size>47641</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyODIwMmI5ZTRlODQ2ZDBm
NmZhZDUyNWFiNGJlNGMzNDdjYTI0ZGYuLjQxNmYwZmRhM2EwMjkxYTNlNzVlNDg2ZDU5YmY0MjA2
ZDIxODFlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMjggIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4gdGhlIFVJIHByb2Nlc3MgZnJv
bSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjgx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW92ZSBvZiBSZXNvdXJjZSBMb2FkIFN0
YXRpc3RpY3MgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyByZXF1aXJlcyB0aGF0IGl0CisgICAgICAg
IGNhbGxzIHRoZSBVSSBwcm9jZXNzIHdoZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIChwcmV2aW91
c2x5IHRoZSBvdGhlciB3YXkKKyAgICAgICAgYXJvdW5kKS4gVGhpcyBwYXRjaCBhY2hpZXZlcyB0
aGF0LgorCisgICAgICAgIFNwZWNpZmljYWxseSwgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkgbm93CisgICAgICAgIGZpbHRlcnMgaXRzIFdl
YnNpdGVEYXRhVHlwZXMgZG93biB0byBqdXN0IHRoZSBvbmVzIGFwcGxpY2FibGUgZm9yIHRoZSBV
SQorICAgICAgICBwcm9jZXNzIGFuZCB0aGVuIGNhbGxzIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMgb3ZlcgorICAgICAgICBJUEMuCisKKyAgICAgICAg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucygpIG9uCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIHNpZGUgbWFrZXMgdXNl
IG9mIHRoZSByZS1pbnRyb2R1Y2VkCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVsZXZhbnQKKyAg
ICAgICAgZGF0YSByZWNvcmRzIGFuZCBjYWxsIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
KS4gVGhlIHJlLWludHJvZHVjZWQKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKCkgd2FzIHJlbW92ZWQgYXMgZGVhZCBjb2RlIGluCisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDIwNTYvd2Via2l0LCB0aGVu
IHVuZGVyIHRoZSBuYW1lCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKCkuIFRoZSByZWFzb24gaXQKKyAgICAgICAgd2Fz
IGRlYWQgY29kZSB3YXMgdGhlIGxhY2sgb2YgSVBDIGNhbGwgdGhhdCB0aGlzIHBhdGNoIGFkZHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyk6CisgICAgICAgICAgIE5vdyBjYWxscyBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW5zIG92ZXIgSVBDIGlmIHRoZXJlCisgICAgICAgICAgIGFy
ZSBXZWJzaXRlRGF0YVR5cGVzIGFwcGxpY2FibGUgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6
b3duZXJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OmZpbHRlcik6Cisg
ICAgICAgICAgICBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gbWFuYWdlIHByb2Nlc3Mgb3duZXJz
aGlwIG9mIHdlYnNpdGUgZGF0YSB0eXBlcy4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2Nh
bFN0b3JhZ2UpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZSwgY2FsbGVkIGJ5IHRo
ZSBUZXN0UnVubmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0
ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgICAgICBOZXcg
ZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICAgICBO
b3cgbWF0Y2hlcyB3aXRoIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGluc3RlYWQgb2YgYSBz
dHJpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZXBs
YWNlZCBieSBXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcygpLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgICAg
IFJlLWludHJvZHVjZWQuIEl0IHdhcyByZW1vdmVkIGFzIGRlYWQgY29kZSBpbiByMjQyMDU2Lgor
ICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJl
bW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3Jh
Z2VGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUsIGNh
bGxlZCBieSB0aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBUaGUgbmV0d29yayBwcm9jZXNzIGlzIG5vdCBl
eGl0aW5nIHJlbGlhYmx5IHdoZW4gdGhlIFdlYlByb2Nlc3NQb29sIGlzIGRlc3Ryb3llZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3
M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAzYWM1YTlmNGEyLi42NjRmYTU3N2E0NTk5ZDI2
ZDc0NDQ1M2U0ZjA5NDYyZGMwY2U3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIldl
YlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKQEAgLTE1MjUsMjMgKzE1MjQsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICAgICAgCiAgICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0ZURh
dGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdG5hbWVX
aXRoQ29va2llcyA6IHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKQotICAgICAgICAg
ICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoaG9zdG5hbWVXaXRoQ29va2llcykpOwotCi0gICAgICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBob3N0bmFtZVdpdGhIU1RTIDogd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3RuYW1lV2l0aEhTVFMpKTsKLQotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0YS5lbnRyaWVzKQot
ICAgICAgICAgICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKTsKLQorICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbnMgPSBXVEZNb3ZlKG1fZG9tYWlucyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRvbWFpbnMpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKLSAgICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKKyAgICAgICAgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zOwogICAgIH07CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZigqbmV3IENhbGxiYWNrQWdncmVnYXRvcihbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2hvdWxkTm90
aWZ5UGFnZV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERh
dGEpIG11dGFibGUgewpAQCAtMTU1Myw3ICsxNTQyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgfSk7CiAgICAgfSkpOwogCi0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBIYXNoU2V0PFN0cmluZz4g
aG9zdE5hbWVzV2l0aENvb2tpZXM7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGU7CiAKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0
ZUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxl
dGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3I7CkBAIC0xNTc1LDEzICsxNTY1LDE5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3ROYW1l
c1dpdGhDb29raWVzKTsKIAotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
ZG9tYWluc1RvRGVsZXRlQ29va2llc0ZvciwgaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tp
ZXM6Olllcyk7CiAKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBm
aWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlD
b29raWVzRm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxl
dGUpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKKyAgICAg
ICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLCBob3N0TmFt
ZXNXaXRoQ29va2llcyk7CiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29y
ZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8pOworCisgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkKQEAgLTE1OTIsOCAr
MTU4OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAgICAgICAg
Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUg
PSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2ll
c0ZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKICAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MDEsOSArMTYwMSwxMCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaQogCiAgICAgLyoKICAgICAvLyBGSVhNRTogTm8gQVBJIHRvIGRlbGV0
ZSBjcmVkZW50aWFscyBieSBvcmlnaW4KKyAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhD
cmVkZW50aWFsczsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzKSkgewogICAgICAgICBpZiAoc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUub3JpZ2luc1dpdGhDcmVkZW50aWFs
cyA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2lu
c1dpdGhDcmVkZW50aWFscygpOworICAgICAgICAgICAgb3JpZ2luc1dpdGhDcmVkZW50aWFscyA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dp
dGhDcmVkZW50aWFscygpOwogICAgIH0KICAgICAqLwogICAgIApAQCAtMTYxMiw4ICsxNjEzLDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIAogICAgICAgICAgICAgYXV0
byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1Rv
RGVsZXRlQWxsQnV0Q29va2llc0ZvciwgZW50cmllcyk7CiAKLSAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzVG9E
ZWxldGUpOwotICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogZW50cmllc1RvRGVsZXRlKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
ZW50cnkub3JpZ2luLmhvc3QpKTsKKwogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
ZW50cnkub3JpZ2luIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKQEAgLTE2MjcsMTEgKzE2MjksMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMg
PSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRh
aW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9y
aWdpbi5ob3N0KSkpCisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9tYWluID0gUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoZG9tYWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoc2VjdXJpdHlPcmlnaW4p
OwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV9kb21haW5zLmFkZChkb21haW4pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlkYlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwpAQCAtMTY0Nyw3ICsxNjUwLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2kKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1
cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
SG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSk7CiAgICAgICAgICAgICAgICAgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCkuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKQEAgLTE2NjIsMTEgKzE2NjUsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5
Lm9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnkub3JpZ2luKTsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoZW50
cnkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhv
c3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhj
YWNoZSgpLCBlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAgICBhdXRv
IGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFU
eXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOworICAgIGlmICghZGF0YVR5cGVzRm9y
VUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWlu
IDogZG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cy5hZGQoZG9tYWluKTsKKyAgICAgICAgfTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
ZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25J
RCwgZGF0YVR5cGVzRm9yVUlQcm9jZXNzLCBmZXRjaE9wdGlvbnMsIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNTI5Zjg3OTIyMGY2ZTUxYTM0MGVlNGI3NjNhMjAyMzFhNzQ2N2VlYS4uZDg1MzAxYzhhYjVk
NTY1ZGRhMzQxMmQyMjlmN2IxZjdjMjNlZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCAwMTI0NTE5YmU5NWVjZWJhYTcwY2Q3NTQzMDQw
MzM5MGQ3YTFkYzA5Li45ZDVmNGI4MmEwNGQ2MzFmNDU2MDUwNTM0NDI2ODgyNTI3YjU4ZTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKQEAgLTg2LDQgKzg3LDU5IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1dlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vz
cyhXZWJzaXRlRGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgewor
ICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsK
KyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGU6CisgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpXZWI7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6Ok9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9j
ZXNzVHlwZTo6VUk7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOgor
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUk7CisgICAgY2FzZSBXZWJz
aXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJv
Y2Vzc1R5cGU6OlVJOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXM6
CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6TWVk
aWFLZXlzOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUk7CisgICAg
Y2FzZSBXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVE
YXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlYXJj
aEZpZWxkUmVjZW50U2VhcmNoZXM6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NU
eXBlOjpVSTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBjYXNlIFdlYnNp
dGVEYXRhVHlwZTo6UGx1Z0luRGF0YToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vz
c1R5cGU6OlVJOworI2VuZGlmCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3
b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczoKKyAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7Cisj
ZW5kaWYKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU6CisgICAgICAgIHJldHVy
biBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFU
eXBlOjpEZXZpY2VJZEhhc2hTYWx0OgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNz
VHlwZTo6VUk7CisgICAgfQorfQorCitPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBXZWJzaXRl
RGF0YTo6ZmlsdGVyKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHVuZmlsdGVyZWRXZWJzaXRl
RGF0YVR5cGVzLCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUp
Cit7CisgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmlsdGVyZWQ7CisgICAgZm9yIChh
dXRvIGRhdGFUeXBlIDogdW5maWx0ZXJlZFdlYnNpdGVEYXRhVHlwZXMpIHsKKyAgICAgICAgaWYg
KG93bmVyUHJvY2VzcyhkYXRhVHlwZSkgPT0gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSkKKyAgICAg
ICAgICAgIGZpbHRlcmVkLmFkZChkYXRhVHlwZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
aWx0ZXJlZDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhLmgKaW5kZXggYjYwOGY0ZjJhNDBhMGU0Njg5YjBjM2ZjODMzYTQ0ZTQyOGY0YmYw
MS4uNzY5N2EwZTJhMmY0NmZiMzA2M2I1ZWNkZjUyZDNhZTIxN2MyYTZlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBA
IC0zOSw2ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBlbnVtIGNsYXNzIFdlYnNpdGVE
YXRhVHlwZTsKIAorZW51bSBjbGFzcyBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlIHsgTmV0d29yaywg
VUksIFdlYiB9OworCiBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIHN0cnVjdCBFbnRyeSB7CiAg
ICAgICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CkBAIC02Miw2ICs2NSw4
IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURh
dGEmKTsKKyAgICBzdGF0aWMgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBvd25lclByb2Nlc3MoV2Vi
c2l0ZURhdGFUeXBlKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmls
dGVyKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDkwMjg1YjM5ZGM1Njc0N2ZiZmUzMjY4ZGM2ZDM2
OGZhZjIxNDM1OGQuLmI1ZDhlMmE5MzE5Y2NhMDAwOGI4ZTk2Y2VmYTU2NjRhMTg1ZDgzODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcApAQCAtNDQ5LDYgKzQ0OSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZAogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3Jh
Z2UpIHsKKyAgICAgICAgY2FsbGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKKyAgICB9
KTsKKyNlbHNlCisgICAgY2FsbGJhY2soZmFsc2UsIGNvbnRleHQpOworI2VuZGlmCit9CisKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBj
YWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aAppbmRleCBlNmEyYTAwN2YwMTJmNDI4NjgyOGJhYWUyNTI3OWY5NWE5ZjU1N2RhLi40NzljYWQ0
NjMxZmNlOWI0M2E0ZWU4MzgxMWFmY2UxZTEyMjY0Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtOTksNiAr
OTksOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJU
aHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3RpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2Fs
bGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0
ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFj
ayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlRnVuY3Rpb24pKGJvb2wgaGFzTG9jYWxTdG9yYWdlLCB2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2Fj
aGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNl
Y29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNo
ZU1heEFnZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwYjkxZTM5MWUzOTgzZDQxZWI1MjI2NDE2MzRiZGJh
NGY5NmE1ZTFhLi5jMTYzMWY5NzExNTlkMzAyOGRlOWYyOTE5MzlmOTI3Mjc1MWRiNGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTk5MSw2ICs5OTEsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMK
ICAgICAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpE
ZWxldGVDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiwgaW5jbHVkZUh0dHBPbmx5
Q29va2llcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVE
b21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRp
b25zLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3Rv
cmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlIHx8
IGRhdGFUeXBlcy5pc0VtcHR5KCkgfHwgZG9tYWlucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYnNp
dGVEYXRhU3RvcmUtPmZldGNoRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIGZl
dGNoT3B0aW9ucywgZG9tYWlucywgW2RhdGFUeXBlcywgd2Vic2l0ZURhdGFTdG9yZSA9IG1ha2VS
ZWYoKndlYnNpdGVEYXRhU3RvcmUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmIG1hdGNoaW5nRGF0YVJl
Y29yZHMsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWluc1dpdGhN
YXRjaGluZ0RhdGFSZWNvcmRzKSBtdXRhYmxlIHsKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+
cmVtb3ZlRGF0YShkYXRhVHlwZXMsIFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIFtkb21h
aW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMgPSBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdE
YXRhUmVjb3JkcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShk
b21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
CisKICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggMzcyMzU2Yjg2ODJjMjk5MzM5NTBkNzVhMGJmMzFiODg3ZDIxMzUwYy4uNWVm
NTExMTdkMjljODE1OWNlZDQ0NzU2MWQ1ZDgyNjlhNGYwODFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE0
OSw2ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYmKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9T
dXNwZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTYzODg5YmQ4ZjY4
ZjE3YzQ2NTJlYTQ5YjgxNmZjMzM2NzdkYmFhZS4uMTZlNWYzMDVmYjBlYzQyYzllNzMwODdlZTQ1
ZGVlYzVkMmRhMjhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDgsNiAr
NDgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgp
CiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2ln
bmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291
cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zKQogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJv
b2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxl
cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhUmVjb3JkLmNwcAppbmRleCA1NmQ0MGM3Y2IyNWRlMDliMjAzNDBhZDgzZDNjODIwZTBlMWY0
M2E3Li4zZmNiYzhmY2IxNmIwNTAzMWMwOWJjNTExY2FiZDRlYWRlMTZjYzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXpl
ZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTExMywyMCArMTE0LDIwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBob3N0SXNJbkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1Zp
ZXcgZG9tYWluKQogICAgIHJldHVybiAhc3VmZml4T2Zmc2V0IHx8IGhvc3Rbc3VmZml4T2Zmc2V0
IC0gMV0gPT0gJy4nOwogfQogCi1ib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4pIGNvbnN0Citib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW4uaXNFbXB0eSgpKQorICAgIGlmIChkb21haW4uaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3RO
YW1lIDogY29va2llSG9zdE5hbWVzKSB7Ci0gICAgICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4o
aG9zdE5hbWUsIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pKQorICAgICAgICAgICAgaWYg
KGhvc3RJc0luRG9tYWluKGhvc3ROYW1lLCBkb21haW4uc3RyaW5nKCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBhdXRv
JiBkYXRhUmVjb3JkT3JpZ2luRGF0YSA6IG9yaWdpbnMpIHsKLSAgICAgICAgaWYgKGhvc3RJc0lu
RG9tYWluKGRhdGFSZWNvcmRPcmlnaW5EYXRhLmhvc3QsIHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4pKQorICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4oZGF0YVJlY29yZE9yaWdpbkRhdGEu
aG9zdCwgZG9tYWluLnN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhUmVjb3JkLmgKaW5kZXggY2NmMzBhNzlhYmQwNTgyZWEwMDgxYmEzZGZmMzAyYmM3ZTgz
YjRjMi4uM2RmZjQwMTZjNDQ0ZjI4YWNkNmNlOGFlNzI5ODgxNTM1MDNkYTg2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJl
Y29yZC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiB9CiAKQEAgLTcyLDcgKzczLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRh
UmVjb3JkIHsKICAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKICAg
ICBIYXNoU2V0PFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzOwogCi0gICAgYm9vbCBtYXRjaGVz
VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBi
b29sIG1hdGNoZXMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAg
ICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigpOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAppbmRleCA5NzhkNjdkMTJjNzViMWFiZmMxMTQ0ODRjYWQzZjM3N2QyMzU5NWMzLi5lZjI5
NTdkMjY5MWEzMDVlMjY2MGFmMTVhOTY2ZTY0ZmM5Mjg1ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtNjIzLDM3ICs2MjMsNDQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRB
cHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiYsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGZldGNoRGF0YUFuZEFw
cGx5KGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zLCBtX3F1ZXVlLmNvcHlSZWYoKSwgW2RvbWFpbnMg
PSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgZXhpc3RpbmdEYXRhUmVjb3JkcykgbXV0YWJsZSB7
CisgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAKKyAgICAgICAg
VmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiBtYXRjaGluZ0RhdGFSZWNvcmRzOworICAgICAgICBI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHM7
CisgICAgICAgIGZvciAoYXV0byYmIGRhdGFSZWNvcmQgOiBleGlzdGluZ0RhdGFSZWNvcmRzKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZGF0YVJlY29yZC5tYXRjaGVzKGRvbWFpbikpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2hpbmdEYXRhUmVjb3Jkcy5hcHBlbmQoV1RGTW92ZShkYXRhUmVjb3JkKSk7CisgICAg
ICAgICAgICAgICAgICAgIGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3Jkcy5hZGQoZG9tYWlu
Lmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIGRv
bWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUoZG9tYWluc1dpdGhNYXRjaGlu
Z0RhdGFSZWNvcmRzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKG1hdGNoaW5nRGF0YVJlY29yZHMpLCBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hp
bmdEYXRhUmVjb3JkcykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKyNlbmRpZgorCiBzdGF0
aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRh
dGFSZW1vdmFsKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgYm9vbCBpc05v
blBlcnNpc3RlbnRTdG9yZSkKIHsKICAgICBQcm9jZXNzQWNjZXNzVHlwZSBwcm9jZXNzQWNjZXNz
VHlwZSA9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lOwogCi0gICAgaWYgKGRhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7Ci0gICAgICAgIGlmIChpc05vblBlcnNp
c3RlbnRTdG9yZSkKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJv
Y2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vz
c0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOworICAgIGZvciAoYXV0byBk
YXRhVHlwZSA6IGRhdGFUeXBlcykgeworICAgICAgICBpZiAoZGF0YVR5cGUgPT0gV2Vic2l0ZURh
dGFUeXBlOjpDb29raWVzKSB7CisgICAgICAgICAgICBpZiAoaXNOb25QZXJzaXN0ZW50U3RvcmUp
CisgICAgICAgICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNj
ZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nl
c3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKKyAgICAgICAgfSBlbHNl
IGlmIChXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKGRhdGFUeXBlKSA9PSBXZWJzaXRlRGF0YVBy
b2Nlc3NUeXBlOjpOZXR3b3JrKQorICAgICAgICAgICAgcmV0dXJuIFByb2Nlc3NBY2Nlc3NUeXBl
OjpMYXVuY2g7CiAgICAgfQotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkRpc2tDYWNoZSkgJiYgIWlzTm9uUGVyc2lzdGVudFN0b3JlKQotICAgICAgICBwcm9j
ZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNz
VHlwZTo6TGF1bmNoKTsKLQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpIU1RTQ2FjaGUpKQotICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHBy
b2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKLQotICAgIGlmIChk
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCi0gICAgICAg
IHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NB
Y2Nlc3NUeXBlOjpMYXVuY2gpOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkRPTUNhY2hlKSkKLSAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1h
eChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7Ci0KLSAgICBp
ZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSAmJiAhaXNOb25QZXJzaXN0ZW50U3RvcmUpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0g
c3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwog
ICAgIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmICFpc05v
blBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChw
cm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7Ci0jZW5kaWYKLQog
ICAgIHJldHVybiBwcm9jZXNzQWNjZXNzVHlwZTsKIH0KIApAQCAtMTc5NSw2ICsxODAyLDI1IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJM
JiB1cmwsIGJvb2wgaW5jbHVkZUh0dHBPCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+ZGVs
ZXRlQ29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH0sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KKwordm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dAoreworICAgIGlmICghbV9zdG9yYWdlTWFuYWdlcikgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0b3JhZ2VNYW5h
Z2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFt1cmwsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYmIG9yaWdpbnMpIG11dGFibGUgeworICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9y
aWdpbnMpIHsKKyAgICAgICAgICAgIGlmIChvcmlnaW4uaG9zdCA9PSB1cmwuaG9zdCgpKSB7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworICAgIH0pOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjUzOWZmOTcxMGRm
M2Y2OGFlNjc1N2I1Mjc2OGEzODMyMTViZGI2Yy4uMGM2ZjM5NmM4YWQwMTQ4Y2M0ZmZlMzE5N2Nj
MDk0NzlkNjYzNWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBIVFRQ
Q29va2llU3RvcmU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxl
RG9tYWluOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKQEAgLTEyNSw2ICsxMjYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBj
b25zdCBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgdm9pZCBmZXRjaERhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmLCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFj
dGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJik7CkBAIC0xNzEsNiArMTczLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoY29uc3QgVVJMJiBmcm9tVVJM
LCBjb25zdCBVUkwmIHRvVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CiAjZW5kaWYKICAg
ICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTlkYmU1NGRj
NWM0NTJmMTUxOTMyMGRlMmY0ZDliNzgyOGVlZDY0Ny4uNWEyMjMxNmNlNmI0YjBlMTk4OTEwNjMw
YWZhNGY5NzI0OTE1YTQwYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAzLTI4ICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczog
SVBDIHRvIHRoZSBXZWJzaXRlRGF0YVN0b3JlIGluIHRoZSBVSSBwcm9jZXNzIGZyb20gTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjI4MQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDg5Mzg3NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBmdW5jdGlvbiBpc1N0YXRp
c3RpY3NIYXNMb2NhbFN0b3JhZ2UoKSB0byB0aGUKKyAgICAgICAgVGVzdFJ1bm5lci4gV2l0aCBp
dCwgdGhlIHBhZ2UgY2FuIHF1ZXJ5IHRoZSBXZWJzaXRlRGF0YVN0b3JlIGluIHRoZQorICAgICAg
ICBVSSBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IHNlZXMgTG9jYWxTdG9yYWdlLgorCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjppc1N0YXRpc3RpY3NIYXNMb2Nh
bFN0b3JhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKwogMjAxOS0wMy0yNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVXBkYXRlIHRoZSB3YXkgZ2VuZXJhdGUteGNmaWxlbGlzdHMgcmV0dXJucyBz
dHJpbmdzIGZyb20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0ODFj
ZWViODI5YTRhOWQxZjAwN2JiMjU0NmEwMTRiNmY5NzZiNTc2Li4wODdkYTg0NjUyNTdmYmU2OWQz
NThiZjU3NzBlZjcyMzJjNjk1NWIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTMy
MSw2ICszMjEsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25l
ZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFy
VGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3Rh
dGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiBp
bmNsdWRlSHR0cE9ubHlDb29raWVzKTsKKyAgICBib29sZWFuIGlzU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShET01TdHJpbmcgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hl
TWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDI2
ZjI1NzViZDI1NzMzNjhlMmNkODYzNTY1OWIzNWU2YTJhMWRiMGYuLmQ3MzZmMGQxZjdjYTZhODU5
MTYwOGM0MjgxZmU0NThlNmZjMDU1MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA3MCw2ICsyMDcwLDE2IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5n
UmVmIGhvc3ROYW1lLCBib29sIGluY2x1CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAorYm9vbCBUZXN0UnVubmVyOjpp
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAg
YXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IklzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSIpKTsKKyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkpOworICAgIFdLVHlw
ZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25v
dXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5w
YWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgJnJldHVybkRhdGEp
OworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBl
SUQoKSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8
V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6
OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcykKIHsKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCIpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXgg
M2JmM2QxYThmNTE3N2U1ODFhZWY4OGI0MjQxYWE5OWRkMDBmYzEwOC4uN2EzNTVhODhiYzk3NGMz
MWMxZDYwN2Q1ZWVmMDQ3ZWUxNmE1Mjc2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQzMSw2ICs0MzEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpT
VmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JI
b3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwog
ICAgIHZvaWQgc3RhdGlzdGljc0NhbGxDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxs
YmFjaygpOworICAgIGJvb2wgaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKEpTU3RyaW5nUmVm
IGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUg
c2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1Zh
bHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGUzZGI2NTkyYWZiOGUxYTg3ZWM2NzM5YzUxYzMzZWU4OTY2
NjYwZjcuLjZlZmIyY2I5YTNmYmExYzQ1NDVlY2Y4MjE5ZDMzMDUxZDY4OWVkZDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMzg3LDYgKzMzODcsMTUg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KFdL
U3RyaW5nUmVmIGhvc3QsIGJvb2wgaW5jbHUKICAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5v
VGltZW91dCk7CiB9CiAKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShXS1N0cmluZ1JlZiBob3N0KQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29u
dGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFJlc291cmNl
U3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKGRhdGFTdG9yZSwgaG9zdCwgJmNvbnRl
eHQsIHJlc291cmNlU3RhdGlzdGljc0Jvb2xlYW5SZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50
aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIHJldHVybiBjb250ZXh0LnJlc3VsdDsK
K30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRv
dWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNp
dGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCmluZGV4IDE4NDcxNzJkODE3YjNhMmZjNjQ2ZWI3MmIzZDI5MDJmMjJlY2U5
MGEuLjI5NTlhNjk5M2JjNmNiOTZlZGUyMGRlZjFmYTY1NGYwZDQ5ZjFkOWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI0Miw2ICsyNDIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlm
aWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zv
ckhvc3QoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKKyAg
ICBib29sIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1N0cmluZ1JlZiBob3N0TmFtZSk7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOwog
ICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA2N2ExNTVlMjBhOThmZThiNzIw
ZDM2NzMxZmM5MWZiMzFjZDQzNzllLi40YzcwMzdiN2Y1Nzc1YzY2N2RmMzhiMDMxM2MxZGFjMDA0
YWJlNTIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAt
MTQyNyw2ICsxNDI3LDE1IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiSXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlIikpIHsKKyAgICAgICAg
QVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsK
KyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYm9vbCBoYXNMb2NhbFN0b3JhZ2UgPSBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKGhv
c3ROYW1lKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSho
YXNMb2NhbFN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3Rp
Y3NDYWNoZU1heEFnZUNhcCIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLRG91YmxlUmVmIHNlY29u
ZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2FnZUJvZHkpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc3ODdl
OTA4NTAzYmY1ZTQ3MjRmZTdkODQyMzNlYTVkYmNmNzAyNDAuLjQwYjNhNDEwOWE5MDdhOTc3YmJh
MmM4MTM0NDI1OGQ5MWU5OTk3OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMy0yOCAg
Sm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBM
b2FkIFN0YXRpc3RpY3M6IElQQyB0byB0aGUgV2Vic2l0ZURhdGFTdG9yZSBpbiB0aGUgVUkgcHJv
Y2VzcyBmcm9tIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTYyODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTM4NzQ4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdGVzdCBub3cgY292ZXJz
IExvY2FsU3RvcmFnZSB0b28uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgt
bGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVk
LXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWw6CisKIDIwMTktMDMtMjYgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFzaWMgbGF5b3V0IHRlc3QgY292
ZXJhZ2UgZm9yIEZpbGUgUGlja2VyIG9uIGlPUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1z
aXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJl
bW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVk
LnR4dAppbmRleCAyYWEyYmQ5YWNhMzIwZTUyOTQ3MDU3M2U3MTNiNGRkOGIyZDlmNjdlLi5kMzZk
ZmM0OGI4YTIyZjlmYjRjMTVjMzNlMmNkNWZhMjdiMTE1YWJjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vi
c2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywxMyBAQCBDaGVjayB0aGF0IG5vbi1jb29raWUg
d2Vic2l0ZSBkYXRhIGdldHMgcmVtb3ZlZCBhZnRlciBhIG5hdmlnYXRpb24gd2l0aCBsaW5rIGRl
YwogQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgogQmVmb3JlIGRl
bGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgogQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFy
IHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCi0KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9y
YWdlIGVudHJ5IGRvZXMgZXhpc3QuCiBCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4
aXN0LgogCiBBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KIEFmdGVyIGRl
bGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgogQWZ0ZXIgZGVsZXRpb246IFJlZ3Vs
YXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KLQorQWZ0ZXIgZGVsZXRpb246IExvY2FsU3Rv
cmFnZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KIEFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9l
cyBub3QgZXhpc3QuCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRl
ZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmln
YXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sCmluZGV4IGM5MTdhOTQ2ZDM2ZGRlZDE1
NTY3ZTZhNzM2NjBjNTU3ZTc3NTlhYjguLjFkMDhhOTk2OTYyNzg0YTYxODE4YjEyMDg3MWI4YTc1
ZGZkMTc5ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0
aC1saW5rLWRlY29yYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVk
LXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKQEAgLTkxLDYgKzkxLDQ0IEBACiAgICAgICAg
IH07CiAgICAgfQogCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisgICAgbGV0IGludGVy
dmFsQ291bnRlcjsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQg
Y2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUg
PSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1
bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2sp
IHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyID09PSBtYXhJbnRlcnZh
bHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFn
ZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExv
Y2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2Vz
IiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
IDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVy
ZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXIgPT09IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShkZXN0aW5hdGlv
bk9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2Fs
U3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2Nh
bFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUg
PT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIp
OworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKICAgICAg
ICAgLy8gV3JpdGUgY29va2llcy4KICAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291
cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29r
aWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOwpAQCAtOTgsMjEgKzEzNiwz
MSBAQAogICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9
MSI7CiAKICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKLSAgICAgICAgYWRkTGluZWJyZWFr
VG9PdXRwdXQoKTsKIAotICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCi0gICAgICAgIGNyZWF0
ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9y
ZUV4aXN0cyhmYWxzZSwgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICAv
LyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxT
dG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFn
ZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4
ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewogICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgICAgIGNoZWNr
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgIH0KIAotICAgICAgICBhZGRMaW5lYnJlYWtU
b091dHB1dCgpOworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsK
ICAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOwotICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1
dCgpOwotICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsK
KyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAg
ICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366206</attachid>
            <date>2019-03-28 14:31:23 -0700</date>
            <delta_ts>2019-03-28 18:16:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196281-20190328143122.patch</filename>
            <type>text/plain</type>
            <size>47650</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyODIwMmI5ZTRlODQ2ZDBm
NmZhZDUyNWFiNGJlNGMzNDdjYTI0ZGYuLjQxNmYwZmRhM2EwMjkxYTNlNzVlNDg2ZDU5YmY0MjA2
ZDIxODFlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMjggIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBJUEMgdG8gdGhlIFdlYnNpdGVEYXRhU3RvcmUgaW4gdGhlIFVJIHByb2Nlc3MgZnJv
bSBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjgx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzODc0OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW92ZSBvZiBSZXNvdXJjZSBMb2FkIFN0
YXRpc3RpY3MgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyByZXF1aXJlcyB0aGF0IGl0CisgICAgICAg
IGNhbGxzIHRoZSBVSSBwcm9jZXNzIHdoZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIChwcmV2aW91
c2x5IHRoZSBvdGhlciB3YXkKKyAgICAgICAgYXJvdW5kKS4gVGhpcyBwYXRjaCBhY2hpZXZlcyB0
aGF0LgorCisgICAgICAgIFNwZWNpZmljYWxseSwgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKCkgbm93CisgICAgICAgIGZpbHRlcnMgaXRzIFdl
YnNpdGVEYXRhVHlwZXMgZG93biB0byBqdXN0IHRoZSBvbmVzIGFwcGxpY2FibGUgZm9yIHRoZSBV
SQorICAgICAgICBwcm9jZXNzIGFuZCB0aGVuIGNhbGxzIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMgb3ZlcgorICAgICAgICBJUEMuCisKKyAgICAgICAg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucygpIG9uCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIHNpZGUgbWFrZXMgdXNl
IG9mIHRoZSByZS1pbnRyb2R1Y2VkCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucygpIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVsZXZhbnQKKyAg
ICAgICAgZGF0YSByZWNvcmRzIGFuZCBjYWxsIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
KS4gVGhlIHJlLWludHJvZHVjZWQKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKCkgd2FzIHJlbW92ZWQgYXMgZGVhZCBjb2RlIGluCisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDIwNTYvd2Via2l0LCB0aGVu
IHVuZGVyIHRoZSBuYW1lCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKCkuIFRoZSByZWFzb24gaXQKKyAgICAgICAgd2Fz
IGRlYWQgY29kZSB3YXMgdGhlIGxhY2sgb2YgSVBDIGNhbGwgdGhhdCB0aGlzIHBhdGNoIGFkZHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyk6CisgICAgICAgICAgIE5vdyBjYWxscyBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW5zIG92ZXIgSVBDIGlmIHRoZXJlCisgICAgICAgICAgIGFy
ZSBXZWJzaXRlRGF0YVR5cGVzIGFwcGxpY2FibGUgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6
b3duZXJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OmZpbHRlcik6Cisg
ICAgICAgICAgICBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gbWFuYWdlIHByb2Nlc3Mgb3duZXJz
aGlwIG9mIHdlYnNpdGUgZGF0YSB0eXBlcy4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2Nh
bFN0b3JhZ2UpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZSwgY2FsbGVkIGJ5IHRo
ZSBUZXN0UnVubmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0
ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgICAgICBOZXcg
ZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICAgICBO
b3cgbWF0Y2hlcyB3aXRoIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGluc3RlYWQgb2YgYSBz
dHJpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZXBs
YWNlZCBieSBXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlcygpLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgICAg
IFJlLWludHJvZHVjZWQuIEl0IHdhcyByZW1vdmVkIGFzIGRlYWQgY29kZSBpbiByMjQyMDU2Lgor
ICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJl
bW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3Jh
Z2VGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUsIGNh
bGxlZCBieSB0aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBUaGUgbmV0d29yayBwcm9jZXNzIGlzIG5vdCBl
eGl0aW5nIHJlbGlhYmx5IHdoZW4gdGhlIFdlYlByb2Nlc3NQb29sIGlzIGRlc3Ryb3llZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3
M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAzYWM1YTlmNGEyLi42NjRmYTU3N2E0NTk5ZDI2
ZDc0NDQ1M2U0ZjA5NDYyZGMwY2U3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIldl
YlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKQEAgLTE1MjUsMjMgKzE1MjQsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICAgICAgCiAgICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0ZURh
dGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdG5hbWVX
aXRoQ29va2llcyA6IHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKQotICAgICAgICAg
ICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoaG9zdG5hbWVXaXRoQ29va2llcykpOwotCi0gICAgICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBob3N0bmFtZVdpdGhIU1RTIDogd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3RuYW1lV2l0aEhTVFMpKTsKLQotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0YS5lbnRyaWVzKQot
ICAgICAgICAgICAgICAgICAgICBkb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKTsKLQorICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbnMgPSBXVEZNb3ZlKG1fZG9tYWlucyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRvbWFpbnMpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKLSAgICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKKyAgICAgICAgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zOwogICAgIH07CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZigqbmV3IENhbGxiYWNrQWdncmVnYXRvcihbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2hvdWxkTm90
aWZ5UGFnZV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERh
dGEpIG11dGFibGUgewpAQCAtMTU1Myw3ICsxNTQyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgfSk7CiAgICAgfSkpOwogCi0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBIYXNoU2V0PFN0cmluZz4g
aG9zdE5hbWVzV2l0aENvb2tpZXM7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGU7CiAKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0
ZUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxl
dGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3I7CkBAIC0xNTc1LDEzICsxNTY1LDE5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3ROYW1l
c1dpdGhDb29raWVzKTsKIAotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
ZG9tYWluc1RvRGVsZXRlQ29va2llc0ZvciwgaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tp
ZXM6Olllcyk7CiAKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBm
aWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlD
b29raWVzRm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxl
dGUpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKKyAgICAg
ICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLCBob3N0TmFt
ZXNXaXRoQ29va2llcyk7CiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29y
ZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8pOworCisgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkKQEAgLTE1OTIsOCAr
MTU4OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9y
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAgICAgICAg
Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUg
PSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2ll
c0ZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisKICAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MDEsOSArMTYwMSwxMCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaQogCiAgICAgLyoKICAgICAvLyBGSVhNRTogTm8gQVBJIHRvIGRlbGV0
ZSBjcmVkZW50aWFscyBieSBvcmlnaW4KKyAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhD
cmVkZW50aWFsczsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzKSkgewogICAgICAgICBpZiAoc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUub3JpZ2luc1dpdGhDcmVkZW50aWFs
cyA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2lu
c1dpdGhDcmVkZW50aWFscygpOworICAgICAgICAgICAgb3JpZ2luc1dpdGhDcmVkZW50aWFscyA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dp
dGhDcmVkZW50aWFscygpOwogICAgIH0KICAgICAqLwogICAgIApAQCAtMTYxMiw4ICsxNjEzLDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIAogICAgICAgICAgICAgYXV0
byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1Rv
RGVsZXRlQWxsQnV0Q29va2llc0ZvciwgZW50cmllcyk7CiAKLSAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzVG9E
ZWxldGUpOwotICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogZW50cmllc1RvRGVsZXRlKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
ZW50cnkub3JpZ2luLmhvc3QpKTsKKwogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
ZW50cnkub3JpZ2luIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKQEAgLTE2MjcsMTEgKzE2MjksMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMg
PSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRh
aW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9y
aWdpbi5ob3N0KSkpCisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9tYWluID0gUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoZG9tYWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoc2VjdXJpdHlPcmlnaW4p
OwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV9kb21haW5zLmFkZChkb21haW4pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlkYlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwpAQCAtMTY0Nyw3ICsxNjUwLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2kKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1
cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
SG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSk7CiAgICAgICAgICAgICAgICAgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCkuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKQEAgLTE2NjIsMTEgKzE2NjUsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Iu
Y29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5
Lm9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnkub3JpZ2luKTsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoZW50
cnkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhv
c3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhj
YWNoZSgpLCBlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAgICBhdXRv
IGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFU
eXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOworICAgIGlmICghZGF0YVR5cGVzRm9y
VUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWlu
IDogZG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cy5hZGQoZG9tYWluKTsKKyAgICAgICAgfTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
ZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25J
RCwgZGF0YVR5cGVzRm9yVUlQcm9jZXNzLCBmZXRjaE9wdGlvbnMsIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNTI5Zjg3OTIyMGY2ZTUxYTM0MGVlNGI3NjNhMjAyMzFhNzQ2N2VlYS4uZDg1MzAxYzhhYjVk
NTY1ZGRhMzQxMmQyMjlmN2IxZjdjMjNlZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCAwMTI0NTE5YmU5NWVjZWJhYTcwY2Q3NTQzMDQw
MzM5MGQ3YTFkYzA5Li45ZDVmNGI4MmEwNGQ2MzFmNDU2MDUwNTM0NDI2ODgyNTI3YjU4ZTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKQEAgLTg2LDQgKzg3LDU5IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1dlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vz
cyhXZWJzaXRlRGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgewor
ICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsK
KyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGU6CisgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpXZWI7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6Ok9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9j
ZXNzVHlwZTo6VUk7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOgor
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUk7CisgICAgY2FzZSBXZWJz
aXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJv
Y2Vzc1R5cGU6OlVJOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXM6
CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKKyAgICBjYXNlIFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6TWVk
aWFLZXlzOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUk7CisgICAg
Y2FzZSBXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVE
YXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlYXJj
aEZpZWxkUmVjZW50U2VhcmNoZXM6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NU
eXBlOjpVSTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBjYXNlIFdlYnNp
dGVEYXRhVHlwZTo6UGx1Z0luRGF0YToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vz
c1R5cGU6OlVJOworI2VuZGlmCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3
b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczoKKyAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uczoKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7Cisj
ZW5kaWYKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU6CisgICAgICAgIHJldHVy
biBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworICAgIGNhc2UgV2Vic2l0ZURhdGFU
eXBlOjpEZXZpY2VJZEhhc2hTYWx0OgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNz
VHlwZTo6VUk7CisgICAgfQorfQorCitPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBXZWJzaXRl
RGF0YTo6ZmlsdGVyKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHVuZmlsdGVyZWRXZWJzaXRl
RGF0YVR5cGVzLCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUp
Cit7CisgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmlsdGVyZWQ7CisgICAgZm9yIChh
dXRvIGRhdGFUeXBlIDogdW5maWx0ZXJlZFdlYnNpdGVEYXRhVHlwZXMpIHsKKyAgICAgICAgaWYg
KG93bmVyUHJvY2VzcyhkYXRhVHlwZSkgPT0gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSkKKyAgICAg
ICAgICAgIGZpbHRlcmVkLmFkZChkYXRhVHlwZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
aWx0ZXJlZDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhLmgKaW5kZXggYjYwOGY0ZjJhNDBhMGU0Njg5YjBjM2ZjODMzYTQ0ZTQyOGY0YmYw
MS4uNzY5N2EwZTJhMmY0NmZiMzA2M2I1ZWNkZjUyZDNhZTIxN2MyYTZlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBA
IC0zOSw2ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBlbnVtIGNsYXNzIFdlYnNpdGVE
YXRhVHlwZTsKIAorZW51bSBjbGFzcyBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlIHsgTmV0d29yaywg
VUksIFdlYiB9OworCiBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIHN0cnVjdCBFbnRyeSB7CiAg
ICAgICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CkBAIC02Miw2ICs2NSw4
IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURh
dGEmKTsKKyAgICBzdGF0aWMgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBvd25lclByb2Nlc3MoV2Vi
c2l0ZURhdGFUeXBlKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmls
dGVyKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlKTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDkwMjg1YjM5ZGM1Njc0N2ZiZmUzMjY4ZGM2ZDM2
OGZhZjIxNDM1OGQuLmI1ZDhlMmE5MzE5Y2NhMDAwOGI4ZTk2Y2VmYTU2NjRhMTg1ZDgzODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcApAQCAtNDQ5LDYgKzQ0OSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZAogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3Jh
Z2UpIHsKKyAgICAgICAgY2FsbGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKKyAgICB9
KTsKKyNlbHNlCisgICAgY2FsbGJhY2soZmFsc2UsIGNvbnRleHQpOworI2VuZGlmCit9CisKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBj
YWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aAppbmRleCBlNmEyYTAwN2YwMTJmNDI4NjgyOGJhYWUyNTI3OWY5NWE5ZjU1N2RhLi40NzljYWQ0
NjMxZmNlOWI0M2E0ZWU4MzgxMWFmY2UxZTEyMjY0Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtOTksNiAr
OTksOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJU
aHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3RpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2Fs
bGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0
ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFj
ayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlRnVuY3Rpb24pKGJvb2wgaGFzTG9jYWxTdG9yYWdlLCB2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2Fj
aGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNl
Y29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNo
ZU1heEFnZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwYjkxZTM5MWUzOTgzZDQxZWI1MjI2NDE2MzRiZGJh
NGY5NmE1ZTFhLi5jMTYzMWY5NzExNTlkMzAyOGRlOWYyOTE5MzlmOTI3Mjc1MWRiNGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTk5MSw2ICs5OTEsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMK
ICAgICAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpE
ZWxldGVDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiwgaW5jbHVkZUh0dHBPbmx5
Q29va2llcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVE
b21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRp
b25zLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3Rv
cmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlIHx8
IGRhdGFUeXBlcy5pc0VtcHR5KCkgfHwgZG9tYWlucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYnNp
dGVEYXRhU3RvcmUtPmZldGNoRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIGZl
dGNoT3B0aW9ucywgZG9tYWlucywgW2RhdGFUeXBlcywgd2Vic2l0ZURhdGFTdG9yZSA9IG1ha2VS
ZWYoKndlYnNpdGVEYXRhU3RvcmUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmIG1hdGNoaW5nRGF0YVJl
Y29yZHMsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWluc1dpdGhN
YXRjaGluZ0RhdGFSZWNvcmRzKSBtdXRhYmxlIHsKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+
cmVtb3ZlRGF0YShkYXRhVHlwZXMsIFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIFtkb21h
aW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMgPSBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdE
YXRhUmVjb3JkcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShk
b21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
CisKICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggMzcyMzU2Yjg2ODJjMjk5MzM5NTBkNzVhMGJmMzFiODg3ZDIxMzUwYy4uNWVm
NTExMTdkMjljODE1OWNlZDQ0NzU2MWQ1ZDgyNjlhNGYwODFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE0
OSw2ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYmKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9T
dXNwZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTYzODg5YmQ4ZjY4
ZjE3YzQ2NTJlYTQ5YjgxNmZjMzM2NzdkYmFhZS4uMTZlNWYzMDVmYjBlYzQyYzllNzMwODdlZTQ1
ZGVlYzVkMmRhMjhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDgsNiAr
NDgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgp
CiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2ln
bmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291
cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zKQogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJv
b2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxl
cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhUmVjb3JkLmNwcAppbmRleCA1NmQ0MGM3Y2IyNWRlMDliMjAzNDBhZDgzZDNjODIwZTBlMWY0
M2E3Li4zZmNiYzhmY2IxNmIwNTAzMWMwOWJjNTExY2FiZDRlYWRlMTZjYzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXpl
ZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTExMywyMCArMTE0LDIwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBob3N0SXNJbkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1Zp
ZXcgZG9tYWluKQogICAgIHJldHVybiAhc3VmZml4T2Zmc2V0IHx8IGhvc3Rbc3VmZml4T2Zmc2V0
IC0gMV0gPT0gJy4nOwogfQogCi1ib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4pIGNvbnN0Citib29sIFdlYnNpdGVEYXRhUmVjb3JkOjptYXRjaGVzKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW4uaXNFbXB0eSgpKQorICAgIGlmIChkb21haW4uaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3RO
YW1lIDogY29va2llSG9zdE5hbWVzKSB7Ci0gICAgICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4o
aG9zdE5hbWUsIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pKQorICAgICAgICAgICAgaWYg
KGhvc3RJc0luRG9tYWluKGhvc3ROYW1lLCBkb21haW4uc3RyaW5nKCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBhdXRv
JiBkYXRhUmVjb3JkT3JpZ2luRGF0YSA6IG9yaWdpbnMpIHsKLSAgICAgICAgaWYgKGhvc3RJc0lu
RG9tYWluKGRhdGFSZWNvcmRPcmlnaW5EYXRhLmhvc3QsIHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4pKQorICAgICAgICBpZiAoaG9zdElzSW5Eb21haW4oZGF0YVJlY29yZE9yaWdpbkRhdGEu
aG9zdCwgZG9tYWluLnN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhUmVjb3JkLmgKaW5kZXggY2NmMzBhNzlhYmQwNTgyZWEwMDgxYmEzZGZmMzAyYmM3ZTgz
YjRjMi4uM2RmZjQwMTZjNDQ0ZjI4YWNkNmNlOGFlNzI5ODgxNTM1MDNkYTg2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJl
Y29yZC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiB9CiAKQEAgLTcyLDcgKzczLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRh
UmVjb3JkIHsKICAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKICAg
ICBIYXNoU2V0PFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzOwogCi0gICAgYm9vbCBtYXRjaGVz
VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBi
b29sIG1hdGNoZXMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAg
ICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigpOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAppbmRleCA5NzhkNjdkMTJjNzViMWFiZmMxMTQ0ODRjYWQzZjM3N2QyMzU5NWMzLi40MzEx
NmI5MTliZTMwNDI4YjA4ZWQ5MDY5YzQ0MzUzMGZlNjNlODdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtNjIzLDM3ICs2MjMsNDQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRB
cHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiYsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGZldGNoRGF0YUFuZEFw
cGx5KGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zLCBtX3F1ZXVlLmNvcHlSZWYoKSwgW2RvbWFpbnMg
PSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgZXhpc3RpbmdEYXRhUmVjb3JkcykgbXV0YWJsZSB7
CisgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAKKyAgICAgICAg
VmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiBtYXRjaGluZ0RhdGFSZWNvcmRzOworICAgICAgICBI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0
YVJlY29yZHM7CisgICAgICAgIGZvciAoYXV0byYmIGRhdGFSZWNvcmQgOiBleGlzdGluZ0RhdGFS
ZWNvcmRzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZGF0YVJlY29yZC5tYXRjaGVzKGRvbWFpbikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hpbmdEYXRhUmVjb3Jkcy5hcHBlbmQoV1RGTW92ZShkYXRhUmVjb3Jk
KSk7CisgICAgICAgICAgICAgICAgICAgIGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3Jkcy5h
ZGQoZG9tYWluLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUobWF0Y2hpbmdEYXRhUmVj
b3JkcyksIGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcyA9IFdURk1vdmUoZG9tYWluc1dp
dGhNYXRjaGluZ0RhdGFSZWNvcmRzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKG1hdGNoaW5nRGF0YVJlY29yZHMpLCBXVEZNb3ZlKGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKyNlbmRp
ZgorCiBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNz
VHlwZUZvckRhdGFSZW1vdmFsKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywg
Ym9vbCBpc05vblBlcnNpc3RlbnRTdG9yZSkKIHsKICAgICBQcm9jZXNzQWNjZXNzVHlwZSBwcm9j
ZXNzQWNjZXNzVHlwZSA9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lOwogCi0gICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7Ci0gICAgICAgIGlmIChp
c05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3Rk
OjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hl
ZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjpt
YXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOworICAgIGZv
ciAoYXV0byBkYXRhVHlwZSA6IGRhdGFUeXBlcykgeworICAgICAgICBpZiAoZGF0YVR5cGUgPT0g
V2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSB7CisgICAgICAgICAgICBpZiAoaXNOb25QZXJzaXN0
ZW50U3RvcmUpCisgICAgICAgICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChw
cm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6
bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKGRhdGFUeXBlKSA9PSBXZWJz
aXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrKQorICAgICAgICAgICAgcmV0dXJuIFByb2Nlc3NB
Y2Nlc3NUeXBlOjpMYXVuY2g7CiAgICAgfQotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkgJiYgIWlzTm9uUGVyc2lzdGVudFN0b3JlKQotICAg
ICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9j
ZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKLQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQotICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0
ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKLQot
ICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykp
Ci0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUs
IFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKLSAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUg
PSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7
Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiAhaXNOb25QZXJzaXN0ZW50U3RvcmUpCi0gICAgICAgIHByb2Nlc3NBY2Nl
c3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpM
YXVuY2gpOwogICAgIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
ICYmICFpc05vblBlcnNpc3RlbnRTdG9yZSkKLSAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBz
dGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7Ci0j
ZW5kaWYKLQogICAgIHJldHVybiBwcm9jZXNzQWNjZXNzVHlwZTsKIH0KIApAQCAtMTc5NSw2ICsx
ODAyLDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlQ29va2llc0ZvclRlc3Rpbmco
Y29uc3QgVVJMJiB1cmwsIGJvb2wgaW5jbHVkZUh0dHBPCiAgICAgICAgICAgICBuZXR3b3JrUHJv
Y2Vzcy0+ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHsgdXJsIH0sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0K
Kwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKGNvbnN0
IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdAoreworICAgIGlmICghbV9zdG9yYWdlTWFuYWdlcikgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0
b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFt1cmwsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYmIG9yaWdpbnMpIG11dGFibGUgeworICAgICAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGlmIChvcmlnaW4uaG9zdCA9PSB1cmwuaG9z
dCgpKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0pOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjUz
OWZmOTcxMGRmM2Y2OGFlNjc1N2I1Mjc2OGEzODMyMTViZGI2Yy4uMGM2ZjM5NmM4YWQwMTQ4Y2M0
ZmZlMzE5N2NjMDk0NzlkNjYzNWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjEsNiArNjEsNyBAQCBj
bGFzcyBIVFRQQ29va2llU3RvcmU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJl
Z2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKQEAgLTEyNSw2ICsx
MjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBjb25zdCBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+JiwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgdm9pZCBmZXRjaERhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmLCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNzEsNiArMTczLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoY29uc3QgVVJM
JiBmcm9tVVJMLCBjb25zdCBVUkwmIHRvVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0xvY2FsU3RvcmFnZUZvclRlc3Rp
bmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CiAj
ZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
OTlkYmU1NGRjNWM0NTJmMTUxOTMyMGRlMmY0ZDliNzgyOGVlZDY0Ny4uNWEyMjMxNmNlNmI0YjBl
MTk4OTEwNjMwYWZhNGY5NzI0OTE1YTQwYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAzLTI4ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogSVBDIHRvIHRoZSBXZWJzaXRlRGF0YVN0b3JlIGluIHRoZSBVSSBwcm9jZXNzIGZy
b20gTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5z
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjI4
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5Mzg3NDg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBmdW5jdGlv
biBpc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoKSB0byB0aGUKKyAgICAgICAgVGVzdFJ1bm5l
ci4gV2l0aCBpdCwgdGhlIHBhZ2UgY2FuIHF1ZXJ5IHRoZSBXZWJzaXRlRGF0YVN0b3JlIGluIHRo
ZQorICAgICAgICBVSSBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IHNlZXMgTG9jYWxTdG9y
YWdlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjppc1N0YXRpc3Rp
Y3NIYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFz
TG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wMy0yNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRoZSB3YXkgZ2VuZXJhdGUteGNmaWxlbGlzdHMg
cmV0dXJucyBzdHJpbmdzIGZyb20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApp
bmRleCA0ODFjZWViODI5YTRhOWQxZjAwN2JiMjU0NmEwMTRiNmY5NzZiNTc2Li4wODdkYTg0NjUy
NTdmYmU2OWQzNThiZjU3NzBlZjcyMzJjNjk1NWIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKQEAgLTMyMSw2ICszMjEsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vy
cyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlz
dGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChvYmplY3QgY2FsbGJhY2spOwogICAg
IHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KERPTVN0cmluZyBob3N0TmFtZSwg
Ym9vbGVhbiBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKKyAgICBib29sZWFuIGlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShET01TdHJpbmcgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlz
dGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CmluZGV4IDI2ZjI1NzViZDI1NzMzNjhlMmNkODYzNTY1OWIzNWU2YTJhMWRiMGYuLmQ3MzZmMGQx
ZjdjYTZhODU5MTYwOGM0MjgxZmU0NThlNmZjMDU1MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA3MCw2ICsy
MDcwLDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0
KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIGluY2x1CiAgICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAorYm9vbCBUZXN0
UnVubmVyOjppc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUp
Cit7CisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIklzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSIpKTsKKyAgICBhdXRvIG1lc3Nh
Z2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkpOwor
ICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0
U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
cGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgJnJl
dHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xl
YW5HZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3Rh
dGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOworfQorCiB2b2lkIFRl
c3RSdW5uZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcykKIHsK
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCIpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKaW5kZXggM2JmM2QxYThmNTE3N2U1ODFhZWY4OGI0MjQxYWE5OWRkMDBmYzEwOC4uN2EzNTVh
ODhiYzk3NGMzMWMxZDYwN2Q1ZWVmMDQ3ZWUxNmE1Mjc2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQzMSw2ICs0MzEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFS
ZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNv
b2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIGluY2x1ZGVIdHRwT25seUNv
b2tpZXMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJl
bW92YWxDYWxsYmFjaygpOworICAgIGJvb2wgaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKEpT
U3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3ND
YWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUzZGI2NTkyYWZiOGUxYTg3ZWM2NzM5YzUx
YzMzZWU4OTY2NjYwZjcuLjZlZmIyY2I5YTNmYmExYzQ1NDVlY2Y4MjE5ZDMzMDUxZDY4OWVkZDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMzg3LDYg
KzMzODcsMTUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNG
b3JIb3N0KFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaW5jbHUKICAgICBydW5VbnRpbChjb250ZXh0
LmRvbmUsIG5vVGltZW91dCk7CiB9CiAKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShXS1N0cmluZ1JlZiBob3N0KQoreworICAgIGF1dG8qIGRhdGFTdG9y
ZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAg
IFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKGRhdGFTdG9yZSwgaG9z
dCwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc0Jvb2xlYW5SZXN1bHRDYWxsYmFjayk7Cisg
ICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIHJldHVybiBjb250ZXh0
LnJlc3VsdDsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4
QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4
dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDE4NDcxNzJkODE3YjNhMmZjNjQ2ZWI3MmIzZDI5
MDJmMjJlY2U5MGEuLjI5NTlhNjk5M2JjNmNiOTZlZGUyMGRlZjFmYTY1NGYwZDQ5ZjFkOWYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI0Miw2ICsyNDIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xl
YXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGVsZXRl
Q29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29r
aWVzKTsKKyAgICBib29sIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1N0cmluZ1JlZiBo
b3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNl
Y29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA2N2ExNTVlMjBh
OThmZThiNzIwZDM2NzMxZmM5MWZiMzFjZDQzNzllLi40YzcwMzdiN2Y1Nzc1YzY2N2RmMzhiMDMx
M2MxZGFjMDA0YWJlNTIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcApAQCAtMTQyNyw2ICsxNDI3LDE1IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlIikpIHsK
KyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5
cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGlj
X2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYm9vbCBoYXNMb2NhbFN0
b3JhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaXNTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlKGhvc3ROYW1lKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFdLKFdLQm9vbGVh
bkNyZWF0ZShoYXNMb2NhbFN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNl
dFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLRG91Ymxl
UmVmIHNlY29uZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2FnZUJvZHkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDc3ODdlOTA4NTAzYmY1ZTQ3MjRmZTdkODQyMzNlYTVkYmNmNzAyNDAuLjQwYjNhNDEwOWE5
MDdhOTc3YmJhMmM4MTM0NDI1OGQ5MWU5OTk3OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
OS0wMy0yOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IElQQyB0byB0aGUgV2Vic2l0ZURhdGFTdG9yZSBpbiB0
aGUgVUkgcHJvY2VzcyBmcm9tIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWlucygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTYyODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTM4NzQ4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdGVzdCBu
b3cgY292ZXJzIExvY2FsU3RvcmFnZSB0b28uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVk
LXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUt
bmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWw6CisKIDIwMTktMDMtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFzaWMgbGF5b3V0
IHRlc3QgY292ZXJhZ2UgZm9yIEZpbGUgUGlja2VyIG9uIGlPUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1v
dmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0
ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9u
LWV4cGVjdGVkLnR4dAppbmRleCAyYWEyYmQ5YWNhMzIwZTUyOTQ3MDU3M2U3MTNiNGRkOGIyZDlm
NjdlLi5kMzZkZmM0OGI4YTIyZjlmYjRjMTVjMzNlMmNkNWZhMjdiMTE1YWJjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1k
YXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGlu
ay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywxMyBAQCBDaGVjayB0aGF0IG5v
bi1jb29raWUgd2Vic2l0ZSBkYXRhIGdldHMgcmVtb3ZlZCBhZnRlciBhIG5hdmlnYXRpb24gd2l0
aCBsaW5rIGRlYwogQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgog
QmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgogQmVmb3JlIGRlbGV0aW9u
OiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCi0KK0JlZm9yZSBkZWxldGlvbjog
TG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCiBCZWZvcmUgZGVsZXRpb246IElEQiBlbnRy
eSBkb2VzIGV4aXN0LgogCiBBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4K
IEFmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgogQWZ0ZXIgZGVsZXRp
b246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KLQorQWZ0ZXIgZGVsZXRpb246
IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KIEFmdGVyIGRlbGV0aW9uOiBJREIg
ZW50cnkgZG9lcyBub3QgZXhpc3QuCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRl
LW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1z
aXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sCmluZGV4IGM5MTdhOTQ2
ZDM2ZGRlZDE1NTY3ZTZhNzM2NjBjNTU3ZTc3NTlhYjguLjFkMDhhOTk2OTYyNzg0YTYxODE4YjEy
MDg3MWI4YTc1ZGZkMTc5ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0
ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUt
bmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKQEAgLTkxLDYgKzkxLDQ0IEBA
CiAgICAgICAgIH07CiAgICAgfQogCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisgICAg
bGV0IGludGVydmFsQ291bnRlcjsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsK
KyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3Rv
cmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUi
OworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwg
Y2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyID0gMDsKKyAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxl
dGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdl
LgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyID09PSBt
YXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xv
Y2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2Nh
bFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVs
ZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1
ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1
bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoKytpbnRlcnZhbENvdW50ZXIgPT09IG1heEludGVydmFscykgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShk
ZXN0aW5hdGlvbk9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIg
KyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAi
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgp
IHsKICAgICAgICAgLy8gV3JpdGUgY29va2llcy4KICAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29r
aWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0
cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOwpAQCAtOTgs
MjEgKzEzNiwzMSBAQAogICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2ll
TmFtZSArICI9MSI7CiAKICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKLSAgICAgICAgYWRk
TGluZWJyZWFrVG9PdXRwdXQoKTsKIAotICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCi0gICAg
ICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjaGVja0lE
QkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUpOwor
ICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0
ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xv
Y2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdy
aXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewogICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAg
ICAgIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgIH0KIAotICAgICAgICBhZGRM
aW5lYnJlYWtUb091dHB1dCgpOworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpIHsKICAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOwotICAgICAgICBhZGRMaW5lYnJl
YWtUb091dHB1dCgpOwotICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5p
c2hUZXN0KTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVz
dCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>