<?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>195923</bug_id>
          
          <creation_ts>2019-03-18 17:25:14 -0700</creation_ts>
          <short_desc>Resource Load Statistics (experimental): Clear non-cookie website data for sites that have been navigated to, with link decoration, by a prevalent resource</short_desc>
          <delta_ts>2019-05-23 10:58:23 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196017</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=198185</see_also>
          <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>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1518027</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-18 17:25:14 -0700</bug_when>
    <thetext>Cross-site trackers abuse link query parameters to transport user identifiers and then store them in first-party storage space.

https://bugs.webkit.org/show_bug.cgi?id=189933 capped all persistent client-side cookies to seven days of storage.
https://bugs.webkit.org/show_bug.cgi?id=195196 capped persistent client-side cookies to one day of storage for navigations with link decoration from prevalent resources.
https://bugs.webkit.org/show_bug.cgi?id=195301 added logging of navigations with link decoration from prevalent resources.

We should clear out non-cookie website data for sites that have been navigated to, with link decoration, by a prevalent resource. This makes sure tracker scripts cannot force first-party sites to store cross-site tracking data transferred in such navigations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518028</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-18 17:25:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/49001272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518040</commentid>
    <comment_count>2</comment_count>
      <attachid>365096</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-18 18:05:06 -0700</bug_when>
    <thetext>Created attachment 365096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518406</commentid>
    <comment_count>3</comment_count>
      <attachid>365096</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-19 11:42:13 -0700</bug_when>
    <thetext>Comment on attachment 365096
Patch

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

&gt; Source/WebCore/page/RuntimeEnabledFeatures.h:543
&gt; +    bool m_isITPFirstPartyWebsiteDataRemovalEnabled { true };

DEFAULT_EXPERIMENTAL_FEATURES_ENABLED here?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:163
&gt; +    void registrableDomainsToRemoveWebsiteDataFor(HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt;&amp;) override;

This should return a value instead of returning by reference.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:66
&gt; +static String domainsToString(HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt;&amp; domainsToRemoveWebsiteDataFor)

const HashMap&amp;

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:75
&gt; +constexpr unsigned operatingDatesWindowLong { 30 };
&gt; +constexpr unsigned operatingDatesWindowShort { 7 };

I think operatingDatesLongWindow operatingDatesShortWindow would be better names for these.  Long and short are adjectives that modify Window.  If they&apos;re at the end, it looks to me like the type (unsigned long vs unsigned short).

Even better, I think, would be to have this be an enum class:
enum class OperatingDatesWindow : bool { Long, Short };

Then most places would just pass one or the other and in one place we would need constants for how many days the enum values mean.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:63
&gt; +enum class WebsiteDataToRemove {

: uint8_t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518409</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-19 11:45:54 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 365096 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365096&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/RuntimeEnabledFeatures.h:543
&gt; &gt; +    bool m_isITPFirstPartyWebsiteDataRemovalEnabled { true };
&gt; 
&gt; DEFAULT_EXPERIMENTAL_FEATURES_ENABLED here?

You&apos;re right. Should be false. I wrote the code in the wrong order.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:163
&gt; &gt; +    void registrableDomainsToRemoveWebsiteDataFor(HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt;&amp;) override;
&gt; 
&gt; This should return a value instead of returning by reference.

I assume you mean for all instances of this function.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:66
&gt; &gt; +static String domainsToString(HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt;&amp; domainsToRemoveWebsiteDataFor)
&gt; 
&gt; const HashMap&amp;

Got it.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:75
&gt; &gt; +constexpr unsigned operatingDatesWindowLong { 30 };
&gt; &gt; +constexpr unsigned operatingDatesWindowShort { 7 };
&gt; 
&gt; I think operatingDatesLongWindow operatingDatesShortWindow would be better
&gt; names for these.  Long and short are adjectives that modify Window.  If
&gt; they&apos;re at the end, it looks to me like the type (unsigned long vs unsigned
&gt; short).

Agreed.

&gt; Even better, I think, would be to have this be an enum class:
&gt; enum class OperatingDatesWindow : bool { Long, Short };

Ah. I&apos;ll take a stab at this.

&gt; Then most places would just pass one or the other and in one place we would
&gt; need constants for how many days the enum values mean.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:63
&gt; &gt; +enum class WebsiteDataToRemove {
&gt; 
&gt; : uint8_t

Got it.

Thanks, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518411</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-19 11:50:15 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #4)
&gt; (In reply to Alex Christensen from comment #3)
&gt; &gt; Comment on attachment 365096 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=365096&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/RuntimeEnabledFeatures.h:543
&gt; &gt; &gt; +    bool m_isITPFirstPartyWebsiteDataRemovalEnabled { true };
&gt; &gt; 
&gt; &gt; DEFAULT_EXPERIMENTAL_FEATURES_ENABLED here?
&gt; 
&gt; You&apos;re right. Should be false. I wrote the code in the wrong order.
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:163
&gt; &gt; &gt; +    void registrableDomainsToRemoveWebsiteDataFor(HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt;&amp;) override;
&gt; &gt; 
&gt; &gt; This should return a value instead of returning by reference.
&gt; 
&gt; I assume you mean for all instances of this function.

Looking at it now I realized why I ended up where I did. I started out with two vectors – one for remove all data and one for all but cookies. Since I couldn&apos;t return two vectors I did it by reference. But then everything became much more complicated and I ran the risk of mixing up the two vectors. Finally, I realized I want to support three different filters for data removal. That&apos;s why I switched to a HashMap.

Thanks for pointing this out.

&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:66
&gt; &gt; &gt; +static String domainsToString(HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt;&amp; domainsToRemoveWebsiteDataFor)
&gt; &gt; 
&gt; &gt; const HashMap&amp;
&gt; 
&gt; Got it.
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:75
&gt; &gt; &gt; +constexpr unsigned operatingDatesWindowLong { 30 };
&gt; &gt; &gt; +constexpr unsigned operatingDatesWindowShort { 7 };
&gt; &gt; 
&gt; &gt; I think operatingDatesLongWindow operatingDatesShortWindow would be better
&gt; &gt; names for these.  Long and short are adjectives that modify Window.  If
&gt; &gt; they&apos;re at the end, it looks to me like the type (unsigned long vs unsigned
&gt; &gt; short).
&gt; 
&gt; Agreed.
&gt; 
&gt; &gt; Even better, I think, would be to have this be an enum class:
&gt; &gt; enum class OperatingDatesWindow : bool { Long, Short };
&gt; 
&gt; Ah. I&apos;ll take a stab at this.
&gt; 
&gt; &gt; Then most places would just pass one or the other and in one place we would
&gt; &gt; need constants for how many days the enum values mean.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:63
&gt; &gt; &gt; +enum class WebsiteDataToRemove {
&gt; &gt; 
&gt; &gt; : uint8_t
&gt; 
&gt; Got it.
&gt; 
&gt; Thanks, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518440</commentid>
    <comment_count>6</comment_count>
      <attachid>365203</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-19 12:23:31 -0700</bug_when>
    <thetext>Created attachment 365203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518571</commentid>
    <comment_count>7</comment_count>
      <attachid>365203</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-19 15:30:54 -0700</bug_when>
    <thetext>Comment on attachment 365203
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1519
&gt; +    HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt; domainsToRemoveWebsiteDataFor;

If we used a struct that contained 3 Vector&lt;RegistrableDomain&gt; instead of the enum, it would be more memory efficient.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:1311
&gt; +        WKRetainPtr&lt;WKStringRef&gt; fromHostKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;FromHost&quot;));

auto fromHostKey = adoptWK(WKStringCreateWithUTF8CString(&quot;FromHost&quot;));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518577</commentid>
    <comment_count>8</comment_count>
      <attachid>365246</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-19 15:36:49 -0700</bug_when>
    <thetext>Created attachment 365246
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518581</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-19 15:39:25 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 365203 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365203&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1519
&gt; &gt; +    HashMap&lt;RegistrableDomain, WebsiteDataToRemove&gt; domainsToRemoveWebsiteDataFor;
&gt; 
&gt; If we used a struct that contained 3 Vector&lt;RegistrableDomain&gt; instead of
&gt; the enum, it would be more memory efficient.

Good idea. Will do in a follow up, tracked in rdar://problem/49038934.

&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:1311
&gt; &gt; +        WKRetainPtr&lt;WKStringRef&gt; fromHostKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;FromHost&quot;));
&gt; 
&gt; auto fromHostKey = adoptWK(WKStringCreateWithUTF8CString(&quot;FromHost&quot;));

Fixed.

Thanks for the review, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518644</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-19 16:57:50 -0700</bug_when>
    <thetext>Test failure is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518655</commentid>
    <comment_count>11</comment_count>
      <attachid>365246</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-19 17:22:16 -0700</bug_when>
    <thetext>Comment on attachment 365246
Patch for landing

Clearing flags on attachment: 365246

Committed r243181: &lt;https://trac.webkit.org/changeset/243181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518656</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-19 17:22:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518923</commentid>
    <comment_count>13</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-03-20 09:23:00 -0700</bug_when>
    <thetext>Looks like the new test http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html

added in https://trac.webkit.org/changeset/243181/webkit

is failing constantly on WK1. History:
http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2FresourceLoadStatistics%2Fwebsite-data-removal-for-site-navigated-to-with-link-decoration.html

Diff:
--- /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt
+++ /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-actual.txt
@@ -10,7 +10,7 @@
 After deletion: Client-side cookie exists.
 After deletion: Regular server-side cookie exists.
 
-After deletion: IDB entry does not exist.
+After deletion: IDB entry does exist.
 
 
 Resource load statistics:
@@ -30,6 +30,6 @@
     grandfathered: No
     topFrameLinkDecorationsFrom:
         localhost
-    gotLinkDecorationFromPrevalentResource: No    isPrevalentResource: No
+    gotLinkDecorationFromPrevalentResource: Yes    isPrevalentResource: No
     isVeryPrevalentResource: No
-    dataRecordsRemoved: 1
+    dataRecordsRemoved: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518924</commentid>
    <comment_count>14</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-03-20 09:23:34 -0700</bug_when>
    <thetext>Apologies, Failing constantly on WK2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518950</commentid>
    <comment_count>15</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-20 10:03:34 -0700</bug_when>
    <thetext>OK, looking at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518980</commentid>
    <comment_count>16</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-20 10:43:54 -0700</bug_when>
    <thetext>I found the bug. ITP refuses (and should refuse) to remove website data repeatedly because of the minimumTimeBetweenDataRecordsRemoval setting. I just need to add an exception to this rule for parameters().isRunningTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518997</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-20 10:57:49 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #16)
&gt; I found the bug. ITP refuses (and should refuse) to remove website data
&gt; repeatedly because of the minimumTimeBetweenDataRecordsRemoval setting. I
&gt; just need to add an exception to this rule for parameters().isRunningTest.

Fix is on the commit queue: https://bugs.webkit.org/show_bug.cgi?id=196017</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365096</attachid>
            <date>2019-03-18 18:05:06 -0700</date>
            <delta_ts>2019-03-19 12:23:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195923-20190318180506.patch</filename>
            <type>text/plain</type>
            <size>88720</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmNmI0NmJlODFhZGZi
ZjUwMjM1NDZjZmYyNjViMjdjZDg5YzhjNy4uZTQ3NDliZDM0ZjU0MTBiM2ZjNDk1MWMzYmQ4NGI2
M2QzYmQ1NGU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAzLTE4ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQ2xlYXIgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEg
Zm9yIHNpdGVzIHRoYXQgaGF2ZSBiZWVuIG5hdmlnYXRlZCB0bywgd2l0aCBsaW5rIGRlY29yYXRp
b24sIGJ5IGEgcHJldmFsZW50IHJlc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU5MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MDAx
MjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgYSBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5h
dmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sCisKKyAgICAgICAgKiBwYWdlL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldElzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJVFBGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCBjb25zdCk6CisKIDIwMTktMDMtMTggIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBTdHJp
bmdCdWZmZXIsIHBvc3NpYmx5IGxlYWRpbmcgdG93YXJkIHJlbW92aW5nIGl0IGVudGlyZWx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDUyZjcxNWU2YTg3ZWEyODgzM2I4YjMyMGIzM2NjZmNhMzcwOGIzZTIuLjc3NzNh
NjFkYTg2ZGU3MTQ0ZWE5NDIyNGYzYzVlMDkxMzMyMmM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
OTcgQEAKKzIwMTktMDMtMTggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBDbGVhciBu
b24tY29va2llIHdlYnNpdGUgZGF0YSBmb3Igc2l0ZXMgdGhhdCBoYXZlIGJlZW4gbmF2aWdhdGVk
IHRvLCB3aXRoIGxpbmsgZGVjb3JhdGlvbiwgYnkgYSBwcmV2YWxlbnQgcmVzb3VyY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTkyMworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDkwMDEyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3Jvc3Mtc2l0ZSB0cmFja2VycyBhYnVzZSBsaW5rIHF1ZXJ5
IHBhcmFtZXRlcnMgdG8gdHJhbnNwb3J0IHVzZXIgaWRlbnRpZmllcnMgYW5kIHRoZW4gc3RvcmUK
KyAgICAgICAgdGhlbSBpbiBmaXJzdC1wYXJ0eSBzdG9yYWdlIHNwYWNlLiBUbyBhZGRyZXNzIHRo
aXMsIHdlJ3ZlIGRvbmUgdGhyZWUgdGhpbmdzOgorICAgICAgICAtIHIyMzY0NDggY2FwcGVkIGFs
bCBwZXJzaXN0ZW50IGNsaWVudC1zaWRlIGNvb2tpZXMgdG8gc2V2ZW4gZGF5cyBvZiBzdG9yYWdl
LgorICAgICAgICAtIHIyNDIyODggZnVydGhlciBjYXBwZWQgcGVyc2lzdGVudCBjbGllbnQtc2lk
ZSBjb29raWVzIGZvciBuYXZpZ2F0aW9ucyB3aXRoIGxpbmsgZGVjb3JhdGlvbiBmcm9tIHByZXZh
bGVudCByZXNvdXJjZXMuCisgICAgICAgIC0gcjI0MjYwMyBhZGRlZCBsb2dnaW5nIG9mIG5hdmln
YXRpb25zIHdpdGggbGluayBkZWNvcmF0aW9uIGZyb20gcHJldmFsZW50IHJlc291cmNlcy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhh
dCByZW1vdmVzIG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGZvciBzaXRlcworICAgICAgICB0aGF0
IGhhdmUgYmVlbiBuYXZpZ2F0ZWQgdG8sIHdpdGggbGluayBkZWNvcmF0aW9uLCBieSBhIHByZXZh
bGVudCByZXNvdXJjZS4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHJlc291cmNlIGRvbWFp
bnMgdG8gcmVtb3ZlIHdlYnNpdGUgZGF0YSBmb3IgYXJlIG5vdyBtYXJrZWQgd2l0aCBhbiBlbnVt
IGNhbGxlZAorICAgICAgICBXZWJzaXRlRGF0YVRvUmVtb3ZlIHdpdGggdmFsdWVzIEFsbCwgQWxs
QnV0SHR0cE9ubHlDb29raWVzLCBBbGxCdXRDb29raWVzLiBBcyByZXNvdXJjZXMgYXJlCisgICAg
ICAgIGl0ZXJhdGVkLCB0aGV5IGFyZSBtYXJrZWQgZm9yIGVpdGhlciBvZiB0aGVzZSB2YWx1ZXMg
YW5kIHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKCkgbGVhZHMgdG8gdGhlIG1hcmtp
bmcgd2l0aAorICAgICAgICBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVzLgorCisg
ICAgICAgIFRoZW4gTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKCkgbG9va3MgYXQgdGhpcyBzZXR0aW5nIGFuZCByZW1vdmVzCisgICAgICAgIHdl
YnNpdGUgZGF0YSBhY2NvcmRpbmdseS4KKworICAgICAgICBUaGUgdGhpbmtpbmcgYmVoaW5kIHRo
aXMgaXMgdGhhdCB0aGUgbGlmZXRpbWUgY2FwIGFwcGxpZWQgaW4gcjIzNjQ0OCBhbmQgcjI0MjI4
OCB0YWtlIGNhcmUgb2YKKyAgICAgICAgc2NyaXB0IHdyaXRhYmxlIGNvb2tpZXMsIGFuZCB0aGlz
IHBhdGNoIHRha2VzIGNhcmUgb2YgYWxsIG90aGVyIHNjcmlwdCB3cml0YWJsZSBzdG9yYWdlLgor
CisgICAgICAgIFRoZSBpbmZyYXN0cnVjdHVyZSB0byBoYW5kbGUgdXNlciBpbnRlcmFjdGlvbiBl
eHBpcmF0aW9uIGlzIG5vdyBwYXJhbWV0ZXJpemVkIHNvIHRoYXQgbXVsdGlwbGUKKyAgICAgICAg
ZXhwaXJpZXMgY2FuIGJlIGFwcGxpZWQuIEluIHRoaXMgcGFydGljdWxhciBjYXNlLCBzZXZlbiBk
YXlzIG9mIGJyb3dzZXIgdXNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNob3Vs
ZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNG
b3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc0hhZFVu
ZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURh
dGFGb3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojpkb21haW5zVG9TdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRXBpcmF0aW9u
VGltZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6bWVyZ2VPcGVyYXRpbmdEYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3Rp
Y3NFeHBpcmVkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMpOiBEZWxldGVkLgorICAgICAg
ICAgICBSZW5hbWVkIHRvIHJlZmxlY3QgdGhhdCBpdCBhY3R1YWxseSB0YWtlcyBhIHBhcmFtZXRl
ciBmb3Igd2hpY2ggdHlwZXMgb2YgZGF0YSB0byByZW1vdmUuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKTogRGVsZXRlZC4KKyAgICAgICAgICAgUmVuYW1lZCB0byByZWZsZWN0
IHRoYXQgaXQgYWN0dWFsbHkgdGFrZXMgYSBwYXJhbWV0ZXIgZm9yIHdoaWNoIHR5cGVzIG9mIGRh
dGEgdG8gcmVtb3ZlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lz
dGVudERhdGFTdG9yZXMpOiBEZWxldGVkLgorICAgICAgICAgICBSZW5hbWVkIHRvIHJlZmxlY3Qg
dGhhdCBpdCBhY3R1YWxseSB0YWtlcyBhIHBhcmFtZXRlciBmb3Igd2hpY2ggdHlwZXMgb2YgZGF0
YSB0byByZW1vdmUuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9u
Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAxOS0wMy0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgV0tXZWJWaWV3LkdldENvbnRlbnRzU2hvdWxkUmV0dXJuQXR0cmlidXRl
ZFN0cmluZyBpcyBjcmFzaGluZyBvbiBpT1MgU2ltdWxhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCBkMjQ5N2RjNDM2MGI2NTcwYjFmNDM1
NWVlNDQzNDMzY2U2ODcyMDFhLi43NmIzYmVkNTM4YjkyOTNjYzBjYmM0NzkzNjAyZDAwZTRiN2M4
YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApA
QCAtMTUwLDYgKzE1MCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SXNJVFBEYXRhYmFzZUVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lUUERhdGFiYXNlRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQogICAgIGJvb2wgaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
SVRQRGF0YWJhc2VFbmFibGVkOyB9CisgICAgCisgICAgdm9pZCBzZXRJc0lUUEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJVFBGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaXNJ
VFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZDsgfQogCiAgICAgdm9pZCBz
ZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzKGJvb2wgaXNFbmFibGVkKSB7IG1faXNSZXN0
cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCByZXN0cmlj
dGVkSFRUUFJlc3BvbnNlQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9pc1Jlc3RyaWN0ZWRIVFRQ
UmVzcG9uc2VBY2Nlc3M7IH0KQEAgLTUzNyw2ICs1NDAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBib29sIG1faXNJVFBEYXRhYmFzZUVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkIHsgdHJ1ZSB9OwogCiAgICAg
Ym9vbCBtX3JlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCB7IGZhbHNlIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmlu
ZGV4IGU3MjAyZDhiZDM3MTliYTU3ZTRiZTFjMzQ2ODg3N2FjNTQ4NjFkOGQuLmE2ODNkZWNlODEy
NzkxMDc0NmRjN2FlNmMyZjNhYmEwYjYwOGNjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtODE5LDcgKzgxOSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgaWYgKHVzZXJXYXNQcm9tcHRlZE5vdykgewog
ICAgICAgICBhdXRvIHN1YkZyYW1lU3RhdHVzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UmVnaXN0cmFibGVEb21haW4oc3ViRnJhbWVEb21haW4pOwogICAgICAgICBBU1NFUlQoc3ViRnJh
bWVTdGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5vKTsKLSAgICAgICAgQVNTRVJUKGhhc0hh
ZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbikpOworICAgICAgICBBU1NFUlQoaGFzSGFk
VXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcp
KTsKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3RvcmFnZUFjY2Vzc1VuZGVy
VG9wRnJhbWVEb21haW5zU3RhdGVtZW50LCBzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1l
RG9tYWluKTsKICAgICB9CiAKQEAgLTgzOSw3ICs4MzksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFt
ZURvbQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgYXV0byBzdWJGcmFtZVN0YXR1cyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsK
ICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVzLmZpcnN0ID09IEFkZGVkUmVjb3JkOjpObyk7
Ci0gICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4pKTsK
KyAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgb3Bl
cmF0aW5nRGF0ZXNXaW5kb3dMb25nKSk7CiAgICAgICAgIEFTU0VSVChoYXNVc2VyR3JhbnRlZFN0
b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1YkZyYW1lU3RhdHVzLnNlY29uZCwgdG9wRnJhbWVE
b21haW4pKTsKICNlbmRpZgogICAgICAgICBzZXRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21h
aW4sIHRydWUsIFdhbGxUaW1lOjpub3coKSk7CkBAIC0xMDMzLDcgKzEwMzMsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihj
b25zdCBSZWdpc3RyYWJsZQogICAgIH0KIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4pCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpo
YXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5z
aWduZWQgbWF4T3BlcmF0aW5nRGF0ZXMpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsCiAgICAg
CiAgICAgV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uRG91
YmxlKDEpKTsKIAotICAgIGlmIChoYXNTdGF0aXN0aWNzRXhwaXJlZChtb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uVGltZSkpIHsKKyAgICBpZiAoaGFzU3RhdGlzdGljc0V4cGlyZWQobW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUsIG1heE9wZXJhdGluZ0RhdGVzKSkgewogICAgICAgICAvLyBE
cm9wIHByaXZhY3kgc2Vuc2l0aXZlIGRhdGEgYmVjYXVzZSB3ZSBubyBsb25nZXIgbmVlZCBpdC4K
ICAgICAgICAgLy8gU2V0IHRpbWVzdGFtcCB0byAwIHNvIHRoYXQgc3RhdGlzdGljcyBtZXJnZSB3
aWxsIGtub3cKICAgICAgICAgLy8gaXQgaGFzIGJlZW4gcmVzZXQgYXMgb3Bwb3NlZCB0byBpdHMg
ZGVmYXVsdCAtMS4KQEAgLTE0OTIsNyArMTQ5MiwxOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdyYW5kZmF0aGVyaW5nKFZlY3Rvcjx1bnNpZ25lZD4m
JgogICAgIH0KIH0KIAotVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0
YUZvcigpCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRS
ZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihjb25zdCBQcmV2YWxlbnREb21haW5EYXRhJiByZXNvdXJj
ZVN0YXRpc3RpYywgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSBjb25zdAorewor
ICAgIHJldHVybiAhcmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uICYmICghc2hv
dWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8fCAhcmVzb3VyY2VTdGF0aXN0aWMuZ3JhbmRmYXRo
ZXJlZCk7Cit9CisKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNo
b3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoY29uc3QgUHJldmFsZW50RG9tYWluRGF0YSYgcmVz
b3VyY2VTdGF0aXN0aWMsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3QK
K3sKKyAgICBVTlVTRURfUEFSQU0ocmVzb3VyY2VTdGF0aXN0aWMpOworICAgIFVOVVNFRF9QQVJB
TShzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxlRG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vi
c2l0ZURhdGFUb1JlbW92ZT4mIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNTAzLDIyICsxNTE1LDIwIEBAIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnJlZ2lzdHJhYmxlRG9tYWluCiAgICAgICAgIGNsZWFyRW5kT2ZHcmFuZGZhdGhlcmluZ1Rp
bWVTdGFtcCgpOwogCiAgICAgY2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucygpOwotICAgIAot
ICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gcHJldmFsZW50UmVzb3VyY2VzOwogCiAgICAg
VmVjdG9yPFByZXZhbGVudERvbWFpbkRhdGE+IHByZXZhbGVudERvbWFpbnMgPSB0aGlzLT5wcmV2
YWxlbnREb21haW5zKCk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBkb21haW5JRHNUb0NsZWFyR3Jh
bmRmYXRoZXJpbmc7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBwcmV2YWxlbnREb21haW5z
KSB7Ci0gICAgICAgIGlmICghc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiAmJiAoIXNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcgfHwgIXN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKSkKLSAg
ICAgICAgICAgIHByZXZhbGVudFJlc291cmNlcy5hcHBlbmQoc3RhdGlzdGljLnJlZ2lzdGVyYWJs
ZURvbWFpbik7CisgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0
aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKQorICAgICAgICAgICAgZG9tYWlu
c1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IuYWRkKHN0YXRpc3RpYy5yZWdpc3RlcmFibGVEb21haW4s
IFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbCk7CisgICAgICAgIGVsc2UgaWYgKHNob3VsZFJlbW92
ZUFsbEJ1dENvb2tpZXNGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5n
KSkKKyAgICAgICAgICAgIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLmFkZChzdGF0aXN0
aWMucmVnaXN0ZXJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVz
KTsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZyAmJiBzdGF0aXN0aWMu
Z3JhbmRmYXRoZXJlZCkKICAgICAgICAgICAgIGRvbWFpbklEc1RvQ2xlYXJHcmFuZGZhdGhlcmlu
Zy5hcHBlbmQoc3RhdGlzdGljLmRvbWFpbklEKTsKICAgICB9CiAKICAgICBjbGVhckdyYW5kZmF0
aGVyaW5nKFdURk1vdmUoZG9tYWluSURzVG9DbGVhckdyYW5kZmF0aGVyaW5nKSk7Ci0gICAgCi0g
ICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNlczsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA2ZTNl
M2UwZGI4NmQyMjAxOWY1MzM0M2M2MWE0OWJkODYxZGM5NWUwLi4xMDMxNGNkMzA0NmU4ODExNDk0
YzE3MjM1MzhmMjhkYTM2ZjQ3MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVk
RnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKSBvdmVycmlkZTsKKyAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIHVuc2lnbmVkIG1heE9wZXJhdGluZ0RhdGVzKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzKSBv
dmVycmlkZTsKIApAQCAtMTU4LDcgKzE1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcnVuZVN0
YXRpc3RpY3NJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIGVudW0gY2xhc3MgQWRkZWRSZWNvcmQg
eyBObywgWWVzIH07CiAgICAgc3RkOjpwYWlyPEFkZGVkUmVjb3JkLCB1bnNpZ25lZD4gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKTsKLSAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWlu
c1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFJlbW92
ZUFsbFdlYnNpdGVEYXRhRm9yKGNvbnN0IFByZXZhbGVudERvbWFpbkRhdGEmLCBib29sIHNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxs
QnV0Q29va2llc0Zvcihjb25zdCBQcmV2YWxlbnREb21haW5EYXRhJiwgYm9vbCBzaG91bGRDaGVj
a0ZvckdyYW5kZmF0aGVyaW5nKSBjb25zdDsKKyAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1Rv
UmVtb3ZlV2Vic2l0ZURhdGFGb3IoSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFUb1JlbW92ZT4mKSBvdmVycmlkZTsKICAgICBib29sIGlzRGF0YWJhc2VTdG9yZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgY3JlYXRlU2NoZW1hKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4
IDcwNjI5ZWUxYTBlZGRiZDcwZGJmY2JmYjI5ZDQ1YTJhY2FlOWY2NzkuLjU2ZjgwYTYzMjY0NjBh
MTIyNTc0MGQ3MGY1NzI2M2YwZmMwMDQ1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC00NDQsMTIgKzQ0NSwxMiBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3Qg
UmVnaXN0cmFibGVEbwogICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUgPSB7IH07CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpo
YXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK2Jv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5zaWduZWQgbWF4T3BlcmF0aW5n
RGF0ZXMpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBhdXRvIG1h
cEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChkb21haW4pOwotICAgIHJldHVy
biBtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSA/IGZhbHNlOiBoYXNI
YWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obWFwRW50cnktPnZhbHVlKTsKKyAgICBy
ZXR1cm4gbWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkgPyBmYWxzZTog
aGFzSGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKG1hcEVudHJ5LT52YWx1ZSwgbWF4
T3BlcmF0aW5nRGF0ZXMpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3Vy
Y2VTdGF0aXN0aWMsIFJlc291cmNlTG9hZFByZXZhbGVuY2UgbmV3UHJldmFsZW5jZSkKQEAgLTc4
NSwxMSArNzg2LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpw
cm9jZXNzU3RhdGlzdGljcyhjb25zdCBGdW5jdGlvbjx2b2lkKGNvCiAgICAgICAgIHByb2Nlc3NG
dW5jdGlvbihyZXNvdXJjZVN0YXRpc3RpYyk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIGNvbnN0Citib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzSGFkVW5leHBpcmVkUmVjZW50VXNlcklu
dGVyYWN0aW9uKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljLCB1bnNp
Z25lZCBtYXhPcGVyYXRpbmdEYXRlcykgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24g
JiYgaGFzU3RhdGlzdGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0aWMpKSB7CisgICAgaWYgKHJl
c291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiAmJiBoYXNTdGF0aXN0aWNzRXhwaXJl
ZChyZXNvdXJjZVN0YXRpc3RpYywgbWF4T3BlcmF0aW5nRGF0ZXMpKSB7CiAgICAgICAgIC8vIERy
b3AgcHJpdmFjeSBzZW5zaXRpdmUgZGF0YSBiZWNhdXNlIHdlIG5vIGxvbmdlciBuZWVkIGl0Lgog
ICAgICAgICAvLyBTZXQgdGltZXN0YW1wIHRvIDAgc28gdGhhdCBzdGF0aXN0aWNzIG1lcmdlIHdp
bGwga25vdwogICAgICAgICAvLyBpdCBoYXMgYmVlbiByZXNldCBhcyBvcHBvc2VkIHRvIGl0cyBk
ZWZhdWx0IC0xLgpAQCAtODAxLDcgKzgwMiwxNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6aGFzSGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKFJlcwog
ICAgIHJldHVybiByZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb247CiB9CiAKLVZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjpyZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkKK2Jvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZv
cihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgYm9vbCBzaG91bGRD
aGVja0ZvckdyYW5kZmF0aGVyaW5nKSBjb25zdAoreworICAgIHJldHVybiByZXNvdXJjZVN0YXRp
c3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmICFoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50
ZXJhY3Rpb24ocmVzb3VyY2VTdGF0aXN0aWMsIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZykgJiYg
KCFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nIHx8ICFyZXNvdXJjZVN0YXRpc3RpYy5ncmFu
ZGZhdGhlcmVkKTsKK30KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVz
b3VyY2VTdGF0aXN0aWMsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3QK
K3sKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5p
c0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkKCkgJiYgcmVzb3VyY2VTdGF0
aXN0aWMuZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UgJiYgIWhhc0hhZFVu
ZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYywgb3BlcmF0aW5n
RGF0ZXNXaW5kb3dTaG9ydCkgJiYgKCFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nIHx8ICFy
ZXNvdXJjZVN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURh
dGFGb3IoSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mIGRv
bWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC04MTEsMTYgKzgyMiwxNyBAQCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVAog
ICAgIGlmIChzaG91bGRDbGVhckdyYW5kZmF0aGVyaW5nKQogICAgICAgICBjbGVhckVuZE9mR3Jh
bmRmYXRoZXJpbmdUaW1lU3RhbXAoKTsKIAotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4g
cHJldmFsZW50UmVzb3VyY2VzOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0YXRpc3RpYy5pc1ByZXZh
bGVudFJlc291cmNlICYmICFoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oc3Rh
dGlzdGljKSAmJiAoIXNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcgfHwgIXN0YXRpc3RpYy5n
cmFuZGZhdGhlcmVkKSkKLSAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlcy5hcHBlbmQoc3Rh
dGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdl
YnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpCisg
ICAgICAgICAgICBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvci5hZGQoc3RhdGlzdGljLnJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGwpOworICAgICAgICBlbHNl
IGlmIChzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tG
b3JHcmFuZGZhdGhlcmluZykpIHsKKyAgICAgICAgICAgIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVE
YXRhRm9yLmFkZChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1v
dmU6OkFsbEJ1dENvb2tpZXMpOworICAgICAgICAgICAgc3RhdGlzdGljLmdvdExpbmtEZWNvcmF0
aW9uRnJvbVByZXZhbGVudFJlc291cmNlID0gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBp
ZiAoc2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZyAmJiBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkK
ICAgICAgICAgICAgIHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkID0gZmFsc2U7CiAgICAgfQotCi0g
ICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNlczsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCAzZGU4ZWY1Zjk1
NGM3ZjJmZjMyNDM5NWUzNTUyMzZkYWMyYmQwZDgxLi5kMGU2MWE3MjYxYTFmMWU4NzRmN2RiYTNk
YTQ5YmJiYTg1NDk5MDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9n
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWlu
JiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJV
c2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKLSAgICBi
b29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJy
aWRlOworICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgdW5zaWduZWQgbWF4T3BlcmF0aW5nRGF0ZXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMpIG92ZXJyaWRlOwog
CkBAIC0xMTQsNyArMTE0LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9j
a0FuZEtlZXBDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbG9ja0FuZFB1cmdlQ29va2llcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJik7CiAgICAgc3RhdGljIGJvb2wgaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhy
b3VnaFByb21wdChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKTsKLSAgICBib29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlv
bihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CisgICAgYm9vbCBoYXNIYWRVbmV4cGly
ZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIHVuc2lnbmVk
IG1heE9wZXJhdGluZ0RhdGVzKSBjb25zdDsKKyAgICBib29sIHNob3VsZFJlbW92ZUFsbFdlYnNp
dGVEYXRhRm9yKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBib29sIHNob3VsZENoZWNrRm9yR3Jh
bmRmYXRoZXJpbmcpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0Zv
cihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVy
aW5nKSBjb25zdDsKICAgICBib29sIHdhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50
ZXJhY3Rpb24oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgY3VycmVudCwgY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYgdXBkYXRlZCkgY29uc3Q7CiAgICAgdm9pZCBpbmNyZW1lbnRS
ZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKQEAgLTEyNiwxMCArMTI4LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpIG92ZXJyaWRlOwog
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9y
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVE
YXRhRm9yKEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+Jikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpc01lbW9yeVN0b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCi0KICAgICBXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZT4gbV9wZXJzaXN0ZW50U3RvcmFnZTsKICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDRmZDQ4
NGU5ZmM1YWZkZDk0YWNjMjY3ZTFjYmY5MTA5NjA0OGZjMGEuLjBhMWYzOWU4MTI5MWY2MGQ5ZjBj
YWY5MWUxNTBkN2E2NTAzNjFhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1TdGF0aXN0aWNz
UHJvY2Vzc2luZ0ludGVydmFsIHsgNV9zIH07Ci1jb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5n
RGF0ZXNXaW5kb3cgeyAzMCB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBzdGF0aWMg
U3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBk
b21haW5zKQpAQCAtNjMsNiArNjIsMjggQEAgc3RhdGljIFN0cmluZyBkb21haW5zVG9TdHJpbmco
Y29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKICAgICB9CiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KKworc3RhdGljIFN0cmluZyBkb21haW5zVG9TdHJp
bmcoSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mIGRvbWFp
bnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLmtl
eXMoKSkgeworICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChkb21haW4u
c3RyaW5nKCkpOworICAgICAgICBzd2l0Y2ggKGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9y
LmdldChkb21haW4pKSB7CisgICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsOgor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoYWxsIGRhdGEpIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRIdHRw
T25seUNvb2tpZXM6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihhbGwgYnV0
IEh0dHBPbmx5IGNvb2tpZXMpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
ZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVzOgorICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIoYWxsIGJ1dCBjb29raWVzKSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KICNlbmRp
ZgogCiBPcGVyYXRpbmdEYXRlIE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShXYWxsVGltZSB0
aW1lKQpAQCAtMTU3LDEyICsxNzgsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZhbHVlKQogICAgIG1fcGFyYW1ldGVy
cy5zaG91bGRTdWJtaXRUZWxlbWV0cnkgPSB2YWx1ZTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVE
YXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIXNob3VsZFJl
bW92ZURhdGFSZWNvcmRzKCkpIHsKLSAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcyLDMzICsxOTMs
MzQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogICAgICAgICBtX2FjdGl2ZVBsdWdpblRva2Vu
cy5hZGQocGx1Z2luLT5wbHVnaW5Qcm9jZXNzVG9rZW4oKSk7CiAjZW5kaWYKIAotICAgIGF1dG8g
cHJldmFsZW50UmVzb3VyY2VEb21haW5zID0gcmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJz
aXRlRGF0YUZvcigpOwotICAgIGlmIChwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGNhbGxiYWNrKCk7CisgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwg
V2Vic2l0ZURhdGFUb1JlbW92ZT4gZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3I7CisgICAg
cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcihkb21haW5zVG9SZW1vdmVX
ZWJzaXRlRGF0YUZvcik7CisgICAgaWYgKGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLmlz
RW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUkVMRUFTRV9MT0dfSU5G
T19JRihtX2RlYnVnTG9nZ2luZ0VuYWJsZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Zywg
IkFib3V0IHRvIHJlbW92ZSBkYXRhIHJlY29yZHMgZm9yICV7cHVibGljfXMuIiwgZG9tYWluc1Rv
U3RyaW5nKHByZXZhbGVudFJlc291cmNlRG9tYWlucykudXRmOCgpLmRhdGEoKSk7CisgICAgUkVM
RUFTRV9MT0dfSU5GT19JRihtX2RlYnVnTG9nZ2luZ0VuYWJsZWQsIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1ZywgIkFib3V0IHRvIHJlbW92ZSBkYXRhIHJlY29yZHMgZm9yICV7cHVibGljfXMu
IiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKS51dGY4KCku
ZGF0YSgpKTsKICNlbmRpZgogCiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlu
cyA9IGNyb3NzVGhyZWFkQ29weShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc2hvdWxk
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91
bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dv
cmtRdWV1ZS5jb3B5UmVmKCldICgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IgPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc2hvdWxk
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91
bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dv
cmtRdWV1ZS5jb3B5UmVmKCldICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5t
X3N0b3JlLmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0
ZW50RGF0YVN0b3JlcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERh
dGFUeXBlcygpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIHNob3VsZE5vdGlm
eVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIEluY2x1ZGVIdHRwT25seUNvb2tpZXM6
OlllcywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21haW5zV2l0aERlbGV0ZWRX
ZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0
YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyldICgpIG11dGFibGUgeworICAgICAgICB3ZWFrVGhpcy0+bV9zdG9yZS5kZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBXVEZNb3ZlKGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVE
YXRhRm9yKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5UmVmKCldKGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0
YSkgbXV0YWJsZSB7CisgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21haW5zV2l0
aERlbGV0ZWRXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERlbGV0ZWRX
ZWJzaXRlRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldICgpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+aW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMoV1RGTW92ZShkb21haW5z
V2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5zZXRE
YXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYod2Vha1RoaXMt
Pm1fZGVidWdMb2dnaW5nRW5hYmxlZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiRG9u
ZSByZW1vdmluZyBkYXRhIHJlY29yZHMuIik7CiAjZW5kaWYKQEAgLTQzMCw3ICs0NTIsNyBAQCBP
cHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YXRpc3RpY3NF
cGlyYXRpb25UaW1lKCkgY29uc3QKICAgICBpZiAobV9wYXJhbWV0ZXJzLnRpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNl
RXBvY2goKSAtIG1fcGFyYW1ldGVycy50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uLnZhbHVlKCk7
CiAgICAgCi0gICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVz
V2luZG93KQorICAgIGlmIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRl
c1dpbmRvd0xvbmcpCiAgICAgICAgIHJldHVybiBtX29wZXJhdGluZ0RhdGVzLmZpcnN0KCkuc2Vj
b25kc1NpbmNlRXBvY2goKTsKICAgICAKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtNDQ4
LDggKzQ3MCw4IEBAIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Om1lcmdlT3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVjCiAgICAgLy8gUmVtb3ZlIGR1cGxp
Y2F0ZSBkYXRlcy4KICAgICByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKG1lcmdlZERhdGVzKTsKICAg
ICAKLSAgICAvLyBEcm9wIG9sZCBkYXRlcyB1bnRpbCB0aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBv
cGVyYXRpbmdEYXRlc1dpbmRvdy4KLSAgICB3aGlsZSAobWVyZ2VkRGF0ZXMuc2l6ZSgpID4gb3Bl
cmF0aW5nRGF0ZXNXaW5kb3cpCisgICAgLy8gRHJvcCBvbGQgZGF0ZXMgdW50aWwgdGhlIFZlY3Rv
ciBzaXplIHJlYWNoZXMgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nLgorICAgIHdoaWxlIChtZXJn
ZWREYXRlcy5zaXplKCkgPiBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCiAgICAgICAgIG1lcmdl
ZERhdGVzLnJlbW92ZSgwKTsKICAgICAKICAgICByZXR1cm4gbWVyZ2VkRGF0ZXM7CkBAIC00Njgs
MTcgKzQ5MCwxNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRv
ZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKQogICAgIGlmICghbV9vcGVyYXRpbmdEYXRl
cy5pc0VtcHR5KCkgJiYgdG9kYXkgPD0gbV9vcGVyYXRpbmdEYXRlcy5sYXN0KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHdoaWxlIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRp
bmdEYXRlc1dpbmRvdykKKyAgICB3aGlsZSAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3Bl
cmF0aW5nRGF0ZXNXaW5kb3dMb25nKQogICAgICAgICBtX29wZXJhdGluZ0RhdGVzLnJlbW92ZSgw
KTsKIAogICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKHRvZGF5KTsKIH0KIAotYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSBjb25zdAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lLCB1bnNpZ25lZCBtYXhPcGVyYXRpbmdEYXRlcykgY29uc3QKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBpZiAobV9vcGVyYXRpbmdE
YXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKKyAgICBpZiAobV9vcGVyYXRp
bmdEYXRlcy5zaXplKCkgPj0gbWF4T3BlcmF0aW5nRGF0ZXMpIHsKICAgICAgICAgaWYgKE9wZXJh
dGluZ0RhdGU6OmZyb21XYWxsVGltZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgPCBt
X29wZXJhdGluZ0RhdGVzLmZpcnN0KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC00OTIsOSArNTE0LDkgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhh
c1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW4KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0
aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3Rp
YykgY29uc3QKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNz
RXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywg
dW5zaWduZWQgbWF4T3BlcmF0aW5nRGF0ZXMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1N0YXRp
c3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lKTsKKyAgICByZXR1cm4gaGFzU3RhdGlzdGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0aWMu
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIG1heE9wZXJhdGluZ0RhdGVzKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVz
KHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCBmMzNiNzIyNjRiNWIwMmZhMDFlMmE0MTU4YWFhZmU3OWYyYTVlZjVh
Li5iYTQ3N2EwMDBjNzQ1ZDk5NjcxZTVlNDdmOWY3ODMyZWMyZGM2NTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC03MSw2ICs3MSw5IEBAIHByaXZhdGU6
CiAgICAgaW50IG1fbW9udGhEYXkgeyAwIH07IC8vIFsxLCAzMV0uCiB9OwogCitjb25zdGV4cHIg
dW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nIHsgMzAgfTsKK2NvbnN0ZXhwciB1bnNp
Z25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd1Nob3J0IHsgNyB9OworCiAvLyBUaGlzIGlzIGFsd2F5
cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiB7CiBwdWJsaWM6CkBAIC0xNjgsNyArMTcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRl
ZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBtYXhPcGVyYXRpbmdEYXRlcykgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBwcmltYXJ5RG9tYWluLCBTZWNvbmRzKSA9IDA7CiAKQEAgLTE4OCwxMiArMTkxLDEyIEBAIHBy
b3RlY3RlZDoKIAogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsK
IAotICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYpIGNvbnN0OwotICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIGNvbnN0OworICAgIGJvb2wgaGFzU3RhdGlzdGlj
c0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIHVuc2lnbmVkIG1heE9wZXJh
dGluZ0RhdGVzKSBjb25zdDsKKyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1l
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCB1bnNpZ25lZCBtYXhPcGVyYXRpbmdEYXRl
cykgY29uc3Q7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElm
TmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBtZXJnZU9wZXJhdGluZ0RhdGVzKFZlY3RvcjxPcGVyYXRp
bmdEYXRlPiYmKTsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJl
UHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRh
Rm9yKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdl
YnNpdGVEYXRhRm9yKEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1v
dmU+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpID0g
MDsKIAogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUoKSB7IHJldHVy
biBtX3N0b3JlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCmluZGV4IDljMDExMDFjNDYyYTBlNzk2NjY4MTUxZTdhZjllODA4MTE2ZmU3YjguLjEx
YTFjMzI2MDdmNzU4MWEwMmU2MmVkY2MzZjE1NmQzNzgwMzA1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC01ODAsNyArNTgwLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9u
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiA9IG1fc3RhdGlzdGljc1N0b3JlID8gbV9zdGF0aXN0aWNzU3RvcmUtPmhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihkb21haW4pIDogZmFsc2U7CisgICAgICAgIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uID0gbV9zdGF0aXN0aWNzU3RvcmUgPyBtX3N0YXRpc3RpY3NTdG9yZS0+aGFzSGFkVXNl
ckludGVyYWN0aW9uKGRvbWFpbiwgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKSA6IGZhbHNlOwog
ICAgICAgICBwb3N0VGFza1JlcGx5KFtoYWRVc2VySW50ZXJhY3Rpb24sIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihoYWRVc2VySW50ZXJhY3Rpb24pOwogICAgICAgICB9KTsKQEAg
LTEwMTIsMTIgKzEwMTIsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Om5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKQogICAgICAgICBtX25ldHdv
cmtTZXNzaW9uLT5ub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZv
clJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9t
YWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1
ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIEhhc2hNYXA8UmVnaXN0
cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYgZG9tYWluc1RvUmVtb3ZlV2Vic2l0
ZURhdGFGb3IsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCiAgICAgaWYgKG1fbmV0d29y
a1Nlc3Npb24pIHsKLSAgICAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlV2Vic2l0ZURhdGFG
b3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlcywg
V1RGTW92ZShkb21haW5zKSwgc2hvdWxkTm90aWZ5UGFnZSwgaW5jbHVkZUh0dHBPbmx5Q29va2ll
cywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX25ldHdvcmtTZXNzaW9u
LT5kZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIFdURk1v
dmUoZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpLCBzaG91bGROb3RpZnlQYWdlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA5ODI0M2IzYzc3
YzFmZDM1NjM1MDMzNjhiYWYxZDQzN2VhM2MyMjk1Li4zNTNjNWZhMTNjZmJkMGQ0ZjhlOWIyNzVh
MmEzOTZlMGQ3ODY2ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCkBAIC02MCw2ICs2MCwxMSBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBlbnVt
IGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBFbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKK2Vu
dW0gY2xhc3MgV2Vic2l0ZURhdGFUb1JlbW92ZSB7CisgICAgQWxsLAorICAgIEFsbEJ1dEh0dHBP
bmx5Q29va2llcywKKyAgICBBbGxCdXRDb29raWVzCit9OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWlu
PiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTEwNyw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KGNvbnN0IFJlZGly
ZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyVXNlckludGVy
YWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQ
ZXJzaXN0ZW50RGF0YVN0b3JlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIFdlYkNvcmU6OkluY2x1
ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIGJv
b2wgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlEKTsKICAgICB2b2lkIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCA0ZjhhMzdmNzU3ZjgwMmRiZGEwOTU2MTM4Nzk4MGE0ZjNhYmEx
NGNmLi45YWIxZWEzZjI0YWI1MTg2YWQzNDljMmVmYmNhYWFiOGFiMGQxOTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzEzLDYg
KzMxMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAgICAgICAgIHN3aXRjaFRvTmV3VGVz
dGluZ1Nlc3Npb24oKTsKIAogICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0SXNJVFBEYXRhYmFzZUVuYWJsZWQocGFyYW1ldGVycy5zaG91bGRF
bmFibGVJVFBEYXRhYmFzZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRJc0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFi
bGVkKHBhcmFtZXRlcnMuaXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCk7
CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKQEAgLTEyMjAsNiAr
MTIyMSwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIH0KIH0KIAordm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTE1MTAsNyArMTUyNCw3IEBAIHN0YXRp
YyBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
Y29uc3QgVmVjdG9yPFJlZ2lzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYm
IGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgSW5jbHVkZUh0dHBPbmx5Q29va2llcyBp
bmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRh
VHlwZXMsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYg
ZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb246OkRvTm90Q3JlYXRlUHJvY2Vzc2VzOwogCkBAIC0xNTUyLDEz
ICsxNTY2LDM3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0CiAKICAgICBhdXRvJiB3ZWJzaXRl
RGF0YVN0b3JlID0gY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhOwogCisgICAgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVDb29raWVzRm9yOworICAgIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29r
aWVzRm9yOworICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxs
QnV0Q29va2llc0ZvcjsKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXNXaXRoQ29va2llc1Rv
RGVsZXRlOwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6Q29va2llcykpIHsKKyAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMo
KSkgeworICAgICAgICAgICAgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5hcHBlbmQo
ZG9tYWluKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZG9tYWlucy5nZXQoZG9tYWluKSkgeworICAg
ICAgICAgICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGw6CisgICAgICAgICAgICAgICAg
ZG9tYWluc1RvRGVsZXRlQ29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0SHR0
cE9ubHlDb29raWVzOgorICAgICAgICAgICAgICAgIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBP
bmx5Q29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0Q29va2llczoKKyAgICAg
ICAgICAgICAgICAvLyBBbHJlYWR5IGFkZGVkLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVEYXRhU3RvcmUu
aG9zdE5hbWVzV2l0aENvb2tpZXMpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNU
b0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zLCB3ZWJzaXRlRGF0
YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1Rv
RGVsZXRlLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKKworICAgICAgICAgICAgaG9zdG5hbWVz
V2l0aENvb2tpZXNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5z
VG9EZWxldGVDb29raWVzRm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVz
KTsKKyAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlLCBXZWJDb3JlOjpJbmNsdWRlSHR0
cE9ubHlDb29raWVzOjpZZXMpOworCisgICAgICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1Rv
RGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dEh0dHBPbmx5Q29va2llc0Zvciwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2ll
cyk7CisgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29yZTo6SW5jbHVkZUh0
dHBPbmx5Q29va2llczo6Tm8pOwogICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
IChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkKKyAgICAgICAgICAgIGRvbWFpbnNUb0Rl
bGV0ZUFsbEJ1dENvb2tpZXNGb3IuYXBwZW5kKGRvbWFpbik7CiAgICAgfQogCiAgICAgVmVjdG9y
PFN0cmluZz4gaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZTsKQEAgLTE1NjYsNyArMTYwNCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAg
ICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIHdl
YnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7Ci0gICAgICAgICAgICBob3N0
bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFp
bnMsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisgICAgICAgICAg
ICBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5z
KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5h
bWVzV2l0aEhTVFNDYWNoZSk7CiAgICAgICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFt
ZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNTgxLDkgKzE2MTksOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERh
dGFTdAogICAgICovCiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKLSAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmZldGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW3RoaXMsIGRvbWFpbnMsIHNlc3Np
b25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0o
YXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZl
dGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW3RoaXMsIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgYXV0byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoZG9tYWlucywgZW50cmllcyk7CisgICAgICAgICAgICBhdXRvIGVudHJpZXNUb0Rl
bGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRD
b29raWVzRm9yLCBlbnRyaWVzKTsKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXNUb0RlbGV0ZSk7CiAgICAg
ICAgICAgICAKQEAgLTE1OTYsMTEgKzE2MzQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QK
ICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAg
aWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBGSVhNRTogUGljayB0
aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24gSUQuCi0gICAgICAg
IHBvc3RTdG9yYWdlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIHNlc3Npb25JRCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgcGF0aCA9IFdURk1v
dmUocGF0aCksIGRvbWFpbnNdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3RoaXMsIHNlc3Npb25JRCwgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShk
b21haW5zKSwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KSwgc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0geworICAg
ICAgICBwb3N0U3RvcmFnZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBzZXNzaW9uSUQsIGNh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBX
VEZNb3ZlKHBhdGgpLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXSgpIG11dGFibGUg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzZXNzaW9uSUQs
IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciksIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCksIHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9y
aWdpbnMocGF0aCldIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PiBlbnRyaWVzVG9EZWxldGU7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWN1
cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykgewotICAgICAgICAgICAgICAgICAgICBpZiAo
IWRvbWFpbnMuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21I
b3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkb21h
aW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBlbnRyaWVzVG9E
ZWxldGUuYXBwZW5kKHNlY3VyaXR5T3JpZ2luKTsKQEAgLTE2MTYsOSArMTY1NCw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5B
bGxQZXJzaXN0ZW50RGF0YVN0CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHBhdGgg
PSBtX3N3RGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXBhdGguaXNFbXB0
eSgpICYmIHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucykpIHsKLSAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Np
b25JRCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFp
bnMsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGNv
bnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxl
IHsKKyAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuZ2V0T3JpZ2luc1dpdGhS
ZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tp
ZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
KGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9y
aWdpbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnMuY29udGFpbnMoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkK
KyAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IuY29u
dGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5
T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsg
c2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMsIDAgfSk7CiAgICAgICAgICAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCku
Y2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwpAQCAtMTYyOCwxMSArMTY2NiwxMSBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVy
c2lzdGVudERhdGFTdAogI2VuZGlmCiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7Ci0gICAgICAgIGZldGNoRGlza0Nh
Y2hlRW50cmllcyhjYWNoZSgpLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgW3RoaXMsIGRvbWFp
bnMsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1
dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhjYWNo
ZSgpLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgW3RoaXMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIFZlY3RvcjxTZWN1
cml0eU9yaWdpbkRhdGE+IGVudHJpZXNUb0RlbGV0ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiBlbnRyaWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFkb21haW5zLmNvbnRhaW5z
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChlbnRyeS5vcmlnaW4u
aG9zdCkpKQorICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2ll
c0Zvci5jb250YWlucyhSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
ZW50cnkub3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgZW50cmllc1RvRGVsZXRlLmFwcGVuZChlbnRyeS5vcmlnaW4pOwogICAgICAg
ICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZChlbnRyeSk7CkBAIC0xNjQ1LDggKzE2ODMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBP
bmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGNvb2tpZVR5cGUgPSBXZWJzaXRl
RGF0YVR5cGU6OkNvb2tpZXM7Ci0KLSAgICBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoc2Vzc2lvbklELCBjb29raWVUeXBlLCB7
IGRvbWFpbiB9LCB0cnVlLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzID8gSW5jbHVkZUh0dHBPbmx5
Q29va2llczo6WWVzIDogSW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8sIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mIGRvbWFpbnNEZWxldGVkRm9yKSBtdXRhYmxlIHsKKyAgICBIYXNoTWFwPFJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiB0b0RlbGV0ZUZvcjsKKyAgICB0
b0RlbGV0ZUZvci5hZGQoZG9tYWluLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzID8gV2Vic2l0ZURh
dGFUb1JlbW92ZTo6QWxsIDogV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0SHR0cE9ubHlDb29r
aWVzKTsKKyAgICBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhzZXNzaW9u
SUQsIGNvb2tpZVR5cGUsIFdURk1vdmUodG9EZWxldGVGb3IpLCB0cnVlLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+JiBkb21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CiAgICAgICAgIFVOVVNF
RF9QQVJBTShkb21haW5zRGVsZXRlZEZvcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggMWM2ZmI2YzJlZTUzN2UyNDEyZjViOTE5YTJlYmNhNTVmYzFlMzg5Yy4uMTRlOTJh
NDBhZmNlYjU3YzQ4MmM5MWE2YzFlYTUyYmJlYmM5NTgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BZENsaWNrQXR0cmlidXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KQEAgLTIwNSw3
ICsyMDYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBP
bmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91
bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
cihQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlu
c1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNTgsNiArMjU5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVE
b21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4s
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMzBhNTUzMmQ4ZDU5YzA2ODAzYzIwNjE2ZjhlZGRjNTY0Nzc4NDBmMC4uOTg3
NzYwZjM2ZjcwMDI1ZjJmYjNmNmE1MGUyMThjYjdkZmU3YWZhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0xMzYsNiArMTM2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwog
ICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFp
biwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3luYworICAgIFNldENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5r
RGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3lu
YwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNv
b2tpZXMpIC0+ICgpIEFzeW5jCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggYTNkZmU2MGE3MGE4YjQ4MmY5MjA5OWU4ZjZlMWNkN2FhZWQyMzE0ZC4uMmVkMWMy
ZWQwMDc5ODgwYzA3ZDdlYWQyMWUzZTk4ZmUzYjhjMzU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRp
ZgogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlSVRQRGF0YWJhc2U7CiAgICAgZW5jb2RlciA8
PCBkb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXI7CisgICAgZW5jb2RlciA8PCBpc0lUUEZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkOwogfQogCiBib29sIE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQpAQCAtMjI3LDcgKzIyOCwxMCBA
QCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvYwogICAgIGlmICghZG93bmxvYWRNb25pdG9yU3BlZWRN
dWx0aXBsaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmRvd25sb2FkTW9u
aXRvclNwZWVkTXVsdGlwbGllciA9ICpkb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXI7Ci0g
ICAgCisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0lUUEZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxFbmFibGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiNDI4NzQw
OWFlZTk2Y2U3MzM5OWQxNDQwNTQ4NDk4Mzg4OTc4Zjc2Li44YWU5MTcxMDJkNThiOGY4ZWI3YjFl
ZGZmY2IzMzQyYTFlOTJiYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0x
MTIsNiArMTEyLDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBib29sIHNob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBzaG91bGRFbmFibGVJVFBEYXRhYmFzZSB7
IGZhbHNlIH07CisgICAgYm9vbCBpc0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFi
bGVkIHsgdHJ1ZSB9OwogICAgIHVpbnQzMl90IGRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGll
ciB7IDEgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKaW5kZXggM2M4YzkzODQ2ZDU5ZjdmMWUzOTFhZTIzZGQyYmZhY2FmMmM4Njg2
ZC4uMWUzMGNlYTZiOWM2MDRjZGM2ZGU3N2QxNTA0NzFhMWNjNDZlNjBlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTEyNSw5ICsx
MjUsOSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6Ok5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh0b3RhbFBy
ZXZhbGVudFJlc291cmNlcywgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uLCB0b3AzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyksIDApOwogfQogCi12b2lkIE5l
dHdvcmtTZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxs
UGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiBkb21h
aW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBtX25ldHdvcmtQcm9jZXNzLT5kZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
c0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92
ZShkb21haW5zKSwgc2hvdWxkTm90aWZ5UGFnZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFdU
Rk1vdmUoZG9tYWlucyksIHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdl
YnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgYm9vbCBzaG91
bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGRiNzg5NjQ0MGEzM2MwYThmYTA3MDg3ZDAw
OTJmMTdiOTY2NWUxNTAuLjgxOGIxNWVlYzJjYTNmY2RhYzUyNjBjNDI1ZmI3OGRmOWVlNWM5YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAg
LTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoYm9vbCk7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vz
c2VkKCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0lu
QWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3Rv
cjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBX
ZWJDb3JlOjpJbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQg
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRh
VG9SZW1vdmU+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2
b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVu
c2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWdu
ZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggNzg1NjRmYjAyZjUzZmU0NWViYmNhN2I1YzRhNzEz
NWRiN2ZhY2E5Yi4uZGM4YzY2ZGZlOWQ3NzI2OWI1Y2EwZWUwNzZiMDNhZGFlMTQ5ZTQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMzgxLDYgKzEzODEs
MTQgQEAgTWVkaWFDYXBhYmlsaXRpZXNFeHRlbnNpb25zRW5hYmxlZDoKICAgaHVtYW5SZWFkYWJs
ZURlc2NyaXB0aW9uOiAiTWVkaWEgQ2FwYWJpbGl0aWVzIEV4dGVuc2lvbnMiCiAgIGNhdGVnb3J5
OiBleHBlcmltZW50YWwKIAorSXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxl
ZDoKKyAgICB0eXBlOiBib29sCisgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VYUEVSSU1FTlRB
TF9GRUFUVVJFU19FTkFCTEVECisgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJJVFAgRmlyc3QgUGFy
dHkgV2Vic2l0ZSBEYXRhIFJlbW92YWwiCisgICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAi
RW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gRmlyc3QgUGFydHkgV2Vic2l0
ZSBEYXRhIFJlbW92YWwiCisgICAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMKKyAgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKICMgRm9yIGludGVybmFsIGZlYXR1cmVz
OgogIyBUaGUgdHlwZSBzaG91bGQgYmUgYm9vbGVhbi4KICMgWW91IG11c3QgcHJvdmlkZSBhIGh1
bWFuUmVhZGFibGVOYW1lIGFuZCBodW1hblJlYWRhYmxlRGVzY3JpcHRpb24gZm9yIGFsbCBkZWJ1
ZyBmZWF0dXJlcy4gVGhleQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggZWRhOGQyMjBkMmJmN2YwMGI2OTJk
MjkyY2ZjNzdjMzUzYjRmMjRkZS4uOTAyODViMzlkYzU2NzQ3ZmJmZTMyNjhkYzZkMzY4ZmFmMjE0
MzU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0yOTcsMTcgKzI5NywzNiBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNp
dGVEYXRhU3RvcgogI2VuZGlmCiB9CiAKLXZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGZyb21Ib3N0LCBXS1N0cmluZ1JlZiB0b0hvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRz
IHsgc2Vjb25kcyB9LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNh
bGxiYWNrXSB7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICNlbmRpZgogfQogCi12b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYpCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY2FsbGJhY2soY29udGV4dCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc0Z1bmN0aW9uIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2lu
ZyhbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CisgICAg
fSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgK
aW5kZXggZjVmOWE0N2ZiODYzOWVlZThhMzUxOTQ4YTIzMGFiNjNhMWE2MmE2Zi4uZTZhMmEwMDdm
MDEyZjQyODY4MjhiYWFlMjUyNzlmOTVhOWY1NTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTczLDggKzcz
LDEyIEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdS
ZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGly
ZWN0ZWRUbyk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKTsK
LVdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZl
VXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJs
ZSBzZWNvbmRzKTsKLVdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQ
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25GdW5jdGlvbikodm9pZCogZnVuY3Rpb25D
b250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3ND
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGZyb21Ib3N0LCBXS1N0cmluZ1JlZiB0b0hvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uRnVuY3Rpb24gY2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlv
bikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0
aW9uIGNhbGxiYWNrKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJv
Y2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vz
c1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc0Z1bmN0aW9uIGNhbGxiYWNrKTsKIHR5cGVkZWYgdm9p
ZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0
aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIFdLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzZjhiNDU5Y2Zk
MjIzZDQ5YTg3M2Y5MmQzZmVhMmYwOGZhZDYyYThjLi45MTNlOTNhYTBiOWQwMTc0ZDRiNjBhNDMx
NWQ1OTc2YjA4Y2NjYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTMxMyw2ICszMTMsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmEKIAogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlSVRQRGF0YWJhc2Ug
PSBbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkludGVy
bmFsRGVidWclQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc0lUUERhdGFiYXNlRW5hYmxlZEtleSgp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXTsKICAgICBwYXJhbWV0ZXJzLmRvd25sb2FkTW9uaXRv
clNwZWVkTXVsdGlwbGllciA9IG1fY29uZmlndXJhdGlvbi0+ZG93bmxvYWRNb25pdG9yU3BlZWRN
dWx0aXBsaWVyKCk7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgZmVhdHVyZSBoYXMgYmVlbiB0dXJu
ZWQgb2ZmIGV4cGxpY2l0bHkuIFRoaXMgYXZvaWRzIGludGVycHJldGluZworICAgIC8vIGEgbm9u
LWV4aXN0aW5nIGRlZmF1bHQgYXMgYSBmYWxzZSB2YWx1ZS4KKyAgICBhdXRvIGlzSVRQRmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWRTdHIgPSBbZGVmYXVsdHMgc3RyaW5nRm9yS2V5
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJl
bmNlc0tleTo6aXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZEtleSgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXTsKKyAgICBpZiAoW2lzSVRQRmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbEVuYWJsZWRTdHIgaXNFcXVhbDpAIjAiXSkKKyAgICAgICAgcGFyYW1ldGVycy5p
c0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkID0gZmFsc2U7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggYTM5ODAxYjM3YTZiMzAyNDE0OTYxZjliMjIwYjkzYzRhNDU5Mzc0Mi4uMGI5MWUz
OTFlMzk4M2Q0MWViNTIyNjQxNjM0YmRiYTRmOTZhNWUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC05
NjIsNiArOTYyLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y29tbWl0dGVkQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JCiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihzZXNzaW9uSUQsIGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmcoc2Vzc2lvbklELCBmcm9t
RG9tYWluLCB0b0RvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdl
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKaW5kZXggMTY2MmJiZWRkYThjYTUwM2VhYTY0NzI5ZDY0ZGNjYzg0YWY0
NzJjNC4uMzcyMzU2Yjg2ODJjMjk5MzM5NTBkNzVhMGJmMzFiODg3ZDIxMzUwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKQEAgLTE0Niw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lm
eVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCwgYm9vbCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNv
cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3Qg
TmF2aWdhdGVkVG9Eb21haW4mLCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRl
ZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0
Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBp
bmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDI0MGI4MjU4MjQ5ZTkxMDJlZDQ5YjNmZjI0ZjA2YmVh
NDYwMWFlZWYuLjA2MDhhNmE0NTRjYTE0ZGY4MWE1OGJiNjUyZjVjYmVjODdiYmNkZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC0xNzY0LDYgKzE3NjQsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Q28KICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoY29uc3QgVVJMJiBmcm9tVVJMLCBjb25zdCBVUkwm
IHRvVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bv
b2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIHByb2Nlc3MtPnNldENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiB7IGZy
b21VUkwgfSwgUmVnaXN0cmFibGVEb21haW4geyB0b1VSTCB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAg
fQorfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCA2NzRmNzU3NTk5ZGMyOTIyMGQyMzgzNWViYTJiMGM5MGNkZTMzNTk2Li4yNTM5ZmY5NzEw
ZGYzZjY4YWU2NzU3YjUyNzY4YTM4MzIxNWJkYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNjgsNiAr
MTY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3Ry
aW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1N0YXR1cyk+JiYpOwogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25z
dCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZnJvbVVSTCwg
Y29uc3QgVVJMJiB0b1VSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhj
b25zdCBVUkwmLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA3YTZhOTFkNTMyMDU2NTI1OWRjOTg3NTcxNWI4MDRmZmQyN2QyYmM1
Li4zMmY2ZGRmMzAzNGI0MGYwNzExYzZjYjZjZDA5ZGY0Yjk3MTg2OTNhIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIw
MTktMDMtMTggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBDbGVhciBub24tY29va2ll
IHdlYnNpdGUgZGF0YSBmb3Igc2l0ZXMgdGhhdCBoYXZlIGJlZW4gbmF2aWdhdGVkIHRvLCB3aXRo
IGxpbmsgZGVjb3JhdGlvbiwgYnkgYSBwcmV2YWxlbnQgcmVzb3VyY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTkyMworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDkwMDEyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmcgdG8gdGhlIFRlc3RSdW5u
ZXI6CisgICAgICAgIC0gQWRkcyBzZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbigpLgorICAgICAgICAtIE1ha2VzIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKCkgd2FpdCBmb3IgY29tcGxldGlvbi4KKyAgICAgICAgLSBNYWtlcyBzdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpIHdhaXQgZm9yIGNvbXBsZXRpb24u
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3ND
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wMy0xOCAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV0tXZWJWaWV3LkdldENvbnRlbnRzU2hvdWxk
UmV0dXJuQXR0cmlidXRlZFN0cmluZyBpcyBjcmFzaGluZyBvbiBpT1MgU2ltdWxhdG9yLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZDU3ZmQ4M2VjNTQzMDQ1ZjkxNWY3ZWQ3ZjMzMzU1
NzM2MGIzOWI2Yy4uNDgxY2VlYjgyOWE0YTlkMWYwMDdiYjI1NDZhMDE0YjZmOTc2YjU3NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zMDMsNiArMzAzLDcgQEAgaW50ZXJmYWNlIFRl
c3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RGcm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRv
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3Ry
aW5nIGhvc3ROYW1lLCBET01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFt
ZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKERPTVN0cmluZyBmcm9tSG9zdCwgRE9N
U3RyaW5nIHRvSG9zdCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2
ZXIoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCA5OGYxZjFjYWNlNTdiOTRjY2E3YmEwNTBmOGYyYjNhNmI3ZTNmZDRh
Li4yNmYyNTc1YmQyNTczMzY4ZTJjZDg2MzU2NTliMzVlNmEyYTFkYjBmIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTE4NTEsNiArMTg1MSwyOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShKU1N0cmluZ1JlZiBob3N0TmFtZSwgSgogICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9CiAK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24oSlNTdHJpbmdSZWYgZnJvbUhvc3QsIEpTU3RyaW5nUmVmIHRvSG9zdCkKK3sKKyAgICBW
ZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFp
blB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRnJvbUhvc3QiKSB9KTsKKyAgICB2YWx1
ZXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoZnJvbUhvc3Qp
IH0pOworICAgIAorICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlRvSG9zdCIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyh0b0hvc3QpIH0pOworICAgIAorICAgIFZlY3RvcjxX
S1N0cmluZ1JlZj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4g
cmF3VmFsdWVzKHZhbHVlcy5zaXplKCkpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwga2V5cy5zaXplKCk7ICsraSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQo
KTsKKyAgICAgICAgcmF3VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKyAgICAK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1
ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1l
LmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CiAKIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMp
CiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCmluZGV4IGI2NWQwYmE4NjYzMzFlZTA2YzBhNTZjMGMzMGZjY2UwMTQzOGEyZWEuLjNi
ZjNkMWE4ZjUxNzdlNTgxYWVmODhiNDI0MWFhOTlkZDAwZmMxMDggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MTYsNiAr
NDE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJl
ZGlyZWN0ZWRGcm9tKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0VG8oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3Rl
ZFRvKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShK
U1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7
CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihK
U1N0cmluZ1JlZiBmcm9tSG9zdCwgSlNTdHJpbmdSZWYgdG9Ib3N0KTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJv
b2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0lzUnVubmluZ1Rlc3QoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5NmMyMTY5OGUyYmRmYzFl
YWE2OGQwN2Q0NTMyOGUxMTJjYjQyMjguLmMzZTI2MjcwYzA0ZWVlZDk3YmIzYTBlODUyMjhlZWRm
NGVhN2E0OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0zMjU1LDE2ICszMjU1LDI4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXCiAgICAgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGRhdGFT
dG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tTdHJpbmdS
ZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCkKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUg
PSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBS
ZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b24oZGF0YVN0b3JlLCBmcm9tSG9zdCwgdG9Ib3N0LCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0
aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGlt
ZW91dCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZl
VXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIGRhdGFTdG9yZSA9
IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwotICAgIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRh
dGFTdG9yZSwgc2Vjb25kcyk7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0
IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKGRhdGFTdG9yZSwgc2Vjb25kcywgJmNvbnRleHQsIHJlc291
cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5k
b25lLCBub1RpbWVvdXQpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUHJv
Y2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0g
V0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMo
ZGF0YVN0b3JlKTsKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4
dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHMoZGF0YVN0b3JlLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNz
Vm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91
dCk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9j
a2luZygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggNmJmYTZi
Y2YzZDJkZjUzZWU2OWJlN2ViM2UzMDZiZGMyZjIyYWJkNy4uMjg4NzQ5ZGZjMDkxYTViODYwNTVi
MTM1YzU1NzgzMTU0NWM2MTA4NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RUbyhXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3Rl
ZFRvKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pOworICAgIHZv
aWQgc2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tTdHJpbmdS
ZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgIHZvaWQgc3RhdGlz
dGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IGQ2YmIxNGY5ODcyMzRkZDcyNDcxOTI4Njk0ZWFlNzAxMDFmYjY2
ZWEuLmE3MDgzMzVjMGY5YTJkMTU3MjFlOWU0M2U5ZjNlNzRjMjIyYTFhZTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMzA0LDYgKzEzMDQsMjAgQEAg
V0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
U2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24iKSkgeworICAgICAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJ
RCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rp
b25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZyb21Ib3N0S2V5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJGcm9tSG9zdCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHRvSG9zdEtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiVG9Ib3N0IikpOworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgZnJvbUhvc3Qg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNz
YWdlQm9keURpY3Rpb25hcnksIGZyb21Ib3N0S2V5LmdldCgpKSk7CisgICAgICAgIFdLU3RyaW5n
UmVmIHRvSG9zdCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdG9Ib3N0S2V5LmdldCgpKSk7CisgICAgICAg
IAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0Nyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJvbUhvc3QsIHRvSG9zdCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24i
KSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91Ymxl
R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RvdWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8
V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNTk5NmQwZGYxODhkN2I1ZTZhMjEw
MDRhNjQxYzQ1MmU1ZTA1MTQ1Li45NDBiMjBiNDAzNzg0MWRkMjc2MzcwOWUwZjFlMGIyMDZjNGE1
NzJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDMtMTggIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChl
eHBlcmltZW50YWwpOiBDbGVhciBub24tY29va2llIHdlYnNpdGUgZGF0YSBmb3Igc2l0ZXMgdGhh
dCBoYXZlIGJlZW4gbmF2aWdhdGVkIHRvLCB3aXRoIGxpbmsgZGVjb3JhdGlvbiwgYnkgYSBwcmV2
YWxlbnQgcmVzb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTkyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkwMDEyNzI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdh
dGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFs
LWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sOiBBZGRlZC4K
KwogMjAxOS0wMy0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgZXhwZXJpbWVudGFsICJhbHBoYUNoYW5uZWwiIHByb3BlcnR5IHRvIFZpZGVvQ29uZmln
dXJhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRo
LWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdh
dGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWEy
YmQ5YWNhMzIwZTUyOTQ3MDU3M2U3MTNiNGRkOGIyZDlmNjdlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0
YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorQ2hlY2sgdGhhdCBub24tY29va2llIHdlYnNpdGUg
ZGF0YSBnZXRzIHJlbW92ZWQgYWZ0ZXIgYSBuYXZpZ2F0aW9uIHdpdGggbGluayBkZWNvcmF0aW9u
IGZyb20gYSBwcmV2YWxlbnQgcmVzb3VyY2UuCisKK0JlZm9yZSBkZWxldGlvbjogQ2xpZW50LXNp
ZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0
cy4KK0JlZm9yZSBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgor
CitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBkZWxldGlv
bjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBj
b29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2ll
IGV4aXN0cy4KKworQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4KKwor
CitSZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3M6CisKK1JlZ2lzdHJhYmxlIGRvbWFpbjogbG9jYWxo
b3N0CisgICAgbGFzdFNlZW46IDAKKyAgICBoYWRVc2VySW50ZXJhY3Rpb246IE5vCisgICAgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbjogLTEKKyAgICBncmFuZGZhdGhlcmVkOiBObworICAgIGdv
dExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlOiBObyAgICBpc1ByZXZhbGVudFJl
c291cmNlOiBZZXMKKyAgICBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZTogTm8KKyAgICBkYXRhUmVj
b3Jkc1JlbW92ZWQ6IDAKK1JlZ2lzdHJhYmxlIGRvbWFpbjogMTI3LjAuMC4xCisgICAgbGFzdFNl
ZW46IDAKKyAgICBoYWRVc2VySW50ZXJhY3Rpb246IE5vCisgICAgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvbjogLTEKKyAgICBncmFuZGZhdGhlcmVkOiBObworICAgIHRvcEZyYW1lTGlua0RlY29y
YXRpb25zRnJvbToKKyAgICAgICAgbG9jYWxob3N0CisgICAgZ290TGlua0RlY29yYXRpb25Gcm9t
UHJldmFsZW50UmVzb3VyY2U6IE5vICAgIGlzUHJldmFsZW50UmVzb3VyY2U6IE5vCisgICAgaXNW
ZXJ5UHJldmFsZW50UmVzb3VyY2U6IE5vCisgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAxCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vi
c2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
d2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNv
cmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkxN2E5NDZkMzZkZGVkMTU1NjdlNmE3MzY2MGM1NTdl
Nzc1OWFiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQt
dG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbApAQCAtMCwwICsxLDEzOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJj
ZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91
dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgbm9u
LWNvb2tpZSB3ZWJzaXRlIGRhdGEgZ2V0cyByZW1vdmVkIGFmdGVyIGEgbmF2aWdhdGlvbiB3aXRo
IGxpbmsgZGVjb3JhdGlvbiBmcm9tIGEgcHJldmFsZW50IHJlc291cmNlLjwvZGl2PgorPGJyPgor
PGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBjb25z
dCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2Vy
dmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGll
bnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24g
c29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAg
ICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDog
YiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRw
dXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVz
c2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50
ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikg
KyAiIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAg
ICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChj
b29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgor
ICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0Fm
dGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0Fm
dGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRl
Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2Fn
ZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRp
b246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToK
KyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNB
ZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1z
aWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMg
PSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAg
ICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdl
cykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVu
Y3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVk
REIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxl
dCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAg
ICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMo
aXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoKGlzQWZ0
ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBJREIgZW50cnkg
ZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9Owor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRk
T3V0cHV0KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlv
bjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICB9OworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0
Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFt
ZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0p
OworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dp
IiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7
IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1
bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hl
Y2tDb29raWVzKGZhbHNlKTsKKyAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKworICAg
ICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgcHJv
Y2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworCisgICAg
ICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsK
KyAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgY2hlY2tJREJEYXRhU3Rv
cmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNo
VGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3QgcHJldmFsZW50UmVzb3VyY2VPcmlnaW4gPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdpbiAgPSAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHByZXZhbGVudFJlc291cmNlT3Jp
Z2luLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKHByZXZhbGVudFJlc291cmNl
T3JpZ2luLCBkZXN0aW5hdGlvbk9yaWdpbik7CisgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRl
RGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365203</attachid>
            <date>2019-03-19 12:23:31 -0700</date>
            <delta_ts>2019-03-19 15:36:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195923-20190319122330.patch</filename>
            <type>text/plain</type>
            <size>89161</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmNmI0NmJlODFhZGZi
ZjUwMjM1NDZjZmYyNjViMjdjZDg5YzhjNy4uYjFlNGMwNDk1M2M2Y2IyZWM3ZDBmYjZjYmU4YjI1
MDVjYzg5MGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAzLTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQ2xlYXIgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEg
Zm9yIHNpdGVzIHRoYXQgaGF2ZSBiZWVuIG5hdmlnYXRlZCB0bywgd2l0aCBsaW5rIGRlY29yYXRp
b24sIGJ5IGEgcHJldmFsZW50IHJlc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU5MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MDAx
MjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgYSBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5h
dmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sCisKKyAgICAgICAgKiBwYWdlL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldElzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJVFBGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCBjb25zdCk6CisKIDIwMTktMDMtMTggIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBTdHJp
bmdCdWZmZXIsIHBvc3NpYmx5IGxlYWRpbmcgdG93YXJkIHJlbW92aW5nIGl0IGVudGlyZWx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDUyZjcxNWU2YTg3ZWEyODgzM2I4YjMyMGIzM2NjZmNhMzcwOGIzZTIuLmY4ZjYz
MzVhY2E2YWQ3YTNkM2RjNGVmNjFiMDNiN2JiYjUwMGViMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
OTcgQEAKKzIwMTktMDMtMTkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBDbGVhciBu
b24tY29va2llIHdlYnNpdGUgZGF0YSBmb3Igc2l0ZXMgdGhhdCBoYXZlIGJlZW4gbmF2aWdhdGVk
IHRvLCB3aXRoIGxpbmsgZGVjb3JhdGlvbiwgYnkgYSBwcmV2YWxlbnQgcmVzb3VyY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTkyMworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDkwMDEyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3Jvc3Mtc2l0ZSB0cmFja2VycyBhYnVzZSBsaW5rIHF1ZXJ5
IHBhcmFtZXRlcnMgdG8gdHJhbnNwb3J0IHVzZXIgaWRlbnRpZmllcnMgYW5kIHRoZW4gc3RvcmUK
KyAgICAgICAgdGhlbSBpbiBmaXJzdC1wYXJ0eSBzdG9yYWdlIHNwYWNlLiBUbyBhZGRyZXNzIHRo
aXMsIHdlJ3ZlIGRvbmUgdGhyZWUgdGhpbmdzOgorICAgICAgICAtIHIyMzY0NDggY2FwcGVkIGFs
bCBwZXJzaXN0ZW50IGNsaWVudC1zaWRlIGNvb2tpZXMgdG8gc2V2ZW4gZGF5cyBvZiBzdG9yYWdl
LgorICAgICAgICAtIHIyNDIyODggZnVydGhlciBjYXBwZWQgcGVyc2lzdGVudCBjbGllbnQtc2lk
ZSBjb29raWVzIGZvciBuYXZpZ2F0aW9ucyB3aXRoIGxpbmsgZGVjb3JhdGlvbiBmcm9tIHByZXZh
bGVudCByZXNvdXJjZXMuCisgICAgICAgIC0gcjI0MjYwMyBhZGRlZCBsb2dnaW5nIG9mIG5hdmln
YXRpb25zIHdpdGggbGluayBkZWNvcmF0aW9uIGZyb20gcHJldmFsZW50IHJlc291cmNlcy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhh
dCByZW1vdmVzIG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGZvciBzaXRlcworICAgICAgICB0aGF0
IGhhdmUgYmVlbiBuYXZpZ2F0ZWQgdG8sIHdpdGggbGluayBkZWNvcmF0aW9uLCBieSBhIHByZXZh
bGVudCByZXNvdXJjZS4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHJlc291cmNlIGRvbWFp
bnMgdG8gcmVtb3ZlIHdlYnNpdGUgZGF0YSBmb3IgYXJlIG5vdyBtYXJrZWQgd2l0aCBhbiBlbnVt
IGNhbGxlZAorICAgICAgICBXZWJzaXRlRGF0YVRvUmVtb3ZlIHdpdGggdmFsdWVzIEFsbCwgQWxs
QnV0SHR0cE9ubHlDb29raWVzLCBBbGxCdXRDb29raWVzLiBBcyByZXNvdXJjZXMgYXJlCisgICAg
ICAgIGl0ZXJhdGVkLCB0aGV5IGFyZSBtYXJrZWQgZm9yIGVpdGhlciBvZiB0aGVzZSB2YWx1ZXMg
YW5kIHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKCkgbGVhZHMgdG8gdGhlIG1hcmtp
bmcgd2l0aAorICAgICAgICBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVzLgorCisg
ICAgICAgIFRoZW4gTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKCkgbG9va3MgYXQgdGhpcyBzZXR0aW5nIGFuZCByZW1vdmVzCisgICAgICAgIHdl
YnNpdGUgZGF0YSBhY2NvcmRpbmdseS4KKworICAgICAgICBUaGUgdGhpbmtpbmcgYmVoaW5kIHRo
aXMgaXMgdGhhdCB0aGUgbGlmZXRpbWUgY2FwIGFwcGxpZWQgaW4gcjIzNjQ0OCBhbmQgcjI0MjI4
OCB0YWtlIGNhcmUgb2YKKyAgICAgICAgc2NyaXB0IHdyaXRhYmxlIGNvb2tpZXMsIGFuZCB0aGlz
IHBhdGNoIHRha2VzIGNhcmUgb2YgYWxsIG90aGVyIHNjcmlwdCB3cml0YWJsZSBzdG9yYWdlLgor
CisgICAgICAgIFRoZSBpbmZyYXN0cnVjdHVyZSB0byBoYW5kbGUgdXNlciBpbnRlcmFjdGlvbiBl
eHBpcmF0aW9uIGlzIG5vdyBwYXJhbWV0ZXJpemVkIHNvIHRoYXQgbXVsdGlwbGUKKyAgICAgICAg
ZXhwaXJpZXMgY2FuIGJlIGFwcGxpZWQuIEluIHRoaXMgcGFydGljdWxhciBjYXNlLCBzZXZlbiBk
YXlzIG9mIGJyb3dzZXIgdXNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNob3Vs
ZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNG
b3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc0hhZFVu
ZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURh
dGFGb3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojpkb21haW5zVG9TdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRXBpcmF0aW9u
VGltZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6bWVyZ2VPcGVyYXRpbmdEYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3Rp
Y3NFeHBpcmVkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMpOiBEZWxldGVkLgorICAgICAg
ICAgICBSZW5hbWVkIHRvIHJlZmxlY3QgdGhhdCBpdCBhY3R1YWxseSB0YWtlcyBhIHBhcmFtZXRl
ciBmb3Igd2hpY2ggdHlwZXMgb2YgZGF0YSB0byByZW1vdmUuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKTogRGVsZXRlZC4KKyAgICAgICAgICAgUmVuYW1lZCB0byByZWZsZWN0
IHRoYXQgaXQgYWN0dWFsbHkgdGFrZXMgYSBwYXJhbWV0ZXIgZm9yIHdoaWNoIHR5cGVzIG9mIGRh
dGEgdG8gcmVtb3ZlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lz
dGVudERhdGFTdG9yZXMpOiBEZWxldGVkLgorICAgICAgICAgICBSZW5hbWVkIHRvIHJlZmxlY3Qg
dGhhdCBpdCBhY3R1YWxseSB0YWtlcyBhIHBhcmFtZXRlciBmb3Igd2hpY2ggdHlwZXMgb2YgZGF0
YSB0byByZW1vdmUuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9u
Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAxOS0wMy0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgV0tXZWJWaWV3LkdldENvbnRlbnRzU2hvdWxkUmV0dXJuQXR0cmlidXRl
ZFN0cmluZyBpcyBjcmFzaGluZyBvbiBpT1MgU2ltdWxhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCBkMjQ5N2RjNDM2MGI2NTcwYjFmNDM1
NWVlNDQzNDMzY2U2ODcyMDFhLi4zOTRiZjY3OGQyMTY5MTBjYzhmODFhYWNiOWMzNGNjYmExNjk2
MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApA
QCAtMTUwLDYgKzE1MCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SXNJVFBEYXRhYmFzZUVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lUUERhdGFiYXNlRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQogICAgIGJvb2wgaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
SVRQRGF0YWJhc2VFbmFibGVkOyB9CisgICAgCisgICAgdm9pZCBzZXRJc0lUUEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJVFBGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaXNJ
VFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZDsgfQogCiAgICAgdm9pZCBz
ZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzKGJvb2wgaXNFbmFibGVkKSB7IG1faXNSZXN0
cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCByZXN0cmlj
dGVkSFRUUFJlc3BvbnNlQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9pc1Jlc3RyaWN0ZWRIVFRQ
UmVzcG9uc2VBY2Nlc3M7IH0KQEAgLTUzNyw2ICs1NDAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBib29sIG1faXNJVFBEYXRhYmFzZUVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkIHsgZmFsc2UgfTsKIAogICAg
IGJvb2wgbV9yZWZlcnJlclBvbGljeUF0dHJpYnV0ZUVuYWJsZWQgeyBmYWxzZSB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCBlNzIwMmQ4YmQzNzE5YmE1N2U0YmUxYzM0Njg4NzdhYzU0ODYxZDhkLi41YzI3NmFiYThi
YmYyMGM5ZmZmYWViMTBmYTE4MWNmZGEzNzNmMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTgxOSw3ICs4MTksNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIGlmICh1c2VyV2FzUHJvbXB0ZWROb3cpIHsK
ICAgICAgICAgYXV0byBzdWJGcmFtZVN0YXR1cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsKICAgICAgICAgQVNTRVJUKHN1YkZy
YW1lU3RhdHVzLmZpcnN0ID09IEFkZGVkUmVjb3JkOjpObyk7Ci0gICAgICAgIEFTU0VSVChoYXNI
YWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4pKTsKKyAgICAgICAgQVNTRVJUKGhhc0hh
ZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxv
bmcpKTsKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3RvcmFnZUFjY2Vzc1Vu
ZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LCBzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZy
YW1lRG9tYWluKTsKICAgICB9CiAKQEAgLTgzOSw3ICs4MzksNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJG
cmFtZURvbQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgYXV0byBzdWJGcmFtZVN0YXR1cyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHN1YkZyYW1lRG9tYWlu
KTsKICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVzLmZpcnN0ID09IEFkZGVkUmVjb3JkOjpO
byk7Ci0gICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4p
KTsKKyAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwg
T3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKICAgICAgICAgQVNTRVJUKGhhc1VzZXJHcmFu
dGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BG
cmFtZURvbWFpbikpOwogI2VuZGlmCiAgICAgICAgIHNldFVzZXJJbnRlcmFjdGlvbihzdWJGcmFt
ZURvbWFpbiwgdHJ1ZSwgV2FsbFRpbWU6Om5vdygpKTsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyVXNlckludGVyYWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAgfQogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBPcGVyYXRpbmdEYXRlc1dpbmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTA1MCw3ICsxMDUwLDcgQEAgYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmwKICAgICAKICAgICBXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtX2hhZFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMSkpOwogCi0gICAgaWYgKGhhc1N0YXRpc3RpY3NFeHBp
cmVkKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSkgeworICAgIGlmIChoYXNTdGF0aXN0
aWNzRXhwaXJlZChtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0ZXNX
aW5kb3cpKSB7CiAgICAgICAgIC8vIERyb3AgcHJpdmFjeSBzZW5zaXRpdmUgZGF0YSBiZWNhdXNl
IHdlIG5vIGxvbmdlciBuZWVkIGl0LgogICAgICAgICAvLyBTZXQgdGltZXN0YW1wIHRvIDAgc28g
dGhhdCBzdGF0aXN0aWNzIG1lcmdlIHdpbGwga25vdwogICAgICAgICAvLyBpdCBoYXMgYmVlbiBy
ZXNldCBhcyBvcHBvc2VkIHRvIGl0cyBkZWZhdWx0IC0xLgpAQCAtMTQ5Miw3ICsxNDkyLDE5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRo
ZXJpbmcoVmVjdG9yPHVuc2lnbmVkPiYmCiAgICAgfQogfQogCi1WZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWdpc3RyYWJsZURv
bWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNob3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKGNvbnN0IFByZXZh
bGVudERvbWFpbkRhdGEmIHJlc291cmNlU3RhdGlzdGljLCBib29sIHNob3VsZENoZWNrRm9yR3Jh
bmRmYXRoZXJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuICFyZXNvdXJjZVN0YXRpc3RpYy5oYWRV
c2VySW50ZXJhY3Rpb24gJiYgKCFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nIHx8ICFyZXNv
dXJjZVN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKTsKK30KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0Zvcihjb25zdCBQ
cmV2YWxlbnREb21haW5EYXRhJiByZXNvdXJjZVN0YXRpc3RpYywgYm9vbCBzaG91bGRDaGVja0Zv
ckdyYW5kZmF0aGVyaW5nKSBjb25zdAoreworICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZVN0YXRp
c3RpYyk7CisgICAgVU5VU0VEX1BBUkFNKHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0
ZURhdGFUb1JlbW92ZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlZ2lz
dHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNTA0LDEzICsxNTE2LDE1IEBAIFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlZ2lzdHJh
YmxlRG9tYWluCiAKICAgICBjbGVhckV4cGlyZWRVc2VySW50ZXJhY3Rpb25zKCk7CiAgICAgCi0g
ICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBwcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4gZG9tYWluc1RvUmVt
b3ZlV2Vic2l0ZURhdGFGb3I7CiAKICAgICBWZWN0b3I8UHJldmFsZW50RG9tYWluRGF0YT4gcHJl
dmFsZW50RG9tYWlucyA9IHRoaXMtPnByZXZhbGVudERvbWFpbnMoKTsKICAgICBWZWN0b3I8dW5z
aWduZWQ+IGRvbWFpbklEc1RvQ2xlYXJHcmFuZGZhdGhlcmluZzsKICAgICBmb3IgKGF1dG8mIHN0
YXRpc3RpYyA6IHByZXZhbGVudERvbWFpbnMpIHsKLSAgICAgICAgaWYgKCFzdGF0aXN0aWMuaGFk
VXNlckludGVyYWN0aW9uICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8fCAhc3Rh
dGlzdGljLmdyYW5kZmF0aGVyZWQpKQotICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzLmFw
cGVuZChzdGF0aXN0aWMucmVnaXN0ZXJhYmxlRG9tYWluKTsKKyAgICAgICAgaWYgKHNob3VsZFJl
bW92ZUFsbFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhl
cmluZykpCisgICAgICAgICAgICBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvci5hZGQoc3Rh
dGlzdGljLnJlZ2lzdGVyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsKTsKKyAg
ICAgICAgZWxzZSBpZiAoc2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0ZvcihzdGF0aXN0aWMsIHNo
b3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKQorICAgICAgICAgICAgZG9tYWluc1RvUmVtb3Zl
V2Vic2l0ZURhdGFGb3IuYWRkKHN0YXRpc3RpYy5yZWdpc3RlcmFibGVEb21haW4sIFdlYnNpdGVE
YXRhVG9SZW1vdmU6OkFsbEJ1dENvb2tpZXMpOwogCiAgICAgICAgIGlmIChzaG91bGRDbGVhckdy
YW5kZmF0aGVyaW5nICYmIHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKQogICAgICAgICAgICAgZG9t
YWluSURzVG9DbGVhckdyYW5kZmF0aGVyaW5nLmFwcGVuZChzdGF0aXN0aWMuZG9tYWluSUQpOwpA
QCAtMTUxOCw3ICsxNTMyLDcgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVnaXN0cmFibGVEb21haW4KIAogICAgIGNsZWFy
R3JhbmRmYXRoZXJpbmcoV1RGTW92ZShkb21haW5JRHNUb0NsZWFyR3JhbmRmYXRoZXJpbmcpKTsK
ICAgICAKLSAgICByZXR1cm4gcHJldmFsZW50UmVzb3VyY2VzOworICAgIHJldHVybiBkb21haW5z
VG9SZW1vdmVXZWJzaXRlRGF0YUZvcjsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA2ZTNlM2UwZGI4
NmQyMjAxOWY1MzM0M2M2MWE0OWJkODYxZGM5NWUwLi40NTY2NmRjNDAxY2NlNjE3NzUyYjgzNTM1
YzA5OGYzZGU1NjYxYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNs
ZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBv
dmVycmlkZTsKKyAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0
TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzKSBvdmVycmlkZTsKIApA
QCAtMTU4LDcgKzE1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcnVuZVN0YXRpc3RpY3NJZk5l
ZWRlZCgpIG92ZXJyaWRlOwogICAgIGVudW0gY2xhc3MgQWRkZWRSZWNvcmQgeyBObywgWWVzIH07
CiAgICAgc3RkOjpwYWlyPEFkZGVkUmVjb3JkLCB1bnNpZ25lZD4gZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKLSAg
ICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vi
c2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFJlbW92ZUFsbFdlYnNpdGVE
YXRhRm9yKGNvbnN0IFByZXZhbGVudERvbWFpbkRhdGEmLCBib29sIHNob3VsZENoZWNrRm9yR3Jh
bmRmYXRoZXJpbmcpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0Zv
cihjb25zdCBQcmV2YWxlbnREb21haW5EYXRhJiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0
aGVyaW5nKSBjb25zdDsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0
YVRvUmVtb3ZlPiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0RhdGFiYXNlU3RvcmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBib29sIGNyZWF0ZVNjaGVtYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA3MDYyOWVlMWEwZWRkYmQ3
MGRiZmNiZmIyOWQ0NWEyYWNhZTlmNjc5Li42OWY3OTI0MzBmZmU2NWIzNjgzMzMyNTc0Y2YyNDNl
MGZjN2IwOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRD
b2RpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3Jl
Z2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgpAQCAtNDQ0LDEyICs0NDUsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG8KICAg
ICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OwogfQogCi1i
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCitib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2lu
ZG93KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBtYXBF
bnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoZG9tYWluKTsKLSAgICByZXR1cm4g
bWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkgPyBmYWxzZTogaGFzSGFk
VW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKG1hcEVudHJ5LT52YWx1ZSk7CisgICAgcmV0
dXJuIG1hcEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpID8gZmFsc2U6IGhh
c0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihtYXBFbnRyeS0+dmFsdWUsIG9wZXJh
dGluZ0RhdGVzV2luZG93KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291
cmNlU3RhdGlzdGljLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlIG5ld1ByZXZhbGVuY2UpCkBAIC03
ODUsMTEgKzc4NiwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgRnVuY3Rpb248dm9pZChjbwogICAgICAgICBwcm9jZXNz
RnVuY3Rpb24ocmVzb3VyY2VTdGF0aXN0aWMpOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6aGFzSGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKSBjb25zdAorYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJ
bnRlcmFjdGlvbihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3cgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaGFk
VXNlckludGVyYWN0aW9uICYmIGhhc1N0YXRpc3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGlj
KSkgeworICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gJiYgaGFz
U3RhdGlzdGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0aWMsIG9wZXJhdGluZ0RhdGVzV2luZG93
KSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kgc2Vuc2l0aXZlIGRhdGEgYmVjYXVzZSB3ZSBu
byBsb25nZXIgbmVlZCBpdC4KICAgICAgICAgLy8gU2V0IHRpbWVzdGFtcCB0byAwIHNvIHRoYXQg
c3RhdGlzdGljcyBtZXJnZSB3aWxsIGtub3cKICAgICAgICAgLy8gaXQgaGFzIGJlZW4gcmVzZXQg
YXMgb3Bwb3NlZCB0byBpdHMgZGVmYXVsdCAtMS4KQEAgLTgwMSw3ICs4MDIsMTcgQEAgYm9vbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc0hhZFVuZXhwaXJlZFJlY2VudFVz
ZXJJbnRlcmFjdGlvbihSZXMKICAgICByZXR1cm4gcmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlcklu
dGVyYWN0aW9uOwogfQogCi1WZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0
YUZvcigpCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2hvdWxkUmVt
b3ZlQWxsV2Vic2l0ZURhdGFGb3IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0
aXN0aWMsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhaGFzSGFkVW5l
eHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKHJlc291cmNlU3RhdGlzdGljLCBPcGVyYXRpbmdE
YXRlc1dpbmRvdzo6TG9uZykgJiYgKCFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nIHx8ICFy
ZXNvdXJjZVN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKTsKK30KKworYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIGJvb2wgc2hvdWxkQ2hlY2tGb3JH
cmFuZGZhdGhlcmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5pc0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFi
bGVkKCkgJiYgcmVzb3VyY2VTdGF0aXN0aWMuZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50
UmVzb3VyY2UgJiYgIWhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihyZXNvdXJj
ZVN0YXRpc3RpYywgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OlNob3J0KSAmJiAoIXNob3VsZENoZWNr
Rm9yR3JhbmRmYXRoZXJpbmcgfHwgIXJlc291cmNlU3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpOwor
fQorCitIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3Zl
V2Vic2l0ZURhdGFGb3IoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC04MTEsMTYgKzgyMiwyMCBAQCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVAogICAgIGlmIChzaG91
bGRDbGVhckdyYW5kZmF0aGVyaW5nKQogICAgICAgICBjbGVhckVuZE9mR3JhbmRmYXRoZXJpbmdU
aW1lU3RhbXAoKTsKIAotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gcHJldmFsZW50UmVz
b3VyY2VzOworICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1v
dmU+IGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yOwogICAgIGZvciAoYXV0byYgc3RhdGlz
dGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0
YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmICFoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24oc3RhdGlzdGljKSAmJiAoIXNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcg
fHwgIXN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKSkKLSAgICAgICAgICAgIHByZXZhbGVudFJlc291
cmNlcy5hcHBlbmQoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgaWYgKHNo
b3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFu
ZGZhdGhlcmluZykpCisgICAgICAgICAgICBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvci5h
ZGQoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGwp
OworICAgICAgICBlbHNlIGlmIChzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKHN0YXRpc3Rp
Yywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKKyAgICAgICAgICAgIGRvbWFpbnNU
b1JlbW92ZVdlYnNpdGVEYXRhRm9yLmFkZChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4sIFdl
YnNpdGVEYXRhVG9SZW1vdmU6OkFsbEJ1dENvb2tpZXMpOworICAgICAgICAgICAgc3RhdGlzdGlj
LmdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlID0gZmFsc2U7CisgICAgICAg
IH0KIAogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZyAmJiBzdGF0aXN0aWMu
Z3JhbmRmYXRoZXJlZCkKICAgICAgICAgICAgIHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkID0gZmFs
c2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNlczsKKyAgICByZXR1cm4g
ZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3I7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggM2RlOGVmNWY5
NTRjN2YyZmYzMjQzOTVlMzU1MjM2ZGFjMmJkMGQ4MS4uZjFkZDJkODM2NWNjMTViYmQ4YjhlYzE4
YjFlNmE4ZTJkNDZhZDlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxv
Z0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFy
VXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVy
cmlkZTsKKyAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TGFz
dFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzKSBvdmVycmlkZTsKIApAQCAt
MTE0LDcgKzExNCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tBbmRL
ZWVwQ29va2llcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkQmxvY2tBbmRQdXJnZUNvb2tpZXMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYpOwogICAgIHN0YXRpYyBib29sIGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQ
cm9tcHQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJik7Ci0gICAgYm9vbCBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OworICAgIGJvb2wgaGFzSGFkVW5leHBpcmVkUmVj
ZW50VXNlckludGVyYWN0aW9uKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBPcGVyYXRpbmdEYXRl
c1dpbmRvdykgY29uc3Q7CisgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5n
KSBjb25zdDsKKyAgICBib29sIHNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3Q7
CiAgICAgYm9vbCB3YXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmIHVwZGF0ZWQpIGNvbnN0OwogICAgIHZvaWQgaW5jcmVtZW50UmVjb3Jkc0RlbGV0
ZWRDb3VudEZvckRvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwg
UmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CkBAIC0xMjYsMTAgKzEyOCw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgcHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4gcmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpIG92ZXJyaWRl
OworICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+IHJl
Z2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKICAgICBi
b29sIGlzTWVtb3J5U3RvcmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLQogICAg
IFdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPiBtX3BlcnNp
c3RlbnRTdG9yYWdlOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNGZkNDg0ZTlmYzVhZmRkOTRhY2My
NjdlMWNiZjkxMDk2MDQ4ZmMwYS4uYzIwZDA5MjljODlhYzM4Zjg3NTFjMTYxY2Q5NDdjYWIyMGEx
Zjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAg
LTUwLDcgKzUwLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogY29uc3RleHByIFNlY29uZHMgbWluaW11bVN0YXRpc3RpY3NQcm9jZXNzaW5nSW50ZXJ2
YWwgeyA1X3MgfTsKLWNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvdyB7IDMw
IH07Citjb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nIHsgMzAgfTsK
K2NvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd1Nob3J0IHsgNyB9OwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhj
b25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQpAQCAtNjMsNiArNjQsMjgg
QEAgc3RhdGljIFN0cmluZyBkb21haW5zVG9TdHJpbmcoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxl
RG9tYWluPiYgZG9tYWlucykKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
IH0KKworc3RhdGljIFN0cmluZyBkb21haW5zVG9TdHJpbmcoY29uc3QgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVE
YXRhRm9yKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGF1dG8mIGRv
bWFpbiA6IGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLmtleXMoKSkgeworICAgICAgICBp
ZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChkb21haW4uc3RyaW5nKCkpOworICAgICAg
ICBzd2l0Y2ggKGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLmdldChkb21haW4pKSB7Cisg
ICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsOgorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIoYWxsIGRhdGEpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRIdHRwT25seUNvb2tpZXM6CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihhbGwgYnV0IEh0dHBPbmx5IGNvb2tpZXMp
Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3Zl
OjpBbGxCdXRDb29raWVzOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoYWxs
IGJ1dCBjb29raWVzKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KICNlbmRpZgogCiBPcGVyYXRpbmdEYXRl
IE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShXYWxsVGltZSB0aW1lKQpAQCAtMTU3LDEyICsx
ODAsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFN1Ym1p
dFRlbGVtZXRyeShib29sIHZhbHVlKQogICAgIG1fcGFyYW1ldGVycy5zaG91bGRTdWJtaXRUZWxl
bWV0cnkgPSB2YWx1ZTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
bW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIXNob3VsZFJlbW92ZURhdGFSZWNvcmRzKCkp
IHsKLSAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcyLDMzICsxOTUsMzMgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJgogICAgICAgICBtX2FjdGl2ZVBsdWdpblRva2Vucy5hZGQocGx1Z2luLT5wbHVn
aW5Qcm9jZXNzVG9rZW4oKSk7CiAjZW5kaWYKIAotICAgIGF1dG8gcHJldmFsZW50UmVzb3VyY2VE
b21haW5zID0gcmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOwotICAg
IGlmIChwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxi
YWNrKCk7CisgICAgYXV0byBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvciA9IHJlZ2lzdHJh
YmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKTsKKyAgICBpZiAoZG9tYWluc1RvUmVt
b3ZlV2Vic2l0ZURhdGFGb3IuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICBSRUxFQVNFX0xPR19JTkZPX0lGKG1fZGVidWdMb2dnaW5nRW5hYmxlZCwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnLCAiQWJvdXQgdG8gcmVtb3ZlIGRhdGEgcmVjb3JkcyBmb3IgJXtw
dWJsaWN9cy4iLCBkb21haW5zVG9TdHJpbmcocHJldmFsZW50UmVzb3VyY2VEb21haW5zKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JTkZPX0lGKG1fZGVidWdMb2dnaW5nRW5hYmxl
ZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiQWJvdXQgdG8gcmVtb3ZlIGRhdGEgcmVj
b3JkcyBmb3IgJXtwdWJsaWN9cy4iLCBkb21haW5zVG9TdHJpbmcoZG9tYWluc1RvUmVtb3ZlV2Vi
c2l0ZURhdGFGb3IpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICBzZXREYXRhUmVjb3Jk
c0JlaW5nUmVtb3ZlZCh0cnVlKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJl
dmFsZW50UmVzb3VyY2VEb21haW5zID0gY3Jvc3NUaHJlYWRDb3B5KHByZXZhbGVudFJlc291cmNl
RG9tYWlucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
ID0gbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlLmNvcHlSZWYoKV0gKCkgbXV0YWJsZSB7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvciA9
IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvciksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
ID0gbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlLmNvcHlSZWYoKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgd2Vha1RoaXMtPm1fc3RvcmUuZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJs
ZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VE
b21haW5zKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgSW5j
bHVkZUh0dHBPbmx5Q29va2llczo6WWVzLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya1F1ZXVlID0gd29ya1F1ZXVlLmNvcHlS
ZWYoKV0oY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNXaXRoRGVsZXRl
ZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtRdWV1ZS0+ZGlzcGF0Y2go
W2RvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNX
aXRoRGVsZXRlZFdlYnNpdGVEYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlz
LT5tX3N0b3JlLmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIFdURk1vdmUoZG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya1F1ZXVlID0gd29ya1F1
ZXVlLmNvcHlSZWYoKV0oY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNX
aXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtRdWV1ZS0+
ZGlzcGF0Y2goW2RvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHdlYWtUaGlzLT5pbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9t
YWlucyhXVEZNb3ZlKGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPnNldERhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKGZhbHNlKTsKLSAgICAg
ICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSU5GT19JRih3ZWFrVGhpcy0+bV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWcsICJEb25lIHJlbW92aW5nIGRhdGEgcmVjb3Jkcy4iKTsKICNlbmRpZgpA
QCAtNDMwLDcgKzQ1Myw3IEBAIE9wdGlvbmFsPFNlY29uZHM+IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKSBjb25zdAogICAgIGlmIChtX3BhcmFt
ZXRlcnMudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIFdhbGxUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0gbV9wYXJhbWV0ZXJzLnRpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb24udmFsdWUoKTsKICAgICAKLSAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXpl
KCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3cpCisgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6
ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZykKICAgICAgICAgcmV0dXJuIG1fb3BlcmF0
aW5nRGF0ZXMuZmlyc3QoKS5zZWNvbmRzU2luY2VFcG9jaCgpOwogICAgIAogICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CkBAIC00NDgsOCArNDcxLDggQEAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VPcGVyYXRpbmdEYXRlcyhjb25zdCBWZWMK
ICAgICAvLyBSZW1vdmUgZHVwbGljYXRlIGRhdGVzLgogICAgIHJlbW92ZVJlcGVhdGVkRWxlbWVu
dHMobWVyZ2VkRGF0ZXMpOwogICAgIAotICAgIC8vIERyb3Agb2xkIGRhdGVzIHVudGlsIHRoZSBW
ZWN0b3Igc2l6ZSByZWFjaGVzIG9wZXJhdGluZ0RhdGVzV2luZG93LgotICAgIHdoaWxlIChtZXJn
ZWREYXRlcy5zaXplKCkgPiBvcGVyYXRpbmdEYXRlc1dpbmRvdykKKyAgICAvLyBEcm9wIG9sZCBk
YXRlcyB1bnRpbCB0aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBvcGVyYXRpbmdEYXRlc1dpbmRvd0xv
bmcuCisgICAgd2hpbGUgKG1lcmdlZERhdGVzLnNpemUoKSA+IG9wZXJhdGluZ0RhdGVzV2luZG93
TG9uZykKICAgICAgICAgbWVyZ2VkRGF0ZXMucmVtb3ZlKDApOwogICAgIAogICAgIHJldHVybiBt
ZXJnZWREYXRlczsKQEAgLTQ2OCwxNyArNDkxLDE4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpCiAgICAg
aWYgKCFtX29wZXJhdGluZ0RhdGVzLmlzRW1wdHkoKSAmJiB0b2RheSA8PSBtX29wZXJhdGluZ0Rh
dGVzLmxhc3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2hpbGUgKG1fb3BlcmF0aW5nRGF0
ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KQorICAgIHdoaWxlIChtX29wZXJhdGlu
Z0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCiAgICAgICAgIG1fb3Bl
cmF0aW5nRGF0ZXMucmVtb3ZlKDApOwogCiAgICAgbV9vcGVyYXRpbmdEYXRlcy5hcHBlbmQodG9k
YXkpOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGlj
c0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIGNvbnN0Citi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoV2Fs
bFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93
IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIAotICAgIGlmIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRp
bmdEYXRlc1dpbmRvdykgeworCisgICAgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRh
eXMgPSAob3BlcmF0aW5nRGF0ZXNXaW5kb3cgPT0gT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxvbmcg
PyBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcgOiBvcGVyYXRpbmdEYXRlc1dpbmRvd1Nob3J0KTsK
KyAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dJ
bkRheXMpIHsKICAgICAgICAgaWYgKE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSkgPCBtX29wZXJhdGluZ0RhdGVzLmZpcnN0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00OTIsOSArNTE2LDkgQEAgYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1v
c3RSZWNlbnRVc2VySW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QKK2Jvb2wgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgb3BlcmF0aW5n
RGF0ZXNXaW5kb3cpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1N0YXRpc3RpY3NFeHBpcmVkKHJl
c291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKKyAgICByZXR1
cm4gaGFzU3RhdGlzdGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUsIG9wZXJhdGluZ0RhdGVzV2luZG93KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBtYXhp
bXVtRW50cnlDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCBmMzNiNzIyNjRiNWIwMmZhMDFlMmE0MTU4YWFhZmU3OWYyYTVlZjVhLi5kMzBhYTlmNWRk
YWVhOWRjZjcwYzJiMDg2YzM0MjJjNjMzMmYzMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC03MSw2ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
bW9udGhEYXkgeyAwIH07IC8vIFsxLCAzMV0uCiB9OwogCitlbnVtIGNsYXNzIE9wZXJhdGluZ0Rh
dGVzV2luZG93IDogYm9vbCB7IExvbmcsIFNob3J0IH07CisKIC8vIFRoaXMgaXMgYWx3YXlzIGNv
bnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IHsKIHB1YmxpYzoKQEAgLTE2OCw3ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHByaW1hcnlE
b21haW4sIFNlY29uZHMpID0gMDsKIApAQCAtMTg4LDEyICsxOTAsMTIgQEAgcHJvdGVjdGVkOgog
CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSYsIFdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwogCi0gICAgYm9v
bCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29u
c3Q7Ci0gICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSkgY29uc3Q7CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0
OworICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdDsKICAgICB2b2lkIHNj
aGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWZOZWNlc3NhcnkoKTsKICAgICB2b2lk
IG1lcmdlT3BlcmF0aW5nRGF0ZXMoVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYpOwogICAgIHZpcnR1
YWwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JE
ZWJ1Z01vZGUoKSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IHJl
Z2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKSA9IDA7CisgICAgdmlydHVh
bCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiByZWdpc3Ry
YWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpID0gMDsKIAogICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSYgc3RvcmUoKSB7IHJldHVybiBtX3N0b3JlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDljMDExMDFjNDYyYTBl
Nzk2NjY4MTUxZTdhZjllODA4MTE2ZmU3YjguLmRiZWUwOTQ3ZTY2YTI1ZGIxY2Y4NzU2MmUxMTZm
YjFlYTlmNWM2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlu
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewotICAgICAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiA9IG1fc3RhdGlzdGljc1N0b3Jl
ID8gbV9zdGF0aXN0aWNzU3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4pIDogZmFs
c2U7CisgICAgICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gbV9zdGF0aXN0aWNzU3RvcmUg
PyBtX3N0YXRpc3RpY3NTdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKGRvbWFpbiwgT3BlcmF0
aW5nRGF0ZXNXaW5kb3c6OkxvbmcpIDogZmFsc2U7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2hh
ZFVzZXJJbnRlcmFjdGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhZFVz
ZXJJbnRlcmFjdGlvbik7CiAgICAgICAgIH0pOwpAQCAtMTAxMiwxMiArMTAxMiwxMiBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Byb2Nlc3NlZCgpCiAgICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPm5vdGlmeVJlc291cmNl
TG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQ
ZXJzaXN0ZW50RGF0YVN0b3JlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMs
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBh
Z2UsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFU
b1JlbW92ZT4mJiBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvciwgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICAKICAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBtX25l
dHdvcmtTZXNzaW9uLT5kZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxs
UGVyc2lzdGVudERhdGFTdG9yZXMoZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFpbnMpLCBzaG91bGRO
b3RpZnlQYWdlLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zVG9SZW1vdmVXZWJzaXRl
RGF0YUZvciksIHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCmluZGV4IDk4MjQzYjNjNzdjMWZkMzU2MzUwMzM2OGJhZjFkNDM3ZWEz
YzIyOTUuLmZjMzczNzY2NDAyNGIxZWQ0ZDEwZTY4M2MzNTBjMzVkYjVjMmM1YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTYwLDYgKzYwLDEx
IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA6IGJv
b2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBXZWJzaXRlRGF0YVRvUmVt
b3ZlIDogdWludDhfdCB7CisgICAgQWxsLAorICAgIEFsbEJ1dEh0dHBPbmx5Q29va2llcywKKyAg
ICBBbGxCdXRDb29raWVzCit9OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTEwNyw3ICsxMTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWlu
JiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2
aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0
b3JlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4mKT4mJik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwg
V2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAg
IHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIGJvb2wgZ3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxGcmFtZUlEPiwgUGFnZUlEKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCA0ZjhhMzdmNzU3ZjgwMmRiZGEwOTU2MTM4Nzk4MGE0ZjNhYmExNGNmLi45YWIxZWEzZjI0
YWI1MTg2YWQzNDljMmVmYmNhYWFiOGFiMGQxOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzEzLDYgKzMxMyw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYmCiAgICAgICAgIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsK
IAogICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2V0SXNJVFBEYXRhYmFzZUVuYWJsZWQocGFyYW1ldGVycy5zaG91bGRFbmFibGVJVFBEYXRhYmFz
ZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zZXRJc0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkKHBhcmFtZXRlcnMu
aXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCk7CiAKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3Jl
UGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKQEAgLTEyMjAsNiArMTIyMSwxOSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNl
dENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKQEAgLTE1MTAsNyArMTUyNCw3IEBAIHN0YXRpYyBWZWN0b3I8V2Vic2l0
ZURhdGE6OkVudHJ5PiBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoY29uc3QgVmVjdG9yPFJl
Z2lzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcywgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgSW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlD
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYgZG9tYWlucywgYm9vbCBz
aG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb246OkRvTm90Q3JlYXRlUHJvY2Vzc2VzOwogCkBAIC0xNTUyLDEzICsxNTY2LDM3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5z
SW5BbGxQZXJzaXN0ZW50RGF0YVN0CiAKICAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhOwogCisgICAgVmVjdG9yPFJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zVG9EZWxldGVDb29raWVzRm9yOworICAgIFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yOworICAgIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvcjsK
ICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlOwogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zLmtleXMoKSkgeworICAgICAgICAg
ICAgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZG9tYWlucy5nZXQoZG9tYWluKSkgeworICAgICAgICAgICAgY2FzZSBX
ZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGw6CisgICAgICAgICAgICAgICAgZG9tYWluc1RvRGVsZXRl
Q29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0SHR0cE9ubHlDb29raWVzOgor
ICAgICAgICAgICAgICAgIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0Zvci5h
cHBlbmQoZG9tYWluKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
V2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0Q29va2llczoKKyAgICAgICAgICAgICAgICAvLyBB
bHJlYWR5IGFkZGVkLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aENv
b2tpZXMpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSA9IGZpbHRl
ckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1l
c1dpdGhDb29raWVzKTsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzKTsKKworICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0Rl
bGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVDb29raWVz
Rm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFt
ZXNXaXRoQ29va2llc1RvRGVsZXRlLCBXZWJDb3JlOjpJbmNsdWRlSHR0cE9ubHlDb29raWVzOjpZ
ZXMpOworCisgICAgICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmlsdGVy
Rm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2ll
c0Zvciwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5h
bWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llczo6
Tm8pOwogICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvJiBkb21haW4g
OiBkb21haW5zLmtleXMoKSkKKyAgICAgICAgICAgIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tp
ZXNGb3IuYXBwZW5kKGRvbWFpbik7CiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5h
bWVzV2l0aEhTVFNUb0RlbGV0ZTsKQEAgLTE1NjYsNyArMTYwNCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0
ZW50RGF0YVN0CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBnZXRIb3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIHdlYnNpdGVEYXRhU3RvcmUu
aG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7Ci0gICAgICAgICAgICBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnMsIHdlYnNpdGVEYXRh
U3RvcmUuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisgICAgICAgICAgICBob3N0bmFtZXNXaXRo
SFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0
ZUFsbEJ1dENvb2tpZXNGb3IsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZSk7CiAgICAgICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNTgxLDkgKzE2MTksOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdAogICAgICovCiAg
ICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZSkpIHsKLSAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygq
dGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbjo6Q29tcHV0ZVNpemVzKSwgW3RoaXMsIGRvbWFpbnMsIHNlc3Npb25JRCwgY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byBlbnRyaWVzKSBt
dXRhYmxlIHsKKyAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygqdGhp
cywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bjo6Q29tcHV0ZVNpemVzKSwgW3RoaXMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Is
IHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
YXV0byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWlu
cywgZW50cmllcyk7CisgICAgICAgICAgICBhdXRvIGVudHJpZXNUb0RlbGV0ZSA9IGZpbHRlckZv
clJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBlbnRy
aWVzKTsKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXNUb0RlbGV0ZSk7CiAgICAgICAgICAgICAKQEAgLTE1
OTYsMTEgKzE2MzQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAgICBhdXRvIHBhdGgg
PSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFwYXRoLmlzRW1w
dHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBGSVhNRTogUGljayB0aGUgcmlnaHQgZGF0YWJh
c2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24gSUQuCi0gICAgICAgIHBvc3RTdG9yYWdlVGFz
ayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgcGF0aCA9IFdURk1vdmUocGF0aCksIGRvbWFp
bnNdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHNlc3Npb25JRCwgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zKSwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgc2VjdXJpdHlPcmln
aW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0geworICAgICAgICBwb3N0U3RvcmFn
ZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBXVEZNb3ZlKHBhdGgpLCBk
b21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXSgpIG11dGFibGUgeworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0
ZUFsbEJ1dENvb2tpZXNGb3IgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvRGVsZXRlQWxsQnV0
Q29va2llc0ZvciksIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCksIHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsK
ICAgICAgICAgICAgICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBlbnRyaWVzVG9EZWxl
dGU7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNl
Y3VyaXR5T3JpZ2lucykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnMuY29udGFp
bnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3Jp
Z2luLmhvc3QpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxC
dXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBlbnRyaWVzVG9EZWxldGUuYXBwZW5kKHNl
Y3VyaXR5T3JpZ2luKTsKQEAgLTE2MTYsOSArMTY1NCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0
YVN0CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHBhdGggPSBtX3N3RGF0YWJhc2VQ
YXRocy5nZXQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYmIHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucykpIHsKLSAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuZ2V0T3JpZ2lu
c1dpdGhSZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnMsIGNhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKKyAgICAgICAgc3dT
ZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFt0
aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8
U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIWRvbWFpbnMuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKKyAgICAgICAgICAgICAg
ICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IuY29udGFpbnMoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4s
IFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CiAgICAg
ICAgICAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY2xlYXIoc2VjdXJpdHlP
cmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwpAQCAtMTYyOCwxMSArMTY2NiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdAog
I2VuZGlmCiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpEaXNrQ2FjaGUpKSB7Ci0gICAgICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhjYWNo
ZSgpLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgW3RoaXMsIGRvbWFpbnMsIGNhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8gZW50cmllcykgbXV0
YWJsZSB7CisgICAgICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhjYWNoZSgpLCBzZXNzaW9uSUQs
IGZldGNoT3B0aW9ucywgW3RoaXMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8gZW50
cmllcykgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+
IGVudHJpZXNUb0RlbGV0ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVz
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFkb21haW5zLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkpKQorICAgICAg
ICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5jb250YWlucyhS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhv
c3QpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgZW50
cmllc1RvRGVsZXRlLmFwcGVuZChlbnRyeS5vcmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChlbnRyeSk7CkBAIC0x
NjQ1LDggKzE2ODMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZv
clJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBS
ZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGNvb2tpZVR5cGUgPSBXZWJzaXRlRGF0YVR5cGU6OkNvb2tp
ZXM7Ci0KLSAgICBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVy
c2lzdGVudERhdGFTdG9yZXMoc2Vzc2lvbklELCBjb29raWVUeXBlLCB7IGRvbWFpbiB9LCB0cnVl
LCBpbmNsdWRlSHR0cE9ubHlDb29raWVzID8gSW5jbHVkZUh0dHBPbmx5Q29va2llczo6WWVzIDog
SW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRv
bWFpbnNEZWxldGVkRm9yKSBtdXRhYmxlIHsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiB0b0RlbGV0ZUZvcjsKKyAgICB0b0RlbGV0ZUZvci5hZGQo
ZG9tYWluLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzID8gV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxs
IDogV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0SHR0cE9ubHlDb29raWVzKTsKKyAgICBkZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhzZXNzaW9uSUQsIGNvb2tpZVR5cGUs
IFdURk1vdmUodG9EZWxldGVGb3IpLCB0cnVlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBk
b21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShkb21haW5z
RGVsZXRlZEZvcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMWM2ZmI2
YzJlZTUzN2UyNDEyZjViOTE5YTJlYmNhNTVmYzFlMzg5Yy4uMTRlOTJhNDBhZmNlYjU3YzQ4MmM5
MWE2YzFlYTUyYmJlYmM5NTgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmli
dXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KQEAgLTIwNSw3ICsyMDYsNyBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNsZWFy
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyVXNlckludGVy
YWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoUEFMOjpTZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYsIGJv
b2wgc2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYm
KTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+
JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJl
Z2lzdHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1RvQmxvY2ssIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNTgsNiArMjU5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBz
aG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldENyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzBh
NTUzMmQ4ZDU5YzA2ODAzYzIwNjE2ZjhlZGRjNTY0Nzc4NDBmMC4uOTg3NzYwZjM2ZjcwMDI1ZjJm
YjNmNmE1MGUyMThjYjdkZmU3YWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzYsNiArMTM2LDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZGlyZWN0ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoKSBBc3luYwogICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9t
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFn
ZUlEKSAtPiAoKSBBc3luYworICAgIFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25G
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFz
eW5jCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYTNkZmU2
MGE3MGE4YjQ4MmY5MjA5OWU4ZjZlMWNkN2FhZWQyMzE0ZC4uMmVkMWMyZWQwMDc5ODgwYzA3ZDdl
YWQyMWUzZTk4ZmUzYjhjMzU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTk1LDYgKzk1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgogICAgIGVuY29kZXIg
PDwgc2hvdWxkRW5hYmxlSVRQRGF0YWJhc2U7CiAgICAgZW5jb2RlciA8PCBkb3dubG9hZE1vbml0
b3JTcGVlZE11bHRpcGxpZXI7CisgICAgZW5jb2RlciA8PCBpc0lUUEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxFbmFibGVkOwogfQogCiBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcmVzdWx0KQpAQCAtMjI3LDcgKzIyOCwxMCBAQCBib29sIE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBO
ZXR3b3JrUHJvYwogICAgIGlmICghZG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlw
bGllciA9ICpkb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXI7Ci0gICAgCisKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxF
bmFibGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiNDI4NzQwOWFlZTk2Y2U3MzM5OWQx
NDQwNTQ4NDk4Mzg4OTc4Zjc2Li44YWU5MTcxMDJkNThiOGY4ZWI3YjFlZGZmY2IzMzQyYTFlOTJi
YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMTIsNiArMTEyLDcgQEAg
c3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3Vs
ZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9Owog
I2VuZGlmCiAgICAgYm9vbCBzaG91bGRFbmFibGVJVFBEYXRhYmFzZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBpc0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkIHsgdHJ1ZSB9Owog
ICAgIHVpbnQzMl90IGRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGllciB7IDEgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5k
ZXggM2M4YzkzODQ2ZDU5ZjdmMWUzOTFhZTIzZGQyYmZhY2FmMmM4Njg2ZC4uMWUzMGNlYTZiOWM2
MDRjZGM2ZGU3N2QxNTA0NzFhMWNjNDZlNjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTEyNSw5ICsxMjUsOSBAQCB2b2lkIE5l
dHdvcmtTZXNzaW9uOjpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2ln
bmVkIHRvdGFsUHJldmFsZQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh0b3RhbFByZXZhbGVudFJlc291cmNl
cywgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB0b3AzU3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2lucyksIDApOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpk
ZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFT
dG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBJbmNsdWRlSHR0
cE9ubHlDb29raWVzIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiBkb21haW5zLCBib29sIHNob3Vs
ZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5kZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVu
dERhdGFTdG9yZXMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zKSwgc2hv
dWxkTm90aWZ5UGFnZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFdURk1vdmUoZG9tYWlucyks
IHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGRiNzg5NjQ0MGEzM2MwYThmYTA3MDg3ZDAwOTJmMTdiOTY2NWUxNTAu
LjgxOGIxNWVlYzJjYTNmY2RhYzUyNjBjNDI1ZmI3OGRmOWVlNWM5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQo
KTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAg
ICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7Ci0gICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERh
dGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBXZWJDb3JlOjpJbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIEhhc2hN
YXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJv
b2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxl
RG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBz
aG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5Rmlu
aXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
LnlhbWwKaW5kZXggNzg1NjRmYjAyZjUzZmU0NWViYmNhN2I1YzRhNzEzNWRiN2ZhY2E5Yi4uZGM4
YzY2ZGZlOWQ3NzI2OWI1Y2EwZWUwNzZiMDNhZGFlMTQ5ZTQ3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMzgxLDYgKzEzODEsMTQgQEAgTWVkaWFDYXBh
YmlsaXRpZXNFeHRlbnNpb25zRW5hYmxlZDoKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAi
TWVkaWEgQ2FwYWJpbGl0aWVzIEV4dGVuc2lvbnMiCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwK
IAorSXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZDoKKyAgICB0eXBlOiBi
b29sCisgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VYUEVSSU1FTlRBTF9GRUFUVVJFU19FTkFC
TEVECisgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJJVFAgRmlyc3QgUGFydHkgV2Vic2l0ZSBEYXRh
IFJlbW92YWwiCisgICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIEludGVsbGln
ZW50IFRyYWNraW5nIFByZXZlbnRpb24gRmlyc3QgUGFydHkgV2Vic2l0ZSBEYXRhIFJlbW92YWwi
CisgICAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKKyAgICBjYXRlZ29y
eTogZXhwZXJpbWVudGFsCisKICMgRm9yIGludGVybmFsIGZlYXR1cmVzOgogIyBUaGUgdHlwZSBz
aG91bGQgYmUgYm9vbGVhbi4KICMgWW91IG11c3QgcHJvdmlkZSBhIGh1bWFuUmVhZGFibGVOYW1l
IGFuZCBodW1hblJlYWRhYmxlRGVzY3JpcHRpb24gZm9yIGFsbCBkZWJ1ZyBmZWF0dXJlcy4gVGhl
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKaW5kZXggZWRhOGQyMjBkMmJmN2YwMGI2OTJkMjkyY2ZjNzdjMzUzYjRm
MjRkZS4uOTAyODViMzlkYzU2NzQ3ZmJmZTMyNjhkYzZkMzY4ZmFmMjE0MzU4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwCkBAIC0yOTcsMTcgKzI5NywzNiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcgogI2Vu
ZGlmCiB9CiAKLXZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91Ymxl
IHNlY29uZHMpCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGZyb21Ib3N0LCBXS1N0cmluZ1JlZiB0b0hvc3QsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNv
cmF0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBb
XSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjYWxsYmFjayhjb250
ZXh0KTsKICNlbmRpZgogfQogCi12b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYpCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBz
ZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJv
Y2Vzc2luZyhbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgeyBzZWNv
bmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsK
KyAgICB9KTsKKyNlbHNlCisgICAgY2FsbGJhY2soY29udGV4dCk7CisjZW5kaWYKK30KKwordm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVj
b3JkcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c0Z1bmN0aW9uIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29udGV4dCwgY2Fs
bGJhY2tdIHsKKyAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAg
IGNhbGxiYWNrKGNvbnRleHQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggZjVmOWE0N2Zi
ODYzOWVlZThhMzUxOTQ4YTIzMGFiNjNhMWE2MmE2Zi4uZTZhMmEwMDdmMDEyZjQyODY4MjhiYWFl
MjUyNzlmOTVhOWY1NTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTczLDggKzczLDEyIEBAIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oV0tXZWJzCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRGcm9tKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbyk7CiBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKLVdLX0VYUE9SVCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKTsKLVdL
X0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb25GdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGZyb21Ib3N0LCBXS1N0cmluZ1JlZiB0b0hvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9u
RnVuY3Rpb24gY2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKTsK
K3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3Jkc0Z1bmN0aW9uIGNhbGxiYWNrKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0aW9uKSh2b2lkKiBmdW5j
dGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVC
bG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzZjhiNDU5Y2ZkMjIzZDQ5YTg3M2Y5MmQz
ZmVhMmYwOGZhZDYyYThjLi45MTNlOTNhYTBiOWQwMTc0ZDRiNjBhNDMxNWQ1OTc2YjA4Y2NjYzk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KQEAgLTMxMyw2ICszMTMsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmEK
IAogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlSVRQRGF0YWJhc2UgPSBbZGVmYXVsdHMgYm9v
bEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkludGVybmFsRGVidWclQCIsIFdl
YlByZWZlcmVuY2VzS2V5Ojppc0lUUERhdGFiYXNlRW5hYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCldXTsKICAgICBwYXJhbWV0ZXJzLmRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGll
ciA9IG1fY29uZmlndXJhdGlvbi0+ZG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVyKCk7CisK
KyAgICAvLyBDaGVjayBpZiB0aGUgZmVhdHVyZSBoYXMgYmVlbiB0dXJuZWQgb2ZmIGV4cGxpY2l0
bHkuIFRoaXMgYXZvaWRzIGludGVycHJldGluZworICAgIC8vIGEgbm9uLWV4aXN0aW5nIGRlZmF1
bHQgYXMgYSBmYWxzZSB2YWx1ZS4KKyAgICBhdXRvIGlzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbEVuYWJsZWRTdHIgPSBbZGVmYXVsdHMgc3RyaW5nRm9yS2V5OltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNJVFBG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCldXTsKKyAgICBpZiAoW2lzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJs
ZWRTdHIgaXNFcXVhbDpAIjAiXSkKKyAgICAgICAgcGFyYW1ldGVycy5pc0lUUEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTM5ODAx
YjM3YTZiMzAyNDE0OTYxZjliMjIwYjkzYzRhNDU5Mzc0Mi4uMGI5MWUzOTFlMzk4M2Q0MWViNTIy
NjQxNjM0YmRiYTRmOTZhNWUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC05NjIsNiArOTYyLDE2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Q29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihzZXNzaW9uSUQsIGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmcoc2Vzc2lvbklELCBmcm9tRG9tYWluLCB0b0RvbWFp
biksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggMTY2MmJiZWRkYThjYTUwM2VhYTY0NzI5ZDY0ZGNjYzg0YWY0NzJjNC4uMzcyMzU2Yjg2
ODJjMjk5MzM5NTBkNzVhMGJmMzFiODg3ZDIxMzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE0Niw2ICsx
NDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9y
ZURhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21h
aW4mLCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlD
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDI0MGI4MjU4MjQ5ZTkxMDJlZDQ5YjNmZjI0ZjA2YmVhNDYwMWFlZWYuLjA2MDhh
NmE0NTRjYTE0ZGY4MWE1OGJiNjUyZjVjYmVjODdiYmNkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBA
IC0xNzY0LDYgKzE3NjQsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRHcmFuZGZhdGhl
cmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ28KICAgICB9CiB9CiAK
K3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoY29uc3QgVVJMJiBmcm9tVVJMLCBjb25zdCBVUkwmIHRvVVJMLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICAKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAg
ICAgICAgICAgIHByb2Nlc3MtPnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKG1fc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiB7IGZyb21VUkwgfSwgUmVnaXN0
cmFibGVEb21haW4geyB0b1VSTCB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCiB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2NzRmNzU3NTk5
ZGMyOTIyMGQyMzgzNWViYTJiMGM5MGNkZTMzNTk2Li4yNTM5ZmY5NzEwZGYzZjY4YWU2NzU3YjUy
NzY4YTM4MzIxNWJkYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiBzdWJGcmFtZUhv
c3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYp
OwogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3Ry
aW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJv
b2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBVUkwmIHN1YmZyYW1l
LCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZnJvbVVSTCwgY29uc3QgVVJMJiB0b1VS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRl
TG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBib29s
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA3YTZhOTFkNTMyMDU2NTI1OWRjOTg3NTcxNWI4MDRmZmQyN2QyYmM1Li45MWU4MTI2ZTQ1MDFk
NTMwMjZiMWU1ZmNhNGIzNGUwNjJmZmI1MmFmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTktMDMtMTkgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBT
dGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBDbGVhciBub24tY29va2llIHdlYnNpdGUgZGF0YSBm
b3Igc2l0ZXMgdGhhdCBoYXZlIGJlZW4gbmF2aWdhdGVkIHRvLCB3aXRoIGxpbmsgZGVjb3JhdGlv
biwgYnkgYSBwcmV2YWxlbnQgcmVzb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NTkyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkwMDEy
NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmcgdG8gdGhlIFRlc3RSdW5uZXI6CisgICAgICAgIC0g
QWRkcyBzZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbigpLgorICAg
ICAgICAtIE1ha2VzIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKCkgd2Fp
dCBmb3IgY29tcGxldGlvbi4KKyAgICAgICAgLSBNYWtlcyBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpIHdhaXQgZm9yIGNvbXBsZXRpb24uCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKwogMjAxOS0wMy0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgV0tXZWJWaWV3LkdldENvbnRlbnRzU2hvdWxkUmV0dXJuQXR0cmlidXRl
ZFN0cmluZyBpcyBjcmFzaGluZyBvbiBpT1MgU2ltdWxhdG9yLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKaW5kZXggZDU3ZmQ4M2VjNTQzMDQ1ZjkxNWY3ZWQ3ZjMzMzU1NzM2MGIzOWI2Yy4uNDgx
Y2VlYjgyOWE0YTlkMWYwMDdiYjI1NDZhMDE0YjZmOTc2YjU3NiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCkBAIC0zMDMsNiArMzAzLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmlu
ZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5nIGhvc3ROYW1lLCBE
T01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Rv
cEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhv
c3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2Fk
V2l0aExpbmtEZWNvcmF0aW9uKERPTVN0cmluZyBmcm9tSG9zdCwgRE9NU3RyaW5nIHRvSG9zdCk7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUg
c2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRl
eCA5OGYxZjFjYWNlNTdiOTRjY2E3YmEwNTBmOGYyYjNhNmI3ZTNmZDRhLi4yNmYyNTc1YmQyNTcz
MzY4ZTJjZDg2MzU2NTliMzVlNmEyYTFkYjBmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE4NTEsNiArMTg1MSwy
OSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
RnJvbShKU1N0cmluZ1JlZiBob3N0TmFtZSwgSgogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1l
LmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oSlNTdHJpbmdS
ZWYgZnJvbUhvc3QsIEpTU3RyaW5nUmVmIHRvSG9zdCkKK3sKKyAgICBWZWN0b3I8V0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+
PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiRnJvbUhvc3QiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoZnJvbUhvc3QpIH0pOworICAgIAorICAg
IGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRv
SG9zdCIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhKU1N0cmluZyh0b0hvc3QpIH0pOworICAgIAorICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3
S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzKHZhbHVl
cy5zaXplKCkpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7
ICsraSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAgcmF3
VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKyAgICAKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uIikp
OworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywg
V0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdL
ZXlzLnNpemUoKSkpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdl
Qm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCiB7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGI2
NWQwYmE4NjYzMzFlZTA2YzBhNTZjMGMzMGZjY2UwMTQzOGEyZWEuLjNiZjNkMWE4ZjUxNzdlNTgx
YWVmODhiNDI0MWFhOTlkZDAwZmMxMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MTYsNiArNDE2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpT
U3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oSlNTdHJpbmdS
ZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShKU1N0cmluZ1JlZiBob3N0
TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRT
dGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihKU1N0cmluZ1JlZiBmcm9t
SG9zdCwgSlNTdHJpbmdSZWYgdG9Ib3N0KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc0lzUnVubmluZ1Rlc3QoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5NmMyMTY5OGUyYmRmYzFlYWE2OGQwN2Q0NTMyOGUx
MTJjYjQyMjguLmMzZTI2MjcwYzA0ZWVlZDk3YmIzYTBlODUyMjhlZWRmNGVhN2E0OGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMjU1LDE2ICszMjU1
LDI4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXCiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGRhdGFTdG9yZSwgaG9zdCwgaG9z
dFJlZGlyZWN0ZWRGcm9tKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tTdHJpbmdSZWYgZnJvbUhvc3QsIFdL
U3RyaW5nUmVmIHRvSG9zdCkKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRX
ZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBSZXNvdXJjZVN0YXRpc3Rp
Y3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZGF0YVN0b3JlLCBm
cm9tSG9zdCwgdG9Ib3N0LCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENh
bGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cit9CisKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdl
YnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwotICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRhdGFTdG9yZSwgc2Vjb25k
cyk7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMp
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKGRhdGFTdG9yZSwgc2Vjb25kcywgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1Zv
aWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQp
OwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcygpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vi
c2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoZGF0YVN0b3JlKTsKKyAg
ICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHMoZGF0YVN0b3JlLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxi
YWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CiB9CiAKIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZygpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggNmJmYTZiY2YzZDJkZjUzZWU2OWJl
N2ViM2UzMDZiZGMyZjIyYWJkNy4uMjg4NzQ5ZGZjMDkxYTViODYwNTViMTM1YzU1NzgzMTU0NWM2
MTA4NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjI1LDYg
KzIyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3Rl
ZEZyb20pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0
LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pOworICAgIHZvaWQgc2V0U3RhdGlzdGlj
c0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tTdHJpbmdSZWYgZnJvbUhvc3QsIFdL
U3RyaW5nUmVmIHRvSG9zdCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZUJsb2NraW5nKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmlu
ZGV4IGQ2YmIxNGY5ODcyMzRkZDcyNDcxOTI4Njk0ZWFlNzAxMDFmYjY2ZWEuLmE3MDgzMzVjMGY5
YTJkMTU3MjFlOWU0M2U5ZjNlNzRjMjIyYTFhZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCkBAIC0xMzA0LDYgKzEzMDQsMjAgQEAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc0Ny
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAg
CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGZyb21Ib3N0S2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJGcm9tSG9zdCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRv
SG9zdEtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG9Ib3N0Iikp
OworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgZnJvbUhvc3QgPSBzdGF0aWNfY2FzdDxX
S1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25h
cnksIGZyb21Ib3N0S2V5LmdldCgpKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIHRvSG9zdCA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgdG9Ib3N0S2V5LmdldCgpKSk7CisgICAgICAgIAorICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24oZnJvbUhvc3QsIHRvSG9zdCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iKSkgewogICAgICAgICBB
U1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwog
ICAgICAgICBXS0RvdWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1l
c3NhZ2VCb2R5KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAwNTk5NmQwZGYxODhkN2I1ZTZhMjEwMDRhNjQxYzQ1MmU1ZTA1
MTQ1Li4wNGI5ZGMyY2ZjOGNlZTNiNDM0ZmE3YTQ5ZTczZWJkYzk0ZjRiYjg2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTktMDMtMTkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBD
bGVhciBub24tY29va2llIHdlYnNpdGUgZGF0YSBmb3Igc2l0ZXMgdGhhdCBoYXZlIGJlZW4gbmF2
aWdhdGVkIHRvLCB3aXRoIGxpbmsgZGVjb3JhdGlvbiwgYnkgYSBwcmV2YWxlbnQgcmVzb3VyY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTkyMwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkwMDEyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGlu
ay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmln
YXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxOS0wMy0xOCAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZXhwZXJpbWVu
dGFsICJhbHBoYUNoYW5uZWwiIHByb3BlcnR5IHRvIFZpZGVvQ29uZmlndXJhdGlvbgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNp
dGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGlu
ay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWEyYmQ5YWNhMzIwZTUyOTQ3
MDU3M2U3MTNiNGRkOGIyZDlmNjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1z
aXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzNSBAQAorQ2hlY2sgdGhhdCBub24tY29va2llIHdlYnNpdGUgZGF0YSBnZXRzIHJlbW92
ZWQgYWZ0ZXIgYSBuYXZpZ2F0aW9uIHdpdGggbGluayBkZWNvcmF0aW9uIGZyb20gYSBwcmV2YWxl
bnQgcmVzb3VyY2UuCisKK0JlZm9yZSBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0
cy4KK0JlZm9yZSBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxl
dGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorCitCZWZvcmUgZGVsZXRp
b246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29v
a2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgor
QWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KKworQWZ0
ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4KKworCitSZXNvdXJjZSBsb2Fk
IHN0YXRpc3RpY3M6CisKK1JlZ2lzdHJhYmxlIGRvbWFpbjogbG9jYWxob3N0CisgICAgbGFzdFNl
ZW46IDAKKyAgICBoYWRVc2VySW50ZXJhY3Rpb246IE5vCisgICAgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvbjogLTEKKyAgICBncmFuZGZhdGhlcmVkOiBObworICAgIGdvdExpbmtEZWNvcmF0aW9u
RnJvbVByZXZhbGVudFJlc291cmNlOiBObyAgICBpc1ByZXZhbGVudFJlc291cmNlOiBZZXMKKyAg
ICBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZTogTm8KKyAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6IDAK
K1JlZ2lzdHJhYmxlIGRvbWFpbjogMTI3LjAuMC4xCisgICAgbGFzdFNlZW46IDAKKyAgICBoYWRV
c2VySW50ZXJhY3Rpb246IE5vCisgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogLTEKKyAg
ICBncmFuZGZhdGhlcmVkOiBObworICAgIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbToKKyAg
ICAgICAgbG9jYWxob3N0CisgICAgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3Vy
Y2U6IE5vICAgIGlzUHJldmFsZW50UmVzb3VyY2U6IE5vCisgICAgaXNWZXJ5UHJldmFsZW50UmVz
b3VyY2U6IE5vCisgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAxCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJl
bW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzkxN2E5NDZkMzZkZGVkMTU1NjdlNmE3MzY2MGM1NTdlNzc1OWFiOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRl
Y29yYXRpb24uaHRtbApAQCAtMCwwICsxLDEzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywg
MCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRl
IGRhdGEgZ2V0cyByZW1vdmVkIGFmdGVyIGEgbmF2aWdhdGlvbiB3aXRoIGxpbmsgZGVjb3JhdGlv
biBmcm9tIGEgcHJldmFsZW50IHJlc291cmNlLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0
Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tp
ZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5h
bWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFt
ZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5
KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9M
b3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7
CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAg
IGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0
cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1
dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAg
b3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNr
Q29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3Nl
ZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tp
ZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlwdC1hY2Nl
c3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxldCBj
b29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAgICAg
ICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAi
QWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0FmdGVyRGVsZXRpb24gPyAi
ICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRl
ckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAg
ICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8g
IkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlz
dHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0IHRl
c3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAgICAg
ICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRlSURC
RGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpTdG9y
ZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9u
LCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFt
ZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJB
ZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3Qu
Iik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9OworICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KChpc0FmdGVy
RGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogSURCIGVudHJ5IGRv
ZXMgZXhpc3QuIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9OworICAgIH0K
KworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAg
ICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jl
c291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlD
b29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2Fp
dCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7
ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNy
ZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBj
bGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNl
KTsKKyAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKworICAgICAgICAvLyBXcml0ZSBJ
bmRleGVkREIuCisgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgcHJvY2Vzc1dlYnNpdGVEYXRh
QW5kQ29udGludWUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNz
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNz
UHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworCisgICAgICAgIGFkZExpbmVicmVh
a1RvT3V0cHV0KCk7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgYWRkTGlu
ZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwg
ZmluaXNoVGVzdCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAg
ICAgcmVzZXRDb29raWVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgY29uc3QgcHJldmFsZW50UmVzb3VyY2VPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwIjsKKyAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdpbiAgPSAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKHByZXZhbGVudFJlc291cmNlT3JpZ2luLCB0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKHByZXZhbGVudFJlc291cmNlT3JpZ2luLCBkZXN0aW5h
dGlvbk9yaWdpbik7CisgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVl
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365246</attachid>
            <date>2019-03-19 15:36:49 -0700</date>
            <delta_ts>2019-03-19 17:22:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-195923-20190319153648.patch</filename>
            <type>text/plain</type>
            <size>89123</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmNmI0NmJlODFhZGZi
ZjUwMjM1NDZjZmYyNjViMjdjZDg5YzhjNy4uMzc5YjYwOTg1MWRiNTYwOGEwNjI0ZGQzMzU1ZjY1
NjBhYjBmMWZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAzLTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQ2xlYXIgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEg
Zm9yIHNpdGVzIHRoYXQgaGF2ZSBiZWVuIG5hdmlnYXRlZCB0bywgd2l0aCBsaW5rIGRlY29yYXRp
b24sIGJ5IGEgcHJldmFsZW50IHJlc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU5MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MDAx
MjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
QWRkcyBhIG5ldyBleHBlcmltZW50YWwgZmVhdHVyZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUt
bmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0SXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lUUEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkIGNvbnN0KToKKwogMjAxOS0wMy0xOCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIFN0
cmluZ0J1ZmZlciwgcG9zc2libHkgbGVhZGluZyB0b3dhcmQgcmVtb3ZpbmcgaXQgZW50aXJlbHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTJmNzE1ZTZhODdlYTI4ODMzYjhiMzIwYjMzY2NmY2EzNzA4YjNlMi4uOWZk
Mzc4YjVkYjk5MmY4MDBjMDkwODdjNzk2ZTI5NGJhOTFkMjY3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw5NyBAQAorMjAxOS0wMy0xOSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgKGV4cGVyaW1lbnRhbCk6IENsZWFy
IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGZvciBzaXRlcyB0aGF0IGhhdmUgYmVlbiBuYXZpZ2F0
ZWQgdG8sIHdpdGggbGluayBkZWNvcmF0aW9uLCBieSBhIHByZXZhbGVudCByZXNvdXJjZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1OTIzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80OTAwMTI3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
IENocmlzdGVuc2VuLgorCisgICAgICAgIENyb3NzLXNpdGUgdHJhY2tlcnMgYWJ1c2UgbGluayBx
dWVyeSBwYXJhbWV0ZXJzIHRvIHRyYW5zcG9ydCB1c2VyIGlkZW50aWZpZXJzIGFuZCB0aGVuIHN0
b3JlCisgICAgICAgIHRoZW0gaW4gZmlyc3QtcGFydHkgc3RvcmFnZSBzcGFjZS4gVG8gYWRkcmVz
cyB0aGlzLCB3ZSd2ZSBkb25lIHRocmVlIHRoaW5nczoKKyAgICAgICAgLSByMjM2NDQ4IGNhcHBl
ZCBhbGwgcGVyc2lzdGVudCBjbGllbnQtc2lkZSBjb29raWVzIHRvIHNldmVuIGRheXMgb2Ygc3Rv
cmFnZS4KKyAgICAgICAgLSByMjQyMjg4IGZ1cnRoZXIgY2FwcGVkIHBlcnNpc3RlbnQgY2xpZW50
LXNpZGUgY29va2llcyBmb3IgbmF2aWdhdGlvbnMgd2l0aCBsaW5rIGRlY29yYXRpb24gZnJvbSBw
cmV2YWxlbnQgcmVzb3VyY2VzLgorICAgICAgICAtIHIyNDI2MDMgYWRkZWQgbG9nZ2luZyBvZiBu
YXZpZ2F0aW9ucyB3aXRoIGxpbmsgZGVjb3JhdGlvbiBmcm9tIHByZXZhbGVudCByZXNvdXJjZXMu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJl
IHRoYXQgcmVtb3ZlcyBub24tY29va2llIHdlYnNpdGUgZGF0YSBmb3Igc2l0ZXMKKyAgICAgICAg
dGhhdCBoYXZlIGJlZW4gbmF2aWdhdGVkIHRvLCB3aXRoIGxpbmsgZGVjb3JhdGlvbiwgYnkgYSBw
cmV2YWxlbnQgcmVzb3VyY2UuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGlzLCByZXNvdXJjZSBk
b21haW5zIHRvIHJlbW92ZSB3ZWJzaXRlIGRhdGEgZm9yIGFyZSBub3cgbWFya2VkIHdpdGggYW4g
ZW51bSBjYWxsZWQKKyAgICAgICAgV2Vic2l0ZURhdGFUb1JlbW92ZSB3aXRoIHZhbHVlcyBBbGws
IEFsbEJ1dEh0dHBPbmx5Q29va2llcywgQWxsQnV0Q29va2llcy4gQXMgcmVzb3VyY2VzIGFyZQor
ICAgICAgICBpdGVyYXRlZCwgdGhleSBhcmUgbWFya2VkIGZvciBlaXRoZXIgb2YgdGhlc2UgdmFs
dWVzIGFuZCB0aGUgbmV3IGZ1bmN0aW9uCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6c2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0ZvcigpIGxlYWRzIHRvIHRoZSBt
YXJraW5nIHdpdGgKKyAgICAgICAgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0Q29va2llcy4K
KworICAgICAgICBUaGVuIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucygpIGxvb2tzIGF0IHRoaXMgc2V0dGluZyBhbmQgcmVtb3ZlcworICAgICAg
ICB3ZWJzaXRlIGRhdGEgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgVGhlIHRoaW5raW5nIGJlaGlu
ZCB0aGlzIGlzIHRoYXQgdGhlIGxpZmV0aW1lIGNhcCBhcHBsaWVkIGluIHIyMzY0NDggYW5kIHIy
NDIyODggdGFrZSBjYXJlIG9mCisgICAgICAgIHNjcmlwdCB3cml0YWJsZSBjb29raWVzLCBhbmQg
dGhpcyBwYXRjaCB0YWtlcyBjYXJlIG9mIGFsbCBvdGhlciBzY3JpcHQgd3JpdGFibGUgc3RvcmFn
ZS4KKworICAgICAgICBUaGUgaW5mcmFzdHJ1Y3R1cmUgdG8gaGFuZGxlIHVzZXIgaW50ZXJhY3Rp
b24gZXhwaXJhdGlvbiBpcyBub3cgcGFyYW1ldGVyaXplZCBzbyB0aGF0IG11bHRpcGxlCisgICAg
ICAgIGV4cGlyaWVzIGNhbiBiZSBhcHBsaWVkLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgc2V2
ZW4gZGF5cyBvZiBicm93c2VyIHVzZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpz
aG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29r
aWVzRm9yIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNI
YWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3VsZFJlbW92ZUFsbFdlYnNp
dGVEYXRhRm9yIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3RyYWJs
ZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZG9tYWluc1RvU3RyaW5nKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhdGlzdGljc0VwaXJh
dGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Om1lcmdlT3BlcmF0aW5nRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0
aXN0aWNzRXhwaXJlZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKTogRGVsZXRlZC4KKyAg
ICAgICAgICAgUmVuYW1lZCB0byByZWZsZWN0IHRoYXQgaXQgYWN0dWFsbHkgdGFrZXMgYSBwYXJh
bWV0ZXIgZm9yIHdoaWNoIHR5cGVzIG9mIGRhdGEgdG8gcmVtb3ZlLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQ
ZXJzaXN0ZW50RGF0YVN0b3Jlcyk6IERlbGV0ZWQuCisgICAgICAgICAgIFJlbmFtZWQgdG8gcmVm
bGVjdCB0aGF0IGl0IGFjdHVhbGx5IHRha2VzIGEgcGFyYW1ldGVyIGZvciB3aGljaCB0eXBlcyBv
ZiBkYXRhIHRvIHJlbW92ZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBl
cnNpc3RlbnREYXRhU3RvcmVzKTogRGVsZXRlZC4KKyAgICAgICAgICAgUmVuYW1lZCB0byByZWZs
ZWN0IHRoYXQgaXQgYWN0dWFsbHkgdGFrZXMgYSBwYXJhbWV0ZXIgZm9yIHdoaWNoIHR5cGVzIG9m
IGRhdGEgdG8gcmVtb3ZlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vz
c1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisKIDIwMTktMDMtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgogCiAgICAgICAgIFdLV2ViVmlldy5HZXRDb250ZW50c1Nob3VsZFJldHVybkF0dHJp
YnV0ZWRTdHJpbmcgaXMgY3Jhc2hpbmcgb24gaU9TIFNpbXVsYXRvci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggZDI0OTdkYzQzNjBiNjU3MGIx
ZjQzNTVlZTQ0MzQzM2NlNjg3MjAxYS4uMzk0YmY2NzhkMjE2OTEwY2M4ZjgxYWFjYjljMzRjY2Jh
MTY5NjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElzSVRQRGF0YWJh
c2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJVFBEYXRhYmFzZUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICAgICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0lUUERhdGFiYXNlRW5hYmxlZDsgfQorICAgIAorICAgIHZvaWQgc2V0SXNJVFBGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSVRQRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29s
IGlzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQ7IH0KIAogICAgIHZv
aWQgc2V0UmVzdHJpY3RlZEhUVFBSZXNwb25zZUFjY2Vzcyhib29sIGlzRW5hYmxlZCkgeyBtX2lz
UmVzdHJpY3RlZEhUVFBSZXNwb25zZUFjY2VzcyA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgcmVz
dHJpY3RlZEhUVFBSZXNwb25zZUFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXN0cmljdGVk
SFRUUFJlc3BvbnNlQWNjZXNzOyB9CkBAIC01MzcsNiArNTQwLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgYm9vbCBtX2lzSVRQRGF0YWJhc2VFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCB7IGZhbHNlIH07CiAK
ICAgICBib29sIG1fcmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkIHsgZmFsc2UgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKaW5kZXggZTcyMDJkOGJkMzcxOWJhNTdlNGJlMWMzNDY4ODc3YWM1NDg2MWQ4ZC4uNWMyNzZh
YmE4YmJmMjBjOWZmZmFlYjEwZmExODFjZmRhMzczZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC04MTksNyArODE5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBpZiAodXNlcldhc1Byb21wdGVkTm93
KSB7CiAgICAgICAgIGF1dG8gc3ViRnJhbWVTdGF0dXMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAgICAgICAgIEFTU0VSVChz
dWJGcmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8pOwotICAgICAgICBBU1NFUlQo
aGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluKSk7CisgICAgICAgIEFTU0VSVCho
YXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93
OjpMb25nKSk7CiAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCwgc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0
b3BGcmFtZURvbWFpbik7CiAgICAgfQogCkBAIC04MzksNyArODM5LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwo
U3ViRnJhbWVEb20KICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGF1dG8gc3ViRnJhbWVTdGF0dXMg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURv
bWFpbik7CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29y
ZDo6Tm8pOwotICAgICAgICBBU1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9t
YWluKSk7CisgICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21h
aW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7CiAgICAgICAgIEFTU0VSVChoYXNVc2Vy
R3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1YkZyYW1lU3RhdHVzLnNlY29uZCwg
dG9wRnJhbWVEb21haW4pKTsKICNlbmRpZgogICAgICAgICBzZXRVc2VySW50ZXJhY3Rpb24oc3Vi
RnJhbWVEb21haW4sIHRydWUsIFdhbGxUaW1lOjpub3coKSk7CkBAIC0xMDMzLDcgKzEwMzMsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRl
cmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZQogICAgIH0KIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4pCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlv
bihjb25zdCBSZWdpc3RyYWJsCiAgICAgCiAgICAgV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobV9oYWRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQuZ2V0Q29sdW1uRG91YmxlKDEpKTsKIAotICAgIGlmIChoYXNTdGF0aXN0aWNz
RXhwaXJlZChtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkpIHsKKyAgICBpZiAoaGFzU3Rh
dGlzdGljc0V4cGlyZWQobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIG9wZXJhdGluZ0Rh
dGVzV2luZG93KSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kgc2Vuc2l0aXZlIGRhdGEgYmVj
YXVzZSB3ZSBubyBsb25nZXIgbmVlZCBpdC4KICAgICAgICAgLy8gU2V0IHRpbWVzdGFtcCB0byAw
IHNvIHRoYXQgc3RhdGlzdGljcyBtZXJnZSB3aWxsIGtub3cKICAgICAgICAgLy8gaXQgaGFzIGJl
ZW4gcmVzZXQgYXMgb3Bwb3NlZCB0byBpdHMgZGVmYXVsdCAtMS4KQEAgLTE0OTIsNyArMTQ5Miwx
OSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdyYW5k
ZmF0aGVyaW5nKFZlY3Rvcjx1bnNpZ25lZD4mJgogICAgIH0KIH0KIAotVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVnaXN0cmFi
bGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpCitib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihjb25zdCBQ
cmV2YWxlbnREb21haW5EYXRhJiByZXNvdXJjZVN0YXRpc3RpYywgYm9vbCBzaG91bGRDaGVja0Zv
ckdyYW5kZmF0aGVyaW5nKSBjb25zdAoreworICAgIHJldHVybiAhcmVzb3VyY2VTdGF0aXN0aWMu
aGFkVXNlckludGVyYWN0aW9uICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8fCAh
cmVzb3VyY2VTdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCk7Cit9CisKK2Jvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoY29u
c3QgUHJldmFsZW50RG9tYWluRGF0YSYgcmVzb3VyY2VTdGF0aXN0aWMsIGJvb2wgc2hvdWxkQ2hl
Y2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVzb3VyY2VT
dGF0aXN0aWMpOworICAgIFVOVVNFRF9QQVJBTShzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5n
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0hhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdl
YnNpdGVEYXRhVG9SZW1vdmU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpy
ZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTUwNCwxMyArMTUxNiwxNSBAQCBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWdp
c3RyYWJsZURvbWFpbgogCiAgICAgY2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucygpOwogICAg
IAotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gcHJldmFsZW50UmVzb3VyY2VzOworICAg
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+IGRvbWFpbnNU
b1JlbW92ZVdlYnNpdGVEYXRhRm9yOwogCiAgICAgVmVjdG9yPFByZXZhbGVudERvbWFpbkRhdGE+
IHByZXZhbGVudERvbWFpbnMgPSB0aGlzLT5wcmV2YWxlbnREb21haW5zKCk7CiAgICAgVmVjdG9y
PHVuc2lnbmVkPiBkb21haW5JRHNUb0NsZWFyR3JhbmRmYXRoZXJpbmc7CiAgICAgZm9yIChhdXRv
JiBzdGF0aXN0aWMgOiBwcmV2YWxlbnREb21haW5zKSB7Ci0gICAgICAgIGlmICghc3RhdGlzdGlj
LmhhZFVzZXJJbnRlcmFjdGlvbiAmJiAoIXNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcgfHwg
IXN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKSkKLSAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNl
cy5hcHBlbmQoc3RhdGlzdGljLnJlZ2lzdGVyYWJsZURvbWFpbik7CisgICAgICAgIGlmIChzaG91
bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRm
YXRoZXJpbmcpKQorICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IuYWRk
KHN0YXRpc3RpYy5yZWdpc3RlcmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbCk7
CisgICAgICAgIGVsc2UgaWYgKHNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3Ioc3RhdGlzdGlj
LCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkKKyAgICAgICAgICAgIGRvbWFpbnNUb1Jl
bW92ZVdlYnNpdGVEYXRhRm9yLmFkZChzdGF0aXN0aWMucmVnaXN0ZXJhYmxlRG9tYWluLCBXZWJz
aXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVzKTsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xl
YXJHcmFuZGZhdGhlcmluZyAmJiBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkKICAgICAgICAgICAg
IGRvbWFpbklEc1RvQ2xlYXJHcmFuZGZhdGhlcmluZy5hcHBlbmQoc3RhdGlzdGljLmRvbWFpbklE
KTsKQEAgLTE1MTgsNyArMTUzMiw3IEBAIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluCiAKICAgICBj
bGVhckdyYW5kZmF0aGVyaW5nKFdURk1vdmUoZG9tYWluSURzVG9DbGVhckdyYW5kZmF0aGVyaW5n
KSk7CiAgICAgCi0gICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNlczsKKyAgICByZXR1cm4gZG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3I7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggNmUzZTNl
MGRiODZkMjIwMTlmNTMzNDNjNjFhNDliZDg2MWRjOTVlMC4uNDU2NjZkYzQwMWNjZTYxNzc1MmI4
MzUzNWMwOThmM2RlNTY2MWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRlZEZy
b21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRl
OwotICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcykgb3ZlcnJpZGU7
CiAKQEAgLTE1OCw3ICsxNTgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJ1bmVTdGF0aXN0aWNz
SWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICBlbnVtIGNsYXNzIEFkZGVkUmVjb3JkIHsgTm8sIFll
cyB9OwogICAgIHN0ZDo6cGFpcjxBZGRlZFJlY29yZCwgdW5zaWduZWQ+IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7
Ci0gICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92
ZVdlYnNpdGVEYXRhRm9yKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxXZWJz
aXRlRGF0YUZvcihjb25zdCBQcmV2YWxlbnREb21haW5EYXRhJiwgYm9vbCBzaG91bGRDaGVja0Zv
ckdyYW5kZmF0aGVyaW5nKSBjb25zdDsKKyAgICBib29sIHNob3VsZFJlbW92ZUFsbEJ1dENvb2tp
ZXNGb3IoY29uc3QgUHJldmFsZW50RG9tYWluRGF0YSYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFu
ZGZhdGhlcmluZykgY29uc3Q7CisgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0
ZURhdGFUb1JlbW92ZT4gcmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigp
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNEYXRhYmFzZVN0b3JlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBjcmVhdGVTY2hlbWEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggNzA2MjllZTFhMGVk
ZGJkNzBkYmZjYmZiMjlkNDVhMmFjYWU5ZjY3OS4uNjlmNzkyNDMwZmZlNjViMzY4MzMzMjU3NGNm
MjQzZTBmYzdiMDkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tl
eWVkQ29kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tB
Z2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KQEAgLTQ0NCwxMiArNDQ1LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
CiAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IHsgfTsKIH0K
IAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdyBvcGVyYXRpbmdEYXRl
c1dpbmRvdykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8g
bWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKGRvbWFpbik7Ci0gICAgcmV0
dXJuIG1hcEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpID8gZmFsc2U6IGhh
c0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihtYXBFbnRyeS0+dmFsdWUpOworICAg
IHJldHVybiBtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSA/IGZhbHNl
OiBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obWFwRW50cnktPnZhbHVlLCBv
cGVyYXRpbmdEYXRlc1dpbmRvdyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBy
ZXNvdXJjZVN0YXRpc3RpYywgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSBuZXdQcmV2YWxlbmNlKQpA
QCAtNzg1LDExICs3ODYsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OnByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IEZ1bmN0aW9uPHZvaWQoY28KICAgICAgICAgcHJv
Y2Vzc0Z1bmN0aW9uKHJlc291cmNlU3RhdGlzdGljKTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlv
bihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QKK2Jvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNIYWRVbmV4cGlyZWRSZWNlbnRV
c2VySW50ZXJhY3Rpb24oUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMs
IE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKHJlc291cmNlU3RhdGlzdGlj
LmhhZFVzZXJJbnRlcmFjdGlvbiAmJiBoYXNTdGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRp
c3RpYykpIHsKKyAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uICYm
IGhhc1N0YXRpc3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGljLCBvcGVyYXRpbmdEYXRlc1dp
bmRvdykpIHsKICAgICAgICAgLy8gRHJvcCBwcml2YWN5IHNlbnNpdGl2ZSBkYXRhIGJlY2F1c2Ug
d2Ugbm8gbG9uZ2VyIG5lZWQgaXQuCiAgICAgICAgIC8vIFNldCB0aW1lc3RhbXAgdG8gMCBzbyB0
aGF0IHN0YXRpc3RpY3MgbWVyZ2Ugd2lsbCBrbm93CiAgICAgICAgIC8vIGl0IGhhcyBiZWVuIHJl
c2V0IGFzIG9wcG9zZWQgdG8gaXRzIGRlZmF1bHQgLTEuCkBAIC04MDEsNyArODAyLDE3IEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNIYWRVbmV4cGlyZWRSZWNl
bnRVc2VySW50ZXJhY3Rpb24oUmVzCiAgICAgcmV0dXJuIHJlc291cmNlU3RhdGlzdGljLmhhZFVz
ZXJJbnRlcmFjdGlvbjsKIH0KIAotVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0
ZURhdGFGb3IoKQorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3Vs
ZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNl
U3RhdGlzdGljLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIWhhc0hh
ZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYywgT3BlcmF0
aW5nRGF0ZXNXaW5kb3c6OkxvbmcpICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8
fCAhcmVzb3VyY2VTdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCk7Cit9CisKK2Jvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljLCBib29sIHNob3VsZENoZWNr
Rm9yR3JhbmRmYXRoZXJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
RW5hYmxlZCgpICYmIHJlc291cmNlU3RhdGlzdGljLmdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZh
bGVudFJlc291cmNlICYmICFoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocmVz
b3VyY2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93OjpTaG9ydCkgJiYgKCFzaG91bGRD
aGVja0ZvckdyYW5kZmF0aGVyaW5nIHx8ICFyZXNvdXJjZVN0YXRpc3RpYy5ncmFuZGZhdGhlcmVk
KTsKK30KKworSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnNUb1Jl
bW92ZVdlYnNpdGVEYXRhRm9yKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtODExLDE2ICs4MjIsMjAgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1QKICAgICBpZiAo
c2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZykKICAgICAgICAgY2xlYXJFbmRPZkdyYW5kZmF0aGVy
aW5nVGltZVN0YW1wKCk7CiAKLSAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IHByZXZhbGVu
dFJlc291cmNlczsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRv
UmVtb3ZlPiBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcjsKICAgICBmb3IgKGF1dG8mIHN0
YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlm
IChzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhaGFzSGFkVW5leHBpcmVkUmVjZW50
VXNlckludGVyYWN0aW9uKHN0YXRpc3RpYykgJiYgKCFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVy
aW5nIHx8ICFzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkpCi0gICAgICAgICAgICBwcmV2YWxlbnRS
ZXNvdXJjZXMuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIGlm
IChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9y
R3JhbmRmYXRoZXJpbmcpKQorICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFG
b3IuYWRkKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZTo6
QWxsKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0ZvcihzdGF0
aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CisgICAgICAgICAgICBkb21h
aW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvci5hZGQoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVzKTsKKyAgICAgICAgICAgIHN0YXRp
c3RpYy5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOworICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZENsZWFyR3JhbmRmYXRoZXJpbmcgJiYgc3RhdGlz
dGljLmdyYW5kZmF0aGVyZWQpCiAgICAgICAgICAgICBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCA9
IGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgcmV0
dXJuIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IDNkZThl
ZjVmOTU0YzdmMmZmMzI0Mzk1ZTM1NTIzNmRhYzJiZDBkODEuLmYxZGQyZDgzNjVjYzE1YmJkOGI4
ZWMxOGIxZTZhOGUyZDQ2YWQ5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRlZEZyb21E
b21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBj
bGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNl
dExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcykgb3ZlcnJpZGU7CiAK
QEAgLTExNCw3ICsxMTQsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2Nr
QW5kS2VlcENvb2tpZXMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHN0YXRp
YyBib29sIHNob3VsZEJsb2NrQW5kUHVyZ2VDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKTsKICAgICBzdGF0aWMgYm9vbCBoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJv
dWdoUHJvbXB0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpOwotICAgIGJvb2wgaGFzSGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9u
KFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKKyAgICBib29sIGhhc0hhZFVuZXhwaXJl
ZFJlY2VudFVzZXJJbnRlcmFjdGlvbihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgT3BlcmF0aW5n
RGF0ZXNXaW5kb3cpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFG
b3IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhl
cmluZykgY29uc3Q7CisgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpIGNv
bnN0OwogICAgIGJvb2wgd2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlv
bihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBjdXJyZW50LCBjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiB1cGRhdGVkKSBjb25zdDsKICAgICB2b2lkIGluY3JlbWVudFJlY29yZHNE
ZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwpAQCAtMTI2LDEwICsxMjgsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVtb3ZlRGF0YVJlY29yZHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKLSAgICBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKSBvdmVy
cmlkZTsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3Zl
PiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc01lbW9yeVN0b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0K
ICAgICBXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4gbV9w
ZXJzaXN0ZW50U3RvcmFnZTsKICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDRmZDQ4NGU5ZmM1YWZkZDk0
YWNjMjY3ZTFjYmY5MTA5NjA0OGZjMGEuLmMyMGQwOTI5Yzg5YWMzOGY4NzUxYzE2MWNkOTQ3Y2Fi
MjBhMWY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CkBAIC01MCw3ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1TdGF0aXN0aWNzUHJvY2Vzc2luZ0lu
dGVydmFsIHsgNV9zIH07Ci1jb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3cg
eyAzMCB9OworY29uc3RleHByIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyB7IDMw
IH07Citjb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydCB7IDcgfTsK
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogc3RhdGljIFN0cmluZyBkb21haW5zVG9TdHJp
bmcoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKQEAgLTYzLDYgKzY0
LDI4IEBAIHN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0IFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mIGRvbWFpbnMpCiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CiB9CisKK3N0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0IEhhc2hNYXA8UmVn
aXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiBkb21haW5zVG9SZW1vdmVXZWJz
aXRlRGF0YUZvcikKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChhdXRv
JiBkb21haW4gOiBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvci5rZXlzKCkpIHsKKyAgICAg
ICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluLnN0cmluZygpKTsKKyAg
ICAgICAgc3dpdGNoIChkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvci5nZXQoZG9tYWluKSkg
eworICAgICAgICBjYXNlIFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbDoKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGFsbCBkYXRhKSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0SHR0cE9ubHlDb29raWVzOgor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoYWxsIGJ1dCBIdHRwT25seSBjb29r
aWVzKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1Jl
bW92ZTo6QWxsQnV0Q29va2llczoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
KGFsbCBidXQgY29va2llcykiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CiAjZW5kaWYKIAogT3BlcmF0aW5n
RGF0ZSBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRpbWUgdGltZSkKQEAgLTE1Nywx
MiArMTgwLDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRT
dWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1ZSkKICAgICBtX3BhcmFtZXRlcnMuc2hvdWxkU3VibWl0
VGVsZW1ldHJ5ID0gdmFsdWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sp
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKCFzaG91bGRSZW1vdmVEYXRhUmVjb3Jk
cygpKSB7Ci0gICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3MiwzMyArMTk1LDMzIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYKICAgICAgICAgbV9hY3RpdmVQbHVnaW5Ub2tlbnMuYWRkKHBsdWdpbi0+
cGx1Z2luUHJvY2Vzc1Rva2VuKCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIHByZXZhbGVudFJlc291
cmNlRG9tYWlucyA9IHJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKTsK
LSAgICBpZiAocHJldmFsZW50UmVzb3VyY2VEb21haW5zLmlzRW1wdHkoKSkgewotICAgICAgICBj
YWxsYmFjaygpOworICAgIGF1dG8gZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IgPSByZWdp
c3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCk7CisgICAgaWYgKGRvbWFpbnNU
b1JlbW92ZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgUkVMRUFTRV9MT0dfSU5GT19JRihtX2RlYnVnTG9nZ2luZ0VuYWJsZWQsIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIkFib3V0IHRvIHJlbW92ZSBkYXRhIHJlY29yZHMgZm9y
ICV7cHVibGljfXMuIiwgZG9tYWluc1RvU3RyaW5nKHByZXZhbGVudFJlc291cmNlRG9tYWlucyku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSU5GT19JRihtX2RlYnVnTG9nZ2luZ0Vu
YWJsZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIkFib3V0IHRvIHJlbW92ZSBkYXRh
IHJlY29yZHMgZm9yICV7cHVibGljfXMuIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnNUb1JlbW92
ZVdlYnNpdGVEYXRhRm9yKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAgc2V0RGF0YVJl
Y29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShwcmV2YWxlbnRSZXNv
dXJjZURvbWFpbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZS5jb3B5UmVmKCldICgpIG11dGFibGUgewor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFG
b3IgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZS5jb3B5UmVmKCldICgpIG11dGFibGUgewog
ICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHdlYWtUaGlzLT5tX3N0b3JlLmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291
cmNlRG9tYWlucyksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQs
IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6OlllcywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5j
b3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERl
bGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrUXVldWUtPmRpc3Bh
dGNoKFtkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21h
aW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldICgpIG11dGFibGUgeworICAgICAgICB3ZWFr
VGhpcy0+bV9zdG9yZS5kZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBXVEZNb3Zl
KGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdv
cmtRdWV1ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21h
aW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICB3b3JrUXVl
dWUtPmRpc3BhdGNoKFtkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyld
ICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+aW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZv
ckRvbWFpbnMoV1RGTW92ZShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkpOwogICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5zZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChmYWxzZSk7Ci0g
ICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lORk9fSUYod2Vha1RoaXMtPm1fZGVidWdMb2dnaW5nRW5hYmxlZCwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnLCAiRG9uZSByZW1vdmluZyBkYXRhIHJlY29yZHMuIik7CiAjZW5k
aWYKQEAgLTQzMCw3ICs0NTMsNyBAQCBPcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnN0YXRpc3RpY3NFcGlyYXRpb25UaW1lKCkgY29uc3QKICAgICBpZiAobV9w
YXJhbWV0ZXJzLnRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBXYWxs
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSAtIG1fcGFyYW1ldGVycy50aW1lVG9MaXZl
VXNlckludGVyYWN0aW9uLnZhbHVlKCk7CiAgICAgCi0gICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMu
c2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KQorICAgIGlmIChtX29wZXJhdGluZ0RhdGVz
LnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCiAgICAgICAgIHJldHVybiBtX29w
ZXJhdGluZ0RhdGVzLmZpcnN0KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKICAgICAKICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwpAQCAtNDQ4LDggKzQ3MSw4IEBAIFZlY3RvcjxPcGVyYXRpbmdEYXRl
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlT3BlcmF0aW5nRGF0ZXMoY29uc3Qg
VmVjCiAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZSBkYXRlcy4KICAgICByZW1vdmVSZXBlYXRlZEVs
ZW1lbnRzKG1lcmdlZERhdGVzKTsKICAgICAKLSAgICAvLyBEcm9wIG9sZCBkYXRlcyB1bnRpbCB0
aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBvcGVyYXRpbmdEYXRlc1dpbmRvdy4KLSAgICB3aGlsZSAo
bWVyZ2VkRGF0ZXMuc2l6ZSgpID4gb3BlcmF0aW5nRGF0ZXNXaW5kb3cpCisgICAgLy8gRHJvcCBv
bGQgZGF0ZXMgdW50aWwgdGhlIFZlY3RvciBzaXplIHJlYWNoZXMgb3BlcmF0aW5nRGF0ZXNXaW5k
b3dMb25nLgorICAgIHdoaWxlIChtZXJnZWREYXRlcy5zaXplKCkgPiBvcGVyYXRpbmdEYXRlc1dp
bmRvd0xvbmcpCiAgICAgICAgIG1lcmdlZERhdGVzLnJlbW92ZSgwKTsKICAgICAKICAgICByZXR1
cm4gbWVyZ2VkRGF0ZXM7CkBAIC00NjgsMTcgKzQ5MSwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKQog
ICAgIGlmICghbV9vcGVyYXRpbmdEYXRlcy5pc0VtcHR5KCkgJiYgdG9kYXkgPD0gbV9vcGVyYXRp
bmdEYXRlcy5sYXN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdoaWxlIChtX29wZXJhdGlu
Z0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvdykKKyAgICB3aGlsZSAobV9vcGVy
YXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKQogICAgICAgICBt
X29wZXJhdGluZ0RhdGVzLnJlbW92ZSgwKTsKIAogICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5k
KHRvZGF5KTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRp
c3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSBjb25z
dAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVk
KFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dp
bmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAKLSAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3Bl
cmF0aW5nRGF0ZXNXaW5kb3cpIHsKKworICAgIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93
SW5EYXlzID0gKG9wZXJhdGluZ0RhdGVzV2luZG93ID09IE9wZXJhdGluZ0RhdGVzV2luZG93OjpM
b25nID8gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nIDogb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9y
dCk7CisgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2lu
ZG93SW5EYXlzKSB7CiAgICAgICAgIGlmIChPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUobW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDkyLDkgKzUxNiw5IEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGlt
ZSBtb3N0UmVjZW50VXNlckluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIGNvbnN0Citib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJh
dGluZ0RhdGVzV2luZG93KSBjb25zdAogewotICAgIHJldHVybiBoYXNTdGF0aXN0aWNzRXhwaXJl
ZChyZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CisgICAg
cmV0dXJuIGhhc1N0YXRpc3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lLCBvcGVyYXRpbmdEYXRlc1dpbmRvdyk7CiB9CiAKIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhzaXplX3Qg
bWF4aW11bUVudHJ5Q291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKaW5kZXggZjMzYjcyMjY0YjViMDJmYTAxZTJhNDE1OGFhYWZlNzlmMmE1ZWY1YS4uZDMwYWE5
ZjVkZGFlYTlkY2Y3MGMyYjA4NmMzNDIyYzYzMzJmMzFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNzEsNiArNzEsOCBAQCBwcml2YXRlOgogICAgIGlu
dCBtX21vbnRoRGF5IHsgMCB9OyAvLyBbMSwgMzFdLgogfTsKIAorZW51bSBjbGFzcyBPcGVyYXRp
bmdEYXRlc1dpbmRvdyA6IGJvb2wgeyBMb25nLCBTaG9ydCB9OworCiAvLyBUaGlzIGlzIGFsd2F5
cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiB7CiBwdWJsaWM6CkBAIC0xNjgsNyArMTcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRl
ZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBwcmlt
YXJ5RG9tYWluLCBTZWNvbmRzKSA9IDA7CiAKQEAgLTE4OCwxMiArMTkwLDEyIEBAIHByb3RlY3Rl
ZDoKIAogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKIAotICAg
IGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYp
IGNvbnN0OwotICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUpIGNvbnN0OworICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGly
ZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBj
b25zdDsKKyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Q7CiAgICAgdm9p
ZCBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7CiAgICAg
dm9pZCBtZXJnZU9wZXJhdGluZ0RhdGVzKFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYmKTsKICAgICB2
aXJ0dWFsIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2Vz
Rm9yRGVidWdNb2RlKCkgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkgPSAwOworICAgIHZp
cnR1YWwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4gcmVn
aXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKSA9IDA7CiAKICAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKCkgeyByZXR1cm4gbV9zdG9yZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA5YzAxMTAxYzQ2
MmEwZTc5NjY2ODE1MWU3YWY5ZTgwODExNmZlN2I4Li5kYmVlMDk0N2U2NmEyNWRiMWNmODc1NjJl
MTE2ZmIxZWE5ZjVjNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
CiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgcG9zdFRhc2soW3RoaXMsIGRv
bWFpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSBtX3N0YXRpc3RpY3NT
dG9yZSA/IG1fc3RhdGlzdGljc1N0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oZG9tYWluKSA6
IGZhbHNlOworICAgICAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiA9IG1fc3RhdGlzdGljc1N0
b3JlID8gbV9zdGF0aXN0aWNzU3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4sIE9w
ZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSA6IGZhbHNlOwogICAgICAgICBwb3N0VGFza1JlcGx5
KFtoYWRVc2VySW50ZXJhY3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlciho
YWRVc2VySW50ZXJhY3Rpb24pOwogICAgICAgICB9KTsKQEAgLTEwMTIsMTIgKzEwMTIsMTIgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om5vdGlmeVJlc291cmNlTG9hZFN0
YXRpc3RpY3NQcm9jZXNzZWQoKQogICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5ub3RpZnlSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0lu
QWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVE
YXRhVG9SZW1vdmU+JiYgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IsIGJvb2wgc2hvdWxk
Tm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgCiAgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAg
bV9uZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJ
bkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zKSwgc2hv
dWxkTm90aWZ5UGFnZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5kZWxldGVXZWJzaXRlRGF0YUZv
clJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIFdURk1vdmUoZG9tYWluc1RvUmVtb3ZlV2Vi
c2l0ZURhdGFGb3IpLCBzaG91bGROb3RpZnlQYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA5ODI0M2IzYzc3YzFmZDM1NjM1MDMzNjhiYWYxZDQz
N2VhM2MyMjk1Li5mYzM3Mzc2NjQwMjRiMWVkNGQxMGU2ODNjMzUwYzM1ZGI1YzJjNWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC02MCw2ICs2
MCwxMSBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qg
OiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFU
b1JlbW92ZSA6IHVpbnQ4X3QgeworICAgIEFsbCwKKyAgICBBbGxCdXRIdHRwT25seUNvb2tpZXMs
CisgICAgQWxsQnV0Q29va2llcworfTsKIAogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC0xMDcsNyArMTEyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJvbURv
bWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0
IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25z
dCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERh
dGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBXZWJDb3JlOjpJbmNsdWRlSHR0cE9ubHlD
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIEhhc2hNYXA8UmVnaXN0cmFibGVEb21h
aW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsK
ICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICBib29sIGdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
T3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggNGY4YTM3Zjc1N2Y4MDJkYmRhMDk1NjEzODc5ODBhNGYzYWJhMTRjZi4uOWFiMWVh
M2YyNGFiNTE4NmFkMzQ5YzJlZmJjYWFhYjhhYjBkMTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTMxMyw2ICszMTMsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJgogICAgICAgICBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCk7CiAKICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldElzSVRQRGF0YWJhc2VFbmFibGVkKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlSVRQRGF0
YWJhc2UpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0SXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZChwYXJhbWV0
ZXJzLmlzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQpOwogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC0xMjIwLDYgKzEyMjEsMTkgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXMKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9h
ZFdpdGhMaW5rRGVjb3JhdGlvbihmcm9tRG9tYWluLCB0b0RvbWFpbiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNTEwLDcgKzE1MjQsNyBAQCBzdGF0aWMgVmVjdG9yPFdl
YnNpdGVEYXRhOjpFbnRyeT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNvbnN0IFZlY3Rv
cjxSZWdpcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0
b3JlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBP
bmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBIYXNo
TWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiYmIGRvbWFpbnMsIGJv
b2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpEb05vdENyZWF0ZVByb2Nlc3NlczsKIApAQCAtMTU1MiwxMyArMTU2NiwzNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWluc0luQWxsUGVyc2lzdGVudERhdGFTdAogCiAgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKIAorICAgIFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQ29va2llc0ZvcjsKKyAgICBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvcjsKKyAg
ICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNG
b3I7CiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZTsKICAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMp
KSB7CisgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucy5rZXlzKCkpIHsKKyAgICAg
ICAgICAgIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IuYXBwZW5kKGRvbWFpbik7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGRvbWFpbnMuZ2V0KGRvbWFpbikpIHsKKyAgICAgICAgICAgIGNh
c2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsOgorICAgICAgICAgICAgICAgIGRvbWFpbnNUb0Rl
bGV0ZUNvb2tpZXNGb3IuYXBwZW5kKGRvbWFpbik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbEJ1dEh0dHBPbmx5Q29va2ll
czoKKyAgICAgICAgICAgICAgICBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNG
b3IuYXBwZW5kKGRvbWFpbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbEJ1dENvb2tpZXM6CisgICAgICAgICAgICAgICAg
Ly8gQWxyZWFkeSBhZGRlZC4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyh3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dp
dGhDb29raWVzKTsKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBm
aWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWlucywgd2Vic2l0ZURhdGFTdG9yZS5ob3N0
TmFtZXNXaXRoQ29va2llcyk7Ci0gICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgaW5j
bHVkZUh0dHBPbmx5Q29va2llcyk7CisKKyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVz
VG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQ29v
a2llc0Zvciwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAg
ICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9z
dG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBPbmx5Q29va2ll
czo6WWVzKTsKKworICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNv
b2tpZXNGb3IsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aENvb2tpZXMpOworICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhv
c3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tp
ZXM6Ok5vKTsKICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0byYgZG9t
YWluIDogZG9tYWlucy5rZXlzKCkpCisgICAgICAgICAgICBkb21haW5zVG9EZWxldGVBbGxCdXRD
b29raWVzRm9yLmFwcGVuZChkb21haW4pOwogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGhv
c3RuYW1lc1dpdGhIU1RTVG9EZWxldGU7CkBAIC0xNTY2LDcgKzE2MDQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVy
c2lzdGVudERhdGFTdAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgZ2V0SG9z
dE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0
b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aEhT
VFNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zLCB3ZWJzaXRl
RGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAgICAgICAgaG9zdG5hbWVz
V2l0aEhTVFNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9E
ZWxldGVBbGxCdXRDb29raWVzRm9yLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUpOwogICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTU4MSw5ICsxNjE5LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAgICAq
LwogICAgIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJp
ZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFt0aGlzLCBkb21haW5zLCBzZXNzaW9uSUQsIGNhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8gZW50cmll
cykgbXV0YWJsZSB7CisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMo
KnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb246OkNvbXB1dGVTaXplcyksIFt0aGlzLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVz
Rm9yLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGF1dG8gZW50cmllc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRv
bWFpbnMsIGVudHJpZXMpOworICAgICAgICAgICAgYXV0byBlbnRyaWVzVG9EZWxldGUgPSBmaWx0
ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvciwg
ZW50cmllcyk7CiAKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0
YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzVG9EZWxldGUpOwogICAgICAgICAgICAgCkBA
IC0xNTk2LDExICsxNjM0LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0CiAgICAgYXV0byBw
YXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwogICAgIGlmICghcGF0aC5p
c0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykpIHsKICAgICAgICAgLy8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0IGRh
dGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNzaW9uIElELgotICAgICAgICBwb3N0U3RvcmFn
ZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBXVEZNb3ZlKHBhdGgpLCBk
b21haW5zXSgpIG11dGFibGUgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHNlY3VyaXR5
T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsKKyAgICAgICAgcG9zdFN0
b3JhZ2VUYXNrKENyb3NzVGhyZWFkVGFzayhbdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBwYXRoID0gV1RGTW92ZShwYXRo
KSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9E
ZWxldGVBbGxCdXRDb29raWVzRm9yID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IpLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMgPSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgp
XSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gZW50cmllc1Rv
RGVsZXRlOwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4g
OiBzZWN1cml0eU9yaWdpbnMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFkb21haW5zLmNv
bnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0
eU9yaWdpbi5ob3N0KSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRl
QWxsQnV0Q29va2llc0Zvci5jb250YWlucyhSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3Jl
YXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCkpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAgICAgZW50cmllc1RvRGVsZXRlLmFwcGVu
ZChzZWN1cml0eU9yaWdpbik7CkBAIC0xNjE2LDkgKzE2NTQsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVu
dERhdGFTdAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBwYXRoID0gbV9zd0RhdGFi
YXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMpKSB7Ci0gICAgICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmdldE9y
aWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbdGhpcywgc2Vzc2lvbklELCBkb21haW5zLCBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShjb25zdCBIYXNoU2V0
PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgICAg
IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9u
cyhbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShjb25zdCBIYXNo
U2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFkb21haW5zLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCisgICAgICAgICAg
ICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0
KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IHNlY3VyaXR5T3Jp
Z2luLCBXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLCAwIH0pOwog
ICAgICAgICAgICAgICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNsZWFyKHNlY3Vy
aXR5T3JpZ2luLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKQEAgLTE2MjgsMTEgKzE2NjYsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRh
U3QKICNlbmRpZgogICAgIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewotICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMo
Y2FjaGUoKSwgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFt0aGlzLCBkb21haW5zLCBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvIGVudHJpZXMp
IG11dGFibGUgeworICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoY2FjaGUoKSwgc2Vzc2lv
bklELCBmZXRjaE9wdGlvbnMsIFt0aGlzLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9y
LCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRv
IGVudHJpZXMpIG11dGFibGUgewogCiAgICAgICAgICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBlbnRyaWVzVG9EZWxldGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50
cmllcykgewotICAgICAgICAgICAgICAgIGlmICghZG9tYWlucy5jb250YWlucyhSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKSkKKyAg
ICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IuY29udGFp
bnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5Lm9yaWdp
bi5ob3N0KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnkub3JpZ2luKTsKICAgICAgICAgICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoZW50cnkpOwpA
QCAtMTY0NSw4ICsxNjgzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgUmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBjb29raWVUeXBlID0gV2Vic2l0ZURhdGFUeXBlOjpD
b29raWVzOwotCi0gICAgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFs
bFBlcnNpc3RlbnREYXRhU3RvcmVzKHNlc3Npb25JRCwgY29va2llVHlwZSwgeyBkb21haW4gfSwg
dHJ1ZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Olll
cyA6IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Ok5vLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiBkb21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CisgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURv
bWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4gdG9EZWxldGVGb3I7CisgICAgdG9EZWxldGVGb3Iu
YWRkKGRvbWFpbiwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IFdlYnNpdGVEYXRhVG9SZW1vdmU6
OkFsbCA6IFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbEJ1dEh0dHBPbmx5Q29va2llcyk7CisgICAg
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoc2Vzc2lvbklELCBjb29raWVU
eXBlLCBXVEZNb3ZlKHRvRGVsZXRlRm9yKSwgdHJ1ZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYgZG9tYWluc0RlbGV0ZWRGb3IpIG11dGFibGUgewogICAgICAgICBVTlVTRURfUEFSQU0oZG9t
YWluc0RlbGV0ZWRGb3IpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDFj
NmZiNmMyZWU1MzdlMjQxMmY1YjkxOWEyZWJjYTU1ZmMxZTM4OWMuLjE0ZTkyYTQwYWZjZWI1N2M0
ODJjOTFhNmMxZWE1MmJiZWJjOTU4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0
dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CkBAIC0yMDUsNyArMjA2LDcgQEAg
cHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBj
bGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYm
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
KT4mJik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQ
QUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIEhhc2hNYXA8UmVnaXN0
cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBSZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CiAg
ICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjU4LDYgKzI1OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJv
b2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jv
c3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDMwYTU1MzJkOGQ1OWMwNjgwM2MyMDYxNmY4ZWRkYzU2NDc3ODQwZjAuLjk4Nzc2MGYzNmY3MDAy
NWYyZmIzZjZhNTBlMjE4Y2I3ZGZlN2FmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTM2LDYgKzEz
Niw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBT
ZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZWRpcmVjdGVkRnJvbURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBSZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICAgICBDb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4sIHVpbnQ2NF90
IHBhZ2VJRCkgLT4gKCkgQXN5bmMKKyAgICBTZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWlu
KSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25G
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBEZWxl
dGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAo
KSBBc3luYwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGEz
ZGZlNjBhNzBhOGI0ODJmOTIwOTllOGY2ZTFjZDdhYWVkMjMxNGQuLjJlZDFjMmVkMDA3OTg4MGMw
N2Q3ZWFkMjFlM2U5OGZlM2I4YzM1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC05NSw2ICs5NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKICAgICBlbmNv
ZGVyIDw8IHNob3VsZEVuYWJsZUlUUERhdGFiYXNlOwogICAgIGVuY29kZXIgPDwgZG93bmxvYWRN
b25pdG9yU3BlZWRNdWx0aXBsaWVyOworICAgIGVuY29kZXIgPDwgaXNJVFBGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsRW5hYmxlZDsKIH0KIAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHJlc3VsdCkKQEAgLTIyNyw3ICsyMjgsMTAgQEAgYm9vbCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgTmV0d29ya1Byb2MKICAgICBpZiAoIWRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGllcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5kb3dubG9hZE1vbml0b3JTcGVlZE11
bHRpcGxpZXIgPSAqZG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVyOwotICAgIAorCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYjQyODc0MDlhZWU5NmNlNzMz
OTlkMTQ0MDU0ODQ5ODM4ODk3OGY3Ni4uOGFlOTE3MTAyZDU4YjhmOGViN2IxZWRmZmNiMzM0MmEx
ZTkyYmM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTEyLDYgKzExMiw3
IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBz
aG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2Ug
fTsKICNlbmRpZgogICAgIGJvb2wgc2hvdWxkRW5hYmxlSVRQRGF0YWJhc2UgeyBmYWxzZSB9Owor
ICAgIGJvb2wgaXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCB7IHRydWUg
fTsKICAgICB1aW50MzJfdCBkb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIgeyAxIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDNjOGM5Mzg0NmQ1OWY3ZjFlMzkxYWUyM2RkMmJmYWNhZjJjODY4NmQuLjFlMzBjZWE2
YjljNjA0Y2RjNmRlNzdkMTUwNDcxYTFjYzQ2ZTYwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0xMjUsOSArMTI1LDkgQEAgdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1
bnNpZ25lZCB0b3RhbFByZXZhbGUKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOb3RpZnlS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodG90YWxQcmV2YWxlbnRSZXNv
dXJjZXMsIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM1N1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lv
bjo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnRE
YXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgSW5jbHVk
ZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJh
YmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYgZG9tYWlucywgYm9vbCBz
aG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFdURk1vdmUoZG9tYWlucyks
IHNob3VsZE5vdGlmeVBhZ2UsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5kZWxldGVXZWJzaXRlRGF0YUZv
clJlZ2lzdHJhYmxlRG9tYWlucyhtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFp
bnMpLCBzaG91bGROb3RpZnlQYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgTmV0d29ya1Nlc3Npb246OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGJvb2wgc2hvdWxkTm90aWZ5UGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAppbmRleCBkYjc4OTY0NDBhMzNjMGE4ZmEwNzA4N2QwMDkyZjE3Yjk2NjVl
MTUwLi44MThiMTVlZWMyY2EzZmNkYWM1MjYwYzQyNWZiNzhkZjllZTVjOWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Z2V0KCk7IH0KICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wp
OwogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwotICAg
IHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3Rl
bnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5j
bHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBI
YXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiYm
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CiAgICAgdm9pZCByZWdpc3Ry
YWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJv
b2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3Rh
bFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCmluZGV4IDc4NTY0ZmIwMmY1M2ZlNDVlYmJjYTdiNWM0YTcxMzVkYjdmYWNhOWIu
LmRjOGM2NmRmZTlkNzcyNjliNWNhMGVlMDc2YjAzYWRhZTE0OWU0NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTM4MSw2ICsxMzgxLDE0IEBAIE1lZGlh
Q2FwYWJpbGl0aWVzRXh0ZW5zaW9uc0VuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlv
bjogIk1lZGlhIENhcGFiaWxpdGllcyBFeHRlbnNpb25zIgogICBjYXRlZ29yeTogZXhwZXJpbWVu
dGFsCiAKK0lzSVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQ6CisgICAgdHlw
ZTogYm9vbAorICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FWFBFUklNRU5UQUxfRkVBVFVSRVNf
RU5BQkxFRAorICAgIGh1bWFuUmVhZGFibGVOYW1lOiAiSVRQIEZpcnN0IFBhcnR5IFdlYnNpdGUg
RGF0YSBSZW1vdmFsIgorICAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBJbnRl
bGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIEZpcnN0IFBhcnR5IFdlYnNpdGUgRGF0YSBSZW1v
dmFsIgorICAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgICAgY2F0
ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiAjIEZvciBpbnRlcm5hbCBmZWF0dXJlczoKICMgVGhlIHR5
cGUgc2hvdWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3ZpZGUgYSBodW1hblJlYWRhYmxl
TmFtZSBhbmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBhbGwgZGVidWcgZmVhdHVyZXMu
IFRoZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGVkYThkMjIwZDJiZjdmMDBiNjkyZDI5MmNmYzc3YzM1
M2I0ZjI0ZGUuLjkwMjg1YjM5ZGM1Njc0N2ZiZmUzMjY4ZGM2ZDM2OGZhZjIxNDM1OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcApAQCAtMjk3LDE3ICsyOTcsMzYgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3IK
ICNlbmRpZgogfQogCi12b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRv
dWJsZSBzZWNvbmRzKQordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9Ib3N0LCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMg
fSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9tSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
UHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKQordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3Vi
bGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NpbmcoW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHsg
c2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAgICAgY2FsbGJhY2soY29udGV4
dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQpOworI2VuZGlmCit9CisK
K3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJl
Y29yZHNGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbnRleHQs
IGNhbGxiYWNrXSB7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UK
KyAgICBjYWxsYmFjayhjb250ZXh0KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IGY1Zjlh
NDdmYjg2MzllZWU4YTM1MTk0OGEyMzBhYjYzYTFhNjJhNmYuLmU2YTJhMDA3ZjAxMmY0Mjg2ODI4
YmFhZTI1Mjc5Zjk1YTlmNTU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC03Myw4ICs3MywxMiBAQCBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKFdLV2VicwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pOwog
V0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7Ci1XS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcyk7
Ci1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKTsK
K3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9h
ZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9Ib3N0LCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbkZ1bmN0aW9uIGNhbGxiYWNrKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uRnVuY3Rpb24pKHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFj
ayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3Jkc0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwor
V0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHNGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmdGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29v
a2llQmxvY2tpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiBXS19FWFBPUlQgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggM2Y4YjQ1OWNmZDIyM2Q0OWE4NzNm
OTJkM2ZlYTJmMDhmYWQ2MmE4Yy4uOTEzZTkzYWEwYjlkMDE3NGQ0YjYwYTQzMTVkNTk3NmIwOGNj
Y2M5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCkBAIC0zMTMsNiArMzEzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhCiAKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZUlUUERhdGFiYXNlID0gW2RlZmF1bHRz
IGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnRlcm5hbERlYnVnJUAi
LCBXZWJQcmVmZXJlbmNlc0tleTo6aXNJVFBEYXRhYmFzZUVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpXV07CiAgICAgcGFyYW1ldGVycy5kb3dubG9hZE1vbml0b3JTcGVlZE11bHRp
cGxpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPmRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGllcigp
OworCisgICAgLy8gQ2hlY2sgaWYgdGhlIGZlYXR1cmUgaGFzIGJlZW4gdHVybmVkIG9mZiBleHBs
aWNpdGx5LiBUaGlzIGF2b2lkcyBpbnRlcnByZXRpbmcKKyAgICAvLyBhIG5vbi1leGlzdGluZyBk
ZWZhdWx0IGFzIGEgZmFsc2UgdmFsdWUuCisgICAgYXV0byBpc0lUUEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxFbmFibGVkU3RyID0gW2RlZmF1bHRzIHN0cmluZ0ZvcktleTpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6Omlz
SVRQRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpXV07CisgICAgaWYgKFtpc0lUUEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxF
bmFibGVkU3RyIGlzRXF1YWw6QCIwIl0pCisgICAgICAgIHBhcmFtZXRlcnMuaXNJVFBGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCA9IGZhbHNlOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGEz
OTgwMWIzN2E2YjMwMjQxNDk2MWY5YjIyMGI5M2M0YTQ1OTM3NDIuLjBiOTFlMzkxZTM5ODNkNDFl
YjUyMjY0MTYzNGJkYmE0Zjk2YTVlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTYyLDYgKzk2Miwx
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24oc2Vzc2lvbklELCBmcm9tRG9tYWluLCB0b0RvbWFpbiwgcGFnZUlEKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKHNlc3Npb25JRCwgZnJvbURvbWFpbiwgdG9E
b21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IDE2NjJiYmVkZGE4Y2E1MDNlYWE2NDcyOWQ2NGRjY2M4NGFmNDcyYzQuLjM3MjM1
NmI4NjgyYzI5OTMzOTUwZDc1YTBiZjMxYjg4N2QyMTM1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNDYs
NiArMTQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNC
ZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6
OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRv
RG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxv
YWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBP
bmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCAyNDBiODI1ODI0OWU5MTAyZWQ0OWIzZmYyNGYwNmJlYTQ2MDFhZWVmLi4w
NjA4YTZhNDU0Y2ExNGRmODFhNThiYjY1MmY1Y2JlYzg3YmJjZGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cApAQCAtMTc2NCw2ICsxNzY0LDE4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRm
YXRoZXJlZChjb25zdCBVUkwmIHVybCwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvCiAgICAgfQog
fQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZnJvbVVSTCwgY29uc3QgVVJMJiB0b1VSTCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkp
CisgICAgICAgICAgICBwcm9jZXNzLT5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9u
Rm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4geyBmcm9tVVJMIH0sIFJl
Z2lzdHJhYmxlRG9tYWluIHsgdG9VUkwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIH0KK30KKwogdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9u
Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjc0Zjc1
NzU5OWRjMjkyMjBkMjM4MzVlYmEyYjBjOTBjZGUzMzU5Ni4uMjUzOWZmOTcxMGRmM2Y2OGFlNjc1
N2I1Mjc2OGEzODMyMTViZGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgc3ViRnJh
bWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMp
PiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3Qs
IFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oY29uc3QgVVJMJiBzdWJm
cmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSk7CisgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhjb25zdCBVUkwmIGZyb21VUkwsIGNvbnN0IFVSTCYg
dG9VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3Nz
U2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJMJiwg
Ym9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggN2E2YTkxZDUzMjA1NjUyNTlkYzk4NzU3MTViODA0ZmZkMjdkMmJjNS4uZTdhYTcxYTJh
NjU1YTMxNTQ1OTM3MmIxMjlhZjRjZTA2NTYzODI5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTAzLTE5ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExv
YWQgU3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQ2xlYXIgbm9uLWNvb2tpZSB3ZWJzaXRlIGRh
dGEgZm9yIHNpdGVzIHRoYXQgaGF2ZSBiZWVuIG5hdmlnYXRlZCB0bywgd2l0aCBsaW5rIGRlY29y
YXRpb24sIGJ5IGEgcHJldmFsZW50IHJlc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU5MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5
MDAxMjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmcgdG8gdGhlIFRlc3RSdW5uZXI6CisgICAg
ICAgIC0gQWRkcyBzZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbigp
LgorICAgICAgICAtIE1ha2VzIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KCkgd2FpdCBmb3IgY29tcGxldGlvbi4KKyAgICAgICAgLSBNYWtlcyBzdGF0aXN0aWNzUHJvY2Vz
c1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpIHdhaXQgZm9yIGNvbXBsZXRpb24uCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKwogMjAxOS0wMy0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBh
cHBsZS5jb20+CiAKICAgICAgICAgV0tXZWJWaWV3LkdldENvbnRlbnRzU2hvdWxkUmV0dXJuQXR0
cmlidXRlZFN0cmluZyBpcyBjcmFzaGluZyBvbiBpT1MgU2ltdWxhdG9yLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKaW5kZXggZDU3ZmQ4M2VjNTQzMDQ1ZjkxNWY3ZWQ3ZjMzMzU1NzM2MGIzOWI2
Yy4uNDgxY2VlYjgyOWE0YTlkMWYwMDdiYjI1NDZhMDE0YjZmOTc2YjU3NiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC0zMDMsNiArMzAzLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIg
ewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKERP
TVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5nIGhvc3RO
YW1lLCBET01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwogICAgIHZvaWQgc2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3Ry
aW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKERPTVN0cmluZyBmcm9tSG9zdCwgRE9NU3RyaW5nIHRv
SG9zdCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihk
b3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAppbmRleCA5OGYxZjFjYWNlNTdiOTRjY2E3YmEwNTBmOGYyYjNhNmI3ZTNmZDRhLi4yNmYyNTc1
YmQyNTczMzY4ZTJjZDg2MzU2NTliMzVlNmEyYTFkYjBmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE4NTEsNiAr
MTg1MSwyOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0RnJvbShKU1N0cmluZ1JlZiBob3N0TmFtZSwgSgogICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oSlNT
dHJpbmdSZWYgZnJvbUhvc3QsIEpTU3RyaW5nUmVmIHRvSG9zdCkKK3sKKyAgICBWZWN0b3I8V0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5
cGVSZWY+PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRnJvbUhvc3QiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5k
KHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoZnJvbUhvc3QpIH0pOworICAg
IAorICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlRvSG9zdCIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhKU1N0cmluZyh0b0hvc3QpIH0pOworICAgIAorICAgIFZlY3RvcjxXS1N0cmluZ1Jl
Zj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVz
KHZhbHVlcy5zaXplKCkpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5z
aXplKCk7ICsraSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAg
ICAgcmF3VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKyAgICAKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRv
cHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgp
LCByYXdLZXlzLnNpemUoKSkpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3Rh
dGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCiB7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmlu
ZGV4IGI2NWQwYmE4NjYzMzFlZTA2YzBhNTZjMGMzMGZjY2UwMTQzOGEyZWEuLjNiZjNkMWE4ZjUx
NzdlNTgxYWVmODhiNDI0MWFhOTlkZDAwZmMxMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MTYsNiArNDE2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRG
cm9tKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oSlNT
dHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShKU1N0cmluZ1Jl
ZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihKU1N0cmluZ1Jl
ZiBmcm9tSG9zdCwgSlNTdHJpbmdSZWYgdG9Ib3N0KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc0lzUnVubmluZ1Rlc3QoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5NmMyMTY5OGUyYmRmYzFlYWE2OGQwN2Q0
NTMyOGUxMTJjYjQyMjguLmMzZTI2MjcwYzA0ZWVlZDk3YmIzYTBlODUyMjhlZWRmNGVhN2E0OGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMjU1LDE2
ICszMjU1LDI4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXCiAgICAgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGRhdGFTdG9yZSwgaG9z
dCwgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tTdHJpbmdSZWYgZnJvbUhv
c3QsIFdLU3RyaW5nUmVmIHRvSG9zdCkKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRl
eHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBSZXNvdXJjZVN0
YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZGF0YVN0
b3JlLCBmcm9tSG9zdCwgdG9Ib3N0LCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJl
c3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cit9
CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4
dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwotICAgIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRhdGFTdG9yZSwg
c2Vjb25kcyk7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQo
KnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKGRhdGFTdG9yZSwgc2Vjb25kcywgJmNvbnRleHQsIHJlc291cmNlU3RhdGlz
dGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0
R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoZGF0YVN0b3Jl
KTsKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7
CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMoZGF0YVN0b3JlLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3Vs
dENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CiB9CiAK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZygpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggNmJmYTZiY2YzZDJkZjUz
ZWU2OWJlN2ViM2UzMDZiZGMyZjIyYWJkNy4uMjg4NzQ5ZGZjMDkxYTViODYwNTViMTM1YzU1Nzgz
MTU0NWM2MTA4NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAt
MjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVk
aXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyhXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1Jl
ZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pOworICAgIHZvaWQgc2V0U3Rh
dGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tTdHJpbmdSZWYgZnJvbUhv
c3QsIFdLU3RyaW5nUmVmIHRvSG9zdCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJv
Y2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0
ZUNvb2tpZUJsb2NraW5nKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IGQ2YmIxNGY5ODcyMzRkZDcyNDcxOTI4Njk0ZWFlNzAxMDFmYjY2ZWEuLjY3YTE1
NWUyMGE5OGZlOGI3MjBkMzY3MzFmYzkxZmIzMWNkNDM3OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMzA0LDYgKzEzMDQsMjAgQEAgV0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlz
dGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24iKSkgeworICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAg
ICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBz
dGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYXV0byBm
cm9tSG9zdEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZyb21I
b3N0IikpOworICAgICAgICBhdXRvIHRvSG9zdEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlRvSG9zdCIpKTsKKworICAgICAgICBXS1N0cmluZ1JlZiBmcm9tSG9z
dCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSwgZnJvbUhvc3RLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tTdHJp
bmdSZWYgdG9Ib3N0ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0b0hvc3RLZXkuZ2V0KCkpKTsKKyAgICAg
ICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzQ3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihmcm9tSG9zdCwgdG9Ib3N0KTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
biIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEb3Vi
bGVHZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLRG91YmxlUmVmIHNlY29uZHMgPSBzdGF0aWNfY2Fz
dDxXS0RvdWJsZVJlZj4obWVzc2FnZUJvZHkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1OTk2ZDBkZjE4OGQ3YjVlNmEy
MTAwNGE2NDFjNDUyZTVlMDUxNDUuLmMyZDhlNjQ2YmY2MmE5ODliYmI0ODc1Mjk1MzUwM2MyODdm
NWMyOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMy0xOSAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mg
KGV4cGVyaW1lbnRhbCk6IENsZWFyIG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGZvciBzaXRlcyB0
aGF0IGhhdmUgYmVlbiBuYXZpZ2F0ZWQgdG8sIHdpdGggbGluayBkZWNvcmF0aW9uLCBieSBhIHBy
ZXZhbGVudCByZXNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk1OTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTAwMTI3Mj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5h
dmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVt
b3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRtbDogQWRk
ZWQuCisKIDIwMTktMDMtMTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGV4cGVyaW1lbnRhbCAiYWxwaGFDaGFubmVsIiBwcm9wZXJ0eSB0byBWaWRlb0Nv
bmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8t
d2l0aC1saW5rLWRlY29yYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5h
dmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmFhMmJkOWFjYTMyMGU1Mjk0NzA1NzNlNzEzYjRkZDhiMmQ5ZjY3ZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRl
LWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK0NoZWNrIHRoYXQgbm9uLWNvb2tpZSB3ZWJz
aXRlIGRhdGEgZ2V0cyByZW1vdmVkIGFmdGVyIGEgbmF2aWdhdGlvbiB3aXRoIGxpbmsgZGVjb3Jh
dGlvbiBmcm9tIGEgcHJldmFsZW50IHJlc291cmNlLgorCitCZWZvcmUgZGVsZXRpb246IENsaWVu
dC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBl
eGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0
cy4KKworQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVs
ZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNp
ZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNv
b2tpZSBleGlzdHMuCisKK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3Qu
CisKKworUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzOgorCitSZWdpc3RyYWJsZSBkb21haW46IGxv
Y2FsaG9zdAorICAgIGxhc3RTZWVuOiAwCisgICAgaGFkVXNlckludGVyYWN0aW9uOiBObworICAg
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246IC0xCisgICAgZ3JhbmRmYXRoZXJlZDogTm8KKyAg
ICBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZTogTm8gICAgaXNQcmV2YWxl
bnRSZXNvdXJjZTogWWVzCisgICAgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2U6IE5vCisgICAgZGF0
YVJlY29yZHNSZW1vdmVkOiAwCitSZWdpc3RyYWJsZSBkb21haW46IDEyNy4wLjAuMQorICAgIGxh
c3RTZWVuOiAwCisgICAgaGFkVXNlckludGVyYWN0aW9uOiBObworICAgIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb246IC0xCisgICAgZ3JhbmRmYXRoZXJlZDogTm8KKyAgICB0b3BGcmFtZUxpbmtE
ZWNvcmF0aW9uc0Zyb206CisgICAgICAgIGxvY2FsaG9zdAorICAgIGdvdExpbmtEZWNvcmF0aW9u
RnJvbVByZXZhbGVudFJlc291cmNlOiBObyAgICBpc1ByZXZhbGVudFJlc291cmNlOiBObworICAg
IGlzVmVyeVByZXZhbGVudFJlc291cmNlOiBObworICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDogMQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVj
b3JhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmst
ZGVjb3JhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MTdhOTQ2ZDM2ZGRlZDE1NTY3ZTZhNzM2NjBj
NTU3ZTc3NTlhYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdh
dGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwKQEAgLTAsMCArMSwxMzggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVz
b3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRp
bWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0aGF0
IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGdldHMgcmVtb3ZlZCBhZnRlciBhIG5hdmlnYXRpb24g
d2l0aCBsaW5rIGRlY29yYXRpb24gZnJvbSBhIHByZXZhbGVudCByZXNvdXJjZS48L2Rpdj4KKzxi
cj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAg
Y29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0
IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3Qg
Y2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0
aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7
CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8g
MSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1Rv
T3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9
IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxl
dCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9
IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9y
ZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29va2llcyBmb3VuZC4iKTsK
KyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFt
ZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgo
aXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246ICIgKyAo
aXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVy
U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRl
bGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5h
bWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2go
KGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBDbGll
bnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3Nh
Z2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOwor
ICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERhdGFiYXNlIjsKKworICAg
IGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5k
ZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9OworICAgICAg
ICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgbGV0IG9ialN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOwor
ICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAgICAgICAgY2FsbGJhY2so
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhp
c3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7
CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KChp
c0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogSURCIGVu
dHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAg
fTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFkZE91dHB1dCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVs
ZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgfTsKKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0
IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tp
ZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2lu
IiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVz
LmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsg
Ij0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAg
ZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAg
IGNoZWNrQ29va2llcyhmYWxzZSk7CisgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisK
KyAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2Us
IHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKwor
ICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICBjaGVja0Nvb2tpZXModHJ1
ZSk7CisgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgIGNoZWNrSURCRGF0
YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IHByZXZhbGVudFJlc291cmNlT3JpZ2lu
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3QgZGVzdGluYXRpb25PcmlnaW4g
ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRSZXNvdXJj
ZU9yaWdpbiwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihwcmV2YWxlbnRSZXNv
dXJjZU9yaWdpbiwgZGVzdGluYXRpb25PcmlnaW4pOworICAgICAgICAgICAgICAgIHdyaXRlV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>