<?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>182664</bug_id>
          
          <creation_ts>2018-02-09 16:33:21 -0800</creation_ts>
          <short_desc>Resource Load Statistics: Classify resources as prevalent based on redirects to other prevalent resources</short_desc>
          <delta_ts>2018-02-20 13:09:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=182879</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=182983</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>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398151</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-09 16:33:21 -0800</bug_when>
    <thetext>A and B should be classified as prevalent if domain A has redirected to domain B which in turn has redirected to prevalent resource domain C.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398152</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-09 16:33:31 -0800</bug_when>
    <thetext>rdar://problem/37372572</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398166</commentid>
    <comment_count>2</comment_count>
      <attachid>333536</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-09 17:03:36 -0800</bug_when>
    <thetext>Created attachment 333536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398172</commentid>
    <comment_count>3</comment_count>
      <attachid>333539</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-09 17:12:42 -0800</bug_when>
    <thetext>Created attachment 333539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398379</commentid>
    <comment_count>4</comment_count>
      <attachid>333539</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-02-12 10:28:43 -0800</bug_when>
    <thetext>Comment on attachment 333539
Patch

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

Very nice! I asked you to make a few adjustments to calm my fears, but otherwise this looks good.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:167
&gt; +    auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);

I don&apos;t see why this line had to be moved. It makes me nervous, because we have had many threading/memory corruption bugs caused by invalidated iterators, and I&apos;d prefer to limit the scope of these references to the smaller area possible. It doesn&apos;t seem like this is referenced again in your new code below, so I don&apos;t think you should make this change.

Or did you do this to make sure there is an existing entry for the top frame in the redirect code below? If so, I propose you do so at the point you need it, and add the same comment you do elsewhere (&quot;For consistency, make sure we also have a statistics entry for the top frame domain.&quot;). I would also give it the name &quot;topFrameStatistics&quot; in the redirect sections below.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:234
&gt; +    auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);

Ditto my comments in the &quot;logFrameNavigation&quot; code.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:488
&gt; +{

Please add &quot;ASSERT(!RunLoop::isMain());&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398385</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 10:40:35 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #4)
&gt; Comment on attachment 333539 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333539&amp;action=review
&gt; 
&gt; Very nice! I asked you to make a few adjustments to calm my fears, but
&gt; otherwise this looks good.
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:167
&gt; &gt; +    auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);
&gt; 
&gt; I don&apos;t see why this line had to be moved. It makes me nervous, because we
&gt; have had many threading/memory corruption bugs caused by invalidated
&gt; iterators, and I&apos;d prefer to limit the scope of these references to the
&gt; smaller area possible. It doesn&apos;t seem like this is referenced again in your
&gt; new code below, so I don&apos;t think you should make this change.

I see. However, I do use targetStatistics in two more places now, which is why I moved it. Please see new lines 182 and 185 where I now add topFrameUniqueRedirectsFrom and subresourceUniqueRedirectsFrom respectively.

Previously we only added statistics to the redirecting domain but now we need to keep track of both directions for the purpose of traversing the redirect graph backwards.

Please advice.

&gt; Or did you do this to make sure there is an existing entry for the top frame
&gt; in the redirect code below? If so, I propose you do so at the point you need
&gt; it, and add the same comment you do elsewhere (&quot;For consistency, make sure
&gt; we also have a statistics entry for the top frame domain.&quot;). I would also
&gt; give it the name &quot;topFrameStatistics&quot; in the redirect sections below.
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:234
&gt; &gt; +    auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);
&gt; 
&gt; Ditto my comments in the &quot;logFrameNavigation&quot; code.

Ditto reply. Please advice.

&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:488
&gt; &gt; +{
&gt; 
&gt; Please add &quot;ASSERT(!RunLoop::isMain());&quot; here.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398394</commentid>
    <comment_count>6</comment_count>
      <attachid>333539</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-02-12 11:09:49 -0800</bug_when>
    <thetext>Comment on attachment 333539
Patch

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

Now that I understand better, this really was introducing a nasty bug. I&apos;m changing to r- for you to fix. :-)

&gt;&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:167
&gt;&gt;&gt; +    auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);
&gt;&gt; 
&gt;&gt; I don&apos;t see why this line had to be moved. It makes me nervous, because we have had many threading/memory corruption bugs caused by invalidated iterators, and I&apos;d prefer to limit the scope of these references to the smaller area possible. It doesn&apos;t seem like this is referenced again in your new code below, so I don&apos;t think you should make this change.
&gt;&gt; 
&gt;&gt; Or did you do this to make sure there is an existing entry for the top frame in the redirect code below? If so, I propose you do so at the point you need it, and add the same comment you do elsewhere (&quot;For consistency, make sure we also have a statistics entry for the top frame domain.&quot;). I would also give it the name &quot;topFrameStatistics&quot; in the redirect sections below.
&gt; 
&gt; I see. However, I do use targetStatistics in two more places now, which is why I moved it. Please see new lines 182 and 185 where I now add topFrameUniqueRedirectsFrom and subresourceUniqueRedirectsFrom respectively.
&gt; 
&gt; Previously we only added statistics to the redirecting domain but now we need to keep track of both directions for the purpose of traversing the redirect graph backwards.
&gt; 
&gt; Please advice.

Ah! I missed that.

This is dangerous, because both calls to &quot;ensureResourceStatisticsForPrimaryDomain&quot; potentially insert content into the HashSet, invalidating the reference you obtained earlier.

I think in the redirect case you need to change to retrieving a copy of the content, then setting it back in the HashSet to avoid creating another set of difficult-to-debug crashes.

So:

1. Leave the original targetStatistics code on line 172 alone. That one is fine.
2. In the redirect section, do one of these two things:

(a) Assign the return value of the &apos;ensureResourceStatisticsForPrimaryDomain&quot; to a temporary value (a copy), and then set the value back in the m_resourceStatisticsMap,
-or-
(b) Update the &apos;redirectingOriginStatistics&quot; as you have done, then do a call to &quot;ensureResourceStatistics...&quot; to a local reference and then update the &apos;targetStatistics&apos; value.

If you don&apos;t the &apos;targetStatistics&apos; object will be potentially deallocated memory and your use of it will bring about the end of the world. Or at least, will cause some nasty security bugs.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:181
&gt; +            isNewRedirectToEntry = redirectingOriginStatistics.topFrameUniqueRedirectsTo.add(targetPrimaryDomain).isNewEntry;

So I suggest that immediately after line 181 you do:

auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:184
&gt; +            isNewRedirectToEntry = redirectingOriginStatistics.subresourceUniqueRedirectsTo.add(targetPrimaryDomain).isNewEntry;

Ditto, right here after line 184:

auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398396</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 11:13:33 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)
&gt; Comment on attachment 333539 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333539&amp;action=review
&gt; 
&gt; Now that I understand better, this really was introducing a nasty bug. I&apos;m
&gt; changing to r- for you to fix. :-)
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:167
&gt; &gt;&gt;&gt; +    auto&amp; targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t see why this line had to be moved. It makes me nervous, because we have had many threading/memory corruption bugs caused by invalidated iterators, and I&apos;d prefer to limit the scope of these references to the smaller area possible. It doesn&apos;t seem like this is referenced again in your new code below, so I don&apos;t think you should make this change.
&gt; &gt;&gt; 
&gt; &gt;&gt; Or did you do this to make sure there is an existing entry for the top frame in the redirect code below? If so, I propose you do so at the point you need it, and add the same comment you do elsewhere (&quot;For consistency, make sure we also have a statistics entry for the top frame domain.&quot;). I would also give it the name &quot;topFrameStatistics&quot; in the redirect sections below.
&gt; &gt; 
&gt; &gt; I see. However, I do use targetStatistics in two more places now, which is why I moved it. Please see new lines 182 and 185 where I now add topFrameUniqueRedirectsFrom and subresourceUniqueRedirectsFrom respectively.
&gt; &gt; 
&gt; &gt; Previously we only added statistics to the redirecting domain but now we need to keep track of both directions for the purpose of traversing the redirect graph backwards.
&gt; &gt; 
&gt; &gt; Please advice.
&gt; 
&gt; Ah! I missed that.
&gt; 
&gt; This is dangerous, because both calls to
&gt; &quot;ensureResourceStatisticsForPrimaryDomain&quot; potentially insert content into
&gt; the HashSet, invalidating the reference you obtained earlier.
&gt; 
&gt; I think in the redirect case you need to change to retrieving a copy of the
&gt; content, then setting it back in the HashSet to avoid creating another set
&gt; of difficult-to-debug crashes.
&gt; 
&gt; So:
&gt; 
&gt; 1. Leave the original targetStatistics code on line 172 alone. That one is
&gt; fine.
&gt; 2. In the redirect section, do one of these two things:
&gt; 
&gt; (a) Assign the return value of the
&gt; &apos;ensureResourceStatisticsForPrimaryDomain&quot; to a temporary value (a copy),
&gt; and then set the value back in the m_resourceStatisticsMap,
&gt; -or-
&gt; (b) Update the &apos;redirectingOriginStatistics&quot; as you have done, then do a
&gt; call to &quot;ensureResourceStatistics...&quot; to a local reference and then update
&gt; the &apos;targetStatistics&apos; value.
&gt; 
&gt; If you don&apos;t the &apos;targetStatistics&apos; object will be potentially deallocated
&gt; memory and your use of it will bring about the end of the world. Or at
&gt; least, will cause some nasty security bugs.
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:181
&gt; &gt; +            isNewRedirectToEntry = redirectingOriginStatistics.topFrameUniqueRedirectsTo.add(targetPrimaryDomain).isNewEntry;
&gt; 
&gt; So I suggest that immediately after line 181 you do:
&gt; 
&gt; auto&amp; targetStatistics =
&gt; ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:184
&gt; &gt; +            isNewRedirectToEntry = redirectingOriginStatistics.subresourceUniqueRedirectsTo.add(targetPrimaryDomain).isNewEntry;
&gt; 
&gt; Ditto, right here after line 184:
&gt; 
&gt; auto&amp; targetStatistics =
&gt; ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain);

Thanks, Brent! I will do these changes and get it up here for you to look at again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398449</commentid>
    <comment_count>8</comment_count>
      <attachid>333626</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 13:40:14 -0800</bug_when>
    <thetext>Created attachment 333626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398453</commentid>
    <comment_count>9</comment_count>
      <attachid>333628</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 13:48:34 -0800</bug_when>
    <thetext>Created attachment 333628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398556</commentid>
    <comment_count>10</comment_count>
      <attachid>333628</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-02-12 17:21:42 -0800</bug_when>
    <thetext>Comment on attachment 333628
Patch

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

Looks great! r=me (but please fix the boolean initialization stuff I mentioned).

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:178
&gt; +        bool isNewRedirectFromEntry;

I would initialize these to false, just because I am pedantic that way.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:247
&gt; +        bool isNewRedirectFromEntry;

Don&apos;t declare these up here. Just declare them at initialization.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:249
&gt; +        isNewRedirectToEntry = redirectingOriginStatistics.subresourceUniqueRedirectsTo.add(targetPrimaryDomain).isNewEntry;

bool isNewRedirectToEntry = redirectingOrigin....

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:251
&gt; +        isNewRedirectFromEntry = targetStatistics.subresourceUniqueRedirectsFrom.add(sourcePrimaryDomain).isNewEntry;

bool isNewRedirectFromEntry = targetStatistics.subresource...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398600</commentid>
    <comment_count>11</comment_count>
      <attachid>333669</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 20:59:57 -0800</bug_when>
    <thetext>Created attachment 333669
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398601</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 21:00:31 -0800</bug_when>
    <thetext>Thanks for the review, Brent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398610</commentid>
    <comment_count>13</comment_count>
      <attachid>333669</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 22:07:59 -0800</bug_when>
    <thetext>Comment on attachment 333669
Patch for landing

Tree seems red. Landing directly instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398611</commentid>
    <comment_count>14</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-12 22:08:20 -0800</bug_when>
    <thetext>Committed r228416: &lt;https://trac.webkit.org/changeset/228416&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398898</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-13 18:57:51 -0800</bug_when>
    <thetext>Can I ask: what is a prevalent resource?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398922</commentid>
    <comment_count>16</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-13 20:18:54 -0800</bug_when>
    <thetext>A prevalent resource is a domain that has shown its ability to track the user cross-site. Some simply call them trackers but since we don’t know what they do with their ability to track, we just call them prevalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398946</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-13 21:07:28 -0800</bug_when>
    <thetext>Everything is much less confusing now, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333536</attachid>
            <date>2018-02-09 17:03:36 -0800</date>
            <delta_ts>2018-02-09 17:12:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182664-20180209170335.patch</filename>
            <type>text/plain</type>
            <size>59730</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAyLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiByZWRpcmVj
dHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NzM3MjU3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXBy
ZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAor
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAg
ICAgICAgV2Ugbm93IGNvbGxlY3Qgc3RhdGlzdGljcyBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbmFs
IHJlZGlyZWN0cyB0b28sIGJvdGggdG8gYW5kIGZyb20uCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgICAgIFdl
IG5vdyBjb2xsZWN0IHN0YXRpc3RpY3Mgb24gcmVkaXJlY3RzIGZyb20gaW4gYWRkaXRpb24gdG8g
dGhlIGV4aXN0aW5nIHJlZGlyZWN0cyB0by4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
Om1lcmdlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAg
ICAgICAgICAgVGhyZWUgbmV3IGZpZWxkczoKKyAgICAgICAgICAgIC0gdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbworICAgICAgICAgICAgLSB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20KKyAg
ICAgICAgICAgIC0gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tCisKIDIwMTgtMDItMDkg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVl
c3RdIEFwcGxlIFBheSBzaGVldCBkb2VzIG5vdCBkaXNtaXNzIHdoZW4gY2FsbGluZyBjb21wbGV0
ZSgpIHdpdGggcmVzdWx0ICJ1bmtub3duIiBvciAiZmFpbCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4LDkgKzEzOCw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0ZyYW1lTmF2aWcKICAgICBBU1NFUlQodG9wRnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJU
KHRvcEZyYW1lLnBhZ2UoKSk7CiAKLSAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAogICAgIGF1dG8qIHBhZ2UgPSB0b3BGcmFtZS5wYWdlKCk7CiAgICAg
aWYgKCFzaG91bGRMb2cocGFnZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2Nyw5ICsxNjQsOSBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgYXV0byBzb3Vy
Y2VQcmltYXJ5RG9tYWluID0gcHJpbWFyeURvbWFpbihzb3VyY2VVUkwpOwogICAgIGJvb2wgc2hv
dWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAKKyAgICBhdXRvJiB0YXJnZXRT
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJn
ZXRQcmltYXJ5RG9tYWluKTsKICAgICBpZiAodGFyZ2V0SG9zdCAhPSBtYWluRnJhbWVIb3N0CiAg
ICAgICAgICYmICEoYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFyZ2V0UHJpbWFyeURvbWFp
biwgbWFpbkZyYW1lUHJpbWFyeURvbWFpbikgfHwgYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwg
dGFyZ2V0UHJpbWFyeURvbWFpbiwgc291cmNlUHJpbWFyeURvbWFpbikpKSB7Ci0gICAgICAgIGF1
dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxh
c3RTZWVuID0gcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAg
aWYgKHRhcmdldFN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFp
bkZyYW1lUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHNob3VsZENhbGxO
b3RpZmljYXRpb25DYWxsYmFjayA9IHRydWU7CkBAIC0xNzgsNyArMTc1LDE3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICBpZiAoaXNSZWRpcmVjdAogICAg
ICAgICAmJiAhYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgc291cmNlUHJpbWFyeURvbWFpbiwg
dGFyZ2V0UHJpbWFyeURvbWFpbikpIHsKICAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5T
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3Vy
Y2VQcmltYXJ5RG9tYWluKTsKLSAgICAgICAgaWYgKHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGlj
cy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5p
c05ld0VudHJ5KQorICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RUb0VudHJ5OworICAgICAgICBi
b29sIGlzTmV3UmVkaXJlY3RGcm9tRW50cnk7CisgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFt
ZSgpKSB7CisgICAgICAgICAgICBpc05ld1JlZGlyZWN0VG9FbnRyeSA9IHJlZGlyZWN0aW5nT3Jp
Z2luU3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5
RG9tYWluKS5pc05ld0VudHJ5OworICAgICAgICAgICAgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSA9
IHRhcmdldFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VQ
cmltYXJ5RG9tYWluKS5pc05ld0VudHJ5OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3Muc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbikuaXNOZXdFbnRy
eTsKKyAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNz
LnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbiku
aXNOZXdFbnRyeTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc05ld1JlZGlyZWN0VG9FbnRy
eSB8fCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlm
aWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CiAKQEAgLTIyNCw5ICsyMzEsOSBAQCB2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgaWYgKHJlc291cmNlTmVl
ZHNTU09RdWlyayhwYWdlLCB0YXJnZXRVUkwpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRv
JiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRp
b25DYWxsYmFjayA9IGZhbHNlOwogICAgIHsKLSAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGlj
cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFy
eURvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSByZWR1Y2VUaW1l
UmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGlj
cy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9t
YWluKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxi
YWNrID0gdHJ1ZTsKQEAgLTIzNCw3ICsyNDEsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nU3VicmVzb3VyYwogCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgYXV0byYg
cmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKLSAgICAgICAgaWYgKHJlZGlyZWN0
aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJn
ZXRQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQorICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RU
b0VudHJ5OworICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RGcm9tRW50cnk7CisgICAgICAgIGlz
TmV3UmVkaXJlY3RUb0VudHJ5ID0gcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldFByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7
CisgICAgICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbikuaXNOZXdF
bnRyeTsKKworICAgICAgICBpZiAoaXNOZXdSZWRpcmVjdFRvRW50cnkgfHwgaXNOZXdSZWRpcmVj
dEZyb21FbnRyeSkKICAgICAgICAgICAgIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9
IHRydWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDEzICs3MCwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllCiAg
ICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJzdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9y
aWdpbnMpOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgZW5jb2RlSGFzaENvdW50ZWRT
ZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvKTsKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAidG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAg
IC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
KTsKICAgICAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGVuY29kZUhhc2hDb3VudGVk
U2V0KGVuY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rl
ciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvKTsKLSAgICAKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAic3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
KTsKKwogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgi
aXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGVuY29kZXIu
ZW5jb2RlVUludDMyKCJkYXRhUmVjb3Jkc1JlbW92ZWQiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwpA
QCAtMTI1LDEzICsxMzAsMTggQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUo
S2V5ZQogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAi
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVPcmlnaW5zKTsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGRlY29kZUhhc2hD
b3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbyk7CisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7
CisKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29k
ZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2lucyk7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBkZWNvZGVIYXNo
Q291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0
KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyk7Ci0gICAgCisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwg
InN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSk7CisKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlQm9vbCgiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjIsMTMgKzIzMiwxOCBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBh
cHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMi
LCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogCisgICAgLy8gVG9wIGZyYW1l
IHN0YXRzCisgICAgYXBwZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBhcHBlbmRIYXNo
Q291bnRlZFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgYXBw
ZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMi
LCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAgICAKICAgICAvLyBTdWJyZXNvdXJj
ZSBzdGF0cwogICAgIGFwcGVuZEhhc2hDb3VudGVkU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAg
ICAgYXBwZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAKKyAgICBhcHBlbmRI
YXNoQ291bnRlZFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwg
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFByZXZhbGVudCBSZXNv
dXJjZQogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBp
c1ByZXZhbGVudFJlc291cmNlKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBkYXRh
UmVjb3Jkc1JlbW92ZWQ6ICIpOwpAQCAtMjgzLDEzICsyOTgsMTggQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjptZXJnZShjb25zdAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgbWVy
Z2VIYXNoU2V0KHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zKTsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cwor
ICAgIG1lcmdlSGFzaENvdW50ZWRTZXQodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIu
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldCh0b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIG90aGVyLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSk7CisKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2lucyk7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBtZXJnZUhhc2hDb3Vu
dGVkU2V0KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7
Ci0gICAgCisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb20sIG90aGVyLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAgICAvLyBQ
cmV2YWxlbnQgcmVzb3VyY2Ugc3RhdHMKICAgICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVy
LmlzUHJldmFsZW50UmVzb3VyY2U7CiAgICAgZGF0YVJlY29yZHNSZW1vdmVkID0gc3RkOjptYXgo
ZGF0YVJlY29yZHNSZW1vdmVkLCBvdGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lv
biAyMjgzMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxMyArNzMsMTggQEAgc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgewogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgSGFzaFNldDxTdHJpbmc+
IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2luczsKIAorICAgIC8vIFRvcCBmcmFtZSBz
dGF0cworICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
bzsKKyAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bTsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBz
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwogICAgIAogICAgIC8vIFN1YnJlc291cmNlIHN0
YXRzCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW5zOwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbzsKLSAgICAKKyAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbTsKKwogICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cwogICAg
IGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkIHsgMCB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NCkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIw
MTgtMDItMDkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50
IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2NjQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM3MzcyNTcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzQ2xhc3NpZmllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyOjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6Cisg
ICAgICAgICAgICBVbmlxdWUgdG9wIGZyYW1lIHJlZGlyZWN0cyBub3cgY291bnRzIHRvd2FyZCBj
bGFzc2lmaWNhdGlvbiBhcyBwcmV2YWxlbnQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz46OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20pOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgICAgICBCdW1wZWQg
dGhlIHN0YXRpc3RpY3MgbW9kZWwgdG8gMTEgYmVjYXVzZSBvZiB0aGUgYWRkZWQgZmllbGRzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlY3Vyc2l2
ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbik6CisgICAgICAg
ICAgICBUaGlzIGZ1bmN0aW9uIGJhY2sgdHJhY2VzIHJlZGlyZWN0IGNoYWlucyB0byBjbGFzc2lm
eSBkb21haW5zCisgICAgICAgICAgICB0aGF0IGhhdmUgcmVkaXJlY3RlZCB0byBhIG5ld2x5IGNs
YXNzaWZpZWQgcHJldmFsZW50IHJlc291cmNlLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMpOgor
ICAgICAgICAgICAgTm93IHVzZXMgdGhlIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKCkuCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVz
b3VyY2UpOgorICAgICAgICAgICAgTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIG1ha2Ugc3Vy
ZSB3ZSBhbHdheXMgY2FsbAorICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21h
aW4oKQorICAgICAgICAgICAgYW5kIGNhcHR1cmUgcmVkaXJlY3QgY2hhaW5zIGJhY2t3YXJkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgICAgIFRl
c3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oOgorCiAyMDE4LTAyLTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFNhbmRib3ggdmlvbGF0aW5nIGF0dGVtcHRpbmcgdG8gcmVh
ZCBsb2cgZm9ybWF0dGluZyBwcmVmZXJlbmNlIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDE4IEBAIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXI6OmgKICAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnNDb3VudCA9IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnMuc2l6ZSgpOwogICAgIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0Nv
dW50ID0gcmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXpl
KCk7CiAgICAgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPSByZXNvdXJj
ZVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKTsKKyAgICBhdXRv
IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudCA9IHJlc291cmNlU3RhdGlzdGljLnRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpOwogICAgIAogICAgIGlmICghc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2luc0NvdW50CiAgICAgICAgICYmICFzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvQ291bnQKLSAgICAgICAgJiYgIXN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnND
b3VudCkKKyAgICAgICAgJiYgIXN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNDb3VudAorICAg
ICAgICAmJiAhdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCiAgICAgaWYgKHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNDb3Vu
dCA+IGZlYXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQKICAgICAgICAgfHwgc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0NvdW50ID4gZmVhdHVyZVZlY3Rvckxlbmd0aFRocmVzaG9sZAotICAg
ICAgICB8fCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPiBmZWF0dXJlVmVjdG9y
TGVuZ3RoVGhyZXNob2xkKQorICAgICAgICB8fCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
Q291bnQgPiBmZWF0dXJlVmVjdG9yTGVuZ3RoVGhyZXNob2xkCisgICAgICAgIHx8IHRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG9Db3VudCA+IGZlYXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGNsYXNzaWZ5KHN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbnNDb3VudCwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50
LCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQpOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyMjgzMjEp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTM4LDEzICsyNTM4LDE4IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWMKICAgICAvLyBTdG9yYWdlIGFjY2VzcwogICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnM7CiAKKyAgICAvLyBU
b3AgZnJhbWUgc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tOworCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVyIDw8IHN0YXRp
c3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luczsKICAgICAKICAgICAvLyBTdWJyZXNv
dXJjZSBzdGF0cwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zOwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvOwotICAgIAorICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c0Zyb207CisKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBlbmNvZGVyIDw8
IHN0YXRpc3RpY3MuZGF0YVJlY29yZHNSZW1vdmVkOwpAQCAtMjU3Nyw2ICsyNTgyLDEzIEBAIHN0
ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gQXIKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3Muc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgICAgCisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjU4OCw2ICsyNjAwLDkgQEAgc3RkOjpv
cHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIyODMy
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDkgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3RleHByIHVuc2lnbmVkIG9wZXJh
dGluZ0RhdGVzV2luZG93IHsgMzAgfTsKLWNvbnN0ZXhwciB1bnNpZ25lZCBzdGF0aXN0aWNzTW9k
ZWxWZXJzaW9uIHsgMTAgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJz
aW9uIHsgMTEgfTsKIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhJbXBvcnRhbmNlIHsgMyB9OworY29u
c3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VC
YWNrIHsgNTAgfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcg
aXNvbGF0ZWRQcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQogewpAQCAtMjI1LDYgKzIyNiwz
NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoCiAgICAgfSk7CiB9
CiAKKwordW5zaWduZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWN1cnNpdmVs
eUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIEhhc2hTZXQ8U3Ry
aW5nPiYgZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vy
c2l2ZUNhbGxzKQoreworICAgIGlmIChudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzID49IG1heE51bWJl
ck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBXVEZMb2dBbHdheXMoIkhpdCAldSByZWN1cnNpdmUgY2Fs
bHMgaW4gcmVkaXJlY3QgYmFja3RyYWNlLiBSZXR1cm5pbmcgZWFybHkuIiwgbWF4TnVtYmVyT2ZS
ZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RUcmFjZUJhY2spOworICAgICAgICByZXR1cm4gbnVtYmVy
T2ZSZWN1cnNpdmVDYWxsczsKKyAgICB9CisKKyAgICBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKys7
CisgICAgCisgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbURvbWFp
biA6IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS52YWx1
ZXMoKSkgeworICAgICAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
ZmluZChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbURvbWFpbik7CisgICAgICAgIGlmICht
YXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSB8fCBtYXBFbnRyeS0+dmFs
dWUuaXNQcmV2YWxlbnRSZXNvdXJjZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLmFkZChtYXBFbnRyeS0+dmFsdWUuaGlnaExl
dmVsRG9tYWluKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgbnVtYmVyT2ZSZWN1cnNpdmVDYWxs
cyA9IHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihtYXBFbnRyeS0+dmFsdWUsIGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbywgbnVtYmVyT2ZS
ZWN1cnNpdmVDYWxscyk7CisgICAgfQorICAgIGZvciAoYXV0byYgdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb21Eb21haW4gOiByZXNvdXJjZVN0YXRpc3RpYy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20udmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmZpbmQodG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb21Eb21haW4pOworICAgICAg
ICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkgfHwgbWFwRW50
cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUby5hZGQobWFwRW50cnktPnZhbHVl
LmhpZ2hMZXZlbERvbWFpbikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIG51bWJlck9mUmVjdXJz
aXZlQ2FsbHMgPSByZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1Ro
aXNEb21haW4obWFwRW50cnktPnZhbHVlLCBkb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG8sIG51
bWJlck9mUmVjdXJzaXZlQ2FsbHMpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVtYmVyT2ZS
ZWN1cnNpdmVDYWxsczsKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwpAQCAtMjMyLDcgKzI2Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpwcm8KICAgICBpZiAobV9wYXJhbWV0ZXJzLnNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVz
b3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewogICAg
ICAgICAgICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaGFzUHJldmFsZW50UmVzb3VyY2VDaGFy
YWN0ZXJpc3RpY3MocmVzb3VyY2VTdGF0aXN0aWMpKQotICAgICAgICAgICAgICAgIHJlc291cmNl
U3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIHNl
dFByZXZhbGVudFJlc291cmNlKHJlc291cmNlU3RhdGlzdGljKTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZW1vdmVEYXRhUmVjb3JkcygpOwpAQCAtNDQ5LDExICs0NzksMjUgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldAogICAgICAgICByZXR1cm47CiAKICAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcHJpbWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih1cmwpXSB7Ci0g
ICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHByaW1hcnlEb21haW4pOwotICAgICAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50
UmVzb3VyY2UgPSB0cnVlOworICAgICAgICBhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbik7CisgICAg
ICAgIHNldFByZXZhbGVudFJlc291cmNlKHJlc291cmNlU3RhdGlzdGljKTsKICAgICB9KTsKIH0K
IAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291
cmNlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKQor
eworICAgIHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAg
IEhhc2hTZXQ8U3RyaW5nPiBkb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG87CisgICAgcmVjdXJz
aXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKHJlc291cmNl
U3RhdGlzdGljLCBkb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG8sIDApOworICAgIGZvciAoYXV0
byYgZG9tYWluIDogZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvKSB7CisgICAgICAgIGF1dG8g
bWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKGRvbWFpbik7CisgICAgICAg
IGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoIW1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVu
dFJlc291cmNlKTsKKyAgICAgICAgbWFwRW50cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2Ug
PSB0cnVlOworICAgIH0KK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZCAo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkg
fHwgdXJsLmlzRW1wdHkoKSkgewpAQCAtNTM4LDYgKzU4Miw4IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXQKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJpbWFyeVRvcEZyYW1lRG9t
YWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1lKSwgcHJpbWFyeVN1YkZyYW1lRG9t
YWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1YmZyYW1lKV0gewogICAgICAgICBhdXRvJiBz
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5U3ViRnJhbWVEb21haW4pOwogICAgICAgICBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpbik7CisgICAgICAgIC8vIEZvciBj
b25zaXN0ZW5jeSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkgZm9y
IHRoZSB0b3AgZnJhbWUgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlUb3BGcmFtZURvbWFpbik7CiAgICAgfSk7CiB9CiAKQEAg
LTU0OSw2ICs1OTUsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHByaW1hcnlUb3BGcmFtZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURv
bWFpbih0b3BGcmFtZSksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFy
eURvbWFpbihzdWJyZXNvdXJjZSldIHsKICAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9t
YWluKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
LmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW4pOworICAgICAgICAvLyBGb3IgY29uc2lzdGVuY3ks
IG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5IGZvciB0aGUgdG9wIGZy
YW1lIGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5VG9wRnJhbWVEb21haW4pOwogICAgIH0pOwogfQogCkBAIC01NjAsNiArNjA4
LDQ3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXQKICAgICBtX3N0
YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKGhvc3RO
YW1lUmVkaXJlY3RlZFRvKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWluID0gaXNvbGF0ZWRQcmlt
YXJ5RG9tYWluKHN1YnJlc291cmNlKV0gewogICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VE
b21haW4pOwogICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8u
YWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgICAgIC8vIEZvciBjb25zaXN0ZW5jeSwg
bWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkgZm9yIHRoZSByZWRpcmVj
dCBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNv
bnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSkK
K3sKKyAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1w
dHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tLmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJl
ZGlyZWN0ZWRGcm9tLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwcmltYXJ5UmVkaXJlY3REb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4oaG9zdE5h
bWVSZWRpcmVjdGVkRnJvbSksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpbiA9IGlzb2xhdGVkUHJp
bWFyeURvbWFpbihzdWJyZXNvdXJjZSldIHsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNl
RG9tYWluKTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgICAgIC8vIEZvciBjb25zaXN0ZW5j
eSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkgZm9yIHRoZSByZWRp
cmVjdCBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25z
dCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
Cit7CisgICAgaWYgKHRvcEZyYW1lSG9zdE5hbWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lSG9z
dE5hbWUuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRvLmlzQmxhbmtVUkwoKSB8fCBo
b3N0TmFtZVJlZGlyZWN0ZWRUby5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWlu
KGhvc3ROYW1lUmVkaXJlY3RlZFRvKSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQ
cmltYXJ5RG9tYWluKHRvcEZyYW1lSG9zdE5hbWUpXSB7CisgICAgICAgIGF1dG8mIHN0YXRpc3Rp
Y3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRvcEZyYW1lUHJp
bWFyeURvbWFpbik7CisgICAgICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
by5hZGQocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICAgICAgLy8gRm9yIGNvbnNpc3RlbmN5
LCBtYWtlIHN1cmUgd2UgYWxzbyBoYXZlIGEgc3RhdGlzdGljcyBlbnRyeSBmb3IgdGhlIHJlZGly
ZWN0IGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZy
b20pCit7CisgICAgaWYgKHRvcEZyYW1lSG9zdE5hbWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1l
SG9zdE5hbWUuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZEZyb20uaXNCbGFua1VSTCgp
IHx8IGhvc3ROYW1lUmVkaXJlY3RlZEZyb20uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRpcmVjdERvbWFpbiA9IGlzb2xhdGVkUHJpbWFy
eURvbWFpbihob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0g
aXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1lSG9zdE5hbWUpXSB7CisgICAgICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRv
cEZyYW1lUHJpbWFyeURvbWFpbik7CisgICAgICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgICAgICAvLyBGb3Ig
Y29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5IGZv
ciB0aGUgcmVkaXJlY3QgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CiAgICAgfSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA2LDYgKzEwNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRv
cEZyYW1lKTsKICAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBX
ZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVk
aXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5h
bWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8o
Y29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2ll
UGFydGl0aW9uaW5nVXBkYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlv
bk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTE2Nyw2ICsxNzAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQYXJ0aXRpb25pbmdT
dGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29u
c3QgU3RyaW5nJik7CisgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmLCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbywgdW5z
aWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNv
dXJjZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBwcm9jZXNz
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAKICAgICB2b2lkIHJlc2V0Q29va2llUGFydGl0
aW9uaW5nU3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSwzMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTdWJyCiAgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RS
ZWRpcmVjdGVkRnJvbSkKK3sKKyAgICBhdXRvKiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7Cisg
ICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0b3JlLT5zZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKK30KKwor
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCit7CisgICAgYXV0byogc3RvcmUgPSBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
KTsKK30KKwordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQoreworICAgIGF1dG8q
IHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZEZyb20pLT5zdHJpbmcoKSkpOworfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIHN0b3JlID0gV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCShyZXZpc2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCk7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5n
UmVmIGhvc3RSZWRpcmVjdGVkVG8pOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RS
ZWRpcmVjdGVkRnJvbSk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8p
OworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25k
cyk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZik7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjgzNDQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0wMi0wOSAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6
IENsYXNzaWZ5IHJlc291cmNlcyBhcyBwcmV2YWxlbnQgYmFzZWQgb24gcmVkaXJlY3RzIHRvIG90
aGVyIHByZXZhbGVudCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MjY2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzczNzI1NzI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0RnJvbSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8p
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOC0wMi0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXN0aW5nIGZyb20gRXhjZWwgbm8gbG9uZ2Vy
IHByb3ZpZGVzIHRleHQvaHRtbCBkYXRhCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OTYsNiArMjU5Niwy
NCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzCiAgICAgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhkYXRh
U3RvcmUsIGhvc3QsIGhvc3RSZWRpcmVjdGVkVG8pOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tTdHJpbmdSZWYg
aG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQoreworICAgIGF1dG8qIGRhdGFT
dG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShkYXRhU3RvcmUsIGhvc3QsIGhvc3RSZWRpcmVjdGVkRnJvbSk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tT
dHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKK3sKKyAgICBhdXRv
KiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4
dCgpKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdFRvKGRhdGFTdG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRUbyk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCit7CisgICAg
YXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNv
bnRleHQoKSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKGRhdGFTdG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKK30K
Kwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oZG91YmxlIHNlY29uZHMpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0
R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMjgzMjEpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2
ICsxNjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhv
c3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0
cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAg
IHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3Ry
aW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNv
b2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1By
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjgzMjEpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw2
ICsxMTA3LDQ4IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdEZyb20iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkp
ID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlv
bmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlS
ZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3RO
YW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lUmVkaXJlY3RlZEZy
b21LZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lUmVk
aXJlY3RlZEZyb20iKSk7CisgICAgICAgIAorICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9
IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tTdHJpbmdS
ZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVSZWRp
cmVjdGVkRnJvbUtleS5nZXQoKSkpOworICAgICAgICAKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSho
b3N0TmFtZSwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8iKSkgeworICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5
cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lUmVkaXJlY3RlZFRvS2V5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZVJlZGlyZWN0ZWRUbyIpKTsKKyAgICAgICAg
CisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFt
ZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyA9
IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVSZWRpcmVjdGVkVG9LZXkuZ2V0KCkpKTsKKyAgICAg
ICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdFRvKGhvc3ROYW1lLCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbSIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9k
eSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgICAgICAKKyAgICAgICAgV0tEaWN0
aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFy
eVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9z
dE5hbWVLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1l
IikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVSZWRpcmVjdGVk
RnJvbUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVS
ZWRpcmVjdGVkRnJvbSIpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1l
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmlu
Z1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZVJl
ZGlyZWN0ZWRGcm9tS2V5LmdldCgpKSk7CisgICAgICAgIAorICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGhv
c3ROYW1lLCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iKSkgewogICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlE
KCkpOwogICAgICAgICBXS0RvdWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVS
ZWY+KG1lc3NhZ2VCb2R5KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ3Nyw2ICsxNDc3LDgwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlz
dGljc1N1YnJlc291cmMKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlz
dGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBK
U1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIFZlY3RvcjxXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4+IHZhbHVlczsKKyAgICAKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkgfSk7CisgICAgCisg
ICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
SG9zdE5hbWVSZWRpcmVjdGVkRnJvbSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSB9KTsK
KyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAg
IFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5
c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5n
ZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNz
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0
aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5
cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykK
K3sKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQo
eyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSB9KTsK
KyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmco
aG9zdE5hbWUpIH0pOworICAgIAorICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lUmVkaXJlY3RlZFRvIikgfSk7CisgICAgdmFs
dWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1l
UmVkaXJlY3RlZFRvKSB9KTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMo
a2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6
ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVl
c1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvIikpOworICAgIFdLUmV0
YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5
Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkp
OworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFt
ZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+
IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKKyAgICAK
KyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJIb3N0TmFtZSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkgfSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVk
RnJvbSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhKU1N0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSB9KTsKKyAgICAKKyAgICBWZWN0b3I8
V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+
IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0
KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAg
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9k
eShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5k
YXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKworCiB2b2lkIFRlc3RSdW5uZXI6
OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQog
ewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24iKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjI4MzIxKQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4Myw2ICszODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BG
cmFtZUhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lSG9z
dE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
OworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpT
U3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsK
KyAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oSlNTdHJpbmdS
ZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lk
IHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShKU1N0cmluZ1JlZiBob3N0
TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNl
Y29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQoYm9vbCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlz
aW9uIDIyODMyMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgsOSBAQCBp
bnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIHRvcEZyYW1lSG9z
dE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbihET01TdHJpbmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZUhvc3ROYW1lKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5n
IGhvc3ROYW1lLCBET01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFt
ZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVk
aXJlY3RlZFRvKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90
aWZ5T2JzZXJ2ZXIoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAyLTA5ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExv
YWQgU3RhdGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiBy
ZWRpcmVjdHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNzM3MjU3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xs
dXNpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3Qt
Y29sbHVzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJh
bWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9w
LWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50
LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWw6IEFkZGVkLgorCiAy
MDE4LTAyLTA5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCB1cGRhdGVkIEdUSyB0ZXN0IGV4cGVjdGF0aW9ucyBhZnRlciBy
MjI4Mjc2CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNv
bGx1c2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1z
dWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lm
eS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitUZXN0cyBmb3IgY2xh
c3NpZmljYXRpb24gYmFzZWQgb24gc3VicmVzb3VyY2UgcmVkaXJlY3QgY29sbHVzaW9uLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdvdCBz
ZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMgcHJl
dmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJl
dmFsZW50IHJlc291cmNlIGFmdGVyIGFjdHVhbCBzdWIgZnJhbWUgcmVkaXJlY3QuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZh
bGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xh
c3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lv
bi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2Ut
cmVkaXJlY3QtY29sbHVzaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJhc2VkIG9uIHN1YnJlc291cmNlIHJlZGlyZWN0
IGNvbGx1c2lvbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IGhv
c3RVbmRlclRlc3QgPSAiMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwg
PSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKKyAgICBjb25zdCBzdWJyZXNv
dXJjZU9yaWdpbjEgPSAiaHR0cDovLzEyNy4wLjAuMjo4MDAwL3RlbXAiOworICAgIGNvbnN0IHN1
YnJlc291cmNlT3JpZ2luMiA9ICJodHRwOi8vMTI3LjAuMC4zOjgwMDAvdGVtcCI7CisgICAgY29u
c3Qgc3VicmVzb3VyY2VPcmlnaW4zID0gImh0dHA6Ly8xMjcuMC4wLjQ6ODAwMC90ZW1wIjsKKyAg
ICBjb25zdCBzdWJyZXNvdXJjZU9yaWdpbjQgPSAiaHR0cDovLzEyNy4wLjAuNTo4MDAwL3RlbXAi
OworCisgICAgZnVuY3Rpb24gc2V0RW5hYmxlRmVhdHVyZShlbmFibGUpIHsKKyAgICAgICAgaWYg
KCFlbmFibGUpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKCk7CisgICAgICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChlbmFibGUpOworICAgICAgICB0ZXN0UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQYXJ0
aXRpb25pbmdFbmFibGVkKGVuYWJsZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKKworICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJv
bShzdGF0aXN0aWNzVXJsLCBzdWJyZXNvdXJjZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShzdWJyZXNvdXJjZU9y
aWdpbjEsIHN1YnJlc291cmNlT3JpZ2luMik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlT3JpZ2luMiwgc3Vi
cmVzb3VyY2VPcmlnaW4zKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VPcmlnaW4zLCBzdWJyZXNvdXJjZU9y
aWdpbjQpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IGV4cGxpY2l0eSBzZXQgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2Uoc3VicmVzb3VyY2VPcmlnaW4xKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNv
bGx1ZGluZyBob3N0IDEgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAg
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN1YnJlc291cmNl
T3JpZ2luMikpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgaG9zdCAyIGdvdCBz
ZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdWJyZXNvdXJjZU9yaWdpbjMpKQorICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3QgMyBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNv
dXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3VicmVzb3VyY2VPcmlnaW40KSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1
ZGluZyBob3N0IDQgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlm
ICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxo
b3N0OjgwMDAiKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBsb2NhbGhvc3Qg
Z290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYWZ0ZXIgYWN0dWFsIHN1YiBmcmFtZSByZWRp
cmVjdC4iKTsKKworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09
IGhvc3RVbmRlclRlc3QgJiYgd2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykg
eworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOworCisgICAgICAgIHRlc3RSdW5uZXIu
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlz
dGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBh
cyBub24tcHJldmFsZW50IHJlc291cmNlLiIpOworICAgIH0KKzwvc2NyaXB0PgorPGlmcmFtZSBv
bmxvYWQ9InJ1blRlc3QoKSIgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb25jbGljay5odG1sIj48L2lmcmFtZT4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJl
ZGlyZWN0LWNvbGx1c2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1i
YXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNp
b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIGZv
ciBjbGFzc2lmaWNhdGlvbiBiYXNlZCBvbiB0b3AgZnJhbWUgcmVkaXJlY3QgY29sbHVzaW9uLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdv
dCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBz
ZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlIGFmdGVyIGFjdHVhbCBuYXZpZ2F0aW9uYWwgcmVkaXJlY3QuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVz
aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUt
cmVkaXJlY3QtY29sbHVzaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJhc2VkIG9uIHRvcCBmcmFtZSByZWRpcmVjdCBj
b2xsdXNpb24uIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBob3N0
VW5kZXJUZXN0ID0gIjEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0g
Imh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVP
cmlnaW4xID0gImh0dHA6Ly8xMjcuMC4wLjI6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFt
ZU9yaWdpbjIgPSAiaHR0cDovLzEyNy4wLjAuMzo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZy
YW1lT3JpZ2luMyA9ICJodHRwOi8vMTI3LjAuMC40OjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9w
RnJhbWVPcmlnaW40ID0gImh0dHA6Ly8xMjcuMC4wLjU6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0
b3BGcmFtZU9yaWdpbjUgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyI7CisKKyAgICBmdW5jdGlv
biBzZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgeworICAgICAgICBpZiAoIWVuYWJsZSkKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAg
ICAgICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZSk7
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQo
ZW5hYmxlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShzdGF0aXN0aWNz
VXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZU9yaWdpbjEsIHRvcEZyYW1lT3JpZ2lu
Mik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKHRvcEZyYW1lT3JpZ2luMiwgdG9wRnJhbWVPcmlnaW4zKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20odG9wRnJhbWVPcmln
aW4zLCB0b3BGcmFtZU9yaWdpbjQpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGV4cGxpY2l0eSBzZXQgZGlkIG5vdCBnZXQgc2V0
IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodG9wRnJhbWVPcmlnaW4xKSkKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDEgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
Iik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
KHRvcEZyYW1lT3JpZ2luMikpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgaG9z
dCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0b3BGcmFtZU9yaWdpbjMpKQorICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3QgMyBnb3Qgc2V0IGFzIHByZXZhbGVu
dCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2UodG9wRnJhbWVPcmlnaW40KSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNv
bGx1ZGluZyBob3N0IDQgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAg
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRvcEZyYW1lT3Jp
Z2luNSkpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBz
ZXQgYXMgcHJldmFsZW50IHJlc291cmNlIGFmdGVyIGFjdHVhbCBuYXZpZ2F0aW9uYWwgcmVkaXJl
Y3QuIik7CisKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAi
IiAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgZmFsc2UpOworICAgICAgICBpZiAodGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxl
bnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHRvcEZy
YW1lT3JpZ2luNSArICJyZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9yZWRpcmVjdC5w
aHA/cmVkaXJlY3RUbz1odHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1
c2lvbi5odG1sI2NvbnRpbnVlIjsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1m
cmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJl
dmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUt
cmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitUZXN0cyBmb3IgY2xhc3NpZmljYXRpb24gYmFzZWQgb24gdG9wIGZyYW1lIHVuaXF1ZSByZWRp
cmVjdHMgdG8uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEhvc3QgY2xh
c3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3At
ZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQt
YmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3Np
ZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZp
Y2F0aW9uIGJhc2VkIG9uIHRvcCBmcmFtZSB1bmlxdWUgcmVkaXJlY3RzIHRvLiIpOworICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICIxMjcuMC4w
LjE6ODAwMCI7CisgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRl
clRlc3QgKyAiL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMSA9ICJodHRwOi8vMTI3
LjAuMC4yOjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8x
MjcuMC4wLjM6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDov
LzEyNy4wLjAuNDo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJodHRw
Oi8vMTI3LjAuMC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlvbiBzZXRFbmFibGVGZWF0dXJl
KGVuYWJsZSkgeworICAgICAgICBpZiAoIWVuYWJsZSkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAgICAgaW50ZXJuYWxzLnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIHRlc3RSdW5u
ZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5hYmxlKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xh
c3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oc3RhdGlz
dGljc1VybCwgdG9wRnJhbWVPcmlnaW4yKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2lu
Myk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjQpOworCisgICAgICAgIHRlc3RSdW5u
ZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjb21wbGV0ZVRl
c3QpOworCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9
PT0gaG9zdFVuZGVyVGVzdCAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxz
KSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIu
c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodHJ1ZSk7
CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3Rh
dGlzdGljc1VybCwgZmFsc2UpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAg
ICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333539</attachid>
            <date>2018-02-09 17:12:42 -0800</date>
            <delta_ts>2018-02-12 13:40:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182664-20180209171241.patch</filename>
            <type>text/plain</type>
            <size>61057</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAyLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiByZWRpcmVj
dHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NzM3MjU3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXBy
ZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAor
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAg
ICAgICAgV2Ugbm93IGNvbGxlY3Qgc3RhdGlzdGljcyBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbmFs
IHJlZGlyZWN0cyB0b28sIGJvdGggdG8gYW5kIGZyb20uCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgICAgIFdl
IG5vdyBjb2xsZWN0IHN0YXRpc3RpY3Mgb24gcmVkaXJlY3RzIGZyb20gaW4gYWRkaXRpb24gdG8g
dGhlIGV4aXN0aW5nIHJlZGlyZWN0cyB0by4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
Om1lcmdlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAg
ICAgICAgICAgVGhyZWUgbmV3IGZpZWxkczoKKyAgICAgICAgICAgIC0gdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbworICAgICAgICAgICAgLSB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20KKyAg
ICAgICAgICAgIC0gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tCisKIDIwMTgtMDItMDkg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVl
c3RdIEFwcGxlIFBheSBzaGVldCBkb2VzIG5vdCBkaXNtaXNzIHdoZW4gY2FsbGluZyBjb21wbGV0
ZSgpIHdpdGggcmVzdWx0ICJ1bmtub3duIiBvciAiZmFpbCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4LDkgKzEzOCw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0ZyYW1lTmF2aWcKICAgICBBU1NFUlQodG9wRnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJU
KHRvcEZyYW1lLnBhZ2UoKSk7CiAKLSAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAogICAgIGF1dG8qIHBhZ2UgPSB0b3BGcmFtZS5wYWdlKCk7CiAgICAg
aWYgKCFzaG91bGRMb2cocGFnZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2Nyw5ICsxNjQsOSBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgYXV0byBzb3Vy
Y2VQcmltYXJ5RG9tYWluID0gcHJpbWFyeURvbWFpbihzb3VyY2VVUkwpOwogICAgIGJvb2wgc2hv
dWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAKKyAgICBhdXRvJiB0YXJnZXRT
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJn
ZXRQcmltYXJ5RG9tYWluKTsKICAgICBpZiAodGFyZ2V0SG9zdCAhPSBtYWluRnJhbWVIb3N0CiAg
ICAgICAgICYmICEoYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFyZ2V0UHJpbWFyeURvbWFp
biwgbWFpbkZyYW1lUHJpbWFyeURvbWFpbikgfHwgYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwg
dGFyZ2V0UHJpbWFyeURvbWFpbiwgc291cmNlUHJpbWFyeURvbWFpbikpKSB7Ci0gICAgICAgIGF1
dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxh
c3RTZWVuID0gcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAg
aWYgKHRhcmdldFN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFp
bkZyYW1lUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHNob3VsZENhbGxO
b3RpZmljYXRpb25DYWxsYmFjayA9IHRydWU7CkBAIC0xNzgsNyArMTc1LDE3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICBpZiAoaXNSZWRpcmVjdAogICAg
ICAgICAmJiAhYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgc291cmNlUHJpbWFyeURvbWFpbiwg
dGFyZ2V0UHJpbWFyeURvbWFpbikpIHsKICAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5T
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3Vy
Y2VQcmltYXJ5RG9tYWluKTsKLSAgICAgICAgaWYgKHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGlj
cy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5p
c05ld0VudHJ5KQorICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RUb0VudHJ5OworICAgICAgICBi
b29sIGlzTmV3UmVkaXJlY3RGcm9tRW50cnk7CisgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFt
ZSgpKSB7CisgICAgICAgICAgICBpc05ld1JlZGlyZWN0VG9FbnRyeSA9IHJlZGlyZWN0aW5nT3Jp
Z2luU3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5
RG9tYWluKS5pc05ld0VudHJ5OworICAgICAgICAgICAgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSA9
IHRhcmdldFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VQ
cmltYXJ5RG9tYWluKS5pc05ld0VudHJ5OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3Muc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbikuaXNOZXdFbnRy
eTsKKyAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNz
LnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbiku
aXNOZXdFbnRyeTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc05ld1JlZGlyZWN0VG9FbnRy
eSB8fCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlm
aWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CiAKQEAgLTIyNCw5ICsyMzEsOSBAQCB2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgaWYgKHJlc291cmNlTmVl
ZHNTU09RdWlyayhwYWdlLCB0YXJnZXRVUkwpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRv
JiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRp
b25DYWxsYmFjayA9IGZhbHNlOwogICAgIHsKLSAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGlj
cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFy
eURvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSByZWR1Y2VUaW1l
UmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGlj
cy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9t
YWluKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxi
YWNrID0gdHJ1ZTsKQEAgLTIzNCw3ICsyNDEsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nU3VicmVzb3VyYwogCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgYXV0byYg
cmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKLSAgICAgICAgaWYgKHJlZGlyZWN0
aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJn
ZXRQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQorICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RU
b0VudHJ5OworICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RGcm9tRW50cnk7CisgICAgICAgIGlz
TmV3UmVkaXJlY3RUb0VudHJ5ID0gcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldFByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7
CisgICAgICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbikuaXNOZXdF
bnRyeTsKKworICAgICAgICBpZiAoaXNOZXdSZWRpcmVjdFRvRW50cnkgfHwgaXNOZXdSZWRpcmVj
dEZyb21FbnRyeSkKICAgICAgICAgICAgIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9
IHRydWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDEzICs3MCwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllCiAg
ICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJzdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9y
aWdpbnMpOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgZW5jb2RlSGFzaENvdW50ZWRT
ZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvKTsKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAidG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAg
IC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
KTsKICAgICAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGVuY29kZUhhc2hDb3VudGVk
U2V0KGVuY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rl
ciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvKTsKLSAgICAKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAic3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
KTsKKwogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgi
aXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGVuY29kZXIu
ZW5jb2RlVUludDMyKCJkYXRhUmVjb3Jkc1JlbW92ZWQiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwpA
QCAtMTI1LDEzICsxMzAsMTggQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUo
S2V5ZQogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAi
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVPcmlnaW5zKTsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGRlY29kZUhhc2hD
b3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbyk7CisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7
CisKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29k
ZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2lucyk7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBkZWNvZGVIYXNo
Q291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0
KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyk7Ci0gICAgCisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwg
InN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSk7CisKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlQm9vbCgiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjIsMTMgKzIzMiwxOCBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBh
cHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMi
LCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogCisgICAgLy8gVG9wIGZyYW1l
IHN0YXRzCisgICAgYXBwZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBhcHBlbmRIYXNo
Q291bnRlZFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgYXBw
ZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMi
LCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAgICAKICAgICAvLyBTdWJyZXNvdXJj
ZSBzdGF0cwogICAgIGFwcGVuZEhhc2hDb3VudGVkU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAg
ICAgYXBwZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAKKyAgICBhcHBlbmRI
YXNoQ291bnRlZFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwg
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFByZXZhbGVudCBSZXNv
dXJjZQogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBp
c1ByZXZhbGVudFJlc291cmNlKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBkYXRh
UmVjb3Jkc1JlbW92ZWQ6ICIpOwpAQCAtMjgzLDEzICsyOTgsMTggQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjptZXJnZShjb25zdAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgbWVy
Z2VIYXNoU2V0KHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zKTsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cwor
ICAgIG1lcmdlSGFzaENvdW50ZWRTZXQodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIu
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldCh0b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIG90aGVyLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSk7CisKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2lucyk7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBtZXJnZUhhc2hDb3Vu
dGVkU2V0KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7
Ci0gICAgCisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb20sIG90aGVyLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAgICAvLyBQ
cmV2YWxlbnQgcmVzb3VyY2Ugc3RhdHMKICAgICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVy
LmlzUHJldmFsZW50UmVzb3VyY2U7CiAgICAgZGF0YVJlY29yZHNSZW1vdmVkID0gc3RkOjptYXgo
ZGF0YVJlY29yZHNSZW1vdmVkLCBvdGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lv
biAyMjgzMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxMyArNzMsMTggQEAgc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgewogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgSGFzaFNldDxTdHJpbmc+
IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2luczsKIAorICAgIC8vIFRvcCBmcmFtZSBz
dGF0cworICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
bzsKKyAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bTsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBz
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwogICAgIAogICAgIC8vIFN1YnJlc291cmNlIHN0
YXRzCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW5zOwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbzsKLSAgICAKKyAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbTsKKwogICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cwogICAg
IGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkIHsgMCB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NCkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIw
MTgtMDItMDkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50
IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2NjQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM3MzcyNTcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzQ2xhc3NpZmllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyOjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6Cisg
ICAgICAgICAgICBVbmlxdWUgdG9wIGZyYW1lIHJlZGlyZWN0cyBub3cgY291bnRzIHRvd2FyZCBj
bGFzc2lmaWNhdGlvbiBhcyBwcmV2YWxlbnQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz46OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20pOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgICAgICBCdW1wZWQg
dGhlIHN0YXRpc3RpY3MgbW9kZWwgdG8gMTEgYmVjYXVzZSBvZiB0aGUgYWRkZWQgZmllbGRzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlY3Vyc2l2
ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbik6CisgICAgICAg
ICAgICBUaGlzIGZ1bmN0aW9uIGJhY2sgdHJhY2VzIHJlZGlyZWN0IGNoYWlucyB0byBjbGFzc2lm
eSBkb21haW5zCisgICAgICAgICAgICB0aGF0IGhhdmUgcmVkaXJlY3RlZCB0byBhIG5ld2x5IGNs
YXNzaWZpZWQgcHJldmFsZW50IHJlc291cmNlLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMpOgor
ICAgICAgICAgICAgTm93IHVzZXMgdGhlIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKCkuCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVz
b3VyY2UpOgorICAgICAgICAgICAgTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIG1ha2Ugc3Vy
ZSB3ZSBhbHdheXMgY2FsbAorICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21h
aW4oKQorICAgICAgICAgICAgYW5kIGNhcHR1cmUgcmVkaXJlY3QgY2hhaW5zIGJhY2t3YXJkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgICAgIFRl
c3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oOgorCiAyMDE4LTAyLTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFNhbmRib3ggdmlvbGF0aW5nIGF0dGVtcHRpbmcgdG8gcmVh
ZCBsb2cgZm9ybWF0dGluZyBwcmVmZXJlbmNlIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDE4IEBAIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXI6OmgKICAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnNDb3VudCA9IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnMuc2l6ZSgpOwogICAgIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0Nv
dW50ID0gcmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXpl
KCk7CiAgICAgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPSByZXNvdXJj
ZVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKTsKKyAgICBhdXRv
IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudCA9IHJlc291cmNlU3RhdGlzdGljLnRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpOwogICAgIAogICAgIGlmICghc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2luc0NvdW50CiAgICAgICAgICYmICFzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvQ291bnQKLSAgICAgICAgJiYgIXN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnND
b3VudCkKKyAgICAgICAgJiYgIXN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNDb3VudAorICAg
ICAgICAmJiAhdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCiAgICAgaWYgKHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNDb3Vu
dCA+IGZlYXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQKICAgICAgICAgfHwgc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0NvdW50ID4gZmVhdHVyZVZlY3Rvckxlbmd0aFRocmVzaG9sZAotICAg
ICAgICB8fCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPiBmZWF0dXJlVmVjdG9y
TGVuZ3RoVGhyZXNob2xkKQorICAgICAgICB8fCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
Q291bnQgPiBmZWF0dXJlVmVjdG9yTGVuZ3RoVGhyZXNob2xkCisgICAgICAgIHx8IHRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG9Db3VudCA+IGZlYXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGNsYXNzaWZ5KHN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbnNDb3VudCwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50
LCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQpOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyMjgzMjEp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTM4LDEzICsyNTM4LDE4IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWMKICAgICAvLyBTdG9yYWdlIGFjY2VzcwogICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnM7CiAKKyAgICAvLyBU
b3AgZnJhbWUgc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tOworCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVyIDw8IHN0YXRp
c3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luczsKICAgICAKICAgICAvLyBTdWJyZXNv
dXJjZSBzdGF0cwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zOwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvOwotICAgIAorICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c0Zyb207CisKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBlbmNvZGVyIDw8
IHN0YXRpc3RpY3MuZGF0YVJlY29yZHNSZW1vdmVkOwpAQCAtMjU3Nyw2ICsyNTgyLDEzIEBAIHN0
ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gQXIKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3Muc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgICAgCisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjU4OCw2ICsyNjAwLDkgQEAgc3RkOjpv
cHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIyODMy
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDkgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3RleHByIHVuc2lnbmVkIG9wZXJh
dGluZ0RhdGVzV2luZG93IHsgMzAgfTsKLWNvbnN0ZXhwciB1bnNpZ25lZCBzdGF0aXN0aWNzTW9k
ZWxWZXJzaW9uIHsgMTAgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJz
aW9uIHsgMTEgfTsKIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhJbXBvcnRhbmNlIHsgMyB9OworY29u
c3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VC
YWNrIHsgNTAgfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcg
aXNvbGF0ZWRQcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQogewpAQCAtMjI1LDYgKzIyNiwz
NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoCiAgICAgfSk7CiB9
CiAKKwordW5zaWduZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWN1cnNpdmVs
eUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIEhhc2hTZXQ8U3Ry
aW5nPiYgZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vy
c2l2ZUNhbGxzKQoreworICAgIGlmIChudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzID49IG1heE51bWJl
ck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBXVEZMb2dBbHdheXMoIkhpdCAldSByZWN1cnNpdmUgY2Fs
bHMgaW4gcmVkaXJlY3QgYmFja3RyYWNlLiBSZXR1cm5pbmcgZWFybHkuIiwgbWF4TnVtYmVyT2ZS
ZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RUcmFjZUJhY2spOworICAgICAgICByZXR1cm4gbnVtYmVy
T2ZSZWN1cnNpdmVDYWxsczsKKyAgICB9CisKKyAgICBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKys7
CisgICAgCisgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbURvbWFp
biA6IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS52YWx1
ZXMoKSkgeworICAgICAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
ZmluZChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbURvbWFpbik7CisgICAgICAgIGlmICht
YXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSB8fCBtYXBFbnRyeS0+dmFs
dWUuaXNQcmV2YWxlbnRSZXNvdXJjZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLmFkZChtYXBFbnRyeS0+dmFsdWUuaGlnaExl
dmVsRG9tYWluKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgbnVtYmVyT2ZSZWN1cnNpdmVDYWxs
cyA9IHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihtYXBFbnRyeS0+dmFsdWUsIGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbywgbnVtYmVyT2ZS
ZWN1cnNpdmVDYWxscyk7CisgICAgfQorICAgIGZvciAoYXV0byYgdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb21Eb21haW4gOiByZXNvdXJjZVN0YXRpc3RpYy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20udmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmZpbmQodG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb21Eb21haW4pOworICAgICAg
ICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkgfHwgbWFwRW50
cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUby5hZGQobWFwRW50cnktPnZhbHVl
LmhpZ2hMZXZlbERvbWFpbikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIG51bWJlck9mUmVjdXJz
aXZlQ2FsbHMgPSByZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1Ro
aXNEb21haW4obWFwRW50cnktPnZhbHVlLCBkb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG8sIG51
bWJlck9mUmVjdXJzaXZlQ2FsbHMpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVtYmVyT2ZS
ZWN1cnNpdmVDYWxsczsKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwpAQCAtMjMyLDcgKzI2Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpwcm8KICAgICBpZiAobV9wYXJhbWV0ZXJzLnNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVz
b3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewogICAg
ICAgICAgICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaGFzUHJldmFsZW50UmVzb3VyY2VDaGFy
YWN0ZXJpc3RpY3MocmVzb3VyY2VTdGF0aXN0aWMpKQotICAgICAgICAgICAgICAgIHJlc291cmNl
U3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIHNl
dFByZXZhbGVudFJlc291cmNlKHJlc291cmNlU3RhdGlzdGljKTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZW1vdmVEYXRhUmVjb3JkcygpOwpAQCAtNDQ5LDExICs0NzksMjUgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldAogICAgICAgICByZXR1cm47CiAKICAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcHJpbWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih1cmwpXSB7Ci0g
ICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHByaW1hcnlEb21haW4pOwotICAgICAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50
UmVzb3VyY2UgPSB0cnVlOworICAgICAgICBhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbik7CisgICAg
ICAgIHNldFByZXZhbGVudFJlc291cmNlKHJlc291cmNlU3RhdGlzdGljKTsKICAgICB9KTsKIH0K
IAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291
cmNlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKQor
eworICAgIHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAg
IEhhc2hTZXQ8U3RyaW5nPiBkb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG87CisgICAgcmVjdXJz
aXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKHJlc291cmNl
U3RhdGlzdGljLCBkb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG8sIDApOworICAgIGZvciAoYXV0
byYgZG9tYWluIDogZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvKSB7CisgICAgICAgIGF1dG8g
bWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKGRvbWFpbik7CisgICAgICAg
IGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoIW1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVu
dFJlc291cmNlKTsKKyAgICAgICAgbWFwRW50cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2Ug
PSB0cnVlOworICAgIH0KK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZCAo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkg
fHwgdXJsLmlzRW1wdHkoKSkgewpAQCAtNTM4LDYgKzU4Miw4IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXQKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJpbWFyeVRvcEZyYW1lRG9t
YWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1lKSwgcHJpbWFyeVN1YkZyYW1lRG9t
YWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1YmZyYW1lKV0gewogICAgICAgICBhdXRvJiBz
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5U3ViRnJhbWVEb21haW4pOwogICAgICAgICBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpbik7CisgICAgICAgIC8vIEZvciBj
b25zaXN0ZW5jeSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkgZm9y
IHRoZSB0b3AgZnJhbWUgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlUb3BGcmFtZURvbWFpbik7CiAgICAgfSk7CiB9CiAKQEAg
LTU0OSw2ICs1OTUsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHByaW1hcnlUb3BGcmFtZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURv
bWFpbih0b3BGcmFtZSksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFy
eURvbWFpbihzdWJyZXNvdXJjZSldIHsKICAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9t
YWluKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
LmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW4pOworICAgICAgICAvLyBGb3IgY29uc2lzdGVuY3ks
IG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5IGZvciB0aGUgdG9wIGZy
YW1lIGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5VG9wRnJhbWVEb21haW4pOwogICAgIH0pOwogfQogCkBAIC01NjAsNiArNjA4
LDQ3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXQKICAgICBtX3N0
YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKGhvc3RO
YW1lUmVkaXJlY3RlZFRvKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWluID0gaXNvbGF0ZWRQcmlt
YXJ5RG9tYWluKHN1YnJlc291cmNlKV0gewogICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VE
b21haW4pOwogICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8u
YWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgICAgIC8vIEZvciBjb25zaXN0ZW5jeSwg
bWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkgZm9yIHRoZSByZWRpcmVj
dCBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNv
bnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSkK
K3sKKyAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1w
dHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tLmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJl
ZGlyZWN0ZWRGcm9tLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwcmltYXJ5UmVkaXJlY3REb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4oaG9zdE5h
bWVSZWRpcmVjdGVkRnJvbSksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpbiA9IGlzb2xhdGVkUHJp
bWFyeURvbWFpbihzdWJyZXNvdXJjZSldIHsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNl
RG9tYWluKTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgICAgIC8vIEZvciBjb25zaXN0ZW5j
eSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkgZm9yIHRoZSByZWRp
cmVjdCBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25z
dCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
Cit7CisgICAgaWYgKHRvcEZyYW1lSG9zdE5hbWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lSG9z
dE5hbWUuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRvLmlzQmxhbmtVUkwoKSB8fCBo
b3N0TmFtZVJlZGlyZWN0ZWRUby5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWlu
KGhvc3ROYW1lUmVkaXJlY3RlZFRvKSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQ
cmltYXJ5RG9tYWluKHRvcEZyYW1lSG9zdE5hbWUpXSB7CisgICAgICAgIGF1dG8mIHN0YXRpc3Rp
Y3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRvcEZyYW1lUHJp
bWFyeURvbWFpbik7CisgICAgICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
by5hZGQocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICAgICAgLy8gRm9yIGNvbnNpc3RlbmN5
LCBtYWtlIHN1cmUgd2UgYWxzbyBoYXZlIGEgc3RhdGlzdGljcyBlbnRyeSBmb3IgdGhlIHJlZGly
ZWN0IGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZy
b20pCit7CisgICAgaWYgKHRvcEZyYW1lSG9zdE5hbWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1l
SG9zdE5hbWUuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZEZyb20uaXNCbGFua1VSTCgp
IHx8IGhvc3ROYW1lUmVkaXJlY3RlZEZyb20uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRpcmVjdERvbWFpbiA9IGlzb2xhdGVkUHJpbWFy
eURvbWFpbihob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0g
aXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1lSG9zdE5hbWUpXSB7CisgICAgICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRv
cEZyYW1lUHJpbWFyeURvbWFpbik7CisgICAgICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgICAgICAvLyBGb3Ig
Y29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5IGZv
ciB0aGUgcmVkaXJlY3QgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CiAgICAgfSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA2LDYgKzEwNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRv
cEZyYW1lKTsKICAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBX
ZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVk
aXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5h
bWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8o
Y29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2ll
UGFydGl0aW9uaW5nVXBkYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlv
bk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTE2Nyw2ICsxNzAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQYXJ0aXRpb25pbmdT
dGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29u
c3QgU3RyaW5nJik7CisgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmLCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbywgdW5z
aWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNv
dXJjZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBwcm9jZXNz
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAKICAgICB2b2lkIHJlc2V0Q29va2llUGFydGl0
aW9uaW5nU3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSwzMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTdWJyCiAgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RS
ZWRpcmVjdGVkRnJvbSkKK3sKKyAgICBhdXRvKiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7Cisg
ICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0b3JlLT5zZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKK30KKwor
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCit7CisgICAgYXV0byogc3RvcmUgPSBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
KTsKK30KKwordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQoreworICAgIGF1dG8q
IHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZEZyb20pLT5zdHJpbmcoKSkpOworfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIHN0b3JlID0gV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCShyZXZpc2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCk7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5n
UmVmIGhvc3RSZWRpcmVjdGVkVG8pOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RS
ZWRpcmVjdGVkRnJvbSk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8p
OworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25k
cyk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZik7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjgzNDQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0wMi0wOSAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6
IENsYXNzaWZ5IHJlc291cmNlcyBhcyBwcmV2YWxlbnQgYmFzZWQgb24gcmVkaXJlY3RzIHRvIG90
aGVyIHByZXZhbGVudCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MjY2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzczNzI1NzI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0RnJvbSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8p
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOC0wMi0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXN0aW5nIGZyb20gRXhjZWwgbm8gbG9uZ2Vy
IHByb3ZpZGVzIHRleHQvaHRtbCBkYXRhCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OTYsNiArMjU5Niwy
NCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzCiAgICAgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhkYXRh
U3RvcmUsIGhvc3QsIGhvc3RSZWRpcmVjdGVkVG8pOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tTdHJpbmdSZWYg
aG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQoreworICAgIGF1dG8qIGRhdGFT
dG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShkYXRhU3RvcmUsIGhvc3QsIGhvc3RSZWRpcmVjdGVkRnJvbSk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tT
dHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKK3sKKyAgICBhdXRv
KiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4
dCgpKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdFRvKGRhdGFTdG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRUbyk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCit7CisgICAg
YXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNv
bnRleHQoKSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKGRhdGFTdG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKK30K
Kwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oZG91YmxlIHNlY29uZHMpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0
R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMjgzMjEpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2
ICsxNjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhv
c3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0
cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAg
IHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3Ry
aW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNv
b2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1By
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjgzMjEpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw2
ICsxMTA3LDQ4IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdEZyb20iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkp
ID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlv
bmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlS
ZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3RO
YW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lUmVkaXJlY3RlZEZy
b21LZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lUmVk
aXJlY3RlZEZyb20iKSk7CisgICAgICAgIAorICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9
IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tTdHJpbmdS
ZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVSZWRp
cmVjdGVkRnJvbUtleS5nZXQoKSkpOworICAgICAgICAKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSho
b3N0TmFtZSwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8iKSkgeworICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5
cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lUmVkaXJlY3RlZFRvS2V5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZVJlZGlyZWN0ZWRUbyIpKTsKKyAgICAgICAg
CisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFt
ZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyA9
IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVSZWRpcmVjdGVkVG9LZXkuZ2V0KCkpKTsKKyAgICAg
ICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdFRvKGhvc3ROYW1lLCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbSIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9k
eSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgICAgICAKKyAgICAgICAgV0tEaWN0
aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFy
eVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9z
dE5hbWVLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1l
IikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVSZWRpcmVjdGVk
RnJvbUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVS
ZWRpcmVjdGVkRnJvbSIpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1l
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmlu
Z1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZVJl
ZGlyZWN0ZWRGcm9tS2V5LmdldCgpKSk7CisgICAgICAgIAorICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGhv
c3ROYW1lLCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iKSkgewogICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlE
KCkpOwogICAgICAgICBXS0RvdWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVS
ZWY+KG1lc3NhZ2VCb2R5KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ3Nyw2ICsxNDc3LDgwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlz
dGljc1N1YnJlc291cmMKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlz
dGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBK
U1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIFZlY3RvcjxXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4+IHZhbHVlczsKKyAgICAKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkgfSk7CisgICAgCisg
ICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
SG9zdE5hbWVSZWRpcmVjdGVkRnJvbSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSB9KTsK
KyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAg
IFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5
c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5n
ZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNz
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0
aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5
cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykK
K3sKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQo
eyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSB9KTsK
KyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmco
aG9zdE5hbWUpIH0pOworICAgIAorICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lUmVkaXJlY3RlZFRvIikgfSk7CisgICAgdmFs
dWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1l
UmVkaXJlY3RlZFRvKSB9KTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMo
a2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6
ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVl
c1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvIikpOworICAgIFdLUmV0
YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5
Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkp
OworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFt
ZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+
IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKKyAgICAK
KyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJIb3N0TmFtZSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkgfSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVk
RnJvbSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhKU1N0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSB9KTsKKyAgICAKKyAgICBWZWN0b3I8
V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+
IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0
KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAg
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9k
eShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5k
YXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKworCiB2b2lkIFRlc3RSdW5uZXI6
OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQog
ewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24iKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjI4MzIxKQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4Myw2ICszODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BG
cmFtZUhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lSG9z
dE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
OworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpT
U3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsK
KyAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oSlNTdHJpbmdS
ZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lk
IHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShKU1N0cmluZ1JlZiBob3N0
TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNl
Y29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQoYm9vbCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlz
aW9uIDIyODMyMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgsOSBAQCBp
bnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIHRvcEZyYW1lSG9z
dE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbihET01TdHJpbmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZUhvc3ROYW1lKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5n
IGhvc3ROYW1lLCBET01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFt
ZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVk
aXJlY3RlZFRvKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90
aWZ5T2JzZXJ2ZXIoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE4LTAyLTA5ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExv
YWQgU3RhdGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiBy
ZWRpcmVjdHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNzM3MjU3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xs
dXNpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3Qt
Y29sbHVzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJh
bWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9w
LWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50
LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRl
c3RzIGFkZGVkIGFzIFsgUGFzcyBdLgorCiAyMDE4LTAyLTA5ICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGVkIEdU
SyB0ZXN0IGV4cGVjdGF0aW9ucyBhZnRlciByMjI4Mjc2CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2Vk
LW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNz
aWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24t
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVz
b3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0IEBACitUZXN0cyBmb3IgY2xhc3NpZmljYXRpb24gYmFzZWQgb24gc3VicmVzb3Vy
Y2UgcmVkaXJlY3QgY29sbHVzaW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFT
UyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBD
b2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xs
dWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRp
bmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlIGFmdGVyIGFjdHVhbCBz
dWIgZnJhbWUgcmVkaXJlY3QuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRp
cmVjdC1jb2xsdXNpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1
YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2
YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJl
biI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJh
c2VkIG9uIHN1YnJlc291cmNlIHJlZGlyZWN0IGNvbGx1c2lvbi4iKTsKKyAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAiMTI3LjAuMC4xOjgwMDAi
OworICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsg
Ii90ZW1wIjsKKyAgICBjb25zdCBzdWJyZXNvdXJjZU9yaWdpbjEgPSAiaHR0cDovLzEyNy4wLjAu
Mjo4MDAwL3RlbXAiOworICAgIGNvbnN0IHN1YnJlc291cmNlT3JpZ2luMiA9ICJodHRwOi8vMTI3
LjAuMC4zOjgwMDAvdGVtcCI7CisgICAgY29uc3Qgc3VicmVzb3VyY2VPcmlnaW4zID0gImh0dHA6
Ly8xMjcuMC4wLjQ6ODAwMC90ZW1wIjsKKyAgICBjb25zdCBzdWJyZXNvdXJjZU9yaWdpbjQgPSAi
aHR0cDovLzEyNy4wLjAuNTo4MDAwL3RlbXAiOworCisgICAgZnVuY3Rpb24gc2V0RW5hYmxlRmVh
dHVyZShlbmFibGUpIHsKKyAgICAgICAgaWYgKCFlbmFibGUpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CisgICAgICAgIGludGVybmFs
cy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGUpOworICAgICAgICB0ZXN0
UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGVuYWJsZSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0
aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShzdGF0aXN0aWNzVXJsLCBzdWJyZXNvdXJjZU9y
aWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0RnJvbShzdWJyZXNvdXJjZU9yaWdpbjEsIHN1YnJlc291cmNlT3JpZ2luMik7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKHN1YnJlc291cmNlT3JpZ2luMiwgc3VicmVzb3VyY2VPcmlnaW4zKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oc3VicmVz
b3VyY2VPcmlnaW4zLCBzdWJyZXNvdXJjZU9yaWdpbjQpOworCisgICAgICAgIHRlc3RSdW5uZXIu
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAg
ICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlz
dGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGV4cGxpY2l0eSBzZXQgZGlk
IG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3VicmVzb3VyY2VPcmlnaW4xKSkK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDEgZ290IHNldCBhcyBwcmV2
YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHN1YnJlc291cmNlT3JpZ2luMikpCisgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwor
ICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdWJy
ZXNvdXJjZU9yaWdpbjMpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3Qg
MyBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3VicmVzb3VyY2VPcmlnaW40KSkKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDQgZ290IHNldCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSkKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkNvbGx1ZGluZyBsb2NhbGhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Ug
YWZ0ZXIgYWN0dWFsIHN1YiBmcmFtZSByZWRpcmVjdC4iKTsKKworICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IGhvc3RVbmRlclRlc3QgJiYgd2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRy
dWUpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
KHN0YXRpc3RpY3NVcmwsIGZhbHNlKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBub24tcHJldmFsZW50IHJlc291cmNlLiIpOwor
ICAgIH0KKzwvc2NyaXB0PgorPGlmcmFtZSBvbmxvYWQ9InJ1blRlc3QoKSIgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvcmVkaXJlY3Qu
cGhwP3JlZGlyZWN0VG89aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvb25jbGljay5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2
YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29s
bHVzaW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9u
LXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIGZvciBjbGFzc2lmaWNhdGlvbiBiYXNlZCBvbiB0b3Ag
ZnJhbWUgcmVkaXJlY3QgY29sbHVzaW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgor
UEFTUyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFT
UyBDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBD
b2xsdWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xs
dWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlIGFmdGVyIGFjdHVh
bCBuYXZpZ2F0aW9uYWwgcmVkaXJlY3QuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUt
cmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1v
bi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXBy
ZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJl
biI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJh
c2VkIG9uIHRvcCBmcmFtZSByZWRpcmVjdCBjb2xsdXNpb24uIik7CisgICAganNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gIjEyNy4wLjAuMTo4MDAwIjsK
KyAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIv
dGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4xID0gImh0dHA6Ly8xMjcuMC4wLjI6ODAw
MC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjIgPSAiaHR0cDovLzEyNy4wLjAuMzo4
MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMyA9ICJodHRwOi8vMTI3LjAuMC40
OjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW40ID0gImh0dHA6Ly8xMjcuMC4w
LjU6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjUgPSAiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwLyI7CisKKyAgICBmdW5jdGlvbiBzZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgewor
ICAgICAgICBpZiAoIWVuYWJsZSkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2ll
U3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5hYmxlKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBydW5UZXN0KCkgeworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0RnJvbShzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BG
cmFtZU9yaWdpbjEsIHRvcEZyYW1lT3JpZ2luMik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKHRvcEZyYW1lT3JpZ2luMiwgdG9wRnJh
bWVPcmlnaW4zKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20odG9wRnJhbWVPcmlnaW4zLCB0b3BGcmFtZU9yaWdpbjQpOworCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NV
cmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGV4
cGxpY2l0eSBzZXQgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAg
ICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodG9wRnJh
bWVPcmlnaW4xKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDEgZ290
IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRvcEZyYW1lT3JpZ2luMikpCisgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSh0b3BGcmFtZU9yaWdpbjMpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5n
IGhvc3QgMyBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodG9wRnJhbWVPcmlnaW40KSkK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDQgZ290IHNldCBhcyBwcmV2
YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHRvcEZyYW1lT3JpZ2luNSkpCisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlIGFmdGVy
IGFjdHVhbCBuYXZpZ2F0aW9uYWwgcmVkaXJlY3QuIik7CisKKyAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGlmIChk
b2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIiAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5k
b3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1Vy
bCwgZmFsc2UpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlk
IG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgZG9j
dW1lbnQubG9jYXRpb24uaHJlZiA9IHRvcEZyYW1lT3JpZ2luNSArICJyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/cmVkaXJlY3RUbz1odHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQt
b24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sI2NvbnRpbnVlIjsKKyAgICB9IGVs
c2UgeworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOworICAg
ICAgICBydW5UZXN0KCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnkt
YXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlx
dWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50
LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgY2xhc3NpZmljYXRpb24gYmFz
ZWQgb24gdG9wIGZyYW1lIHVuaXF1ZSByZWRpcmVjdHMgdG8uCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIEhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5
LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRp
cmVjdHMtdG8uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1m
cmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0
YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNj
cmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJhc2VkIG9uIHRvcCBmcmFtZSB1bmlx
dWUgcmVkaXJlY3RzIHRvLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29u
c3QgaG9zdFVuZGVyVGVzdCA9ICIxMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qgc3RhdGlzdGlj
c1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworICAgIGNvbnN0IHRv
cEZyYW1lT3JpZ2luMSA9ICJodHRwOi8vMTI3LjAuMC4yOjgwMDAvdGVtcCI7CisgICAgY29uc3Qg
dG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsKKyAgICBjb25z
dCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAiOworICAgIGNv
bnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJodHRwOi8vMTI3LjAuMC41OjgwMDAvdGVtcCI7CisKKyAg
ICBmdW5jdGlvbiBzZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgeworICAgICAgICBpZiAoIWVuYWJs
ZSkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUoKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGVuYWJsZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmlu
Z0VuYWJsZWQoZW5hYmxlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKSB7
CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShz
dGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQg
Y2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
Iik7CisKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJs
LCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0VG8oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4yKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKHN0
YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMyk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9y
aWdpbjQpOworCisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0
YVJlY29yZHNDYWxsYmFjayhjb21wbGV0ZVRlc3QpOworCisgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBp
ZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVyVGVzdCAmJiB3aW5kb3cudGVz
dFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
dHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQodHJ1ZSk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgZmFsc2UpOworICAgICAgICBp
ZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJs
KSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1w
cmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjgzMjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNjkxLDYgKzY5MSw5IEBAIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2kKIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3ViLWZyYW1l
LXVuZGVyLXRvcC1mcmFtZS1vcmlnaW5zLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3Vy
Y2UtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNv
dXJjZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3Vy
Y2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJl
ZGlyZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUt
cmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xODEyMjMgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1z
dG9yZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZ3Jh
bmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MDcwMyBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333626</attachid>
            <date>2018-02-12 13:40:14 -0800</date>
            <delta_ts>2018-02-12 13:48:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182664-20180212134014.patch</filename>
            <type>text/plain</type>
            <size>60229</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAyLTEyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiByZWRpcmVj
dHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NzM3MjU3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXBy
ZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAor
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAg
ICAgICAgV2Ugbm93IGNvbGxlY3Qgc3RhdGlzdGljcyBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbmFs
IHJlZGlyZWN0cyB0b28sIGJvdGggdG8gYW5kIGZyb20uCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgICAgIFdl
IG5vdyBjb2xsZWN0IHN0YXRpc3RpY3Mgb24gcmVkaXJlY3RzIGZyb20gaW4gYWRkaXRpb24gdG8g
dGhlIGV4aXN0aW5nIHJlZGlyZWN0cyB0by4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
Om1lcmdlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAg
ICAgICAgICAgVGhyZWUgbmV3IGZpZWxkczoKKyAgICAgICAgICAgIC0gdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbworICAgICAgICAgICAgLSB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20KKyAg
ICAgICAgICAgIC0gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tCisKIDIwMTgtMDItMDkg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVl
c3RdIEFwcGxlIFBheSBzaGVldCBkb2VzIG5vdCBkaXNtaXNzIHdoZW4gY2FsbGluZyBjb21wbGV0
ZSgpIHdpdGggcmVzdWx0ICJ1bmtub3duIiBvciAiZmFpbCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4LDkgKzEzOCw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0ZyYW1lTmF2aWcKICAgICBBU1NFUlQodG9wRnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJU
KHRvcEZyYW1lLnBhZ2UoKSk7CiAKLSAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAogICAgIGF1dG8qIHBhZ2UgPSB0b3BGcmFtZS5wYWdlKCk7CiAgICAg
aWYgKCFzaG91bGRMb2cocGFnZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3Nyw4ICsxNzQsMjEg
QEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogCiAgICAgaWYgKGlz
UmVkaXJlY3QKICAgICAgICAgJiYgIWFyZURvbWFpbnNBc3NvY2lhdGVkKHBhZ2UsIHNvdXJjZVBy
aW1hcnlEb21haW4sIHRhcmdldFByaW1hcnlEb21haW4pKSB7Ci0gICAgICAgIGF1dG8mIHJlZGly
ZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7Ci0gICAgICAgIGlmIChyZWRpcmVjdGluZ09y
aWdpblN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJp
bWFyeURvbWFpbikuaXNOZXdFbnRyeSkKKyAgICAgICAgYm9vbCBpc05ld1JlZGlyZWN0VG9FbnRy
eTsKKyAgICAgICAgYm9vbCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5OworICAgICAgICBpZiAoZnJh
bWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5T
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3Vy
Y2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RUb0VudHJ5ID0gcmVk
aXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRh
cmdldFByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7CisgICAgICAgICAgICBhdXRvJiB0YXJnZXRT
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJn
ZXRQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0
YXJnZXRTdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJp
bWFyeURvbWFpbikuaXNOZXdFbnRyeTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1
dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CisgICAgICAgICAgICBpc05l
d1JlZGlyZWN0VG9FbnRyeSA9IHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5Owor
ICAgICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CisgICAgICAgICAgICBp
c05ld1JlZGlyZWN0RnJvbUVudHJ5ID0gdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb20uYWRkKHNvdXJjZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoaXNOZXdSZWRpcmVjdFRvRW50cnkgfHwgaXNOZXdSZWRpcmVj
dEZyb21FbnRyeSkKICAgICAgICAgICAgIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9
IHRydWU7CiAgICAgfQogCkBAIC0yMzMsOCArMjQzLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ1N1YnJlc291cmMKICAgICB9CiAKICAgICBpZiAoaXNSZWRpcmVjdCkgeworICAg
ICAgICBib29sIGlzTmV3UmVkaXJlY3RUb0VudHJ5OworICAgICAgICBib29sIGlzTmV3UmVkaXJl
Y3RGcm9tRW50cnk7CiAgICAgICAgIGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9
IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURv
bWFpbik7Ci0gICAgICAgIGlmIChyZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3Muc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkK
KyAgICAgICAgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRpcmVjdGluZ09yaWdpblN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbiku
aXNOZXdFbnRyeTsKKyAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CisgICAg
ICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeTsK
KworICAgICAgICBpZiAoaXNOZXdSZWRpcmVjdFRvRW50cnkgfHwgaXNOZXdSZWRpcmVjdEZyb21F
bnRyeSkKICAgICAgICAgICAgIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IHRydWU7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEzICs3
MCwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllCiAgICAgLy8g
U3RvcmFnZSBhY2Nlc3MKICAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJzdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMp
OwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5j
b2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvKTsKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAidG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFN1
YmZyYW1lIHN0YXRzCiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAg
ICAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVu
Y29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2lucyk7CiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
KTsKLSAgICAKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAic3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwog
ICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaXNQcmV2
YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2Rl
VUludDMyKCJkYXRhUmVjb3Jkc1JlbW92ZWQiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwpAQCAtMTI1
LDEzICsxMzAsMTggQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZQog
ICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVP
cmlnaW5zKTsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGRlY29kZUhhc2hDb3VudGVk
U2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyk7CisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAg
ICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJz
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
cyk7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBkZWNvZGVIYXNoQ291bnRl
ZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29k
ZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbyk7Ci0gICAgCisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSk7CisKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Qm9vbCgiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMjIsMTMgKzIzMiwxOCBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBhcHBlbmRI
YXNoU2V0KGJ1aWxkZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRz
CisgICAgYXBwZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBhcHBlbmRIYXNoQ291bnRl
ZFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgYXBwZW5kSGFz
aENvdW50ZWRTZXQoYnVpbGRlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAgICAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0
cwogICAgIGFwcGVuZEhhc2hDb3VudGVkU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgYXBw
ZW5kSGFzaENvdW50ZWRTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8i
LCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAKKyAgICBhcHBlbmRIYXNoQ291
bnRlZFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQog
ICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1ByZXZh
bGVudFJlc291cmNlKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBkYXRhUmVjb3Jk
c1JlbW92ZWQ6ICIpOwpAQCAtMjgzLDEzICsyOTgsMTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjptZXJnZShjb25zdAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgbWVyZ2VIYXNo
U2V0KHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVPcmlnaW5zKTsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIG1l
cmdlSGFzaENvdW50ZWRTZXQodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIudG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldCh0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20sIG90aGVyLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisK
ICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7
CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBtZXJnZUhhc2hDb3VudGVkU2V0
KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnMpOwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbywgb3RoZXIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7Ci0gICAg
CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20s
IG90aGVyLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAgICAvLyBQcmV2YWxl
bnQgcmVzb3VyY2Ugc3RhdHMKICAgICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVyLmlzUHJl
dmFsZW50UmVzb3VyY2U7CiAgICAgZGF0YVJlY29yZHNSZW1vdmVkID0gc3RkOjptYXgoZGF0YVJl
Y29yZHNSZW1vdmVkLCBvdGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lvbiAyMjgz
MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MywxMyArNzMsMTggQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MgewogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgSGFzaFNldDxTdHJpbmc+IHN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2luczsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cwor
ICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKKyAg
ICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsKKwog
ICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBzdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwogICAgIAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCiAg
ICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
OwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
bzsKLSAgICAKKyAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbTsKKwogICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cwogICAgIGJvb2wg
aXNQcmV2YWxlbnRSZXNvdXJjZSB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgZGF0YVJlY29yZHNS
ZW1vdmVkIHsgMCB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM0NCkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDIt
MTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3Vy
Y2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2Vk
IG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2NjQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM3MzcyNTcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyOjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6CisgICAgICAg
ICAgICBVbmlxdWUgdG9wIGZyYW1lIHJlZGlyZWN0cyBub3cgY291bnRzIHRvd2FyZCBjbGFzc2lm
aWNhdGlvbiBhcyBwcmV2YWxlbnQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz46OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20p
OgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgICAgICBCdW1wZWQgdGhlIHN0
YXRpc3RpY3MgbW9kZWwgdG8gMTEgYmVjYXVzZSBvZiB0aGUgYWRkZWQgZmllbGRzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlY3Vyc2l2ZWx5R2V0
QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbik6CisgICAgICAgICAgICBU
aGlzIGZ1bmN0aW9uIGJhY2sgdHJhY2VzIHJlZGlyZWN0IGNoYWlucyB0byBjbGFzc2lmeSBkb21h
aW5zCisgICAgICAgICAgICB0aGF0IGhhdmUgcmVkaXJlY3RlZCB0byBhIG5ld2x5IGNsYXNzaWZp
ZWQgcHJldmFsZW50IHJlc291cmNlLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMpOgorICAgICAg
ICAgICAgTm93IHVzZXMgdGhlIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKCkuCisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2Up
OgorICAgICAgICAgICAgTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB3ZSBh
bHdheXMgY2FsbAorICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oKQor
ICAgICAgICAgICAgYW5kIGNhcHR1cmUgcmVkaXJlY3QgY2hhaW5zIGJhY2t3YXJkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgICAgIFRlc3QgaW5m
cmFzdHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oOgorCiAyMDE4LTAyLTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFNhbmRib3ggdmlvbGF0aW5nIGF0dGVtcHRpbmcgdG8gcmVhZCBsb2cg
Zm9ybWF0dGluZyBwcmVmZXJlbmNlIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyLmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDE4IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXI6OmgKICAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bnNDb3VudCA9IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bnMuc2l6ZSgpOwogICAgIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ID0g
cmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCk7CiAg
ICAgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPSByZXNvdXJjZVN0YXRp
c3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKTsKKyAgICBhdXRvIHRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudCA9IHJlc291cmNlU3RhdGlzdGljLnRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG8uc2l6ZSgpOwogICAgIAogICAgIGlmICghc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luc0NvdW50CiAgICAgICAgICYmICFzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvQ291bnQKLSAgICAgICAgJiYgIXN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNDb3VudCkK
KyAgICAgICAgJiYgIXN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNDb3VudAorICAgICAgICAm
JiAhdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCiAgICAgaWYgKHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNDb3VudCA+IGZl
YXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQKICAgICAgICAgfHwgc3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUb0NvdW50ID4gZmVhdHVyZVZlY3Rvckxlbmd0aFRocmVzaG9sZAotICAgICAgICB8
fCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPiBmZWF0dXJlVmVjdG9yTGVuZ3Ro
VGhyZXNob2xkKQorICAgICAgICB8fCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQg
PiBmZWF0dXJlVmVjdG9yTGVuZ3RoVGhyZXNob2xkCisgICAgICAgIHx8IHRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzVG9Db3VudCA+IGZlYXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGNsYXNzaWZ5KHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbnNDb3VudCwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50LCBzdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyMjgzMjEpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTM4LDEzICsyNTM4LDE4IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWMKICAgICAvLyBTdG9yYWdlIGFjY2VzcwogICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnM7CiAKKyAgICAvLyBUb3AgZnJh
bWUgc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tOworCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Mu
c3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luczsKICAgICAKICAgICAvLyBTdWJyZXNvdXJjZSBz
dGF0cwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW5zOwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvOwotICAgIAorICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb207CisKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBlbmNvZGVyIDw8IHN0YXRp
c3RpY3MuZGF0YVJlY29yZHNSZW1vdmVkOwpAQCAtMjU3Nyw2ICsyNTgyLDEzIEBAIHN0ZDo6b3B0
aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gQXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3Muc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgICAgCisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjU4OCw2ICsyNjAwLDkgQEAgc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIyODMyMSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3RleHByIHVuc2lnbmVkIG9wZXJhdGluZ0Rh
dGVzV2luZG93IHsgMzAgfTsKLWNvbnN0ZXhwciB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJz
aW9uIHsgMTAgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uIHsg
MTEgfTsKIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhJbXBvcnRhbmNlIHsgMyB9OworY29uc3RleHBy
IHVuc2lnbmVkIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrIHsg
NTAgfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgaXNvbGF0
ZWRQcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQogewpAQCAtMjI1LDYgKzIyNiwzNSBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoCiAgICAgfSk7CiB9CiAKKwor
dW5zaWduZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWN1cnNpdmVseUdldEFs
bERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIEhhc2hTZXQ8U3RyaW5nPiYg
ZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNh
bGxzKQoreworICAgIGlmIChudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzID49IG1heE51bWJlck9mUmVj
dXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBXVEZMb2dBbHdheXMoIkhpdCAldSByZWN1cnNpdmUgY2FsbHMgaW4g
cmVkaXJlY3QgYmFja3RyYWNlLiBSZXR1cm5pbmcgZWFybHkuIiwgbWF4TnVtYmVyT2ZSZWN1cnNp
dmVDYWxsc0luUmVkaXJlY3RUcmFjZUJhY2spOworICAgICAgICByZXR1cm4gbnVtYmVyT2ZSZWN1
cnNpdmVDYWxsczsKKyAgICB9CisKKyAgICBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKys7CisgICAg
CisgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbURvbWFpbiA6IHJl
c291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS52YWx1ZXMoKSkg
eworICAgICAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbURvbWFpbik7CisgICAgICAgIGlmIChtYXBFbnRy
eSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSB8fCBtYXBFbnRyeS0+dmFsdWUuaXNQ
cmV2YWxlbnRSZXNvdXJjZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZG9t
YWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLmFkZChtYXBFbnRyeS0+dmFsdWUuaGlnaExldmVsRG9t
YWluKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyA9IHJl
Y3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihtYXBF
bnRyeS0+dmFsdWUsIGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbywgbnVtYmVyT2ZSZWN1cnNp
dmVDYWxscyk7CisgICAgfQorICAgIGZvciAoYXV0byYgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b21Eb21haW4gOiByZXNvdXJjZVN0YXRpc3RpYy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20u
dmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmZpbmQodG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb21Eb21haW4pOworICAgICAgICBpZiAo
bWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkgfHwgbWFwRW50cnktPnZh
bHVlLmlzUHJldmFsZW50UmVzb3VyY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUby5hZGQobWFwRW50cnktPnZhbHVlLmhpZ2hM
ZXZlbERvbWFpbikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIG51bWJlck9mUmVjdXJzaXZlQ2Fs
bHMgPSByZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21h
aW4obWFwRW50cnktPnZhbHVlLCBkb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG8sIG51bWJlck9m
UmVjdXJzaXZlQ2FsbHMpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVtYmVyT2ZSZWN1cnNp
dmVDYWxsczsKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nl
c3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtMjMyLDcgKzI2Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpwcm8KICAgICBpZiAobV9wYXJhbWV0ZXJzLnNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2VT
dGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewogICAgICAgICAg
ICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJp
c3RpY3MocmVzb3VyY2VTdGF0aXN0aWMpKQotICAgICAgICAgICAgICAgIHJlc291cmNlU3RhdGlz
dGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldFByZXZh
bGVudFJlc291cmNlKHJlc291cmNlU3RhdGlzdGljKTsKICAgICAgICAgfQogICAgIH0KICAgICBy
ZW1vdmVEYXRhUmVjb3JkcygpOwpAQCAtNDQ5LDExICs0NzksMjYgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldAogICAgICAgICByZXR1cm47CiAKICAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcHJpbWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih1cmwpXSB7Ci0gICAgICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKHByaW1hcnlEb21haW4pOwotICAgICAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3Vy
Y2UgPSB0cnVlOworICAgICAgICBhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbik7CisgICAgICAgIHNl
dFByZXZhbGVudFJlc291cmNlKHJlc291cmNlU3RhdGlzdGljKTsKICAgICB9KTsKIH0KIAordm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHJlc291cmNlU3RhdGlzdGljLmlzUHJl
dmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgIEhhc2hTZXQ8U3RyaW5nPiBkb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG87CisgICAgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRp
cmVjdGVkVG9UaGlzRG9tYWluKHJlc291cmNlU3RhdGlzdGljLCBkb21haW5zVGhhdEhhdmVSZWRp
cmVjdGVkVG8sIDApOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RoYXRIYXZlUmVk
aXJlY3RlZFRvKSB7CisgICAgICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC5maW5kKGRvbWFpbik7CisgICAgICAgIGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQo
IW1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVudFJlc291cmNlKTsKKyAgICAgICAgbWFwRW50cnkt
PnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgIH0KK30KKwogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJM
JiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkgewpAQCAtNTM4LDYg
KzU4Myw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXQKICAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcHJpbWFyeVRvcEZyYW1lRG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRv
cEZyYW1lKSwgcHJpbWFyeVN1YkZyYW1lRG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1
YmZyYW1lKV0gewogICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3ViRnJhbWVEb21haW4pOwogICAgICAgICBz
dGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFt
ZURvbWFpbik7CisgICAgICAgIC8vIEZvciBjb25zaXN0ZW5jeSwgbWFrZSBzdXJlIHdlIGFsc28g
aGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkgZm9yIHRoZSB0b3AgZnJhbWUgZG9tYWluLgorICAgICAg
ICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlUb3BGcmFt
ZURvbWFpbik7CiAgICAgfSk7CiB9CiAKQEAgLTU0OSw2ICs1OTYsOCBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlUb3BGcmFt
ZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZSksIHByaW1hcnlTdWJyZXNv
dXJjZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSldIHsKICAgICAg
ICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW4pOwor
ICAgICAgICAvLyBGb3IgY29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0
aXN0aWNzIGVudHJ5IGZvciB0aGUgdG9wIGZyYW1lIGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5VG9wRnJhbWVEb21haW4pOwog
ICAgIH0pOwogfQogCkBAIC01NjAsNiArNjA5LDQ3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXQKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluID0g
aXNvbGF0ZWRQcmltYXJ5RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZFRvKSwgcHJpbWFyeVN1YnJl
c291cmNlRG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKV0gewogICAg
ICAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VEb21haW4pOwogICAgICAgICBzdGF0aXN0aWNzLnN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7Cisg
ICAgICAgIC8vIEZvciBjb25zaXN0ZW5jeSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRp
c3RpY3MgZW50cnkgZm9yIHRoZSByZWRpcmVjdCBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAg
ICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVS
TCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSkKK3sKKyAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFu
a1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9t
LmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5UmVkaXJlY3REb21haW4gPSBp
c29sYXRlZFByaW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSksIHByaW1hcnlTdWJy
ZXNvdXJjZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSldIHsKKyAg
ICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluKTsKKyAgICAgICAgc3RhdGlzdGljcy5z
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7
CisgICAgICAgIC8vIEZvciBjb25zaXN0ZW5jeSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0
YXRpc3RpY3MgZW50cnkgZm9yIHRoZSByZWRpcmVjdCBkb21haW4uCisgICAgICAgIGVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsK
KyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0
IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCit7CisgICAgaWYgKHRvcEZyYW1lSG9zdE5hbWUu
aXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lSG9zdE5hbWUuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVk
aXJlY3RlZFRvLmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9t
YWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZFRvKSwgdG9wRnJh
bWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1lSG9zdE5hbWUp
XSB7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHRvcEZyYW1lUHJpbWFyeURvbWFpbik7CisgICAgICAgIHN0YXRpc3Rp
Y3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5hZGQocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsK
KyAgICAgICAgLy8gRm9yIGNvbnNpc3RlbmN5LCBtYWtlIHN1cmUgd2UgYWxzbyBoYXZlIGEgc3Rh
dGlzdGljcyBlbnRyeSBmb3IgdGhlIHJlZGlyZWN0IGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5UmVkaXJlY3REb21haW4pOwor
ICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25z
dCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pCit7CisgICAgaWYgKHRvcEZyYW1lSG9zdE5h
bWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lSG9zdE5hbWUuaXNFbXB0eSgpIHx8IGhvc3ROYW1l
UmVkaXJlY3RlZEZyb20uaXNCbGFua1VSTCgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZEZyb20uaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRp
cmVjdERvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbihob3N0TmFtZVJlZGlyZWN0ZWRGcm9t
KSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1l
SG9zdE5hbWUpXSB7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRvcEZyYW1lUHJpbWFyeURvbWFpbik7CisgICAgICAg
IHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChwcmltYXJ5UmVkaXJl
Y3REb21haW4pOworICAgICAgICAvLyBGb3IgY29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNv
IGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5IGZvciB0aGUgcmVkaXJlY3QgZG9tYWluLgorICAgICAg
ICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlSZWRpcmVj
dERvbWFpbik7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAy
MjgzMjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwm
IHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHNldFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291
cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBz
ZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZUhv
c3ROYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2
b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9w
RnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9t
KTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1Vw
ZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhclBhcnRp
dGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE2Nyw2ICsxNzAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBt
ZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYp
OwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7CisgICAgdW5zaWduZWQgcmVj
dXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0PFN0cmluZz4mIGRvbWFp
bnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7
CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJik7CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAK
ICAgICB2b2lkIHJlc2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcAkocmV2aXNpb24gMjI4MzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSwz
MyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyCiAgICAgc3RvcmUt
PnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9
CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKK3sKKyAgICBhdXRvKiBz
dG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0
ZWRGcm9tKS0+c3RyaW5nKCkpKTsKK30KKwordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8p
Cit7CisgICAgYXV0byogc3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRp
cmVjdFRvKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKK30KKwordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJl
ZGlyZWN0ZWRGcm9tKQoreworICAgIGF1dG8qIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgc3RvcmUtPnNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOworfQorCiB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewog
ICAgIGF1dG8qIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCShyZXZp
c2lvbiAyMjgzMjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOSBAQCBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVm
IHRvcEZyYW1lSG9zdCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9z
dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pOworV0tfRVhQ
T1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7CitXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdL
U3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhv
c3RSZWRpcmVjdGVkRnJvbSk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcyk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjgz
NDQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAxOC0wMi0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IENsYXNzaWZ5IHJlc291cmNlcyBhcyBwcmV2YWxl
bnQgYmFzZWQgb24gcmVkaXJlY3RzIHRvIG90aGVyIHByZXZhbGVudCByZXNvdXJjZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjY2NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzczNzI1NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b20pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOC0w
Mi0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBQ
YXN0aW5nIGZyb20gRXhjZWwgbm8gbG9uZ2VyIHByb3ZpZGVzIHRleHQvaHRtbCBkYXRhCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjI4
MzIxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1OTYsNiArMjU5NiwyNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRT
dGF0aXN0aWNzU3VicmVzCiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhkYXRhU3RvcmUsIGhvc3QsIGhvc3RSZWRpcmVjdGVkVG8p
OwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb20oV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRGcm9tKQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRh
U3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShkYXRhU3RvcmUsIGhvc3QsIGhvc3RS
ZWRpcmVjdGVkRnJvbSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRUbykKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJz
aXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGRhdGFTdG9yZSwgaG9zdCwgaG9z
dFJlZGlyZWN0ZWRUbyk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBo
b3N0UmVkaXJlY3RlZEZyb20pCit7CisgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0
V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGRhdGFTdG9yZSwgaG9z
dCwgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCiB7CiAgICAg
YXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNv
bnRleHQoKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShy
ZXZpc2lvbiAyMjgzMjEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3RO
YW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdL
U3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pOworICAg
IHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5nUmVm
IGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29u
ZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMo
KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShyZXZp
c2lvbiAyMjgzMjEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw2ICsxMTA3LDQ4IEBAIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20iKSkgeworICAgICAgICBBU1NF
UlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsK
KyAgICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkg
PSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGhvc3ROYW1lUmVkaXJlY3RlZEZyb21LZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lUmVkaXJlY3RlZEZyb20iKSk7CisgICAgICAgIAorICAg
ICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVLZXku
Z2V0KCkpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbUtleS5nZXQoKSkpOworICAgICAg
ICAKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShob3N0TmFtZSwgaG9zdE5hbWVSZWRpcmVjdGVkRnJv
bSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0VG8iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2Fn
ZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdL
RGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rp
b25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0
TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lUmVkaXJl
Y3RlZFRvS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFt
ZVJlZGlyZWN0ZWRUbyIpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1l
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmlu
Z1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVSZWRp
cmVjdGVkVG9LZXkuZ2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGhvc3ROYW1l
LCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSIpKSB7CisgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkp
OworICAgICAgICAKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gaG9zdE5hbWVSZWRpcmVjdGVkRnJvbUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVkRnJvbSIpKTsKKyAgICAgICAgCisg
ICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtl
eS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tID0g
c3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tS2V5LmdldCgpKSk7CisgICAg
ICAgIAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Rv
cEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGhvc3ROYW1lLCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9t
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1RpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24iKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2Fn
ZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RvdWJsZVJlZiBzZWNv
bmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAkocmV2aXNpb24gMjI4MzIxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3Nyw2ICsxNDc3LDgwIEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmMKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCisK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRG
cm9tKQoreworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAg
VmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKKyAgICAKKyAgICBrZXlzLmFw
cGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIp
IH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0
cmluZyhob3N0TmFtZSkgfSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVkRnJvbSIpIH0pOwor
ICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyho
b3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSB9KTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+
IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2
YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAg
IHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20i
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdL
LCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJh
d0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmlu
Z1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKK3sKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1
ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiSG9zdE5hbWUiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpIH0pOworICAgIAorICAgIGtleXMu
YXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1l
UmVkaXJlY3RlZFRvIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1lUmVkaXJlY3RlZFRvKSB9KTsKKyAgICAKKyAgICBW
ZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5
cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNb
aV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9
CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1
ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1l
LmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhv
c3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4+IHZhbHVlczsKKyAgICAKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpIH0pOworICAgIHZhbHVlcy5h
cHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkgfSk7
CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVkRnJvbSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQo
eyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRG
cm9tKSB9KTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXpl
KCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAg
ICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZh
bHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20iKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUo
cmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAg
V0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRy
KTsKK30KKworCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iKSk7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNp
b24gMjI4MzIxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKEpTU3RyaW5nUmVm
IGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oSlNTdHJpbmdSZWYgaG9zdE5h
bWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJp
bmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1Jl
ZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0VG8oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3RO
YW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0RnJvbShKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRp
cmVjdGVkRnJvbSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNv
b2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCk7CkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlzaW9uIDIyODMyMSkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3OCw2ICsyNzgsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKERPTVN0cmluZyBob3N0
TmFtZSwgRE9NU3RyaW5nIHRvcEZyYW1lSG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihET01TdHJpbmcgaG9zdE5hbWUsIERPTVN0
cmluZyB0b3BGcmFtZUhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgaG9zdE5hbWVS
ZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3Rl
ZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oRE9N
U3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZv
aWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0
TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25k
cyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyODM0NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIwIEBACisyMDE4LTAyLTEyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogQ2xhc3NpZnkgcmVzb3Vy
Y2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiByZWRpcmVjdHMgdG8gb3RoZXIgcHJldmFsZW50IHJl
c291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzM3MjU3Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2Ut
cmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1v
bi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1i
YXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lm
eS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVk
aXJlY3RzLXRvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3RzIGFkZGVkIGFzIFsgUGFzcyBdLgorCiAyMDE4
LTAyLTA5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCB1cGRhdGVkIEdUSyB0ZXN0IGV4cGVjdGF0aW9ucyBhZnRlciByMjI4
Mjc2CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1
c2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJy
ZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitUZXN0cyBmb3IgY2xhc3Np
ZmljYXRpb24gYmFzZWQgb24gc3VicmVzb3VyY2UgcmVkaXJlY3QgY29sbHVzaW9uLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdvdCBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMgcHJl
dmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMgcHJldmFs
ZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJldmFs
ZW50IHJlc291cmNlIGFmdGVyIGFjdHVhbCBzdWIgZnJhbWUgcmVkaXJlY3QuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVu
dC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3Np
ZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVk
aXJlY3QtY29sbHVzaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJhc2VkIG9uIHN1YnJlc291cmNlIHJlZGlyZWN0IGNv
bGx1c2lvbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IGhvc3RV
bmRlclRlc3QgPSAiMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAi
aHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKKyAgICBjb25zdCBzdWJyZXNvdXJj
ZU9yaWdpbjEgPSAiaHR0cDovLzEyNy4wLjAuMjo4MDAwL3RlbXAiOworICAgIGNvbnN0IHN1YnJl
c291cmNlT3JpZ2luMiA9ICJodHRwOi8vMTI3LjAuMC4zOjgwMDAvdGVtcCI7CisgICAgY29uc3Qg
c3VicmVzb3VyY2VPcmlnaW4zID0gImh0dHA6Ly8xMjcuMC4wLjQ6ODAwMC90ZW1wIjsKKyAgICBj
b25zdCBzdWJyZXNvdXJjZU9yaWdpbjQgPSAiaHR0cDovLzEyNy4wLjAuNTo4MDAwL3RlbXAiOwor
CisgICAgZnVuY3Rpb24gc2V0RW5hYmxlRmVhdHVyZShlbmFibGUpIHsKKyAgICAgICAgaWYgKCFl
bmFibGUpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKCk7CisgICAgICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChlbmFibGUpOworICAgICAgICB0ZXN0UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRp
b25pbmdFbmFibGVkKGVuYWJsZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKKworICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShz
dGF0aXN0aWNzVXJsLCBzdWJyZXNvdXJjZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShzdWJyZXNvdXJjZU9yaWdp
bjEsIHN1YnJlc291cmNlT3JpZ2luMik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlT3JpZ2luMiwgc3VicmVz
b3VyY2VPcmlnaW4zKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VPcmlnaW4zLCBzdWJyZXNvdXJjZU9yaWdp
bjQpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
KHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGV4cGxpY2l0eSBzZXQgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNv
dXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3VicmVzb3VyY2VPcmlnaW4xKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1
ZGluZyBob3N0IDEgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlm
ICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN1YnJlc291cmNlT3Jp
Z2luMikpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdWJyZXNvdXJjZU9yaWdpbjMpKQorICAgICAgICAgICAg
dGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3QgMyBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJj
ZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uoc3VicmVzb3VyY2VPcmlnaW40KSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGlu
ZyBob3N0IDQgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0
OjgwMDAiKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBsb2NhbGhvc3QgZ290
IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYWZ0ZXIgYWN0dWFsIHN1YiBmcmFtZSByZWRpcmVj
dC4iKTsKKworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IGhv
c3RVbmRlclRlc3QgJiYgd2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgewor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIGZhbHNlKTsKKyAgICAg
ICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGlj
c1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBu
b24tcHJldmFsZW50IHJlc291cmNlLiIpOworICAgIH0KKzwvc2NyaXB0PgorPGlmcmFtZSBvbmxv
YWQ9InJ1blRlc3QoKSIgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb25jbGljay5odG1sIj48L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGly
ZWN0LWNvbGx1c2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNl
ZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xh
c3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIGZvciBj
bGFzc2lmaWNhdGlvbiBiYXNlZCBvbiB0b3AgZnJhbWUgcmVkaXJlY3QgY29sbHVzaW9uLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdvdCBz
ZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMgcHJl
dmFsZW50IHJlc291cmNlLgorUEFTUyBDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJl
dmFsZW50IHJlc291cmNlIGFmdGVyIGFjdHVhbCBuYXZpZ2F0aW9uYWwgcmVkaXJlY3QuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXBy
ZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Ns
YXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9u
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVk
aXJlY3QtY29sbHVzaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJhc2VkIG9uIHRvcCBmcmFtZSByZWRpcmVjdCBjb2xs
dXNpb24uIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBob3N0VW5k
ZXJUZXN0ID0gIjEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0
dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmln
aW4xID0gImh0dHA6Ly8xMjcuMC4wLjI6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9y
aWdpbjIgPSAiaHR0cDovLzEyNy4wLjAuMzo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1l
T3JpZ2luMyA9ICJodHRwOi8vMTI3LjAuMC40OjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJh
bWVPcmlnaW40ID0gImh0dHA6Ly8xMjcuMC4wLjU6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BG
cmFtZU9yaWdpbjUgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyI7CisKKyAgICBmdW5jdGlvbiBz
ZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgeworICAgICAgICBpZiAoIWVuYWJsZSkKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAg
ICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZSk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5h
YmxlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShzdGF0aXN0aWNzVXJs
LCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZU9yaWdpbjEsIHRvcEZyYW1lT3JpZ2luMik7
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RG
cm9tKHRvcEZyYW1lT3JpZ2luMiwgdG9wRnJhbWVPcmlnaW4zKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20odG9wRnJhbWVPcmlnaW4z
LCB0b3BGcmFtZU9yaWdpbjQpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGV4cGxpY2l0eSBzZXQgZGlkIG5vdCBnZXQgc2V0IGFz
IHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2UodG9wRnJhbWVPcmlnaW4xKSkKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkNvbGx1ZGluZyBob3N0IDEgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7
CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRv
cEZyYW1lT3JpZ2luMikpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgaG9zdCAy
IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0b3BGcmFtZU9yaWdpbjMpKQorICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3QgMyBnb3Qgc2V0IGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UodG9wRnJhbWVPcmlnaW40KSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1
ZGluZyBob3N0IDQgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlm
ICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRvcEZyYW1lT3JpZ2lu
NSkpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlIGFmdGVyIGFjdHVhbCBuYXZpZ2F0aW9uYWwgcmVkaXJlY3Qu
Iik7CisKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIiAm
JiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgZmFsc2UpOworICAgICAgICBpZiAodGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxlbnQg
cmVzb3VyY2UuIik7CisKKyAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHRvcEZyYW1l
T3JpZ2luNSArICJyZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/
cmVkaXJlY3RUbz1odHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lv
bi5odG1sI2NvbnRpbnVlIjsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NOb3RpZnlPYnNlcnZlcigpOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFt
ZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFs
ZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVk
aXJlY3RzLXRvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitU
ZXN0cyBmb3IgY2xhc3NpZmljYXRpb24gYmFzZWQgb24gdG9wIGZyYW1lIHVuaXF1ZSByZWRpcmVj
dHMgdG8uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEhvc3QgY2xhc3Np
ZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJh
bWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFz
ZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnkt
YXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBs
YW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZpY2F0
aW9uIGJhc2VkIG9uIHRvcCBmcmFtZSB1bmlxdWUgcmVkaXJlY3RzIHRvLiIpOworICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICIxMjcuMC4wLjE6
ODAwMCI7CisgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRl
c3QgKyAiL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMSA9ICJodHRwOi8vMTI3LjAu
MC4yOjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8xMjcu
MC4wLjM6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDovLzEy
Ny4wLjAuNDo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJodHRwOi8v
MTI3LjAuMC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlvbiBzZXRFbmFibGVGZWF0dXJlKGVu
YWJsZSkgeworICAgICAgICBpZiAoIWVuYWJsZSkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIHRlc3RSdW5uZXIu
c2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5hYmxlKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xhc3Np
ZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oc3RhdGlzdGlj
c1VybCwgdG9wRnJhbWVPcmlnaW4yKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMyk7
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RU
byhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjQpOworCisgICAgICAgIHRlc3RSdW5uZXIu
aW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjb21wbGV0ZVRlc3Qp
OworCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0g
aG9zdFVuZGVyVGVzdCAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodHJ1ZSk7CisK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlz
dGljc1VybCwgZmFsc2UpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAg
IHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjgzMjEp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBj
b3B5KQpAQCAtNjkxLDYgKzY5MSw5IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbGFzc2kKIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tc3ViLWZyYW1lLXVuZGVyLXRvcC1mcmFtZS1vcmlnaW5zLmh0bWwg
WyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRt
bCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwg
WyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgWyBQ
YXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2
YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50
LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIHdl
YmtpdC5vcmcvYi8xODEyMjMgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFy
LWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9yZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQogd2Vi
a2l0Lm9yZy9iLzE4MDcwMyBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1l
dHJ5LWdlbmVyYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333628</attachid>
            <date>2018-02-12 13:48:34 -0800</date>
            <delta_ts>2018-02-12 20:59:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182664-20180212134833.patch</filename>
            <type>text/plain</type>
            <size>60099</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAyLTEyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiByZWRpcmVj
dHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NzM3MjU3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXBy
ZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAor
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAg
ICAgICAgV2Ugbm93IGNvbGxlY3Qgc3RhdGlzdGljcyBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbmFs
IHJlZGlyZWN0cyB0b28sIGJvdGggdG8gYW5kIGZyb20uCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgICAgIFdl
IG5vdyBjb2xsZWN0IHN0YXRpc3RpY3Mgb24gcmVkaXJlY3RzIGZyb20gaW4gYWRkaXRpb24gdG8g
dGhlIGV4aXN0aW5nIHJlZGlyZWN0cyB0by4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
Om1lcmdlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAg
ICAgICAgICAgVGhyZWUgbmV3IGZpZWxkczoKKyAgICAgICAgICAgIC0gdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbworICAgICAgICAgICAgLSB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20KKyAg
ICAgICAgICAgIC0gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tCisKIDIwMTgtMDItMTIg
IE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMjI4Mzc2LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMjgzOTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
OSArMTM4LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAg
IEFTU0VSVCh0b3BGcmFtZS5kb2N1bWVudCgpKTsKICAgICBBU1NFUlQodG9wRnJhbWUucGFnZSgp
KTsKIAotICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0gICAg
CiAgICAgYXV0byogcGFnZSA9IHRvcEZyYW1lLnBhZ2UoKTsKICAgICBpZiAoIXNob3VsZExvZyhw
YWdlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc3LDggKzE3NCwyMSBAQCB2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAKICAgICBpZiAoaXNSZWRpcmVjdAogICAgICAg
ICAmJiAhYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgc291cmNlUHJpbWFyeURvbWFpbiwgdGFy
Z2V0UHJpbWFyeURvbWFpbikpIHsKLSAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0
aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3VyY2VQ
cmltYXJ5RG9tYWluKTsKLSAgICAgICAgaWYgKHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5z
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5pc05l
d0VudHJ5KQorICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RUb0VudHJ5OworICAgICAgICBib29s
IGlzTmV3UmVkaXJlY3RGcm9tRW50cnk7CisgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgp
KSB7CisgICAgICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4p
OworICAgICAgICAgICAgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRpcmVjdGluZ09yaWdpblN0
YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFp
bikuaXNOZXdFbnRyeTsKKyAgICAgICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4p
OworICAgICAgICAgICAgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSA9IHRhcmdldFN0YXRpc3RpY3Mu
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VQcmltYXJ5RG9tYWluKS5pc05l
d0VudHJ5OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdP
cmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihzb3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RUb0VudHJ5
ID0gcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8uYWRkKHRhcmdldFByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7CisgICAgICAgICAgICBhdXRv
JiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RGcm9t
RW50cnkgPSB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5h
ZGQoc291cmNlUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChpc05ld1JlZGlyZWN0VG9FbnRyeSB8fCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5KQogICAg
ICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CiAK
QEAgLTIzMyw4ICsyNDMsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVz
b3VyYwogICAgIH0KIAogICAgIGlmIChpc1JlZGlyZWN0KSB7CisgICAgICAgIGJvb2wgaXNOZXdS
ZWRpcmVjdFRvRW50cnk7CisgICAgICAgIGJvb2wgaXNOZXdSZWRpcmVjdEZyb21FbnRyeTsKICAg
ICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKLSAgICAgICAg
aWYgKHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQorICAgICAgICBpc05ld1Jl
ZGlyZWN0VG9FbnRyeSA9IHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5OworICAg
ICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgaXNOZXdSZWRpcmVj
dEZyb21FbnRyeSA9IHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tLmFkZChzb3VyY2VQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5OworCisgICAgICAgIGlmIChp
c05ld1JlZGlyZWN0VG9FbnRyeSB8fCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5KQogICAgICAgICAg
ICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJ
KHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTMgKzcwLDE4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKEtleWUKICAgICAvLyBTdG9yYWdlIGFjY2Vzcwog
ICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3Jp
Z2lucyIsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAKKyAgICAvLyBUb3Ag
ZnJhbWUgc3RhdHMKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAidG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbyIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOworICAgIGVuY29k
ZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCB0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAg
ICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2lucyIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogICAgIAogICAgIC8vIFN1YnJl
c291cmNlIHN0YXRzCiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
KTsKICAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbyIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOwotICAgIAorICAgIGVu
Y29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworCiAgICAgLy8gUHJldmFsZW50
IFJlc291cmNlCiAgICAgZW5jb2Rlci5lbmNvZGVCb29sKCJpc1ByZXZhbGVudFJlc291cmNlIiwg
aXNQcmV2YWxlbnRSZXNvdXJjZSk7CiAgICAgZW5jb2Rlci5lbmNvZGVVSW50MzIoImRhdGFSZWNv
cmRzUmVtb3ZlZCIsIGRhdGFSZWNvcmRzUmVtb3ZlZCk7CkBAIC0xMjUsMTMgKzEzMCwxOCBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllCiAgICAgLy8gU3RvcmFnZSBh
Y2Nlc3MKICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BG
cmFtZU9yaWdpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogCisgICAg
Ly8gVG9wIGZyYW1lIHN0YXRzCisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAg
ICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFN1YmZyYW1lIHN0
YXRzCiAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAgICAKICAgICAv
LyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJz
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2lucyk7CiAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAK
KyAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFBy
ZXZhbGVudCBSZXNvdXJjZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJpc1ByZXZhbGVu
dFJlc291cmNlIiwgaXNQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIyMiwxMyArMjMyLDE4IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0
cmluZygKICAgICAvLyBTdG9yYWdlIGFjY2VzcwogICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwg
InN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN0b3JhZ2VBY2Nlc3NVbmRlclRv
cEZyYW1lT3JpZ2lucyk7CiAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBhcHBlbmRIYXNo
Q291bnRlZFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIsIHRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG8pOworICAgIGFwcGVuZEhhc2hDb3VudGVkU2V0KGJ1aWxkZXIsICJ0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20p
OworCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBhcHBlbmRIYXNoQ291bnRlZFNldChidWls
ZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbnMpOwogICAgIAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCiAgICAgYXBwZW5kSGFz
aENvdW50ZWRTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBz
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAgICBhcHBlbmRIYXNoQ291bnRlZFNl
dChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIsIHN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8pOwotICAgIAorICAgIGFwcGVuZEhhc2hDb3VudGVkU2V0KGJ1aWxkZXIs
ICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20pOworCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCiAgICAgYXBwZW5kQm9vbGVh
bihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDogIik7CkBA
IC0yODMsMTMgKzI5OCwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKGNv
bnN0CiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBtZXJnZUhhc2hTZXQoc3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVPcmlnaW5zLCBvdGhlci5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9y
aWdpbnMpOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNl
dCh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCBvdGhlci50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvKTsKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSwgb3RoZXIudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFN1YmZyYW1l
IHN0YXRzCiAgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zLCBvdGhlci5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAgICAKICAgICAvLyBT
dWJyZXNvdXJjZSBzdGF0cwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7
CiAgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLCBv
dGhlci5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAKKyAgICBtZXJnZUhhc2hD
b3VudGVkU2V0KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwgb3RoZXIuc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0
cwogICAgIGlzUHJldmFsZW50UmVzb3VyY2UgfD0gb3RoZXIuaXNQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICBkYXRhUmVjb3Jkc1JlbW92ZWQgPSBzdGQ6Om1heChkYXRhUmVjb3Jkc1JlbW92ZWQsIG90
aGVyLmRhdGFSZWNvcmRzUmVtb3ZlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDEzICs3MywxOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CiAgICAgLy8g
U3RvcmFnZSBhY2Nlc3MKICAgICBIYXNoU2V0PFN0cmluZz4gc3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVPcmlnaW5zOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgSGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvOworICAgIEhhc2hDb3VudGVkU2V0
PFN0cmluZz4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tOworCiAgICAgLy8gU3ViZnJhbWUg
c3RhdHMKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbnM7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBIYXNoQ291bnRlZFNl
dDxTdHJpbmc+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7CiAgICAgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwotICAgIAorICAgIEhh
c2hDb3VudGVkU2V0PFN0cmluZz4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tOworCiAg
ICAgLy8gUHJldmFsZW50IHJlc291cmNlIHN0YXRzCiAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291
cmNlIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQgeyAwIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjI4MzkwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0wMi0xMiAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3Rp
Y3M6IENsYXNzaWZ5IHJlc291cmNlcyBhcyBwcmV2YWxlbnQgYmFzZWQgb24gcmVkaXJlY3RzIHRv
IG90aGVyIHByZXZhbGVudCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MjY2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzczNzI1
NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXI6Omhhc1By
ZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKToKKyAgICAgICAgICAgIFVuaXF1ZSB0b3Ag
ZnJhbWUgcmVkaXJlY3RzIG5vdyBjb3VudHMgdG93YXJkIGNsYXNzaWZpY2F0aW9uIGFzIHByZXZh
bGVudC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZW5jb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgICAgICBU
ZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgICAgIEJ1bXBlZCB0aGUgc3RhdGlzdGljcyBtb2RlbCB0
byAxMSBiZWNhdXNlIG9mIHRoZSBhZGRlZCBmaWVsZHMuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKToKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gYmFj
ayB0cmFjZXMgcmVkaXJlY3QgY2hhaW5zIHRvIGNsYXNzaWZ5IGRvbWFpbnMKKyAgICAgICAgICAg
IHRoYXQgaGF2ZSByZWRpcmVjdGVkIHRvIGEgbmV3bHkgY2xhc3NpZmllZCBwcmV2YWxlbnQgcmVz
b3VyY2UuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgICAgICBOb3cgdXNlcyB0
aGUgbmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgICAgICBO
ZXcgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIHdlIGFsd2F5cyBjYWxsCisgICAg
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlY3Vyc2l2ZWx5R2V0QWxs
RG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbigpCisgICAgICAgICAgICBhbmQg
Y2FwdHVyZSByZWRpcmVjdCBjaGFpbnMgYmFja3dhcmQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKIDIw
MTgtMDItMTEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFVuaWZ5IGJ1aWxkcyBmb3IgcGxhdGZvcm0tc3BlY2lmaWMgZmlsZXMgaW4g
V2ViS2l0IGxheWVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmll
ci5jcHAJKHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDE1ICszOCwxOCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
OjpoCiAgICAgYXV0byBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPSByZXNv
dXJjZVN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKTsKICAg
ICBhdXRvIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudCA9IHJlc291cmNlU3RhdGlz
dGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpOwogICAgIGF1dG8gc3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luc0NvdW50ID0gcmVzb3VyY2VTdGF0aXN0aWMuc3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCk7CisgICAgYXV0byB0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvQ291bnQgPSByZXNvdXJjZVN0YXRpc3RpYy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
LnNpemUoKTsKICAgICAKICAgICBpZiAoIXN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnND
b3VudAogICAgICAgICAmJiAhc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50Ci0gICAg
ICAgICYmICFzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQpCisgICAgICAgICYmICFz
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQKKyAgICAgICAgJiYgIXRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG9Db3VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlm
IChzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPiBmZWF0dXJlVmVjdG9yTGVu
Z3RoVGhyZXNob2xkCiAgICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3Vu
dCA+IGZlYXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQKLSAgICAgICAgfHwgc3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luc0NvdW50ID4gZmVhdHVyZVZlY3Rvckxlbmd0aFRocmVzaG9sZCkKKyAg
ICAgICAgfHwgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc0NvdW50ID4gZmVhdHVyZVZlY3Rv
ckxlbmd0aFRocmVzaG9sZAorICAgICAgICB8fCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291
bnQgPiBmZWF0dXJlVmVjdG9yTGVuZ3RoVGhyZXNob2xkKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBjbGFzc2lmeShzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291
bnQsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudCwgc3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luc0NvdW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMjI4MzkwKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzOCwx
MyArMjUzOCwxOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljCiAg
ICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAg
ZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CisgICAgZW5j
b2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsKKwogICAgIC8v
IFN1YmZyYW1lIHN0YXRzCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnM7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBlbmNv
ZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luczsKICAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLSAgICAK
KyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
OworCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNz
LmlzUHJldmFsZW50UmVzb3VyY2U7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmRhdGFSZWNv
cmRzUmVtb3ZlZDsKQEAgLTI1NzcsNiArMjU4MiwxMyBAQCBzdGQ6Om9wdGlvbmFsPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+IEFyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7ICAgIAorCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlz
dGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTI1ODgsNiArMjYwMCw5IEBAIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gQXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCiAgICAg
Ly8gUHJldmFsZW50IFJlc291cmNlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LmlzUHJldmFsZW50UmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMjgzOTApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw4ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIGNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvdyB7IDMw
IH07Ci1jb25zdGV4cHIgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDEwIH07Citj
b25zdGV4cHIgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDExIH07CiBjb25zdGV4
cHIgdW5zaWduZWQgbWF4SW1wb3J0YW5jZSB7IDMgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhO
dW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgU3RyaW5nIGlzb2xhdGVkUHJpbWFyeURvbWFp
bihjb25zdCBUJiB2YWx1ZSkKIHsKQEAgLTIyNCw2ICsyMjUsMzUgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaAogICAgIH0pOwogfQogCisKK3Vuc2lnbmVkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHJlc291cmNlU3RhdGlzdGljLCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNUaGF0SGF2
ZVJlZGlyZWN0ZWRUbywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykKK3sKKyAgICBp
ZiAobnVtYmVyT2ZSZWN1cnNpdmVDYWxscyA+PSBtYXhOdW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5S
ZWRpcmVjdFRyYWNlQmFjaykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJIaXQgJXUgcmVjdXJzaXZlIGNhbGxzIGluIHJlZGlyZWN0IGJhY2t0
cmFjZS4gUmV0dXJuaW5nIGVhcmx5LiIsIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGly
ZWN0VHJhY2VCYWNrKTsKKyAgICAgICAgcmV0dXJuIG51bWJlck9mUmVjdXJzaXZlQ2FsbHM7Cisg
ICAgfQorCisgICAgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscysrOworICAgIAorICAgIGZvciAoYXV0
byYgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb21Eb21haW4gOiByZXNvdXJjZVN0YXRpc3Rp
Yy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20udmFsdWVzKCkpIHsKKyAgICAgICAgYXV0
byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb21Eb21haW4pOworICAgICAgICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAuZW5kKCkgfHwgbWFwRW50cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3Vy
Y2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGRvbWFpbnNUaGF0SGF2ZVJl
ZGlyZWN0ZWRUby5hZGQobWFwRW50cnktPnZhbHVlLmhpZ2hMZXZlbERvbWFpbikuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMgPSByZWN1cnNpdmVseUdldEFs
bERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4obWFwRW50cnktPnZhbHVlLCBk
b21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG8sIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOworICAg
IH0KKyAgICBmb3IgKGF1dG8mIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tRG9tYWluIDogcmVz
b3VyY2VTdGF0aXN0aWMudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLnZhbHVlcygpKSB7Cisg
ICAgICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RGcm9tRG9tYWluKTsKKyAgICAgICAgaWYgKG1hcEVudHJ5ID09IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpIHx8IG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVu
dFJlc291cmNlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChkb21haW5zVGhh
dEhhdmVSZWRpcmVjdGVkVG8uYWRkKG1hcEVudHJ5LT52YWx1ZS5oaWdoTGV2ZWxEb21haW4pLmlz
TmV3RW50cnkpCisgICAgICAgICAgICBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzID0gcmVjdXJzaXZl
bHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKG1hcEVudHJ5LT52
YWx1ZSwgZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxz
KTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bWJlck9mUmVjdXJzaXZlQ2FsbHM7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTIz
MSw3ICsyNjEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvCiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5zaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCkgewogICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmICghcmVzb3Vy
Y2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NDbGFzc2lmaWVyLmhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKHJlc291cmNl
U3RhdGlzdGljKSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVu
dFJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXRQcmV2YWxlbnRSZXNvdXJjZShy
ZXNvdXJjZVN0YXRpc3RpYyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmVtb3ZlRGF0YVJlY29y
ZHMoKTsKQEAgLTQ0OCwxMSArNDc4LDI2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlEb21h
aW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4odXJsKV0gewotICAgICAgICBhdXRvJiBzdGF0aXN0
aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9t
YWluKTsKLSAgICAgICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKKyAg
ICAgICAgYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4pOworICAgICAgICBzZXRQcmV2YWxlbnRSZXNv
dXJjZShyZXNvdXJjZVN0YXRpc3RpYyk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykKK3sKKyAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNl
ID0gdHJ1ZTsKKyAgICBIYXNoU2V0PFN0cmluZz4gZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRv
OworICAgIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0Rv
bWFpbihyZXNvdXJjZVN0YXRpc3RpYywgZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLCAwKTsK
KyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbykgewor
ICAgICAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChkb21h
aW4pOworICAgICAgICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5k
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCFtYXBFbnRyeS0+dmFs
dWUuaXNQcmV2YWxlbnRSZXNvdXJjZSk7CisgICAgICAgIG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZh
bGVudFJlc291cmNlID0gdHJ1ZTsKKyAgICB9Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICh1cmwu
aXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpIHsKQEAgLTUzNyw2ICs1ODIsOCBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0CiAgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1h
cnlUb3BGcmFtZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZSksIHByaW1h
cnlTdWJGcmFtZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJmcmFtZSldIHsKICAg
ICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWluKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW4pOworICAg
ICAgICAvLyBGb3IgY29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0
aWNzIGVudHJ5IGZvciB0aGUgdG9wIGZyYW1lIGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5VG9wRnJhbWVEb21haW4pOwogICAg
IH0pOwogfQogCkBAIC01NDgsNiArNTk1LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldAogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5VG9wRnJhbWVEb21haW4gPSBpc29s
YXRlZFByaW1hcnlEb21haW4odG9wRnJhbWUpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW4gPSBp
c29sYXRlZFByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpXSB7CiAgICAgICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlT
dWJyZXNvdXJjZURvbWFpbik7CiAgICAgICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2lucy5hZGQocHJpbWFyeVRvcEZyYW1lRG9tYWluKTsKKyAgICAgICAgLy8gRm9y
IGNvbnNpc3RlbmN5LCBtYWtlIHN1cmUgd2UgYWxzbyBoYXZlIGEgc3RhdGlzdGljcyBlbnRyeSBm
b3IgdGhlIHRvcCBmcmFtZSBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVRvcEZyYW1lRG9tYWluKTsKICAgICB9KTsKIH0KIApA
QCAtNTU5LDYgKzYwOCw0NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2V0CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRpcmVjdERvbWFpbiA9IGlzb2xhdGVkUHJpbWFy
eURvbWFpbihob3N0TmFtZVJlZGlyZWN0ZWRUbyksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpbiA9
IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSldIHsKICAgICAgICAgYXV0byYgc3Rh
dGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eVN1YnJlc291cmNlRG9tYWluKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgICAgICAvLyBGb3Ig
Y29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5IGZv
ciB0aGUgcmVkaXJlY3QgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgfSk7Cit9CisKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0RnJvbShjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVk
aXJlY3RlZEZyb20pCit7CisgICAgaWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJy
ZXNvdXJjZS5pc0VtcHR5KCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbS5pc0JsYW5rVVJMKCkg
fHwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5
RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW4g
PSBpc29sYXRlZFByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpXSB7CisgICAgICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1h
cnlTdWJyZXNvdXJjZURvbWFpbik7CisgICAgICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgICAgICAvLyBG
b3IgY29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5
IGZvciB0aGUgcmVkaXJlY3QgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1l
UmVkaXJlY3RlZFRvKQoreworICAgIGlmICh0b3BGcmFtZUhvc3ROYW1lLmlzQmxhbmtVUkwoKSB8
fCB0b3BGcmFtZUhvc3ROYW1lLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0Js
YW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRpcmVjdERvbWFpbiA9IGlzb2xhdGVk
UHJpbWFyeURvbWFpbihob3N0TmFtZVJlZGlyZWN0ZWRUbyksIHRvcEZyYW1lUHJpbWFyeURvbWFp
biA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3ROYW1lKV0geworICAgICAgICBh
dXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bih0b3BGcmFtZVByaW1hcnlEb21haW4pOworICAgICAgICBzdGF0aXN0aWNzLnRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG8uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgICAgIC8vIEZv
ciBjb25zaXN0ZW5jeSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkg
Zm9yIHRoZSByZWRpcmVjdCBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKGNvbnN0IFVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgVVJMJiBob3N0TmFt
ZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIGlmICh0b3BGcmFtZUhvc3ROYW1lLmlzQmxhbmtVUkwo
KSB8fCB0b3BGcmFtZUhvc3ROYW1lLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9t
LmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5UmVkaXJlY3REb21haW4gPSBp
c29sYXRlZFByaW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSksIHRvcEZyYW1lUHJp
bWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3ROYW1lKV0gewor
ICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJp
bWFyeURvbWFpbih0b3BGcmFtZVByaW1hcnlEb21haW4pOworICAgICAgICBzdGF0aXN0aWNzLnRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAg
ICAgICAgLy8gRm9yIGNvbnNpc3RlbmN5LCBtYWtlIHN1cmUgd2UgYWxzbyBoYXZlIGEgc3RhdGlz
dGljcyBlbnRyeSBmb3IgdGhlIHJlZGlyZWN0IGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5UmVkaXJlY3REb21haW4pOwogICAg
IH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjI4MzkwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7CiAgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiB0b3BGcmFtZSk7CiAgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CiAgICAgdm9pZCBz
Y2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0xNjcsNiArMTcwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
UGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNz
KFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOworICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5R2V0QWxs
RG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxTdHJpbmc+JiBkb21haW5zVGhhdEhhdmVSZWRp
cmVjdGVkVG8sIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOworICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAg
IHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogCiAgICAgdm9pZCByZXNl
dENvb2tpZVBhcnRpdGlvbmluZ1N0YXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlzaW9u
IDIyODM5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsMzMgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicgogICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0VG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSkpOwogfQogCit2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCit7CisgICAgYXV0byogc3RvcmUgPSBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBz
dG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmlu
ZygpKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQoreworICAgIGF1dG8q
IHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRU
byktPnN0cmluZygpKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkK
K3sKKyAgICBhdXRvKiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcykKIHsKICAgICBhdXRvKiBzdG9y
ZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjI4MzkwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDkgQEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aQogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3Qp
OwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0
UmVkaXJlY3RlZFRvKTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZy
b20pOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
ZG91YmxlIHNlY29uZHMpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI4MzkwKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMDItMTIgIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9h
ZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJl
ZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM3MzcyNTcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTgtMDItMTIgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVXUyBzaG91bGQgcnVuIFdp
bmRvd3MgdGVzdHMuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMjI4MzkwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OTYsNiArMjU5NiwyNCBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzCiAgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhkYXRhU3RvcmUsIGhvc3Qs
IGhvc3RSZWRpcmVjdGVkVG8pOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJp
bmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29u
dGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShkYXRh
U3RvcmUsIGhvc3QsIGhvc3RSZWRpcmVjdGVkRnJvbSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9z
dCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUg
PSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGRh
dGFTdG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRUbyk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBo
b3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCit7CisgICAgYXV0byogZGF0YVN0
b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7Cisg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RG
cm9tKGRhdGFTdG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKK30KKwogdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91Ymxl
IHNlY29uZHMpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURh
dGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMjgzOTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJp
bmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0cmluZ1JlZiBob3N0
TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3Rh
dGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5nUmVmIGhvc3QsIFdL
U3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RS
ZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSk7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUg
c2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHMoKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjgzOTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw2ICsxMTA3LDQ4IEBA
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20i
KSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlv
bmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNz
YWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VC
b2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lUmVkaXJlY3RlZEZyb21LZXkoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lUmVkaXJlY3RlZEZyb20i
KSk7CisgICAgICAgIAorICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgaG9zdE5hbWVLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWVS
ZWRpcmVjdGVkRnJvbSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbUtl
eS5nZXQoKSkpOworICAgICAgICAKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShob3N0TmFtZSwgaG9z
dE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8iKSkgeworICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAg
ICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBz
dGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGhvc3ROYW1lUmVkaXJlY3RlZFRvS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJIb3N0TmFtZVJlZGlyZWN0ZWRUbyIpKTsKKyAgICAgICAgCisgICAgICAgIFdL
U3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkp
OworICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyA9IHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgaG9zdE5hbWVSZWRpcmVjdGVkVG9LZXkuZ2V0KCkpKTsKKyAgICAgICAgCisgICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdFRvKGhvc3ROYW1lLCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJv
bSIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgICAgICAKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2Fn
ZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVLZXkoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikpOworICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVSZWRpcmVjdGVkRnJvbUtleShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVkRnJv
bSIpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFt
ZVJlZGlyZWN0ZWRGcm9tID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9t
S2V5LmdldCgpKSk7CisgICAgICAgIAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGhvc3ROYW1lLCBob3N0
TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iKSkgewogICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwogICAgICAg
ICBXS0RvdWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VC
b2R5KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjI4MzkwKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ3Nyw2ICsxNDc3LDgwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1N1YnJlc291
cmMKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNp
bmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCks
IG51bGxwdHIpOwogfQogCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1N1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBo
b3N0TmFtZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsK
KyAgICAKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJIb3N0TmFtZSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkgfSk7CisgICAgCisgICAga2V5cy5hcHBl
bmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRp
cmVjdGVkRnJvbSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSB9KTsKKyAgICAKKyAgICBW
ZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5
cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNb
aV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9
CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdEZyb20iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBt
ZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5cy5kYXRhKCksIHJh
d1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0
UnVubmVyOjpzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKEpTU3RyaW5nUmVm
IGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKK3sKKyAgICBWZWN0
b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0
cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSB9KTsKKyAgICB2YWx1ZXMu
YXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpIH0p
OworICAgIAorICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkhvc3ROYW1lUmVkaXJlY3RlZFRvIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7
IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1lUmVkaXJlY3RlZFRv
KSB9KTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkp
OworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
cmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVl
c1tpXS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvIikpOworICAgIFdLUmV0YWluUHRyPFdLRGlj
dGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tl
eXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworICAgIFdLQnVu
ZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVu
ZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RG
cm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRG
cm9tKQoreworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAg
VmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKKyAgICAKKyAgICBrZXlzLmFw
cGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIp
IH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0
cmluZyhob3N0TmFtZSkgfSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVkRnJvbSIpIH0pOwor
ICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyho
b3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSB9KTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+
IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2
YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAg
IHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20iKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBX
S0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tl
eXMuc2l6ZSgpKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VC
b2R5LmdldCgpLCBudWxscHRyKTsKK30KKworCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3Rp
Y3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQogewogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iKSk7
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAkocmV2aXNpb24gMjI4MzkwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1l
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4o
SlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhKU1N0cmluZ1Jl
ZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQg
c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhv
c3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oSlNTdHJpbmdSZWYgaG9zdE5hbWUs
IEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJp
bmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQo
Ym9vbCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlzaW9uIDIyODM5MCkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgsOSBAQCBpbnRlcmZhY2UgVGVz
dFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIHRvcEZyYW1lSG9zdE5hbWUpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihET01TdHJp
bmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZUhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5nIGhvc3ROYW1lLCBE
T01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5n
IGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgaG9zdE5hbWVSZWRp
cmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RG
cm9tKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBz
ZWNvbmRzKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZShkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIo
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM5MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE4LTAyLTEyICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiByZWRpcmVjdHMgdG8g
b3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzM3MjU3
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFz
ZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNz
aWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3Qt
Y29sbHVzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1
ZS1yZWRpcmVjdHMtdG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRv
cC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3RzIGFkZGVkIGFz
IFsgUGFzcyBdLgorCiAyMDE4LTAyLTEyICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyODM3Ni4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2
YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0
LWNvbGx1c2lvbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNl
ZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIGZvciBjbGFzc2lmaWNhdGlvbiBiYXNlZCBv
biBzdWJyZXNvdXJjZSByZWRpcmVjdCBjb2xsdXNpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIENvbGx1ZGluZyBob3N0IDEgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuCitQQVNTIENvbGx1ZGluZyBob3N0IDIgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuCitQQVNTIENvbGx1ZGluZyBob3N0IDMgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
CitQQVNTIENvbGx1ZGluZyBob3N0IDQgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuCitQ
QVNTIENvbGx1ZGluZyBsb2NhbGhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYWZ0
ZXIgYWN0dWFsIHN1YiBmcmFtZSByZWRpcmVjdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJl
c291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQt
YmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNz
aWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBmb3IgY2xhc3Np
ZmljYXRpb24gYmFzZWQgb24gc3VicmVzb3VyY2UgcmVkaXJlY3QgY29sbHVzaW9uLiIpOworICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICIxMjcu
MC4wLjE6ODAwMCI7CisgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RV
bmRlclRlc3QgKyAiL3RlbXAiOworICAgIGNvbnN0IHN1YnJlc291cmNlT3JpZ2luMSA9ICJodHRw
Oi8vMTI3LjAuMC4yOjgwMDAvdGVtcCI7CisgICAgY29uc3Qgc3VicmVzb3VyY2VPcmlnaW4yID0g
Imh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsKKyAgICBjb25zdCBzdWJyZXNvdXJjZU9yaWdp
bjMgPSAiaHR0cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAiOworICAgIGNvbnN0IHN1YnJlc291cmNl
T3JpZ2luNCA9ICJodHRwOi8vMTI3LjAuMC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlvbiBz
ZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgeworICAgICAgICBpZiAoIWVuYWJsZSkKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAg
ICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZSk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5h
YmxlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN0YXRpc3RpY3NVcmwsIHN1
YnJlc291cmNlT3JpZ2luMSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlT3JpZ2luMSwgc3VicmVzb3VyY2VP
cmlnaW4yKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VPcmlnaW4yLCBzdWJyZXNvdXJjZU9yaWdpbjMpOwor
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
RnJvbShzdWJyZXNvdXJjZU9yaWdpbjMsIHN1YnJlc291cmNlT3JpZ2luNCk7CisKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwg
dHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZXhwbGlj
aXR5IHNldCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAg
ICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdWJyZXNvdXJj
ZU9yaWdpbjEpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3QgMSBnb3Qg
c2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3VicmVzb3VyY2VPcmlnaW4yKSkKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDIgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKHN1YnJlc291cmNlT3JpZ2luMykpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xs
dWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICBp
ZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdWJyZXNvdXJjZU9y
aWdpbjQpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3QgNCBnb3Qgc2V0
IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpKQorICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGxvY2FsaG9zdCBnb3Qgc2V0IGFzIHByZXZhbGVu
dCByZXNvdXJjZSBhZnRlciBhY3R1YWwgc3ViIGZyYW1lIHJlZGlyZWN0LiIpOworCisgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVyVGVzdCAmJiB3
aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUodHJ1ZSk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgZmFsc2UpOworICAgICAgICBpZiAodGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisgICAgfQorPC9zY3JpcHQ+Cis8aWZyYW1lIG9ubG9hZD0icnVuVGVzdCgpIiBz
cmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9yZWRpcmVjdC5waHA/cmVkaXJlY3RUbz1odHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9vbmNsaWNrLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNz
aWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1y
ZWRpcmVjdC1jb2xsdXNpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxl
bnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJh
c2VkIG9uIHRvcCBmcmFtZSByZWRpcmVjdCBjb2xsdXNpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIENvbGx1ZGluZyBob3N0IDEgZ290IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuCitQQVNTIENvbGx1ZGluZyBob3N0IDIgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuCitQQVNTIENvbGx1ZGluZyBob3N0IDMgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuCitQQVNTIENvbGx1ZGluZyBob3N0IDQgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
CitQQVNTIENvbGx1ZGluZyBsb2NhbGhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Ug
YWZ0ZXIgYWN0dWFsIG5hdmlnYXRpb25hbCByZWRpcmVjdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9u
LXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFs
ZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xh
c3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBmb3IgY2xhc3Np
ZmljYXRpb24gYmFzZWQgb24gdG9wIGZyYW1lIHJlZGlyZWN0IGNvbGx1c2lvbi4iKTsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAiMTI3LjAu
MC4xOjgwMDAiOworICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5k
ZXJUZXN0ICsgIi90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjEgPSAiaHR0cDovLzEy
Ny4wLjAuMjo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMiA9ICJodHRwOi8v
MTI3LjAuMC4zOjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4zID0gImh0dHA6
Ly8xMjcuMC4wLjQ6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjQgPSAiaHR0
cDovLzEyNy4wLjAuNTo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luNSA9ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvIjsKKworICAgIGZ1bmN0aW9uIHNldEVuYWJsZUZlYXR1cmUo
ZW5hYmxlKSB7CisgICAgICAgIGlmICghZW5hYmxlKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworICAgICAgICBpbnRlcm5hbHMuc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2lu
MSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKHRvcEZyYW1lT3JpZ2luMSwgdG9wRnJhbWVPcmlnaW4yKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20odG9wRnJhbWVPcmln
aW4yLCB0b3BGcmFtZU9yaWdpbjMpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZU9yaWdpbjMsIHRvcEZyYW1lT3JpZ2lu
NCk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
c3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZXhwbGljaXR5IHNldCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSh0b3BGcmFtZU9yaWdpbjEpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5n
IGhvc3QgMSBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodG9wRnJhbWVPcmlnaW4yKSkK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDIgZ290IHNldCBhcyBwcmV2
YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHRvcEZyYW1lT3JpZ2luMykpCisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAg
ICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0b3BGcmFt
ZU9yaWdpbjQpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVkaW5nIGhvc3QgNCBnb3Qg
c2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodG9wRnJhbWVPcmlnaW41KSkKKyAgICAgICAgICAg
IHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBsb2NhbGhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UgYWZ0ZXIgYWN0dWFsIG5hdmlnYXRpb25hbCByZWRpcmVjdC4iKTsKKworICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQor
CisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiICYmIHdpbmRvdy50ZXN0UnVu
bmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVl
KTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShz
dGF0aXN0aWNzVXJsLCBmYWxzZSk7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgbm9uLXByZXZhbGVudCByZXNvdXJjZS4iKTsKKwor
ICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdG9wRnJhbWVPcmlnaW41ICsgInJlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD9yZWRpcmVjdFRvPWh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZh
bGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwjY29udGludWUi
OworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc05vdGlmeU9ic2Vy
dmVyKCk7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVj
dHMtdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9w
LWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBjbGFzc2lm
aWNhdGlvbiBiYXNlZCBvbiB0b3AgZnJhbWUgdW5pcXVlIHJlZGlyZWN0cyB0by4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSG9zdCBjbGFzc2lmaWVkIGFzIHByZXZhbGVu
dCByZXNvdXJjZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJl
Y3RzLXRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUt
dW5pcXVlLXJlZGlyZWN0cy10by5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFz
ZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBmb3IgY2xhc3NpZmljYXRpb24gYmFzZWQgb24gdG9w
IGZyYW1lIHVuaXF1ZSByZWRpcmVjdHMgdG8uIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gIjEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25z
dCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7Cisg
ICAgY29uc3QgdG9wRnJhbWVPcmlnaW4xID0gImh0dHA6Ly8xMjcuMC4wLjI6ODAwMC90ZW1wIjsK
KyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjIgPSAiaHR0cDovLzEyNy4wLjAuMzo4MDAwL3RlbXAi
OworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMyA9ICJodHRwOi8vMTI3LjAuMC40OjgwMDAvdGVt
cCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW40ID0gImh0dHA6Ly8xMjcuMC4wLjU6ODAwMC90
ZW1wIjsKKworICAgIGZ1bmN0aW9uIHNldEVuYWJsZUZlYXR1cmUoZW5hYmxlKSB7CisgICAgICAg
IGlmICghZW5hYmxlKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZSgpOworICAgICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoZW5hYmxlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdl
UGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbXBs
ZXRlVGVzdCgpIHsKKyAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBk
aWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBjbGFzc2lmaWVkIGFzIHByZXZhbGVu
dCByZXNvdXJjZS4iKTsKKworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKKyAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKHN0
YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9y
aWdpbjIpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4zKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKHN0YXRpc3RpY3NVcmws
IHRvcEZyYW1lT3JpZ2luNCk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGlj
c0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNvbXBsZXRlVGVzdCk7CisKKyAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAg
IH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09PSBob3N0VW5kZXJUZXN0ICYm
IHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZSh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh0cnVlKTsKKworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCBmYWxzZSk7
CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0
YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBz
ZXQgYXMgbm9uLXByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgcnVuVGVzdCgpOworICAg
IH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIyODM5MCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiAr
Njg5LDkgQEAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaQogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1v
bi1zdWItZnJhbWUtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbCBbIFBhc3MgXQogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1v
bi1zdWJyZXNvdXJjZS11bmRlci10b3AtZnJhbWUtb3JpZ2lucy5odG1sIFsgUGFzcyBdCiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2Vk
LW9uLXN1YnJlc291cmNlLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFBhc3MgXQoraHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1v
bi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10
b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZy
YW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MTIy
MyBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xlYXItaW4tbWVtb3J5LWFuZC1w
ZXJzaXN0ZW50LXN0b3JlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTgwNzAz
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlvbi5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333669</attachid>
            <date>2018-02-12 20:59:57 -0800</date>
            <delta_ts>2018-02-12 22:07:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-182664-20180212205930.patch</filename>
            <type>text/plain</type>
            <size>60040</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAyLTEyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBvbiByZWRpcmVj
dHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NzM3MjU3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJl
dmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMt
cHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sCisK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAg
ICAgICBXZSBub3cgY29sbGVjdCBzdGF0aXN0aWNzIG9uIHRvcCBmcmFtZSBuYXZpZ2F0aW9uYWwg
cmVkaXJlY3RzIHRvbywgYm90aCB0byBhbmQgZnJvbS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAgICAgV2Ug
bm93IGNvbGxlY3Qgc3RhdGlzdGljcyBvbiByZWRpcmVjdHMgZnJvbSBpbiBhZGRpdGlvbiB0byB0
aGUgZXhpc3RpbmcgcmVkaXJlY3RzIHRvLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
bWVyZ2UpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAg
ICAgICAgICBUaHJlZSBuZXcgZmllbGRzOgorICAgICAgICAgICAgLSB0b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvCisgICAgICAgICAgICAtIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbQorICAg
ICAgICAgICAgLSBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20KKwogMjAxOC0wMi0xMiAg
TWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMjgzNzYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw5
ICsxMzgsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAg
QVNTRVJUKHRvcEZyYW1lLmRvY3VtZW50KCkpOwogICAgIEFTU0VSVCh0b3BGcmFtZS5wYWdlKCkp
OwogCi0gICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAK
ICAgICBhdXRvKiBwYWdlID0gdG9wRnJhbWUucGFnZSgpOwogICAgIGlmICghc2hvdWxkTG9nKHBh
Z2UpKQogICAgICAgICByZXR1cm47CkBAIC0xNzcsOCArMTc0LDIxIEBAIHZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKIAogICAgIGlmIChpc1JlZGlyZWN0CiAgICAgICAg
ICYmICFhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCBzb3VyY2VQcmltYXJ5RG9tYWluLCB0YXJn
ZXRQcmltYXJ5RG9tYWluKSkgewotICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRp
c3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVBy
aW1hcnlEb21haW4pOwotICAgICAgICBpZiAocmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldFByaW1hcnlEb21haW4pLmlzTmV3
RW50cnkpCisgICAgICAgIGJvb2wgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSBmYWxzZTsKKyAgICAg
ICAgYm9vbCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5ID0gZmFsc2U7CisgICAgICAgIGlmIChmcmFt
ZS5pc01haW5GcmFtZSgpKSB7CisgICAgICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJj
ZVByaW1hcnlEb21haW4pOworICAgICAgICAgICAgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRp
cmVjdGluZ09yaWdpblN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFy
Z2V0UHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeTsKKyAgICAgICAgICAgIGF1dG8mIHRhcmdldFN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdl
dFByaW1hcnlEb21haW4pOworICAgICAgICAgICAgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSA9IHRh
cmdldFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VQcmlt
YXJ5RG9tYWluKS5pc05ld0VudHJ5OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0
byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGlzTmV3
UmVkaXJlY3RUb0VudHJ5ID0gcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldFByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7Cisg
ICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGlz
TmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChpc05ld1JlZGlyZWN0VG9FbnRyeSB8fCBpc05ld1JlZGlyZWN0
RnJvbUVudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0g
dHJ1ZTsKICAgICB9CiAKQEAgLTIzNCw3ICsyNDQsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nU3VicmVzb3VyYwogCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgYXV0
byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKLSAgICAgICAgaWYgKHJlZGly
ZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0
YXJnZXRQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQorICAgICAgICBib29sIGlzTmV3UmVkaXJl
Y3RUb0VudHJ5ID0gcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8uYWRkKHRhcmdldFByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7CisgICAgICAg
IGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOworICAgICAgICBib29sIGlzTmV3UmVkaXJl
Y3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeTsKKworICAgICAgICBpZiAo
aXNOZXdSZWRpcmVjdFRvRW50cnkgfHwgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSkKICAgICAgICAg
ICAgIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IHRydWU7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
CShyZXZpc2lvbiAyMjgzOTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEzICs3MCwxOCBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MK
ICAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9y
aWdpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwogCisgICAgLy8gVG9w
IGZyYW1lIHN0YXRzCisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBlbmNv
ZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwg
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAg
ICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKICAgICAKICAgICAvLyBTdWJy
ZXNvdXJjZSBzdGF0cwogICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsICJzdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
cyk7CiAgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2RlciwgInN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAKKyAgICBl
bmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKwogICAgIC8vIFByZXZhbGVu
dCBSZXNvdXJjZQogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaXNQcmV2YWxlbnRSZXNvdXJjZSIs
IGlzUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlVUludDMyKCJkYXRhUmVj
b3Jkc1JlbW92ZWQiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwpAQCAtMTI1LDEzICsxMzAsMTggQEAg
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZQogICAgIC8vIFN0b3JhZ2Ug
YWNjZXNzCiAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVPcmlnaW5zIiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zKTsKIAorICAg
IC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7Cisg
ICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
RnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAgICAvLyBTdWJmcmFtZSBz
dGF0cwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgCiAgICAg
Ly8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAi
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnMpOwogICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7Ci0gICAg
CisgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAgICAvLyBQ
cmV2YWxlbnQgUmVzb3VyY2UKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbCgiaXNQcmV2YWxl
bnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMjIsMTMgKzIzMiwxOCBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9T
dHJpbmcoCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIs
ICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZU9yaWdpbnMpOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgYXBwZW5kSGFz
aENvdW50ZWRTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBhcHBlbmRIYXNoQ291bnRlZFNldChidWlsZGVyLCAi
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9t
KTsKKwogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgYXBwZW5kSGFzaENvdW50ZWRTZXQoYnVp
bGRlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zKTsKICAgICAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGFwcGVuZEhh
c2hDb3VudGVkU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwg
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgYXBwZW5kSGFzaENvdW50ZWRT
ZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAKKyAgICBhcHBlbmRIYXNoQ291bnRlZFNldChidWlsZGVy
LCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tKTsKKwogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQogICAgIGFwcGVuZEJvb2xl
YW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1ByZXZhbGVudFJlc291cmNlKTsK
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIpOwpA
QCAtMjgzLDEzICsyOTgsMTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjptZXJnZShj
b25zdAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgbWVyZ2VIYXNoU2V0KHN0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVP
cmlnaW5zKTsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIG1lcmdlSGFzaENvdW50ZWRT
ZXQodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIudG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbyk7CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldCh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zy
b20sIG90aGVyLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAgICAvLyBTdWJmcmFt
ZSBzdGF0cwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2lucywgb3RoZXIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgCiAgICAgLy8g
U3VicmVzb3VyY2Ugc3RhdHMKICAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMp
OwogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywg
b3RoZXIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7Ci0gICAgCisgICAgbWVyZ2VIYXNo
Q291bnRlZFNldChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIG90aGVyLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisKICAgICAvLyBQcmV2YWxlbnQgcmVzb3VyY2Ugc3Rh
dHMKICAgICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVyLmlzUHJldmFsZW50UmVzb3VyY2U7
CiAgICAgZGF0YVJlY29yZHNSZW1vdmVkID0gc3RkOjptYXgoZGF0YVJlY29yZHNSZW1vdmVkLCBv
dGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lvbiAyMjgzOTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MywxMyArNzMsMTggQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgewogICAgIC8v
IFN0b3JhZ2UgYWNjZXNzCiAgICAgSGFzaFNldDxTdHJpbmc+IHN0b3JhZ2VBY2Nlc3NVbmRlclRv
cEZyYW1lT3JpZ2luczsKIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIEhhc2hDb3VudGVk
U2V0PFN0cmluZz4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKKyAgICBIYXNoQ291bnRlZFNl
dDxTdHJpbmc+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsKKwogICAgIC8vIFN1YmZyYW1l
IHN0YXRzCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zOwogICAgIAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCiAgICAgSGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwogICAgIEhhc2hDb3Vu
dGVkU2V0PFN0cmluZz4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLSAgICAKKyAgICBI
YXNoQ291bnRlZFNldDxTdHJpbmc+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbTsKKwog
ICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cwogICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNv
dXJjZSB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkIHsgMCB9OwpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDItMTIgIEpvaG4gV2lsYW5k
ZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0
aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0cyB0
byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3Mzcy
NTcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXI6Omhhc1By
ZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKToKKyAgICAgICAgICAgIFVuaXF1ZSB0b3Ag
ZnJhbWUgcmVkaXJlY3RzIG5vdyBjb3VudHMgdG93YXJkIGNsYXNzaWZpY2F0aW9uIGFzIHByZXZh
bGVudC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZW5jb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgICAgICBU
ZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgICAgIEJ1bXBlZCB0aGUgc3RhdGlzdGljcyBtb2RlbCB0
byAxMSBiZWNhdXNlIG9mIHRoZSBhZGRlZCBmaWVsZHMuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKToKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gYmFj
ayB0cmFjZXMgcmVkaXJlY3QgY2hhaW5zIHRvIGNsYXNzaWZ5IGRvbWFpbnMKKyAgICAgICAgICAg
IHRoYXQgaGF2ZSByZWRpcmVjdGVkIHRvIGEgbmV3bHkgY2xhc3NpZmllZCBwcmV2YWxlbnQgcmVz
b3VyY2UuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgICAgICBOb3cgdXNlcyB0
aGUgbmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgICAgICBO
ZXcgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIHdlIGFsd2F5cyBjYWxsCisgICAg
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlY3Vyc2l2ZWx5R2V0QWxs
RG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbigpCisgICAgICAgICAgICBhbmQg
Y2FwdHVyZSByZWRpcmVjdCBjaGFpbnMgYmFja3dhcmQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKIDIw
MTgtMDItMTEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFVuaWZ5IGJ1aWxkcyBmb3IgcGxhdGZvcm0tc3BlY2lmaWMgZmlsZXMgaW4g
V2ViS2l0IGxheWVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmll
ci5jcHAJKHJldmlzaW9uIDIyODM5MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDE1ICszOCwxOCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
OjpoCiAgICAgYXV0byBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPSByZXNv
dXJjZVN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKTsKICAg
ICBhdXRvIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudCA9IHJlc291cmNlU3RhdGlz
dGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpOwogICAgIGF1dG8gc3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luc0NvdW50ID0gcmVzb3VyY2VTdGF0aXN0aWMuc3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCk7CisgICAgYXV0byB0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvQ291bnQgPSByZXNvdXJjZVN0YXRpc3RpYy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
LnNpemUoKTsKICAgICAKICAgICBpZiAoIXN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnND
b3VudAogICAgICAgICAmJiAhc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50Ci0gICAg
ICAgICYmICFzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQpCisgICAgICAgICYmICFz
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQKKyAgICAgICAgJiYgIXRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG9Db3VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlm
IChzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291bnQgPiBmZWF0dXJlVmVjdG9yTGVu
Z3RoVGhyZXNob2xkCiAgICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3Vu
dCA+IGZlYXR1cmVWZWN0b3JMZW5ndGhUaHJlc2hvbGQKLSAgICAgICAgfHwgc3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luc0NvdW50ID4gZmVhdHVyZVZlY3Rvckxlbmd0aFRocmVzaG9sZCkKKyAg
ICAgICAgfHwgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc0NvdW50ID4gZmVhdHVyZVZlY3Rv
ckxlbmd0aFRocmVzaG9sZAorICAgICAgICB8fCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291
bnQgPiBmZWF0dXJlVmVjdG9yTGVuZ3RoVGhyZXNob2xkKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBjbGFzc2lmeShzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zQ291
bnQsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudCwgc3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luc0NvdW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMjI4MzkwKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzOCwx
MyArMjUzOCwxOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljCiAg
ICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zOwogCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAg
ZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CisgICAgZW5j
b2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsKKwogICAgIC8v
IFN1YmZyYW1lIHN0YXRzCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnM7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBlbmNv
ZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luczsKICAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLSAgICAK
KyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
OworCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNz
LmlzUHJldmFsZW50UmVzb3VyY2U7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmRhdGFSZWNv
cmRzUmVtb3ZlZDsKQEAgLTI1NzcsNiArMjU4MiwxMyBAQCBzdGQ6Om9wdGlvbmFsPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+IEFyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7ICAgIAorCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlz
dGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTI1ODgsNiArMjYwMCw5IEBAIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gQXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCiAgICAg
Ly8gUHJldmFsZW50IFJlc291cmNlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LmlzUHJldmFsZW50UmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMjgzOTApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw4ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIGNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvdyB7IDMw
IH07Ci1jb25zdGV4cHIgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDEwIH07Citj
b25zdGV4cHIgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDExIH07CiBjb25zdGV4
cHIgdW5zaWduZWQgbWF4SW1wb3J0YW5jZSB7IDMgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhO
dW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgU3RyaW5nIGlzb2xhdGVkUHJpbWFyeURvbWFp
bihjb25zdCBUJiB2YWx1ZSkKIHsKQEAgLTIyNCw2ICsyMjUsMzUgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaAogICAgIH0pOwogfQogCisKK3Vuc2lnbmVkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHJlc291cmNlU3RhdGlzdGljLCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNUaGF0SGF2
ZVJlZGlyZWN0ZWRUbywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykKK3sKKyAgICBp
ZiAobnVtYmVyT2ZSZWN1cnNpdmVDYWxscyA+PSBtYXhOdW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5S
ZWRpcmVjdFRyYWNlQmFjaykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJIaXQgJXUgcmVjdXJzaXZlIGNhbGxzIGluIHJlZGlyZWN0IGJhY2t0
cmFjZS4gUmV0dXJuaW5nIGVhcmx5LiIsIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGly
ZWN0VHJhY2VCYWNrKTsKKyAgICAgICAgcmV0dXJuIG51bWJlck9mUmVjdXJzaXZlQ2FsbHM7Cisg
ICAgfQorCisgICAgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscysrOworICAgIAorICAgIGZvciAoYXV0
byYgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb21Eb21haW4gOiByZXNvdXJjZVN0YXRpc3Rp
Yy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20udmFsdWVzKCkpIHsKKyAgICAgICAgYXV0
byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb21Eb21haW4pOworICAgICAgICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAuZW5kKCkgfHwgbWFwRW50cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3Vy
Y2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGRvbWFpbnNUaGF0SGF2ZVJl
ZGlyZWN0ZWRUby5hZGQobWFwRW50cnktPnZhbHVlLmhpZ2hMZXZlbERvbWFpbikuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMgPSByZWN1cnNpdmVseUdldEFs
bERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4obWFwRW50cnktPnZhbHVlLCBk
b21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG8sIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOworICAg
IH0KKyAgICBmb3IgKGF1dG8mIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tRG9tYWluIDogcmVz
b3VyY2VTdGF0aXN0aWMudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLnZhbHVlcygpKSB7Cisg
ICAgICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RGcm9tRG9tYWluKTsKKyAgICAgICAgaWYgKG1hcEVudHJ5ID09IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpIHx8IG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVu
dFJlc291cmNlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChkb21haW5zVGhh
dEhhdmVSZWRpcmVjdGVkVG8uYWRkKG1hcEVudHJ5LT52YWx1ZS5oaWdoTGV2ZWxEb21haW4pLmlz
TmV3RW50cnkpCisgICAgICAgICAgICBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzID0gcmVjdXJzaXZl
bHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKG1hcEVudHJ5LT52
YWx1ZSwgZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxz
KTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bWJlck9mUmVjdXJzaXZlQ2FsbHM7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTIz
MSw3ICsyNjEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvCiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5zaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCkgewogICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmICghcmVzb3Vy
Y2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NDbGFzc2lmaWVyLmhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKHJlc291cmNl
U3RhdGlzdGljKSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVu
dFJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXRQcmV2YWxlbnRSZXNvdXJjZShy
ZXNvdXJjZVN0YXRpc3RpYyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmVtb3ZlRGF0YVJlY29y
ZHMoKTsKQEAgLTQ0OCwxMSArNDc4LDI2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlEb21h
aW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4odXJsKV0gewotICAgICAgICBhdXRvJiBzdGF0aXN0
aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9t
YWluKTsKLSAgICAgICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKKyAg
ICAgICAgYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4pOworICAgICAgICBzZXRQcmV2YWxlbnRSZXNv
dXJjZShyZXNvdXJjZVN0YXRpc3RpYyk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykKK3sKKyAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNl
ID0gdHJ1ZTsKKyAgICBIYXNoU2V0PFN0cmluZz4gZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRv
OworICAgIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0Rv
bWFpbihyZXNvdXJjZVN0YXRpc3RpYywgZG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvLCAwKTsK
KyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUbykgewor
ICAgICAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChkb21h
aW4pOworICAgICAgICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5k
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCFtYXBFbnRyeS0+dmFs
dWUuaXNQcmV2YWxlbnRSZXNvdXJjZSk7CisgICAgICAgIG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZh
bGVudFJlc291cmNlID0gdHJ1ZTsKKyAgICB9Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICh1cmwu
aXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpIHsKQEAgLTUzNyw2ICs1ODIsOCBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0CiAgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1h
cnlUb3BGcmFtZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZSksIHByaW1h
cnlTdWJGcmFtZURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJmcmFtZSldIHsKICAg
ICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWluKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW4pOworICAg
ICAgICAvLyBGb3IgY29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0
aWNzIGVudHJ5IGZvciB0aGUgdG9wIGZyYW1lIGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5VG9wRnJhbWVEb21haW4pOwogICAg
IH0pOwogfQogCkBAIC01NDgsNiArNTk1LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldAogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5VG9wRnJhbWVEb21haW4gPSBpc29s
YXRlZFByaW1hcnlEb21haW4odG9wRnJhbWUpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW4gPSBp
c29sYXRlZFByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpXSB7CiAgICAgICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlT
dWJyZXNvdXJjZURvbWFpbik7CiAgICAgICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2lucy5hZGQocHJpbWFyeVRvcEZyYW1lRG9tYWluKTsKKyAgICAgICAgLy8gRm9y
IGNvbnNpc3RlbmN5LCBtYWtlIHN1cmUgd2UgYWxzbyBoYXZlIGEgc3RhdGlzdGljcyBlbnRyeSBm
b3IgdGhlIHRvcCBmcmFtZSBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVRvcEZyYW1lRG9tYWluKTsKICAgICB9KTsKIH0KIApA
QCAtNTU5LDYgKzYwOCw0NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2V0CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRpcmVjdERvbWFpbiA9IGlzb2xhdGVkUHJpbWFy
eURvbWFpbihob3N0TmFtZVJlZGlyZWN0ZWRUbyksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpbiA9
IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSldIHsKICAgICAgICAgYXV0byYgc3Rh
dGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eVN1YnJlc291cmNlRG9tYWluKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgICAgICAvLyBGb3Ig
Y29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5IGZv
ciB0aGUgcmVkaXJlY3QgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgfSk7Cit9CisKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0RnJvbShjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVk
aXJlY3RlZEZyb20pCit7CisgICAgaWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJy
ZXNvdXJjZS5pc0VtcHR5KCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbS5pc0JsYW5rVVJMKCkg
fHwgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5
RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW4g
PSBpc29sYXRlZFByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpXSB7CisgICAgICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1h
cnlTdWJyZXNvdXJjZURvbWFpbik7CisgICAgICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW4pOworICAgICAgICAvLyBG
b3IgY29uc2lzdGVuY3ksIG1ha2Ugc3VyZSB3ZSBhbHNvIGhhdmUgYSBzdGF0aXN0aWNzIGVudHJ5
IGZvciB0aGUgcmVkaXJlY3QgZG9tYWluLgorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1l
UmVkaXJlY3RlZFRvKQoreworICAgIGlmICh0b3BGcmFtZUhvc3ROYW1lLmlzQmxhbmtVUkwoKSB8
fCB0b3BGcmFtZUhvc3ROYW1lLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0Js
YW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRpcmVjdERvbWFpbiA9IGlzb2xhdGVk
UHJpbWFyeURvbWFpbihob3N0TmFtZVJlZGlyZWN0ZWRUbyksIHRvcEZyYW1lUHJpbWFyeURvbWFp
biA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3ROYW1lKV0geworICAgICAgICBh
dXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bih0b3BGcmFtZVByaW1hcnlEb21haW4pOworICAgICAgICBzdGF0aXN0aWNzLnRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG8uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpbik7CisgICAgICAgIC8vIEZv
ciBjb25zaXN0ZW5jeSwgbWFrZSBzdXJlIHdlIGFsc28gaGF2ZSBhIHN0YXRpc3RpY3MgZW50cnkg
Zm9yIHRoZSByZWRpcmVjdCBkb21haW4uCisgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKGNvbnN0IFVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgVVJMJiBob3N0TmFt
ZVJlZGlyZWN0ZWRGcm9tKQoreworICAgIGlmICh0b3BGcmFtZUhvc3ROYW1lLmlzQmxhbmtVUkwo
KSB8fCB0b3BGcmFtZUhvc3ROYW1lLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9t
LmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5UmVkaXJlY3REb21haW4gPSBp
c29sYXRlZFByaW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSksIHRvcEZyYW1lUHJp
bWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3ROYW1lKV0gewor
ICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJp
bWFyeURvbWFpbih0b3BGcmFtZVByaW1hcnlEb21haW4pOworICAgICAgICBzdGF0aXN0aWNzLnRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQocHJpbWFyeVJlZGlyZWN0RG9tYWluKTsKKyAg
ICAgICAgLy8gRm9yIGNvbnNpc3RlbmN5LCBtYWtlIHN1cmUgd2UgYWxzbyBoYXZlIGEgc3RhdGlz
dGljcyBlbnRyeSBmb3IgdGhlIHJlZGlyZWN0IGRvbWFpbi4KKyAgICAgICAgZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5UmVkaXJlY3REb21haW4pOwogICAg
IH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjI4MzkwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7CiAgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiB0b3BGcmFtZSk7CiAgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CiAgICAgdm9pZCBz
Y2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0xNjcsNiArMTcwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
UGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNz
KFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOworICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5R2V0QWxs
RG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxTdHJpbmc+JiBkb21haW5zVGhhdEhhdmVSZWRp
cmVjdGVkVG8sIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOworICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAg
IHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogCiAgICAgdm9pZCByZXNl
dENvb2tpZVBhcnRpdGlvbmluZ1N0YXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlzaW9u
IDIyODM5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsMzMgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicgogICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0VG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSkpOwogfQogCit2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCit7CisgICAgYXV0byogc3RvcmUgPSBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBz
dG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmlu
ZygpKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQoreworICAgIGF1dG8q
IHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRU
byktPnN0cmluZygpKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkK
K3sKKyAgICBhdXRvKiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcykKIHsKICAgICBhdXRvKiBzdG9y
ZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjI4MzkwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDkgQEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aQogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3Qp
OwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0
UmVkaXJlY3RlZFRvKTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZy
b20pOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
ZG91YmxlIHNlY29uZHMpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI4MzkwKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMDItMTIgIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9h
ZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJl
ZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM3MzcyNTcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOC0wMi0xMiAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRVdTIHNob3VsZCBydW4gV2lu
ZG93cyB0ZXN0cy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyMjgzOTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5Niw2ICsyNTk2LDI0IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXMKICAgICBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGRhdGFTdG9yZSwgaG9zdCwg
aG9zdFJlZGlyZWN0ZWRUbyk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmlu
Z1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCit7CisgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250
ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGRhdGFT
dG9yZSwgaG9zdCwgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhXS1N0cmluZ1JlZiBob3N0
LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9
IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oZGF0
YVN0b3JlLCBob3N0LCBob3N0UmVkaXJlY3RlZFRvKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLU3RyaW5nUmVmIGhv
c3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKK3sKKyAgICBhdXRvKiBkYXRhU3Rv
cmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b20oZGF0YVN0b3JlLCBob3N0LCBob3N0UmVkaXJlY3RlZEZyb20pOworfQorCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUg
c2Vjb25kcykKIHsKICAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0
YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDIyODM5MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4o
V0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSk7CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3RO
YW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRTdGF0
aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tTdHJpbmdSZWYgaG9zdCwgV0tT
dHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJl
ZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20oV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBz
ZWNvbmRzKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZShkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3Rp
Y3NBbmREYXRhUmVjb3JkcygpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAJKHJldmlzaW9uIDIyODM5MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA3LDYgKzExMDcsNDggQEAg
V0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSIp
KSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpOworICAgICAgICAKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJv
ZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVLZXkoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikpOworICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVSZWRpcmVjdGVkRnJvbUtleShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVkRnJvbSIp
KTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9u
YXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZVJl
ZGlyZWN0ZWRGcm9tID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tS2V5
LmdldCgpKSk7CisgICAgICAgIAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGhvc3ROYW1lLCBob3N0
TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0
U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyIpKSB7CisgICAgICAgIEFTU0VSVChX
S0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAg
ICAgICAKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0
YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkhvc3ROYW1lIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gaG9zdE5hbWVSZWRpcmVjdGVkVG9LZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkhvc3ROYW1lUmVkaXJlY3RlZFRvIikpOworICAgICAgICAKKyAgICAgICAgV0tT
dHJpbmdSZWYgaG9zdE5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGhvc3ROYW1lS2V5LmdldCgpKSk7
CisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9u
YXJ5LCBob3N0TmFtZVJlZGlyZWN0ZWRUb0tleS5nZXQoKSkpOworICAgICAgICAKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8oaG9zdE5hbWUsIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9t
IikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rp
b25hcnlHZXRUeXBlSUQoKSk7CisgICAgICAgIAorICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVz
c2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdl
Qm9keSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBob3N0TmFtZUtleShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSk7CisgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tS2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZVJlZGlyZWN0ZWRGcm9t
IikpOworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUgPSBzdGF0aWNfY2Fz
dDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rp
b25hcnksIGhvc3ROYW1lS2V5LmdldCgpKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1l
UmVkaXJlY3RlZEZyb20gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGhvc3ROYW1lUmVkaXJlY3RlZEZyb21L
ZXkuZ2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oaG9zdE5hbWUsIGhvc3RO
YW1lUmVkaXJlY3RlZEZyb20pOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
CiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRT
dGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiIpKSB7CiAgICAgICAgIEFTU0VSVChX
S0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CiAgICAgICAg
IFdLRG91YmxlUmVmIHNlY29uZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2FnZUJv
ZHkpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyMjgzOTApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDc3LDYgKzE0NzcsODAgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3Vy
YwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7CiB9CiAKKwordm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhv
c3ROYW1lUmVkaXJlY3RlZEZyb20pCit7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPj4ga2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOwor
ICAgIAorICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkhvc3ROYW1lIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1lKSB9KTsKKyAgICAKKyAgICBrZXlzLmFwcGVu
ZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZVJlZGly
ZWN0ZWRGcm9tIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pIH0pOworICAgIAorICAgIFZl
Y3RvcjxXS1N0cmluZ1JlZj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlw
ZVJlZj4gcmF3VmFsdWVzKHZhbHVlcy5zaXplKCkpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tp
XS5nZXQoKTsKKyAgICAgICAgcmF3VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0K
KyAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IG1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLRGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3
VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RS
dW5uZXI6OnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oSlNTdHJpbmdSZWYg
aG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKQoreworICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4+IHZhbHVlczsKKyAgICAKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpIH0pOworICAgIHZhbHVlcy5h
cHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkgfSk7
CisgICAgCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiSG9zdE5hbWVSZWRpcmVjdGVkVG8iKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHsg
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWVSZWRpcmVjdGVkVG8p
IH0pOworICAgIAorICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7
CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzKHZhbHVlcy5zaXplKCkpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgeworICAgICAgICBy
YXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAgcmF3VmFsdWVzW2ldID0gdmFsdWVz
W2ldLmdldCgpOworICAgIH0KKyAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRp
c3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0
aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5
cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b20oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZEZy
b20pCit7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKKyAgICBW
ZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOworICAgIAorICAgIGtleXMuYXBw
ZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikg
fSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3Ry
aW5nKGhvc3ROYW1lKSB9KTsKKyAgICAKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZVJlZGlyZWN0ZWRGcm9tIikgfSk7Cisg
ICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhv
c3ROYW1lUmVkaXJlY3RlZEZyb20pIH0pOworICAgIAorICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4g
cmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzKHZh
bHVlcy5zaXplKCkpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXpl
KCk7ICsraSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAg
cmF3VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKyAgICAKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSIpKTsK
KyAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdL
RGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5
cy5zaXplKCkpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJv
ZHkuZ2V0KCksIG51bGxwdHIpOworfQorCisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCiB7CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiIpKTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCShyZXZpc2lvbiAyMjgzOTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4Myw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihK
U1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKEpTU3RyaW5nUmVm
IGhvc3ROYW1lLCBKU1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oSlNTdHJpbmdSZWYgaG9z
dE5hbWUsIEpTU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhKU1N0cmluZ1JlZiBob3N0TmFtZSwg
SlNTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmlu
Z1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChi
b29sKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMjI4MzkwKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDYgKzI3OCw5IEBAIGludGVyZmFjZSBUZXN0
UnVubmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW4oRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgdG9wRnJhbWVIb3N0TmFtZSk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKERPTVN0cmlu
ZyBob3N0TmFtZSwgRE9NU3RyaW5nIHRvcEZyYW1lSG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhET01TdHJpbmcgaG9zdE5hbWUsIERP
TVN0cmluZyBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RUbyhET01TdHJpbmcgaG9zdE5hbWUsIERPTVN0cmluZyBob3N0TmFtZVJlZGly
ZWN0ZWRUbyk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b20oRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNl
Y29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25G
cmVlKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigp
OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjI4MzkwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDItMTIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBv
dGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODI2NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MzcyNTcy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2Vk
LW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lm
eS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNv
bGx1c2lvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUt
cmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3At
ZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0cyBhZGRlZCBhcyBb
IFBhc3MgXS4KKwogMjAxOC0wMi0xMiAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjgzNzYuCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFs
ZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS1yZWRpcmVjdC1j
b2xsdXNpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQt
b24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE0IEBACitUZXN0cyBmb3IgY2xhc3NpZmljYXRpb24gYmFzZWQgb24g
c3VicmVzb3VyY2UgcmVkaXJlY3QgY29sbHVzaW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNl
LgorUEFTUyBDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgor
UEFTUyBDb2xsdWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgorUEFT
UyBDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlIGFmdGVy
IGFjdHVhbCBzdWIgZnJhbWUgcmVkaXJlY3QuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNv
dXJjZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJh
c2VkLW9uLXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lm
eS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZp
Y2F0aW9uIGJhc2VkIG9uIHN1YnJlc291cmNlIHJlZGlyZWN0IGNvbGx1c2lvbi4iKTsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAiMTI3LjAu
MC4xOjgwMDAiOworICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5k
ZXJUZXN0ICsgIi90ZW1wIjsKKyAgICBjb25zdCBzdWJyZXNvdXJjZU9yaWdpbjEgPSAiaHR0cDov
LzEyNy4wLjAuMjo4MDAwL3RlbXAiOworICAgIGNvbnN0IHN1YnJlc291cmNlT3JpZ2luMiA9ICJo
dHRwOi8vMTI3LjAuMC4zOjgwMDAvdGVtcCI7CisgICAgY29uc3Qgc3VicmVzb3VyY2VPcmlnaW4z
ID0gImh0dHA6Ly8xMjcuMC4wLjQ6ODAwMC90ZW1wIjsKKyAgICBjb25zdCBzdWJyZXNvdXJjZU9y
aWdpbjQgPSAiaHR0cDovLzEyNy4wLjAuNTo4MDAwL3RlbXAiOworCisgICAgZnVuY3Rpb24gc2V0
RW5hYmxlRmVhdHVyZShlbmFibGUpIHsKKyAgICAgICAgaWYgKCFlbmFibGUpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CisgICAgICAg
IGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGUpOworICAg
ICAgICB0ZXN0UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGVuYWJs
ZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShzdGF0aXN0aWNzVXJsLCBzdWJy
ZXNvdXJjZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShzdWJyZXNvdXJjZU9yaWdpbjEsIHN1YnJlc291cmNlT3Jp
Z2luMik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKHN1YnJlc291cmNlT3JpZ2luMiwgc3VicmVzb3VyY2VPcmlnaW4zKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZy
b20oc3VicmVzb3VyY2VPcmlnaW4zLCBzdWJyZXNvdXJjZU9yaWdpbjQpOworCisgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRy
dWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGV4cGxpY2l0
eSBzZXQgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAg
aWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3VicmVzb3VyY2VP
cmlnaW4xKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDEgZ290IHNl
dCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN1YnJlc291cmNlT3JpZ2luMikpCisgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShzdWJyZXNvdXJjZU9yaWdpbjMpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29sbHVk
aW5nIGhvc3QgMyBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgaWYg
KHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3VicmVzb3VyY2VPcmln
aW40KSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDQgZ290IHNldCBh
cyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSkKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBsb2NhbGhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UgYWZ0ZXIgYWN0dWFsIHN1YiBmcmFtZSByZWRpcmVjdC4iKTsKKworICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQor
CisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IGhvc3RVbmRlclRlc3QgJiYgd2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKHRydWUpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIGZhbHNlKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBub24tcHJldmFsZW50IHJlc291
cmNlLiIpOworICAgIH0KKzwvc2NyaXB0PgorPGlmcmFtZSBvbmxvYWQ9InJ1blRlc3QoKSIgc3Jj
PSJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMv
cmVkaXJlY3QucGhwP3JlZGlyZWN0VG89aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvb25jbGljay5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lm
eS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVk
aXJlY3QtY29sbHVzaW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50
LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIGZvciBjbGFzc2lmaWNhdGlvbiBiYXNl
ZCBvbiB0b3AgZnJhbWUgcmVkaXJlY3QgY29sbHVzaW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBDb2xsdWRpbmcgaG9zdCAxIGdvdCBzZXQgYXMgcHJldmFsZW50IHJl
c291cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlLgorUEFTUyBDb2xsdWRpbmcgaG9zdCAzIGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNl
LgorUEFTUyBDb2xsdWRpbmcgaG9zdCA0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLgor
UEFTUyBDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlIGFm
dGVyIGFjdHVhbCBuYXZpZ2F0aW9uYWwgcmVkaXJlY3QuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10
b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVu
dC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNz
aWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZp
Y2F0aW9uIGJhc2VkIG9uIHRvcCBmcmFtZSByZWRpcmVjdCBjb2xsdXNpb24uIik7CisgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gIjEyNy4wLjAu
MTo4MDAwIjsKKyAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVy
VGVzdCArICIvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4xID0gImh0dHA6Ly8xMjcu
MC4wLjI6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjIgPSAiaHR0cDovLzEy
Ny4wLjAuMzo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMyA9ICJodHRwOi8v
MTI3LjAuMC40OjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW40ID0gImh0dHA6
Ly8xMjcuMC4wLjU6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjUgPSAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwLyI7CisKKyAgICBmdW5jdGlvbiBzZXRFbmFibGVGZWF0dXJlKGVu
YWJsZSkgeworICAgICAgICBpZiAoIWVuYWJsZSkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIHRlc3RSdW5uZXIu
c2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5hYmxlKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEp
OworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
RnJvbSh0b3BGcmFtZU9yaWdpbjEsIHRvcEZyYW1lT3JpZ2luMik7CisgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKHRvcEZyYW1lT3JpZ2lu
MiwgdG9wRnJhbWVPcmlnaW4zKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20odG9wRnJhbWVPcmlnaW4zLCB0b3BGcmFtZU9yaWdpbjQp
OworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0
YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJIb3N0IGV4cGxpY2l0eSBzZXQgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJj
ZS4iKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2UodG9wRnJhbWVPcmlnaW4xKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBo
b3N0IDEgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRvcEZyYW1lT3JpZ2luMikpCisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb2xsdWRpbmcgaG9zdCAyIGdvdCBzZXQgYXMgcHJldmFs
ZW50IHJlc291cmNlLiIpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSh0b3BGcmFtZU9yaWdpbjMpKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgi
Q29sbHVkaW5nIGhvc3QgMyBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAg
ICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodG9wRnJhbWVP
cmlnaW40KSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbGx1ZGluZyBob3N0IDQgZ290IHNl
dCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRvcEZyYW1lT3JpZ2luNSkpCisgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJDb2xsdWRpbmcgbG9jYWxob3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlIGFmdGVyIGFjdHVhbCBuYXZpZ2F0aW9uYWwgcmVkaXJlY3QuIik7CisKKyAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKwor
ICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIiAmJiB3aW5kb3cudGVzdFJ1bm5l
ciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7
CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3Rh
dGlzdGljc1VybCwgZmFsc2UpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAg
ICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHRvcEZyYW1lT3JpZ2luNSArICJyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/cmVkaXJlY3RUbz1odHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxl
bnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sI2NvbnRpbnVlIjsK
KyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NOb3RpZnlPYnNlcnZl
cigpOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3Rz
LXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1m
cmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMt
cHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgY2xhc3NpZmlj
YXRpb24gYmFzZWQgb24gdG9wIGZyYW1lIHVuaXF1ZSByZWRpcmVjdHMgdG8uCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0
cy10by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVu
aXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2Vk
LW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4K
KyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIGNsYXNzaWZpY2F0aW9uIGJhc2VkIG9uIHRvcCBm
cmFtZSB1bmlxdWUgcmVkaXJlY3RzIHRvLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICIxMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qg
c3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworICAg
IGNvbnN0IHRvcEZyYW1lT3JpZ2luMSA9ICJodHRwOi8vMTI3LjAuMC4yOjgwMDAvdGVtcCI7Cisg
ICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsK
KyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAi
OworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJodHRwOi8vMTI3LjAuMC41OjgwMDAvdGVt
cCI7CisKKyAgICBmdW5jdGlvbiBzZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgeworICAgICAgICBp
ZiAoIWVuYWJsZSkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGUoKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBh
cnRpdGlvbmluZ0VuYWJsZWQoZW5hYmxlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wbGV0
ZVRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlk
IG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7CisKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhzdGF0
aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmln
aW4yKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdFRvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMyk7CisgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0
b3BGcmFtZU9yaWdpbjQpOworCisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NE
aWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjb21wbGV0ZVRlc3QpOworCisgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9
CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVyVGVzdCAmJiB3
aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc05vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodHJ1ZSk7CisKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgZmFsc2UpOwor
ICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0
aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0
IGFzIG5vbi1wcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjgzOTApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNjg5LDYgKzY4
OSw5IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2kKIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24t
c3ViLWZyYW1lLXVuZGVyLXRvcC1mcmFtZS1vcmlnaW5zLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24t
c3VicmVzb3VyY2UtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbCBbIFBhc3MgXQogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1v
bi1zdWJyZXNvdXJjZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24t
c3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9w
LWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFt
ZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xODEyMjMg
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVy
c2lzdGVudC1zdG9yZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MDcwMyBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>