<?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>228142</bug_id>
          
          <creation_ts>2021-07-21 01:38:39 -0700</creation_ts>
          <short_desc>Micro-optimize innerHTML</short_desc>
          <delta_ts>2021-07-30 13:34:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>228297</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778379</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-21 01:38:39 -0700</bug_when>
    <thetext>Micro-optimize innerHTML</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778381</commentid>
    <comment_count>1</comment_count>
      <attachid>433923</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-21 01:41:00 -0700</bug_when>
    <thetext>Created attachment 433923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778585</commentid>
    <comment_count>2</comment_count>
      <attachid>433965</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-21 16:00:21 -0700</bug_when>
    <thetext>Created attachment 433965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778597</commentid>
    <comment_count>3</comment_count>
      <attachid>433970</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-21 16:45:15 -0700</bug_when>
    <thetext>Created attachment 433970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778747</commentid>
    <comment_count>4</comment_count>
      <attachid>433970</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-07-22 10:33:34 -0700</bug_when>
    <thetext>Comment on attachment 433970
Patch

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

&gt; Source/WTF/wtf/Vector.h:769
&gt; +    void shrinkToBestFit();

I&apos;d like to see a comment explaining how shrinkToBestFit() is different from shrinkToFit() and when to use it.

&gt; Source/WTF/wtf/text/AtomStringImpl.cpp:130
&gt; +        StringImpl* impl = str.get();

auto?

&gt; Source/WTF/wtf/text/AtomStringImpl.cpp:313
&gt; +        StringImpl* impl = str.get();

auto

&gt; Source/WTF/wtf/text/AtomStringImpl.cpp:338
&gt; +        StringImpl* impl = str.get();

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778748</commentid>
    <comment_count>5</comment_count>
      <attachid>433970</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-07-22 10:33:55 -0700</bug_when>
    <thetext>Comment on attachment 433970
Patch

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

&gt; Source/WTF/wtf/Vector.h:1264
&gt; +    ASSERT(currentSize &lt;= newCapacity);

This function is named &quot;shrink&quot; but this assertion claims that it always grows. And the implementation seems similar to expandCapacity().

Can you explain more about what we&apos;re trying to do by calling this function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778754</commentid>
    <comment_count>6</comment_count>
      <attachid>433970</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 10:49:03 -0700</bug_when>
    <thetext>Comment on attachment 433970
Patch

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

&gt;&gt; Source/WTF/wtf/Vector.h:1264
&gt;&gt; +    ASSERT(currentSize &lt;= newCapacity);
&gt; 
&gt; This function is named &quot;shrink&quot; but this assertion claims that it always grows. And the implementation seems similar to expandCapacity().
&gt; 
&gt; Can you explain more about what we&apos;re trying to do by calling this function?

Ah, no. We are calling shrinkCapacity, so even though newCapacity is larger than the current capacity, then it becomes no-op. So, this function is always shrinking.
I&apos;ve added the following comment here.

    // shrinkToBestFit shrinks the capacity of the Vector as if expandCapacity happens just now. shrinkToFit attempts to make size() == capacity(). Thus,
    // if we append some items to this Vector just after that, we always need to expand the Vector. So shrinkToFit is not appropriate if we know capacity of
    // the Vector is much larger than the size and the Vector can be appended soon. On the other hand, shrinkToBestFit can leave some reasonable size of
    // the capacity.

&gt;&gt; Source/WTF/wtf/text/AtomStringImpl.cpp:130
&gt;&gt; +        StringImpl* impl = str.get();
&gt; 
&gt; auto?

Changed.

&gt;&gt; Source/WTF/wtf/text/AtomStringImpl.cpp:313
&gt;&gt; +        StringImpl* impl = str.get();
&gt; 
&gt; auto

Ditto.

&gt;&gt; Source/WTF/wtf/text/AtomStringImpl.cpp:338
&gt;&gt; +        StringImpl* impl = str.get();
&gt; 
&gt; auto

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778755</commentid>
    <comment_count>7</comment_count>
      <attachid>434020</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 10:50:44 -0700</bug_when>
    <thetext>Created attachment 434020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778756</commentid>
    <comment_count>8</comment_count>
      <attachid>434021</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 10:52:23 -0700</bug_when>
    <thetext>Created attachment 434021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778762</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-07-22 11:01:46 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; Comment on attachment 433970 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433970&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/Vector.h:1264
&gt; &gt;&gt; +    ASSERT(currentSize &lt;= newCapacity);
&gt; &gt; 
&gt; &gt; This function is named &quot;shrink&quot; but this assertion claims that it always grows. And the implementation seems similar to expandCapacity().
&gt; &gt; 
&gt; &gt; Can you explain more about what we&apos;re trying to do by calling this function?
&gt; 
&gt; Ah, no. We are calling shrinkCapacity, so even though newCapacity is larger
&gt; than the current capacity, then it becomes no-op. So, this function is
&gt; always shrinking.
&gt; I&apos;ve added the following comment here.
&gt; 
&gt;     // shrinkToBestFit shrinks the capacity of the Vector as if
&gt; expandCapacity happens just now. shrinkToFit attempts to make size() ==
&gt; capacity(). Thus,
&gt;     // if we append some items to this Vector just after that, we always
&gt; need to expand the Vector. So shrinkToFit is not appropriate if we know
&gt; capacity of
&gt;     // the Vector is much larger than the size and the Vector can be
&gt; appended soon. On the other hand, shrinkToBestFit can leave some reasonable
&gt; size of
&gt;     // the capacity.
&gt; 

Maybe this could be said more succinctly as something like &quot;shrinkToBestFit()&quot; shrinks the capacity to fix the current size, while leaving sufficient capacity for a few more items&quot; - maybe &quot;few&quot; can be more precisely described.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778768</commentid>
    <comment_count>10</comment_count>
      <attachid>433970</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 11:13:29 -0700</bug_when>
    <thetext>Comment on attachment 433970
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/Vector.h:1264
&gt;&gt;&gt;&gt; +    ASSERT(currentSize &lt;= newCapacity);
&gt;&gt;&gt; 
&gt;&gt;&gt; This function is named &quot;shrink&quot; but this assertion claims that it always grows. And the implementation seems similar to expandCapacity().
&gt;&gt;&gt; 
&gt;&gt;&gt; Can you explain more about what we&apos;re trying to do by calling this function?
&gt;&gt; 
&gt;&gt; Ah, no. We are calling shrinkCapacity, so even though newCapacity is larger than the current capacity, then it becomes no-op. So, this function is always shrinking.
&gt;&gt; I&apos;ve added the following comment here.
&gt;&gt; 
&gt;&gt;     // shrinkToBestFit shrinks the capacity of the Vector as if expandCapacity happens just now. shrinkToFit attempts to make size() == capacity(). Thus,
&gt;&gt;     // if we append some items to this Vector just after that, we always need to expand the Vector. So shrinkToFit is not appropriate if we know capacity of
&gt;&gt;     // the Vector is much larger than the size and the Vector can be appended soon. On the other hand, shrinkToBestFit can leave some reasonable size of
&gt;&gt;     // the capacity.
&gt; 
&gt; Maybe this could be said more succinctly as something like &quot;shrinkToBestFit()&quot; shrinks the capacity to fix the current size, while leaving sufficient capacity for a few more items&quot; - maybe &quot;few&quot; can be more precisely described.

I think &quot;more items&quot; is better since the upperbound of this Vector&apos;s capacity is the one as if expandCapacity happens with the current size, so it is not limited to &quot;a few&quot;.
This capacity size should be suitable for the Vector which can be appended since this capacity is computed as the same way when we expand the capacity with append call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778769</commentid>
    <comment_count>11</comment_count>
      <attachid>434023</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 11:14:28 -0700</bug_when>
    <thetext>Created attachment 434023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778777</commentid>
    <comment_count>12</comment_count>
      <attachid>434023</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-07-22 11:55:17 -0700</bug_when>
    <thetext>Comment on attachment 434023
Patch

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

&gt; Source/WTF/wtf/Vector.h:771
&gt; +    // &quot;shrinkToBestFit()&quot; shrinks the capacity to fix the current size, while leaving sufficient capacity for more items. The upperbound of the
&gt; +    // capacity is the one as if expandCapacity happens with the current size.

&quot;The upperbound of the capacity is that which would result from calling expandCapacity() with the current size&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778791</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 12:13:54 -0700</bug_when>
    <thetext>Will land with comment change since the code is not changed from the previous green EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778793</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 12:18:53 -0700</bug_when>
    <thetext>Committed r280193 (239881@main): &lt;https://commits.webkit.org/239881@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778794</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-22 12:19:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/80975442&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778801</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 13:04:18 -0700</bug_when>
    <thetext>Committed r280194 (239882@main): &lt;https://commits.webkit.org/239882@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778824</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-07-22 14:05:02 -0700</bug_when>
    <thetext>&gt; &gt; This function is named &quot;shrink&quot; but this assertion claims that it always grows. And the implementation seems similar to expandCapacity().
&gt; &gt; 
&gt; &gt; Can you explain more about what we&apos;re trying to do by calling this function?
&gt; 
&gt; Ah, no. We are calling shrinkCapacity, so even though newCapacity is larger
&gt; than the current capacity, then it becomes no-op. So, this function is
&gt; always shrinking.

Got it!

I wonder if &quot;shrinkWithSpareCapacity&quot; would convey this behavior better. &quot;Best&quot; is kind of ambiguous: Best for speed or for memory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779540</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-07-26 13:16:35 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 228297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779665</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-26 18:43:44 -0700</bug_when>
    <thetext>Committed r280335 (239982@main): &lt;https://commits.webkit.org/239982@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780455</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-29 11:17:40 -0700</bug_when>
    <thetext>Reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780933</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-07-30 13:34:20 -0700</bug_when>
    <thetext>Reverted in http://trac.webkit.org/r280335</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433923</attachid>
            <date>2021-07-21 01:41:00 -0700</date>
            <delta_ts>2021-07-21 16:00:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228142-20210721014059.patch</filename>
            <type>text/plain</type>
            <size>25397</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmNDdjY2QyNmUyOWNhMTI3OTUxOTdl
OGQzNmU5ODFkYTE2N2RlZmEuLjJiYjM2NzBjMTllN2Y5ZTI4MDE0ZmE4Mzc1M2ZhZDk1NDhkOWU1
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBNaWNyby1vcHRpbWl6ZSBpbm5lckhUTUwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpzaHJpbmtUb0Jlc3RGaXQpOgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6VUNoYXJCdWZmZXJUcmFu
c2xhdG9yOjplcXVhbCk6CisgICAgICAgIChXVEY6OkxDaGFyQnVmZmVyVHJhbnNsYXRvcjo6ZXF1
YWwpOgorICAgICAgICAoV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I6OmVxdWFs
KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKToKKwogMjAyMS0wNy0xNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXazFdIG1lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYS13ZWJtLW9wdXMtcGFydGlhbC5odG1sIGlzIGEgY29uc2lzdGVudCBm
YWlsdXJlIChFbmFibGUgVlA4L1ZQOS9Wb3JiaXMvT3B1cyBpbiBXZWJLaXRMZWdhY3kpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMWUxYTIyNThkZTY1ZmIzMDdiODUwN2IyYWFkYzFiODEwN2QwN2E2MC4uYzA2NjE2
ZGMwZTk0NGI0MGNiNmU3MWMxZjQzNjZkNGIyYzEwNmY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM5IEBACisyMDIxLTA3LTIxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgTWljcm8tb3B0aW1pemUgaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZSk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFy
c2VyOjpwdW1wVG9rZW5pemVyTG9vcCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1ldGFD
aGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBhcnNl
cjo6Y2hlY2tGb3JNZXRhQ2hhcnNldCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6c2Nh
bik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2hyaW5r
VG9CZXN0Rml0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5TdGFydFRhZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luRW5kVGFnKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5p
emVyOjpzaHJpbmtUb0Jlc3RGaXQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hh
cmFjdGVyVG9rZW5CdWZmZXI6OmNoYXJhY3RlclByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxl
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbklu
Rm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRmFrZUNoYXJhY3RlcnMpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oOgorCiAyMDIxLTA3LTE1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1drMV0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXdlYm0tb3B1
cy1wYXJ0aWFsLmh0bWwgaXMgYSBjb25zaXN0ZW50IGZhaWx1cmUgKEVuYWJsZSBWUDgvVlA5L1Zv
cmJpcy9PcHVzIGluIFdlYktpdExlZ2FjeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggY2QxNDc0NDExY2Y3YjBiODY1
MWQwOWM4YTc1Yjk4Yjc1NTdjNjBkYS4uZmUwNGMyMzQxMWJlNDBhZjRmZWFlM2QzNzUwZTk5NDcy
NjhmMzZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNl
L1dURi93dGYvVmVjdG9yLmgKQEAgLTc2Niw2ICs3NjYsNyBAQCBjbGFzcyBWZWN0b3IgOiBwcml2
YXRlIFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVDYXBhY2l0eSwgTWFsbG9jPiB7CiAgICAgQUxXQVlT
X0lOTElORSBib29sIHRyeVJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZV90IGluaXRpYWxDYXBh
Y2l0eSkgeyByZXR1cm4gcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eTxGYWlsdXJlQWN0aW9uOjpSZXBv
cnQ+KGluaXRpYWxDYXBhY2l0eSk7IH0KICAgICB2b2lkIHNocmlua0NhcGFjaXR5KHNpemVfdCBu
ZXdDYXBhY2l0eSk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpIHsgc2hyaW5rQ2FwYWNpdHkoc2l6
ZSgpKTsgfQorICAgIHZvaWQgc2hyaW5rVG9CZXN0Rml0KCk7CiAKICAgICB2b2lkIGNsZWFyKCkg
eyBzaHJpbmtDYXBhY2l0eSgwKTsgfQogCkBAIC0xMjU1LDYgKzEyNTYsMTUgQEAgdm9pZCBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxv
Yz46OnNocmlua0NhcGEKICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit2
b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eSwgTWFsbG9jPjo6c2hyaW5rVG9CZXN0Rml0KCkKK3sKKyAgICBzaXplX3QgY3VycmVudFNpemUg
PSBzaXplKCk7CisgICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gc3RkOjptYXg8c2l6ZV90PihtaW5D
YXBhY2l0eSwgY3VycmVudFNpemUgKyBjdXJyZW50U2l6ZSAvIDQgKyAxKTsKKyAgICBBU1NFUlQo
Y3VycmVudFNpemUgPD0gbmV3Q2FwYWNpdHkpOworICAgIHNocmlua0NhcGFjaXR5KG5ld0NhcGFj
aXR5KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jPgogdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiBhY3Rpb24sIHR5cGVuYW1lIFU+CiBBTFdBWVNf
SU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmQoY29uc3QgVSogZGF0YSwgc2l6ZV90IGRhdGFTaXpl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcAppbmRleCAwMDllMmExOGZmZDJh
NGE0NzRhMWVkZGY1NThmNmVjYWI4Mjc5MzRlLi40MWMyOGNlOGQyZjljZjJjZjQzODliNzdmMWFj
N2JkNzE4MTFhY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcApAQCAt
MTI3LDcgKzEyNywxMCBAQCBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yIHsKIAogICAgIHN0
YXRpYyBib29sIGVxdWFsKFBhY2tlZFB0cjxTdHJpbmdJbXBsPiBjb25zdCYgc3RyLCBjb25zdCBV
Q2hhckJ1ZmZlciYgYnVmKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3RyLmdl
dCgpLCBidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGwqIGlt
cGwgPSBzdHIuZ2V0KCk7CisgICAgICAgIGlmIChpbXBsLT5leGlzdGluZ0hhc2goKSAhPSBidWYu
aGFzaCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6ZXF1
YWwoaW1wbCwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOwogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIHRyYW5zbGF0ZShQYWNrZWRQdHI8U3RyaW5nSW1wbD4mIGxvY2F0aW9uLCBjb25zdCBV
Q2hhckJ1ZmZlciYgYnVmLCB1bnNpZ25lZCBoYXNoKQpAQCAtMzA3LDcgKzMxMCwxMCBAQCBzdHJ1
Y3QgTENoYXJCdWZmZXJUcmFuc2xhdG9yIHsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKFBhY2tl
ZFB0cjxTdHJpbmdJbXBsPiBjb25zdCYgc3RyLCBjb25zdCBMQ2hhckJ1ZmZlciYgYnVmKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3RyLmdldCgpLCBidWYuY2hhcmFjdGVycywg
YnVmLmxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHIuZ2V0KCk7CisgICAg
ICAgIGlmIChpbXBsLT5leGlzdGluZ0hhc2goKSAhPSBidWYuaGFzaCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoaW1wbCwgYnVmLmNoYXJhY3Rl
cnMsIGJ1Zi5sZW5ndGgpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShQYWNr
ZWRQdHI8U3RyaW5nSW1wbD4mIGxvY2F0aW9uLCBjb25zdCBMQ2hhckJ1ZmZlciYgYnVmLCB1bnNp
Z25lZCBoYXNoKQpAQCAtMzI5LDcgKzMzNSwxMCBAQCBzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRpY0Rh
dGFUcmFuc2xhdG9yIHsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKFBhY2tlZFB0cjxTdHJpbmdJ
bXBsPiBjb25zdCYgc3RyLCBjb25zdCBCdWZmZXImIGJ1ZikKICAgICB7Ci0gICAgICAgIHJldHVy
biBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOworICAg
ICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLmdldCgpOworICAgICAgICBpZiAoaW1wbC0+ZXhp
c3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUGFja2VkUHRyPFN0cmluZ0ltcGw+
JiBsb2NhdGlvbiwgY29uc3QgQnVmZmVyJiBidWYsIHVuc2lnbmVkIGhhc2gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oCmluZGV4IGVkZWZlMTU5ZDJkNzE4ZWI2Y2UxMzk0ZDk2YjMyMGE0NDQ4Yjg5
MDcuLmE2MGY2ZDlhYTVjODJkNjhjZTUxMjI4Y2VlYmVkODU0YTBkM2QyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCkBAIC0xMzAsNiArMTMwLDggQEAgY2xhc3MgU3RyaW5nVmlldyBmaW5h
bCB7CiAgICAgU3RyaW5nVmlldyBsZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1cm4g
c3Vic3RyaW5nKDAsIGxlbmd0aCk7IH0KICAgICBTdHJpbmdWaWV3IHJpZ2h0KHVuc2lnbmVkIGxl
bmd0aCkgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKHRoaXMtPmxlbmd0aCgpIC0gbGVuZ3RoLCBs
ZW5ndGgpOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGlj
YXRlPgorICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoY29uc3Qg
TWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hdGNo
ZWRDaGFyYWN0ZXJQcmVkaWNhdGU+CiAgICAgU3RyaW5nVmlldyBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsK
IApAQCAtMTgxLDYgKzE4Myw5IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewogICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCBpbml0
aWFsaXplKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+
CisgICAgU3RyaW5nVmlldyBzdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBDaGFy
YWN0ZXJUeXBlKiwgY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOworCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclBy
ZWRpY2F0ZT4KICAgICBTdHJpbmdWaWV3IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENo
YXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVk
aWNhdGUmKTsKIApAQCAtMTAyOSw2ICsxMDM0LDMyIEBAIGlubGluZSBib29sIFN0cmluZ1ZpZXc6
OlNwbGl0UmVzdWx0OjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIp
CiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgoraW5saW5l
IFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6c3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRp
Y2F0ZSYgcHJlZGljYXRlKQoreworICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICB3aGlsZSAo
c3RhcnQgPCBtX2xlbmd0aCAmJiBwcmVkaWNhdGUoY2hhcmFjdGVyc1tzdGFydF0pKQorICAgICAg
ICArK3N0YXJ0OworCisgICAgaWYgKHN0YXJ0ID09IG1fbGVuZ3RoKQorICAgICAgICByZXR1cm4g
U3RyaW5nVmlldzo6ZW1wdHkoKTsKKworICAgIGlmICghc3RhcnQpCisgICAgICAgIHJldHVybiAq
dGhpczsKKworICAgIFN0cmluZ1ZpZXcgcmVzdWx0KGNoYXJhY3RlcnMgKyBzdGFydCwgbV9sZW5n
dGggLSBzdGFydCk7CisgICAgcmVzdWx0LnNldFVuZGVybHlpbmdTdHJpbmcoKnRoaXMpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQ
cmVkaWNhdGU+CitTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFy
YWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmIHByZWRpY2F0ZSkKK3sKKyAg
ICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBzdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFj
dGVyczxMQ2hhcj4oY2hhcmFjdGVyczgoKSwgcHJlZGljYXRlKTsKKyAgICByZXR1cm4gc3RyaXBM
ZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnM8VUNoYXI+KGNoYXJhY3RlcnMxNigpLCBwcmVkaWNhdGUp
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVk
Q2hhcmFjdGVyUHJlZGljYXRlPgogaW5saW5lIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6c3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBj
aGFyYWN0ZXJzLCBjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJiBwcmVkaWNhdGUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAKaW5kZXggNDk4MGY0NWQ3NjcyMmQ0ZDFkMzNkYTQ5MGJiM2I4MWFiMDNkNjY4Zi4uNWQ4
NTJlYzEwY2U0YmNmNmQ4ZGMxYjMxODVjZGMxMmI2ZTdkNzQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTY2LDcg
KzU2Niw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50
KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuLCBjb25zdCBBCiAgICAgICAgIG1fb3BlbkVsZW1lbnRz
LnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKFdURk1vdmUoZWxlbWVudCksIFdURk1vdmUodG9r
ZW4pLCBuYW1lc3BhY2VVUkkpKTsKIH0KIAotdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW9kZSB3aGl0
ZXNwYWNlTW9kZSkKK3ZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKFN0
cmluZyYmIGNoYXJhY3RlcnMsIFdoaXRlc3BhY2VNb2RlIHdoaXRlc3BhY2VNb2RlKQogewogICAg
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayB0YXNrKEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzazo6
SW5zZXJ0KTsKICAgICB0YXNrLnBhcmVudCA9ICZjdXJyZW50Tm9kZSgpOwpAQCAtNTk2LDcgKzU5
Niw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKGNvbnN0IFN0
cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vCiAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB3
aG9sZSBzdHJpbmcgb2YgdW5icmVha2FibGUgY2hhcmFjdGVycyB0aGUgYWJvdmUgY291bGQgbGVh
ZCB0byBhbiBpbmZpbml0ZSBsb29wLiBFeGNlZWRpbmcgdGhlIGxlbmd0aCBsaW1pdCBpcyB0aGUg
bGVzc2VyIGV2aWwuCiAgICAgICAgIGlmICghdGV4dE5vZGUtPmxlbmd0aCgpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgc3Vic3RyaW5nID0gY2hhcmFjdGVycy5zdWJzdHJpbmcoY3VycmVudFBvc2l0
aW9uKTsKLSAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKHRhc2sucGFyZW50LT5k
b2N1bWVudCgpLCBzaG91bGRVc2VBdG9tU3RyaW5nID8gQXRvbVN0cmluZyhzdWJzdHJpbmcpLnN0
cmluZygpIDogc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRl
KHRhc2sucGFyZW50LT5kb2N1bWVudCgpLCBzaG91bGRVc2VBdG9tU3RyaW5nID8gQXRvbVN0cmlu
ZyhXVEZNb3ZlKHN1YnN0cmluZykpLnN0cmluZygpIDogc3Vic3RyaW5nKTsKICAgICAgICAgfQog
CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAppbmRleCA1
NzMxZmIwNWEyNGNmY2NiMmI0ODQ1NDQzMTJhY2RkOGIzNWJiOTkzLi4xMjc4NTQ5ZDcxYmY3NmJl
MWQ0NmQ2MzA5MDRjYjVlMDY3NjQ3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBI
VE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAgICAgdm9pZCBpbnNlcnRIVE1MQm9keUVsZW1lbnQoQXRv
bWljSFRNTFRva2VuJiYpOwogICAgIHZvaWQgaW5zZXJ0SFRNTEZvcm1FbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYmLCBib29sIGlzRGVtb3RlZCA9IGZhbHNlKTsKICAgICB2b2lkIGluc2VydFNjcmlw
dEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYpOwotICAgIHZvaWQgaW5zZXJ0VGV4dE5vZGUoY29u
c3QgU3RyaW5nJiwgV2hpdGVzcGFjZU1vZGUgPSBXaGl0ZXNwYWNlVW5rbm93bik7CisgICAgdm9p
ZCBpbnNlcnRUZXh0Tm9kZShTdHJpbmcmJiwgV2hpdGVzcGFjZU1vZGUgPSBXaGl0ZXNwYWNlVW5r
bm93bik7CiAgICAgdm9pZCBpbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiwg
Y29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJKTsKIAogICAgIHZvaWQgaW5zZXJ0SFRNTEh0
bWxTdGFydFRhZ0JlZm9yZUhUTUwoQXRvbWljSFRNTFRva2VuJiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNjM0OTZjYjEy
NGM1YzA3MTFlNTI4NDhlNjY5M2QxMzU4MzUyNDhhYS4uNWYyNmVmZjhhZjBlOTY3OWM4NGQ5MTg1
ZTZkZTdlMjkzYTg1M2U3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiTmF2aWdh
dGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJU
aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCIKLQorI2luY2x1
ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTI1Niw2ICsyNTYsMTEgQEAgRG9jdW1lbnQqIEhUTUxEb2N1bWVu
dFBhcnNlcjo6Y29udGV4dEZvclBhcnNpbmdTZXNzaW9uKCkKIAogYm9vbCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OnB1bXBUb2tlbml6ZXJMb29wKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBib29sIHBhcnNp
bmdGcmFnbWVudCwgUHVtcFNlc3Npb24mIHNlc3Npb24pCiB7CisgICAgYXV0byBzY29wZUV4aXQg
PSBtYWtlU2NvcGVFeGl0KFsmXXsKKyAgICAgICAgaWYgKCFwYXJzaW5nRnJhZ21lbnQpCisgICAg
ICAgICAgICBtX3Rva2VuaXplci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICB9KTsKKwogICAgIGRv
IHsKICAgICAgICAgaWYgKFVOTElLRUxZKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkpIHsKICAgICAg
ICAgICAgIGlmIChtb2RlID09IEFsbG93WWllbGQgJiYgbV9wYXJzZXJTY2hlZHVsZXItPnNob3Vs
ZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KG1fdHJlZUJ1aWxkZXItPnNjcmlwdFRvUHJvY2Vz
cygpLCBzZXNzaW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
TWV0YUNoYXJzZXRQYXJzZXIuY3BwCmluZGV4IDNiMDY2OGQyNGIyOTZhOTQ2NjExZjAyNTNkZTg0
YThlOTBmZTNhOTEuLmYwN2RiMWQ3NmI4YWU4NDlmOThlZGU1ODFhMjkxY2JiZTFmYzBiZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJUZXh0Q29kZWMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5o
IgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1
Nyw2ICsxNTgsMTAgQEAgYm9vbCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNo
YXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICBib29sIGlnbm9yZWRT
YXdFcnJvckZsYWc7CiAgICAgbV9pbnB1dC5hcHBlbmQobV9jb2RlYy0+ZGVjb2RlKGRhdGEsIGxl
bmd0aCwgZmFsc2UsIGZhbHNlLCBpZ25vcmVkU2F3RXJyb3JGbGFnKSk7CiAKKyAgICBhdXRvIHNj
b3BlRXhpdCA9IG1ha2VTY29wZUV4aXQoWyZdeworICAgICAgICBtX3Rva2VuaXplci5zaHJpbmtU
b0Jlc3RGaXQoKTsKKyAgICB9KTsKKwogICAgIHdoaWxlIChhdXRvIHRva2VuID0gbV90b2tlbml6
ZXIubmV4dFRva2VuKG1faW5wdXQpKSB7CiAgICAgICAgIGJvb2wgaXNFbmQgPSB0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnOwogICAgICAgICBpZiAoaXNFbmQgfHwgdG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA5NDgxOWVjZWU5ZTc3M2U0YzU4
NWQ5NzY0N2Q0NThjNjA4NTRlMmVmLi4yZGFhNDQ5YjAyZTcwMDk5YzBkY2ZhM2I0YzQ3OGY3NmE1
Yjg0MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKQEAgLTUxNCw2ICs1MTQsNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6
c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXImIHByZWxvYWRlciwgRG9jdW1lbnQmIGRvY3VtZQog
ICAgICAgICAgICAgbV90b2tlbml6ZXIudXBkYXRlU3RhdGVGb3IoQXRvbVN0cmluZyh0b2tlbi0+
bmFtZSgpKSk7CiAgICAgICAgIG1fc2Nhbm5lci5zY2FuKCp0b2tlbiwgcmVxdWVzdHMsIGRvY3Vt
ZW50KTsKICAgICB9CisgICAgbV90b2tlbml6ZXIuc2hyaW5rVG9CZXN0Rml0KCk7CiAKICAgICBw
cmVsb2FkZXIucHJlbG9hZChXVEZNb3ZlKHJlcXVlc3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IGI1MDdlNGY4ZTNhOGExMGNhMDc5ZmVkYTM5MTVkZjI3
NTJjYjYyM2IuLjUxZWI1NDc3NTVhM2Y4OTU4MmJmZTI5MmZmMmJjNWVlNTVjYTZkNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNz
IEhUTUxUb2tlbiB7CiAgICAgSFRNTFRva2VuKCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CisgICAg
dm9pZCBzaHJpbmtUb0Jlc3RGaXQoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogCkBAIC0x
NzAsMTAgKzE3MSwxNiBAQCBpbmxpbmUgSFRNTFRva2VuOjpIVE1MVG9rZW4oKQogaW5saW5lIHZv
aWQgSFRNTFRva2VuOjpjbGVhcigpCiB7CiAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKLSAg
ICBtX2RhdGEuY2xlYXIoKTsKKyAgICBtX2RhdGEucmVzaXplKDApOwogICAgIG1fZGF0YThCaXRD
aGVjayA9IDA7CiB9CiAKK2lubGluZSB2b2lkIEhUTUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KCkK
K3sKKyAgICBtX2RhdGEuc2hyaW5rVG9CZXN0Rml0KCk7CisgICAgbV9hdHRyaWJ1dGVzLnNocmlu
a1RvQmVzdEZpdCgpOworfQorCiBpbmxpbmUgSFRNTFRva2VuOjpUeXBlIEhUTUxUb2tlbjo6dHlw
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlwZTsKQEAgLTI3Myw3ICsyODAsNyBAQCBpbmxp
bmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQogICAgIEFT
U0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CiAgICAgbV90eXBlID0gU3RhcnRUYWc7CiAg
ICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworICAg
IG1fYXR0cmlidXRlcy5yZXNpemUoMCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CkBAIC0yODgsNyArMjk1LDcgQEAgaW5saW5lIHZvaWQg
SFRNTFRva2VuOjpiZWdpbkVuZFRhZyhMQ2hhciBjaGFyYWN0ZXIpCiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBFbmRUYWc7CiAgICAgbV9zZWxmQ2xv
c2luZyA9IGZhbHNlOwotICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRl
cy5yZXNpemUoMCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0
ZSA9IG51bGxwdHI7CkBAIC0zMDIsNyArMzA5LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpi
ZWdpbkVuZFRhZyhjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICBBU1NF
UlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IEVuZFRhZzsKICAgICBt
X3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9h
dHRyaWJ1dGVzLnJlc2l6ZSgwKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50
QXR0cmlidXRlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bml6ZXIuaAppbmRleCA1ZDgxOTFmNDQ4OTU0NDIxNThjZjdlMjU0YTNhMWM1Njg3YTgwNDRjLi4w
OWZlZWRhMTk3YjdlYzQ1ODUwZjE4ODczYzk4Zjk1OWNhMTkxMGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCkBAIC03OSw2ICs3OSwxMSBAQCBjbGFzcyBI
VE1MVG9rZW5pemVyIHsKIAogICAgIGJvb2wgbmV2ZXJTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25z
dDsKIAorICAgIHZvaWQgc2hyaW5rVG9CZXN0Rml0KCkKKyAgICB7CisgICAgICAgIG1fdG9rZW4u
c2hyaW5rVG9CZXN0Rml0KCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGVudW0gU3RhdGUgewog
ICAgICAgICBEYXRhU3RhdGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcAppbmRleCBiNDU4NWMxNDVkNTJlMjBiYTgzMjExMGU5M2UxNDcwY2NhY2Jj
NWE2Li43NTVmOGQ0OTVlMTk1MzY1Njc0YjIwODc0OWY0MjQ1ZTZlMDNhM2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTIyNiwxMSAr
MjI2LDcgQEAgY2xhc3MgSFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVm
ZmVyIHsKICAgICB0ZW1wbGF0ZTxib29sIGNoYXJhY3RlclByZWRpY2F0ZShVQ2hhcik+IHZvaWQg
c2tpcExlYWRpbmcoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAg
ICB3aGlsZSAoY2hhcmFjdGVyUHJlZGljYXRlKG1fdGV4dFswXSkpIHsKLSAgICAgICAgICAgIG1f
dGV4dCA9IG1fdGV4dC5zdWJzdHJpbmcoMSk7Ci0gICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgbV90ZXh0
ID0gbV90ZXh0LnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNoYXJhY3RlclByZWRpY2F0
ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIp
PiBTdHJpbmcgdGFrZUxlYWRpbmcoKQpAQCAtNDMzLDEzICs0MjksNiBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0Zha2VFbmRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkK
ICAgICBwcm9jZXNzRmFrZUVuZFRhZyh0YWdOYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAotdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGNoYXJh
Y3RlcnMpCi17Ci0gICAgQVNTRVJUKCFjaGFyYWN0ZXJzLmlzRW1wdHkoKSk7Ci0gICAgRXh0ZXJu
YWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciBidWZmZXIoY2hhcmFjdGVycyk7Ci0gICAgcHJvY2Vzc0No
YXJhY3RlckJ1ZmZlcihidWZmZXIpOwotfQotCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVs
ZW1lbnRzKCkuaW5CdXR0b25TY29wZShwVGFnLT5sb2NhbE5hbWUoKSkpCkBAIC0yMTk1LDcgKzIx
ODQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlcihBdG9taWNIVE1M
VG9rZW4mJiB0b2tlbikKIAogLy8gRklYTUU6IEV4dHJhY3QgdGhlIGZvbGxvd2luZyBpT1Mtc3Bl
Y2lmaWMgY29kZSBpbnRvIGEgc2VwYXJhdGUgZmlsZS4KIC8vIEZyb20gdGhlIHN0cmluZyA0MDg5
OTYxMDEwLCBjcmVhdGVzIGEgbGluayBvZiB0aGUgZm9ybSA8YSBocmVmPSJ0ZWw6NDA4OTk2MTAx
MCI+NDA4OTk2MTAxMDwvYT4gYW5kIGluc2VydHMgaXQuCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6
aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAg
VmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0ciwgbWFrZVN0cmluZygidGVsOiJfcywgc3RyaW5nKSkp
OwpAQCAtMjIwNiw3ICsyMTk1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25l
TnVtYmVyTGluayhjb25zdCBTdHJpbmcmIHN0cmluZykKIAogICAgIHByb2Nlc3NTdGFydFRhZyhX
VEZNb3ZlKGFTdGFydFRva2VuKSk7CiAgICAgbV90cmVlLmV4ZWN1dGVRdWV1ZWRUYXNrcygpOwot
ICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShzdHJpbmcpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0
Tm9kZShXVEZNb3ZlKHN0cmluZykpOwogICAgIHByb2Nlc3NFbmRUYWcoV1RGTW92ZShhRW5kVG9r
ZW4pKTsKIH0KIApAQCAtMjIxNSw3ICsyMjA0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omlu
c2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmIHN0cmluZykKIC8vIDIuIFdyYXBzIHRo
ZSBwaG9uZSBudW1iZXIgaW4gYSB0ZWw6IGxpbmsuCiAvLyAzLiBHb2VzIGJhY2sgdG8gc3RlcCAx
IGlmIGEgcGhvbmUgbnVtYmVyIGlzIGZvdW5kIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuCiAv
LyA0LiBBcHBlbmRzIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgYXMgYSB0ZXh0IG5vZGUuCi12b2lk
IEhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKFN0cmluZyYmIHN0
cmluZykKIHsKICAgICBBU1NFUlQoVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVk
KCkpOwogCkBAIC0yMjQ4LDEwICsyMjM3LDEwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5r
aWZ5UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlmIChzY2FubmVyUG9z
aXRpb24gPiAwKSB7CiAgICAgICAgIGlmIChzY2FubmVyUG9zaXRpb24gPCBsZW5ndGgpIHsKICAg
ICAgICAgICAgIFN0cmluZyBhZnRlciA9IHN0cmluZy5zdWJzdHJpbmcoc2Nhbm5lclBvc2l0aW9u
LCBsZW5ndGggLSBzY2FubmVyUG9zaXRpb24pOwotICAgICAgICAgICAgbV90cmVlLmluc2VydFRl
eHROb2RlKGFmdGVyKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3Zl
KGFmdGVyKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgbV90cmVlLmluc2VydFRl
eHROb2RlKHN0cmluZyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0
cmluZykpOwogfQogCiAvLyBMb29rcyBhdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBlbGVtZW50IHRv
IGRldGVybWluZSB3aGV0aGVyIHdlJ3JlIGluc2lkZSBhbiBlbGVtZW50IHdoaWNoIGRpc2FsbG93
cyBwYXJzaW5nIHBob25lIG51bWJlcnMuCkBAIC0yMzI0LDcgKzIzMTMsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2Vu
QnVmZmVyJiBidWZmZQogICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5IZWFkOiB7CiAgICAgICAg
IFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlTGVhZGluZ1doaXRlc3BhY2Uo
KTsKICAgICAgICAgaWYgKCFsZWFkaW5nV2hpdGVzcGFjZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2Up
OworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUobGVhZGluZ1doaXRl
c3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKQEAgLTIzMzQs
NyArMjMyMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVy
KEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25N
b2RlOjpBZnRlckhlYWQ6IHsKICAgICAgICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVm
ZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNw
YWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5n
V2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4
dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVm
YXVsdEZvckFmdGVySGVhZCgpOwpAQCAtMjM3Miw3ICsyMzYxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZl
ciYgYnVmZmUKICAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXA6IHsKICAgICAg
ICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFj
ZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFj
ZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hp
dGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdG
b3JJbkNvbHVtbkdyb3VwKCkpIHsKQEAgLTIzOTUsNyArMjM4NCw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZm
ZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJbkhlYWROb3NjcmlwdDogewogICAg
ICAgICBTdHJpbmcgbGVhZGluZ1doaXRlc3BhY2UgPSBidWZmZXIudGFrZUxlYWRpbmdXaGl0ZXNw
YWNlKCk7CiAgICAgICAgIGlmICghbGVhZGluZ1doaXRlc3BhY2UuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNw
YWNlKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRpbmdX
aGl0ZXNwYWNlKSwgQWxsV2hpdGVzcGFjZSk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQo
KTsKQEAgLTI0MDUsNyArMjM5NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hh
cmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2Fz
ZSBJbnNlcnRpb25Nb2RlOjpBZnRlckZyYW1lc2V0OiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5n
V2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBp
ZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNl
cnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAg
ICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdo
aXRlc3BhY2UpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2Ug
ZXJyb3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFueQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBj
aGFyYWN0ZXJzLgogICAgICAgICBicmVhazsKQEAgLTI0MTgsNyArMjQwNyw3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9r
ZW5CdWZmZXImIGJ1ZmZlCiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZl
ci50YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNw
YWNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZl
Rm9ybWF0dGluZ0VsZW1lbnRzKCk7Ci0gICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUo
bGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOworICAgICAgICAgICAgbV90cmVlLmlu
c2VydFRleHROb2RlKFdURk1vdmUobGVhZGluZ1doaXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsK
ICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2Ug
ZXJyb3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFueQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBj
aGFyYWN0ZXJzLgpAQCAtMjQzMSwxNiArMjQyMCwxNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShFeHRlcm5hbENoYXJhY3RlclRva2VuQnVm
ZgogewogICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygp
OwogICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gYnVmZmVyLnRha2VSZW1haW5pbmcoKTsKKyAgICBp
ZiAobV9mcmFtZXNldE9rICYmICFpc0FsbFdoaXRlc3BhY2VPclJlcGxhY2VtZW50Q2hhcmFjdGVy
cyhjaGFyYWN0ZXJzKSkKKyAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAjaWYgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSAmJiBtX3RyZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJz
aW5nRW5hYmxlZCgpICYmIHNob3VsZFBhcnNlVGVsZXBob25lTnVtYmVyc0luTm9kZShtX3RyZWUu
Y3VycmVudE5vZGUoKSkgJiYgVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkp
Ci0gICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMoY2hhcmFjdGVycyk7CisgICAgICAgIGxpbmtp
ZnlQaG9uZU51bWJlcnMoV1RGTW92ZShjaGFyYWN0ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBt
X3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRU
ZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpKTsKICNlbHNlCi0gICAgbV90cmVlLmluc2VydFRl
eHROb2RlKGNoYXJhY3RlcnMpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNo
YXJhY3RlcnMpKTsKICNlbmRpZgotICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVz
cGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQotICAgICAgICBtX2ZyYW1l
c2V0T2sgPSBmYWxzZTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZp
bGUoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCkBAIC0yNTc3LDEyICsyNTY2LDEyIEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKQogICAgICAgICAvLyBGSVhN
RTogcGFyc2UgZXJyb3IKICAgICAgICAgSFRNTENvbnN0cnVjdGlvblNpdGU6OlJlZGlyZWN0VG9G
b3N0ZXJQYXJlbnRHdWFyZCByZWRpcmVjdGVyKG1fdHJlZSk7CiAgICAgICAgIG1fdHJlZS5yZWNv
bnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwotICAgICAgICBtX3RyZWUuaW5z
ZXJ0VGV4dE5vZGUoY2hhcmFjdGVycywgTm90QWxsV2hpdGVzcGFjZSk7CisgICAgICAgIG1fdHJl
ZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpLCBOb3RBbGxXaGl0ZXNwYWNlKTsK
ICAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAgICAgICAgIG1faW5zZXJ0aW9uTW9kZSA9
IG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1f
dHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKKyAgICBtX3RyZWUuaW5zZXJ0VGV4dE5v
ZGUoV1RGTW92ZShjaGFyYWN0ZXJzKSk7CiAgICAgbV9pbnNlcnRpb25Nb2RlID0gbV9vcmlnaW5h
bEluc2VydGlvbk1vZGU7CiB9CiAKQEAgLTI4MjAsOSArMjgwOSw5IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiYmIHRv
a2VuKQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3Rlcjogewog
ICAgICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJzKCksIHRv
a2VuLmNoYXJhY3RlcnNMZW5ndGgoKSk7Ci0gICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShj
aGFyYWN0ZXJzKTsKICAgICAgICAgaWYgKG1fZnJhbWVzZXRPayAmJiAhaXNBbGxXaGl0ZXNwYWNl
T3JSZXBsYWNlbWVudENoYXJhY3RlcnMoY2hhcmFjdGVycykpCiAgICAgICAgICAgICBtX2ZyYW1l
c2V0T2sgPSBmYWxzZTsKKyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUoY2hh
cmFjdGVycykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBIVE1MVG9rZW46OkVu
ZE9mRmlsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgK
aW5kZXggZTk2NmQ3ZjRhMjc3Y2MzYzNiOWJiYzNlNjJkZmU1Yjk1NjQxODk3YS4uMGVmYzc3ZjY1
Nzc4YTdiMWQwZmEwYzA4NDkyMmE4ZGU3ODU3ZGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBjbGFzcyBIVE1M
VHJlZUJ1aWxkZXIgewogICAgIGJvb2wgaXNQYXJzaW5nRnJhZ21lbnRPclRlbXBsYXRlQ29udGVu
dHMoKSBjb25zdDsKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIGluc2VydFBob25lTnVtYmVyTGluayhjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIGxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBpbnNlcnRQaG9uZU51bWJlckxpbmsoU3RyaW5nJiYpOworICAgIHZvaWQgbGlu
a2lmeVBob25lTnVtYmVycyhTdHJpbmcmJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1Rv
a2VuKEF0b21pY0hUTUxUb2tlbiYmKTsKQEAgLTE0NSw3ICsxNDUsNiBAQCBjbGFzcyBIVE1MVHJl
ZUJ1aWxkZXIgewogICAgIHZvaWQgcHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWRO
YW1lJiwgVmVjdG9yPEF0dHJpYnV0ZT4mJiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4o
KSk7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgdm9pZCBw
cm9jZXNzRmFrZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwcm9jZXNzRmFr
ZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAKICAgICB2b2lkIHByb2Nlc3NHZW5lcmljUkNE
QVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433965</attachid>
            <date>2021-07-21 16:00:21 -0700</date>
            <delta_ts>2021-07-21 16:45:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228142-20210721160020.patch</filename>
            <type>text/plain</type>
            <size>29600</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmNDdjY2QyNmUyOWNhMTI3OTUxOTdl
OGQzNmU5ODFkYTE2N2RlZmEuLjA3ZTNjNDVlY2M3Y2U2ZTVmNjdhNzMzYTgxMzFiMDkxODAwMTE4
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBNaWNyby1vcHRpbWl6ZSBpbm5lckhUTUwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpzaHJpbmtUb0Jlc3RGaXQpOiBUaGlzIHNocmlua3Mg
dGhlIGJhY2tpbmcgc3RvcmFnZSB0byAiYXBwcm9wcmlhdGUgZm9yIHRoZSBsaXZpbmcgVmVjdG9y
Ii4KKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6
OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOiBXVEY6OmVxdWFsIGZvciBTdHJpbmcgZG9l
cyBub3QgY2hlY2sgaGFzaC4gVGhpcyBpcyBiZWNhdXNlIGNvbXB1dGluZyBoYXNoIGlzIGV4cGVu
c2l2ZQorICAgICAgICBhbmQgd2Ugd291bGQgbGlrZSB0byBhdm9pZCB0aGF0IGlmIGl0IGlzIG5v
dCBuZWNlc3NhcnkuIEJ1dCB3aGVuIGluc2VydGluZyBzdHJpbmcgaW50byBBdG9tU3RyaW5nVGFi
bGUsIHdlIGNhbiB1c2UgaGFzaCB2YWx1ZQorICAgICAgICBzaW5jZSB0aGV5IG11c3QgYmUgYWxy
ZWFkeSBjb21wdXRlZCBiZWNhdXNlIG9mIEhhc2hNYXAncyByZXF1aXJlbWVudC4gU28gbGV0J3Mg
dXNlIGl0IGJlZm9yZSBjYWxsaW5nIFdURjo6ZXF1YWwuCisgICAgICAgIChXVEY6OkxDaGFyQnVm
ZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0
YVRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKTog
QWRkIHRoaXMgYW5kIHVzZSBpdCBpbiBIVE1MVHJlZUJ1aWxkZXIuCisKIDIwMjEtMDctMTUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2sxXSBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtd2VibS1vcHVzLXBhcnRpYWwuaHRtbCBpcyBhIGNvbnNpc3RlbnQg
ZmFpbHVyZSAoRW5hYmxlIFZQOC9WUDkvVm9yYmlzL09wdXMgaW4gV2ViS2l0TGVnYWN5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDFlMWEyMjU4ZGU2NWZiMzA3Yjg1MDdiMmFhZGMxYjgxMDdkMDdhNjAuLjUzN2Zm
ZThmN2ZiMjdjZmNiNmFkMDJkODkwMjhiNThmMWI1ZTY1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3NCBAQAorMjAyMS0wNy0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIE1pY3JvLW9wdGltaXplIGlubmVySFRNTAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
IFRoaXMgb2ZmZXJzIGltcHJvdmVtZW50IGluIGpRdWVyeS1Ub2RvTVZDIGFuZCBWYW5pbGxhLUVT
MjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgc2luY2UgYm90aCBhcmUgc3VwZXIgaW5uZXJIVE1M
IGhlYXZ5IGJlbmNobWFya3MuCisKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
ICAgICAgICAgICAgICAgc3VidGVzdCAgICAgICAgICAgICAgICB8ICAgICBtcyAgICAgIHwgICAg
IG1zICAgICAgfCAgYiAvIGEgICB8IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERp
c2NvdmVyeSBSYXRlKSB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgfCBFbG0t
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyNi44NjI1MDAgICB8MTI2LjY4NzUw
MCAgIHwwLjk5ODYyMSAgfCAwLjY3MzQ2MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IFZ1ZUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAg
ICB8MjcuNzc1MDAwICAgIHwyNy42NDU4MzMgICAgfDAuOTk1MzUwICB8IDAuNzQxNTg4ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgRW1iZXJKUy1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHwxMjkuMzUwMDAwICAgfDEyOS4xMjkxNjcgICB8
MC45OTgyOTMgIHwgMC42MjQxOTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBCYWNrYm9uZUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgfDUx
LjEyOTE2NyAgICB8NTEuMjA0MTY3ICAgIHwxLjAwMTQ2NyAgfCAwLjcxNjYyMiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFByZWFjdC1Ub2RvTVZD
ICAgICAgICAgICAgICAgICAgICAgICB8MjEuODcwODMzICAgIHwyMS4zMzc1MDAgICAgfDAuOTc1
NjE0ICB8IDAuMjE3NzcxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgQW5ndWxhckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgIHwxMzkuODU0
MTY3ICAgfDE0MC4yNjY2NjcgICB8MS4wMDI5NTAgIHwgMC40ODk4MzggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDY5LjIyOTE2NyAgICB8NjguODk1ODMzICAgIHwwLjk5NTE4NSAg
fCAwLjIzODc3MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEluZmVybm8tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8NjguMzkxNjY3ICAg
IHw2OC4yNjY2NjcgICAgfDAuOTk4MTcyICB8IDAuNzYyMjgxICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgRmxpZ2h0LVRvZG9NVkMgICAgICAgICAg
ICAgICAgICAgICAgIHw3Ny45NzkxNjcgICAgfDc4LjE2NjY2NyAgICB8MS4wMDI0MDQgIHwgMC43
MTAzMjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBBbmd1bGFyMi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDM5Ljc0MTY2NyAgICB8Mzku
OTY2NjY3ICAgIHwxLjAwNTY2MiAgfCAwLjUyNDEyMyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGFKUy1Ub2RvTVZDICAgICAgICAgICAg
ICAgICAgICB8NTUuNDE2NjY3ICAgIHw1NS41MTI1MDAgICAgfDEuMDAxNzI5ICB8IDAuNzgxNDQ3
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgalF1
ZXJ5LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwyNjguODEyNTAwICAgfDI2Ni45NjY2
NjcgICB8MC45OTMxMzMgIHwgMC4wMDMzODQgKHNpZ25pZmljYW50KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAgICAgICAg
ICAgfDM0NS4zODMzMzMgICB8MzQ1LjY2MjUwMCAgIHwxLjAwMDgwOCAgfCAwLjY5NTI1OSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFJlYWN0LVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICB8OTAuNjc5MTY3ICAgIHw5MC4xNzkxNjcgICAg
fDAuOTk0NDg2ICB8IDAuMDY3NDc3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgUmVhY3QtUmVkdXgtVG9kb01WQyAgICAgICAgICAgICAgICAgIHwx
NTIuNjkxNjY3ICAgfDE1Mi42ODc1MDAgICB8MC45OTk5NzMgIHwgMC45OTEyMDcgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAx
NS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY2LjQ4NzUwMCAgICB8NjUuNzI5MTY3ICAgIHwwLjk4
ODU5NCAgfCAwLjAwMDExOCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworICAgICAgICBhIG1lYW4gPSAyNDIuMTIz
MTkKKyAgICAgICAgYiBtZWFuID0gMjQyLjgwNDg1CisgICAgICAgIHBWYWx1ZSA9IDAuMTk5MjY1
NDEyOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAwMyB0
aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBh
cnNlcjo6cHVtcFRva2VuaXplckxvb3ApOiBXZSBkbyBub3QgbmVlZCB0byBjYWxsIGBzaHJpbmtU
b0Jlc3RGaXRgIGluIGZyYWdtZW50IHBhcnNpbmcgY2FzZSBzaW5jZQorICAgICAgICB3ZSB3aWxs
IGRpc2NhcmQgSFRNTFRva2VuIHNvb24uCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1ldGFD
aGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBhcnNl
cjo6Y2hlY2tGb3JNZXRhQ2hhcnNldCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6c2Nh
bik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OmNsZWFyKTogV2UgZm91bmQgdGhhdCB0aGVzZSBgY2xlYXJgIGNhbGxzIGNh
dXNlIHBlcmZvcm1hbmNlIHByb2JsZW0gYWNjb3JkaW5nIHRvIHRoZSBJbnN0cnVtZW50czogd2UK
KyAgICAgICAgcmVwZWF0ZWRseSB1c2UgdGhpcyBWZWN0b3IsIGFuZCB3ZSByZXBlYXRlZGx5IGFs
bG9jYXRlIGFuZCBkZWFsbG9jYXRlIHRoaXMgVmVjdG9yIHVubmVjZXNzYXJpbHkuIFdlIHVzZSBg
cmVzaXplKDApYCBpbnN0ZWFkCisgICAgICAgIHRvIGF2b2lkIHRoaXMgYWxsb2NhdGlvbiBhbmQg
ZGVhbGxvY2F0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzaHJpbmtUb0Jlc3RG
aXQpOiBCdXQgSFRNTFRva2VuIGlzIGtlcHQgc28gbG9uZywgc28gYXQgc29tZSBwb2ludCwgd2Ug
d291bGQgbGlrZSB0byBtYWtlIGJhY2tpbmcgc3RvcmFnZQorICAgICAgICBzbWFsbC4gU28sIHdl
IGFkZCBzaHJpbmtUb0Jlc3RGaXQgYW5kIHdlIGNhbGwgaXQgb25seSBhZnRlciBmaW5pc2hpbmcg
YmF0Y2hpbmcgb2YgSFRNTFRva2VuIHByb2Nlc3NpbmcuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OmJlZ2luU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdp
bkVuZFRhZyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2hyaW5rVG9CZXN0Rml0KToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyOjpjaGFyYWN0ZXJQcmVkaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRQaG9uZU51bWJl
ckxpbmspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVO
dW1iZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJh
Y3RlckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
aGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpkZWZhdWx0Rm9ySW5UYWJsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VDaGFyYWN0ZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKwogMjAyMS0wNy0xNSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXazFdIG1lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS13ZWJtLW9wdXMtcGFydGlhbC5odG1sIGlzIGEgY29uc2lzdGVudCBmYWls
dXJlIChFbmFibGUgVlA4L1ZQOS9Wb3JiaXMvT3B1cyBpbiBXZWJLaXRMZWdhY3kpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmlu
ZGV4IGNkMTQ3NDQxMWNmN2IwYjg2NTFkMDljOGE3NWI5OGI3NTU3YzYwZGEuLmViMDE3ZDNmZjVh
NmQyZjMyM2Q5MWU4Y2VkNzEwZWFlMmI0MDg0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03NjYsNiArNzY2LDcg
QEAgY2xhc3MgVmVjdG9yIDogcHJpdmF0ZSBWZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHks
IE1hbGxvYz4gewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCB0cnlSZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNpemVfdCBpbml0aWFsQ2FwYWNpdHkpIHsgcmV0dXJuIHJlc2VydmVJbml0aWFsQ2FwYWNp
dHk8RmFpbHVyZUFjdGlvbjo6UmVwb3J0Pihpbml0aWFsQ2FwYWNpdHkpOyB9CiAgICAgdm9pZCBz
aHJpbmtDYXBhY2l0eShzaXplX3QgbmV3Q2FwYWNpdHkpOwogICAgIHZvaWQgc2hyaW5rVG9GaXQo
KSB7IHNocmlua0NhcGFjaXR5KHNpemUoKSk7IH0KKyAgICB2b2lkIHNocmlua1RvQmVzdEZpdCgp
OwogCiAgICAgdm9pZCBjbGVhcigpIHsgc2hyaW5rQ2FwYWNpdHkoMCk7IH0KIApAQCAtMTI1NSw2
ICsxMjU2LDE1IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpzaHJpbmtDYXBhCiAgICAgYXNhblNldEluaXRpYWxC
dWZmZXJTaXplVG8oc2l6ZSgpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eSwgdHlwZW5hbWUgTWFsbG9jPgordm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua1RvQmVzdEZpdCgpCit7Cisg
ICAgc2l6ZV90IGN1cnJlbnRTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9
IGN1cnJlbnRTaXplID8gc3RkOjptYXg8c2l6ZV90PihtaW5DYXBhY2l0eSwgY3VycmVudFNpemUg
KyBjdXJyZW50U2l6ZSAvIDQgKyAxKSA6IDA7CisgICAgQVNTRVJUKGN1cnJlbnRTaXplIDw9IG5l
d0NhcGFjaXR5KTsKKyAgICBzaHJpbmtDYXBhY2l0eShuZXdDYXBhY2l0eSk7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KIHRlbXBsYXRlPEZh
aWx1cmVBY3Rpb24gYWN0aW9uLCB0eXBlbmFtZSBVPgogQUxXQVlTX0lOTElORSBib29sIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9j
Pjo6YXBwZW5kKGNvbnN0IFUqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nSW1wbC5jcHAKaW5kZXggMDA5ZTJhMThmZmQyYTRhNDc0YTFlZGRmNTU4ZjZl
Y2FiODI3OTM0ZS4uNDFjMjhjZThkMmY5Y2YyY2Y0Mzg5Yjc3ZjFhYzdiZDcxODExYWNjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKQEAgLTEyNyw3ICsxMjcsMTAgQEAg
c3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChQ
YWNrZWRQdHI8U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwgY29uc3QgVUNoYXJCdWZmZXImIGJ1ZikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNoYXJhY3Rl
cnMsIGJ1Zi5sZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLmdldCgpOwor
ICAgICAgICBpZiAoaW1wbC0+ZXhpc3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFy
YWN0ZXJzLCBidWYubGVuZ3RoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUo
UGFja2VkUHRyPFN0cmluZ0ltcGw+JiBsb2NhdGlvbiwgY29uc3QgVUNoYXJCdWZmZXImIGJ1Ziwg
dW5zaWduZWQgaGFzaCkKQEAgLTMwNyw3ICszMTAsMTAgQEAgc3RydWN0IExDaGFyQnVmZmVyVHJh
bnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4g
Y29uc3QmIHN0ciwgY29uc3QgTENoYXJCdWZmZXImIGJ1ZikKICAgICB7Ci0gICAgICAgIHJldHVy
biBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOworICAg
ICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLmdldCgpOworICAgICAgICBpZiAoaW1wbC0+ZXhp
c3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUGFja2VkUHRyPFN0cmluZ0ltcGw+
JiBsb2NhdGlvbiwgY29uc3QgTENoYXJCdWZmZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkKQEAgLTMy
OSw3ICszMzUsMTAgQEAgc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvciB7CiAK
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwg
Y29uc3QgQnVmZmVyJiBidWYpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjplcXVhbChzdHIu
Z2V0KCksIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1wbCog
aW1wbCA9IHN0ci5nZXQoKTsKKyAgICAgICAgaWYgKGltcGwtPmV4aXN0aW5nSGFzaCgpICE9IGJ1
Zi5oYXNoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpl
cXVhbChpbXBsLCBidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFBhY2tlZFB0cjxTdHJpbmdJbXBsPiYgbG9jYXRpb24sIGNvbnN0
IEJ1ZmZlciYgYnVmLCB1bnNpZ25lZCBoYXNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRl
eCBlZGVmZTE1OWQyZDcxOGViNmNlMTM5NGQ5NmIzMjBhNDQ0OGI4OTA3Li5hNjBmNmQ5YWE1Yzgy
ZDY4Y2U1MTIyOGNlZWJlZDg1NGEwZDNkMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApA
QCAtMTMwLDYgKzEzMCw4IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewogICAgIFN0cmluZ1Zp
ZXcgbGVmdCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW5n
dGgpOyB9CiAgICAgU3RyaW5nVmlldyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0
dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsgfQogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4KKyAgICBTdHJpbmdW
aWV3IHN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQ
cmVkaWNhdGUmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGlj
YXRlPgogICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFj
dGVycyhjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7CiAKQEAgLTE4MSw2ICsxODMs
OSBAQCBjbGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgorICAgIFN0cmluZ1ZpZXcg
c3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0
IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+CiAgICAgU3Ry
aW5nVmlldyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENo
YXJhY3RlclR5cGUqLCBjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7CiAKQEAgLTEw
MjksNiArMTAzNCwzMiBAQCBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRl
cmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKQogICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4KK2lubGluZSBTdHJpbmdWaWV3IFN0cmlu
Z1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmIHByZWRpY2F0ZSkK
K3sKKyAgICB1bnNpZ25lZCBzdGFydCA9IDA7CisgICAgd2hpbGUgKHN0YXJ0IDwgbV9sZW5ndGgg
JiYgcHJlZGljYXRlKGNoYXJhY3RlcnNbc3RhcnRdKSkKKyAgICAgICAgKytzdGFydDsKKworICAg
IGlmIChzdGFydCA9PSBtX2xlbmd0aCkKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXc6OmVtcHR5
KCk7CisKKyAgICBpZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBTdHJp
bmdWaWV3IHJlc3VsdChjaGFyYWN0ZXJzICsgc3RhcnQsIG1fbGVuZ3RoIC0gc3RhcnQpOworICAg
IHJlc3VsdC5zZXRVbmRlcmx5aW5nU3RyaW5nKCp0aGlzKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgorU3RyaW5n
VmlldyBTdHJpbmdWaWV3OjpzdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBNYXRj
aGVkQ2hhcmFjdGVyUHJlZGljYXRlJiBwcmVkaWNhdGUpCit7CisgICAgaWYgKGlzOEJpdCgpKQor
ICAgICAgICByZXR1cm4gc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KGNoYXJh
Y3RlcnM4KCksIHByZWRpY2F0ZSk7CisgICAgcmV0dXJuIHN0cmlwTGVhZGluZ01hdGNoZWRDaGFy
YWN0ZXJzPFVDaGFyPihjaGFyYWN0ZXJzMTYoKSwgcHJlZGljYXRlKTsKK30KKwogdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0
ZT4KIGlubGluZSBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
TWF0Y2hlZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgY29uc3Qg
TWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYgcHJlZGljYXRlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDQ5ODBm
NDVkNzY3MjJkNGQxZDMzZGE0OTBiYjNiODFhYjAzZDY2OGYuLjVkODUyZWMxMGNlNGJjZjZkOGRj
MWIzMTg1Y2RjMTJiNmU3ZDc0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4m
JiB0b2tlbiwgY29uc3QgQQogICAgICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFja0l0
ZW06OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnQpLCBXVEZNb3ZlKHRva2VuKSwgbmFtZXNwYWNlVVJJ
KSk7CiB9CiAKLXZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKGNvbnN0
IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vZGUgd2hpdGVzcGFjZU1vZGUpCit2b2lk
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShTdHJpbmcmJiBjaGFyYWN0ZXJz
LCBXaGl0ZXNwYWNlTW9kZSB3aGl0ZXNwYWNlTW9kZSkKIHsKICAgICBIVE1MQ29uc3RydWN0aW9u
U2l0ZVRhc2sgdGFzayhIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6Okluc2VydCk7CiAgICAgdGFz
ay5wYXJlbnQgPSAmY3VycmVudE5vZGUoKTsKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMs
IFdoaXRlc3BhY2VNbwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2hvbGUgc3RyaW5nIG9mIHVu
YnJlYWthYmxlIGNoYXJhY3RlcnMgdGhlIGFib3ZlIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUg
bG9vcC4gRXhjZWVkaW5nIHRoZSBsZW5ndGggbGltaXQgaXMgdGhlIGxlc3NlciBldmlsLgogICAg
ICAgICBpZiAoIXRleHROb2RlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgU3RyaW5nIHN1YnN0
cmluZyA9IGNoYXJhY3RlcnMuc3Vic3RyaW5nKGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgICAg
ICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxk
VXNlQXRvbVN0cmluZyA/IEF0b21TdHJpbmcoc3Vic3RyaW5nKS5zdHJpbmcoKSA6IHN1YnN0cmlu
Zyk7CisgICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9j
dW1lbnQoKSwgc2hvdWxkVXNlQXRvbVN0cmluZyA/IEF0b21TdHJpbmcoV1RGTW92ZShzdWJzdHJp
bmcpKS5zdHJpbmcoKSA6IHN1YnN0cmluZyk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50
UG9zaXRpb24gKz0gdGV4dE5vZGUtPmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggNTczMWZiMDVhMjRjZmNjYjJi
NDg0NTQ0MzEyYWNkZDhiMzViYjk5My4uMTI3ODU0OWQ3MWJmNzZiZTFkNDZkNjMwOTA0Y2I1ZTA2
NzY0N2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgSFRNTENvbnN0cnVjdGlvblNp
dGUgewogICAgIHZvaWQgaW5zZXJ0SFRNTEJvZHlFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsK
ICAgICB2b2lkIGluc2VydEhUTUxGb3JtRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiwgYm9vbCBp
c0RlbW90ZWQgPSBmYWxzZSk7CiAgICAgdm9pZCBpbnNlcnRTY3JpcHRFbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYmKTsKLSAgICB2b2lkIGluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYsIFdoaXRl
c3BhY2VNb2RlID0gV2hpdGVzcGFjZVVua25vd24pOworICAgIHZvaWQgaW5zZXJ0VGV4dE5vZGUo
U3RyaW5nJiYsIFdoaXRlc3BhY2VNb2RlID0gV2hpdGVzcGFjZVVua25vd24pOwogICAgIHZvaWQg
aW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYsIGNvbnN0IEF0b21TdHJpbmcm
IG5hbWVzcGFjZVVSSSk7CiAKICAgICB2b2lkIGluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVI
VE1MKEF0b21pY0hUTUxUb2tlbiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDYzNDk2Y2IxMjRjNWMwNzExZTUyODQ4ZTY2
OTNkMTM1ODM1MjQ4YWEuLmQ5ZmYyMGRjZDRkOWQxYzQ2YmQ5OGVlY2NmMzllM2NmZGFmZjA0YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGhyb3dPbkR5bmFtaWNNYXJr
dXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmgiCi0KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4K
ICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0yNTYsNiArMjU2LDExIEBAIERvY3VtZW50KiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnRleHRG
b3JQYXJzaW5nU2Vzc2lvbigpCiAKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5p
emVyTG9vcChTeW5jaHJvbm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJhZ21lbnQsIFB1bXBT
ZXNzaW9uJiBzZXNzaW9uKQogeworICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChb
Jl0geworICAgICAgICBpZiAoIXBhcnNpbmdGcmFnbWVudCkKKyAgICAgICAgICAgIG1fdG9rZW5p
emVyLnNocmlua1RvQmVzdEZpdCgpOworICAgIH0pOworCiAgICAgZG8gewogICAgICAgICBpZiAo
VU5MSUtFTFkoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSkgewogICAgICAgICAgICAgaWYgKG1vZGUg
PT0gQWxsb3dZaWVsZCAmJiBtX3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVj
dXRpbmdTY3JpcHQobV90cmVlQnVpbGRlci0+c2NyaXB0VG9Qcm9jZXNzKCksIHNlc3Npb24pKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNl
ci5jcHAKaW5kZXggM2IwNjY4ZDI0YjI5NmE5NDY2MTFmMDI1M2RlODRhOGU5MGZlM2E5MS4uMDdj
OTViNDAyZDZlYWZkYTc1ZGRiNGJmYTAyYzliNWJjY2Q5Nzc0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlRleHRD
b2RlYy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3Rm
L1Njb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU3LDYgKzE1OCwxMCBAQCBi
b29sIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNldChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIGJvb2wgaWdub3JlZFNhd0Vycm9yRmxhZzsKICAg
ICBtX2lucHV0LmFwcGVuZChtX2NvZGVjLT5kZWNvZGUoZGF0YSwgbGVuZ3RoLCBmYWxzZSwgZmFs
c2UsIGlnbm9yZWRTYXdFcnJvckZsYWcpKTsKIAorICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNj
b3BlRXhpdChbJl0geworICAgICAgICBtX3Rva2VuaXplci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAg
ICB9KTsKKwogICAgIHdoaWxlIChhdXRvIHRva2VuID0gbV90b2tlbml6ZXIubmV4dFRva2VuKG1f
aW5wdXQpKSB7CiAgICAgICAgIGJvb2wgaXNFbmQgPSB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
bjo6RW5kVGFnOwogICAgICAgICBpZiAoaXNFbmQgfHwgdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAppbmRleCA5NDgxOWVjZWU5ZTc3M2U0YzU4NWQ5NzY0N2Q0NThjNjA4
NTRlMmVmLi4yZGFhNDQ5YjAyZTcwMDk5YzBkY2ZhM2I0YzQ3OGY3NmE1Yjg0MmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAg
LTUxNCw2ICs1MTQsNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2NhbihIVE1MUmVzb3Vy
Y2VQcmVsb2FkZXImIHByZWxvYWRlciwgRG9jdW1lbnQmIGRvY3VtZQogICAgICAgICAgICAgbV90
b2tlbml6ZXIudXBkYXRlU3RhdGVGb3IoQXRvbVN0cmluZyh0b2tlbi0+bmFtZSgpKSk7CiAgICAg
ICAgIG1fc2Nhbm5lci5zY2FuKCp0b2tlbiwgcmVxdWVzdHMsIGRvY3VtZW50KTsKICAgICB9Cisg
ICAgbV90b2tlbml6ZXIuc2hyaW5rVG9CZXN0Rml0KCk7CiAKICAgICBwcmVsb2FkZXIucHJlbG9h
ZChXVEZNb3ZlKHJlcXVlc3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oCmluZGV4IGI1MDdlNGY4ZTNhOGExMGNhMDc5ZmVkYTM5MTVkZjI3NTJjYjYyM2IuLjUxZWI1
NDc3NTVhM2Y4OTU4MmJmZTI5MmZmMmJjNWVlNTVjYTZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbi5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIEhUTUxUb2tlbiB7CiAg
ICAgSFRNTFRva2VuKCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaHJpbmtUb0Jl
c3RGaXQoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogCkBAIC0xNzAsMTAgKzE3MSwxNiBA
QCBpbmxpbmUgSFRNTFRva2VuOjpIVE1MVG9rZW4oKQogaW5saW5lIHZvaWQgSFRNTFRva2VuOjpj
bGVhcigpCiB7CiAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKLSAgICBtX2RhdGEuY2xlYXIo
KTsKKyAgICBtX2RhdGEucmVzaXplKDApOwogICAgIG1fZGF0YThCaXRDaGVjayA9IDA7CiB9CiAK
K2lubGluZSB2b2lkIEhUTUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KCkKK3sKKyAgICBtX2RhdGEu
c2hyaW5rVG9CZXN0Rml0KCk7CisgICAgbV9hdHRyaWJ1dGVzLnNocmlua1RvQmVzdEZpdCgpOwor
fQorCiBpbmxpbmUgSFRNTFRva2VuOjpUeXBlIEhUTUxUb2tlbjo6dHlwZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHlwZTsKQEAgLTI3Myw3ICsyODAsNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9r
ZW46OmJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQogICAgIEFTU0VSVChtX3R5cGUgPT0g
VW5pbml0aWFsaXplZCk7CiAgICAgbV90eXBlID0gU3RhcnRUYWc7CiAgICAgbV9zZWxmQ2xvc2lu
ZyA9IGZhbHNlOwotICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5y
ZXNpemUoMCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9
IG51bGxwdHI7CkBAIC0yODgsNyArMjk1LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdp
bkVuZFRhZyhMQ2hhciBjaGFyYWN0ZXIpCiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxp
emVkKTsKICAgICBtX3R5cGUgPSBFbmRUYWc7CiAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwot
ICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5yZXNpemUoMCk7CiAK
ICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CkBA
IC0zMDIsNyArMzA5LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkVuZFRhZyhjb25z
dCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICBBU1NFUlQobV90eXBlID09IFVu
aW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IEVuZFRhZzsKICAgICBtX3NlbGZDbG9zaW5nID0g
ZmFsc2U7Ci0gICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9hdHRyaWJ1dGVzLnJlc2l6
ZSgwKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAppbmRleCA1
ZDgxOTFmNDQ4OTU0NDIxNThjZjdlMjU0YTNhMWM1Njg3YTgwNDRjLi4wOWZlZWRhMTk3YjdlYzQ1
ODUwZjE4ODczYzk4Zjk1OWNhMTkxMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRva2VuaXplci5oCkBAIC03OSw2ICs3OSwxMSBAQCBjbGFzcyBIVE1MVG9rZW5pemVyIHsK
IAogICAgIGJvb2wgbmV2ZXJTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdDsKIAorICAgIHZvaWQg
c2hyaW5rVG9CZXN0Rml0KCkKKyAgICB7CisgICAgICAgIG1fdG9rZW4uc2hyaW5rVG9CZXN0Rml0
KCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGVudW0gU3RhdGUgewogICAgICAgICBEYXRhU3Rh
dGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApp
bmRleCBiNDU4NWMxNDVkNTJlMjBiYTgzMjExMGU5M2UxNDcwY2NhY2JjNWE2Li43NTVmOGQ0OTVl
MTk1MzY1Njc0YjIwODc0OWY0MjQ1ZTZlMDNhM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTIyNiwxMSArMjI2LDcgQEAgY2xhc3Mg
SFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIHsKICAgICB0ZW1w
bGF0ZTxib29sIGNoYXJhY3RlclByZWRpY2F0ZShVQ2hhcik+IHZvaWQgc2tpcExlYWRpbmcoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAgICB3aGlsZSAoY2hhcmFj
dGVyUHJlZGljYXRlKG1fdGV4dFswXSkpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9IG1fdGV4dC5z
dWJzdHJpbmcoMSk7Ci0gICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgbV90ZXh0ID0gbV90ZXh0LnN0cmlw
TGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNoYXJhY3RlclByZWRpY2F0ZSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPiBTdHJpbmcgdGFrZUxl
YWRpbmcoKQpAQCAtNDMzLDEzICs0MjksNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VFbmRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKICAgICBwcm9jZXNzRmFr
ZUVuZFRhZyh0YWdOYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NGYWtlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMpCi17Ci0gICAg
QVNTRVJUKCFjaGFyYWN0ZXJzLmlzRW1wdHkoKSk7Ci0gICAgRXh0ZXJuYWxDaGFyYWN0ZXJUb2tl
bkJ1ZmZlciBidWZmZXIoY2hhcmFjdGVycyk7Ci0gICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihi
dWZmZXIpOwotfQotCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQ
SW5CdXR0b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCkuaW5CdXR0
b25TY29wZShwVGFnLT5sb2NhbE5hbWUoKSkpCkBAIC0yMTk1LDcgKzIxODQsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlcihBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikK
IAogLy8gRklYTUU6IEV4dHJhY3QgdGhlIGZvbGxvd2luZyBpT1Mtc3BlY2lmaWMgY29kZSBpbnRv
IGEgc2VwYXJhdGUgZmlsZS4KIC8vIEZyb20gdGhlIHN0cmluZyA0MDg5OTYxMDEwLCBjcmVhdGVz
IGEgbGluayBvZiB0aGUgZm9ybSA8YSBocmVmPSJ0ZWw6NDA4OTk2MTAxMCI+NDA4OTk2MTAxMDwv
YT4gYW5kIGluc2VydHMgaXQuCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1i
ZXJMaW5rKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2Vy
dFBob25lTnVtYmVyTGluayhTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgVmVjdG9yPEF0dHJpYnV0
ZT4gYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTE5hbWVz
OjpocmVmQXR0ciwgbWFrZVN0cmluZygidGVsOiJfcywgc3RyaW5nKSkpOwpAQCAtMjIwNiw3ICsy
MTk1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhjb25z
dCBTdHJpbmcmIHN0cmluZykKIAogICAgIHByb2Nlc3NTdGFydFRhZyhXVEZNb3ZlKGFTdGFydFRv
a2VuKSk7CiAgICAgbV90cmVlLmV4ZWN1dGVRdWV1ZWRUYXNrcygpOwotICAgIG1fdHJlZS5pbnNl
cnRUZXh0Tm9kZShzdHJpbmcpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0
cmluZykpOwogICAgIHByb2Nlc3NFbmRUYWcoV1RGTW92ZShhRW5kVG9rZW4pKTsKIH0KIApAQCAt
MjIxNSw3ICsyMjA0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVy
TGluayhjb25zdCBTdHJpbmcmIHN0cmluZykKIC8vIDIuIFdyYXBzIHRoZSBwaG9uZSBudW1iZXIg
aW4gYSB0ZWw6IGxpbmsuCiAvLyAzLiBHb2VzIGJhY2sgdG8gc3RlcCAxIGlmIGEgcGhvbmUgbnVt
YmVyIGlzIGZvdW5kIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuCiAvLyA0LiBBcHBlbmRzIHRo
ZSByZXN0IG9mIHRoZSBzdHJpbmcgYXMgYSB0ZXh0IG5vZGUuCi12b2lkIEhUTUxUcmVlQnVpbGRl
cjo6bGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKFN0cmluZyYmIHN0cmluZykKIHsKICAgICBB
U1NFUlQoVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpOwogCkBAIC0yMjQ4
LDEwICsyMjM3LDEwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJz
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlmIChzY2FubmVyUG9zaXRpb24gPiAwKSB7CiAg
ICAgICAgIGlmIChzY2FubmVyUG9zaXRpb24gPCBsZW5ndGgpIHsKICAgICAgICAgICAgIFN0cmlu
ZyBhZnRlciA9IHN0cmluZy5zdWJzdHJpbmcoc2Nhbm5lclBvc2l0aW9uLCBsZW5ndGggLSBzY2Fu
bmVyUG9zaXRpb24pOwotICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGFmdGVyKTsK
KyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGFmdGVyKSk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmluZyk7
CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpOwogfQogCiAv
LyBMb29rcyBhdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBlbGVtZW50IHRvIGRldGVybWluZSB3aGV0
aGVyIHdlJ3JlIGluc2lkZSBhbiBlbGVtZW50IHdoaWNoIGRpc2FsbG93cyBwYXJzaW5nIHBob25l
IG51bWJlcnMuCkBAIC0yMzI0LDcgKzIzMTMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJiBidWZmZQog
ICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5IZWFkOiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5n
V2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYg
KCFsZWFkaW5nV2hpdGVzcGFjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3RyZWUuaW5zZXJ0
VGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOworICAgICAgICAgICAg
bV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUobGVhZGluZ1doaXRlc3BhY2UpLCBBbGxXaGl0
ZXNwYWNlKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKQEAgLTIzMzQsNyArMjMyMyw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFj
dGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpBZnRlckhlYWQ6
IHsKICAgICAgICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5n
V2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxs
V2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShs
ZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICBpZiAoYnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVmYXVsdEZvckFmdGVySGVh
ZCgpOwpAQCAtMjM3Miw3ICsyMzYxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
aGFyYWN0ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYgYnVmZmUKICAgICBj
YXNlIEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXA6IHsKICAgICAgICAgU3RyaW5nIGxlYWRp
bmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBp
ZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNl
cnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAg
ICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdo
aXRlc3BhY2UpOwogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3Vw
KCkpIHsKQEAgLTIzOTUsNyArMjM4NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
Q2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAg
Y2FzZSBJbnNlcnRpb25Nb2RlOjpJbkhlYWROb3NjcmlwdDogewogICAgICAgICBTdHJpbmcgbGVh
ZGluZ1doaXRlc3BhY2UgPSBidWZmZXIudGFrZUxlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAg
IGlmICghbGVhZGluZ1doaXRlc3BhY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV90cmVlLmlu
c2VydFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNlKTsKKyAgICAgICAg
ICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRpbmdXaGl0ZXNwYWNlKSwgQWxs
V2hpdGVzcGFjZSk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKQEAgLTI0MDUsNyAr
MjM5NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4
dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2Rl
OjpBZnRlckZyYW1lc2V0OiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1
ZmZlci50YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0
ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFk
aW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0
VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJyb3IgaWYgd2Ugc2tp
cHBlZCBvdmVyIGFueQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgogICAg
ICAgICBicmVhazsKQEAgLTI0MTgsNyArMjQwNyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZl
CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWluaW5n
V2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1l
bnRzKCk7Ci0gICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1doaXRlc3Bh
Y2UsIEFsbFdoaXRlc3BhY2UpOworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdU
Rk1vdmUobGVhZGluZ1doaXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgfQogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJyb3IgaWYgd2Ugc2tp
cHBlZCBvdmVyIGFueQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgpAQCAt
MjQzMSwxNiArMjQyMCwxNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rl
ckJ1ZmZlckZvckluQm9keShFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZgogewogICAgIG1fdHJl
ZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwogICAgIFN0cmluZyBj
aGFyYWN0ZXJzID0gYnVmZmVyLnRha2VSZW1haW5pbmcoKTsKKyAgICBpZiAobV9mcmFtZXNldE9r
ICYmICFpc0FsbFdoaXRlc3BhY2VPclJlcGxhY2VtZW50Q2hhcmFjdGVycyhjaGFyYWN0ZXJzKSkK
KyAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghaXNQYXJzaW5n
RnJhZ21lbnQoKSAmJiBtX3RyZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpICYm
IHNob3VsZFBhcnNlVGVsZXBob25lTnVtYmVyc0luTm9kZShtX3RyZWUuY3VycmVudE5vZGUoKSkg
JiYgVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpCi0gICAgICAgIGxpbmtp
ZnlQaG9uZU51bWJlcnMoY2hhcmFjdGVycyk7CisgICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMo
V1RGTW92ZShjaGFyYWN0ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4
dE5vZGUoY2hhcmFjdGVycyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3Zl
KGNoYXJhY3RlcnMpKTsKICNlbHNlCi0gICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3Rl
cnMpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpKTsKICNl
bmRpZgotICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1l
bnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQotICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsK
IH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRv
a2VuJiYgdG9rZW4pCkBAIC0yNTc3LDEyICsyNTY2LDEyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
OjpkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKQogICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IK
ICAgICAgICAgSFRNTENvbnN0cnVjdGlvblNpdGU6OlJlZGlyZWN0VG9Gb3N0ZXJQYXJlbnRHdWFy
ZCByZWRpcmVjdGVyKG1fdHJlZSk7CiAgICAgICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2
ZUZvcm1hdHRpbmdFbGVtZW50cygpOwotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hh
cmFjdGVycywgTm90QWxsV2hpdGVzcGFjZSk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9k
ZShXVEZNb3ZlKGNoYXJhY3RlcnMpLCBOb3RBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgbV9mcmFt
ZXNldE9rID0gZmFsc2U7CiAgICAgICAgIG1faW5zZXJ0aW9uTW9kZSA9IG1fb3JpZ2luYWxJbnNl
cnRpb25Nb2RlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fdHJlZS5pbnNlcnRUZXh0
Tm9kZShjaGFyYWN0ZXJzKTsKKyAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShjaGFy
YWN0ZXJzKSk7CiAgICAgbV9pbnNlcnRpb25Nb2RlID0gbV9vcmlnaW5hbEluc2VydGlvbk1vZGU7
CiB9CiAKQEAgLTI4MjAsOSArMjgwOSw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
VG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewogICAgICAgICBTdHJpbmcg
Y2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJzKCksIHRva2VuLmNoYXJhY3RlcnNM
ZW5ndGgoKSk7Ci0gICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKICAg
ICAgICAgaWYgKG1fZnJhbWVzZXRPayAmJiAhaXNBbGxXaGl0ZXNwYWNlT3JSZXBsYWNlbWVudENo
YXJhY3RlcnMoY2hhcmFjdGVycykpCiAgICAgICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsK
KyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUoY2hhcmFjdGVycykpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggZTk2NmQ3ZjRh
Mjc3Y2MzYzNiOWJiYzNlNjJkZmU1Yjk1NjQxODk3YS4uMGVmYzc3ZjY1Nzc4YTdiMWQwZmEwYzA4
NDkyMmE4ZGU3ODU3ZGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewog
ICAgIGJvb2wgaXNQYXJzaW5nRnJhZ21lbnRPclRlbXBsYXRlQ29udGVudHMoKSBjb25zdDsKIAog
I2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICB2b2lkIGluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIGxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBpbnNl
cnRQaG9uZU51bWJlckxpbmsoU3RyaW5nJiYpOworICAgIHZvaWQgbGlua2lmeVBob25lTnVtYmVy
cyhTdHJpbmcmJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxU
b2tlbiYmKTsKQEAgLTE0NSw3ICsxNDUsNiBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAg
IHZvaWQgcHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9yPEF0
dHJpYnV0ZT4mJiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSk7CiAgICAgdm9pZCBw
cm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCBwcm9jZXNz
RmFrZUVuZFRhZyhjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgdm9pZCBwcm9jZXNzRmFrZUNoYXJh
Y3RlcnMoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1
dHRvblNjb3BlKCk7CiAKICAgICB2b2lkIHByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRv
bWljSFRNTFRva2VuJiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433970</attachid>
            <date>2021-07-21 16:45:15 -0700</date>
            <delta_ts>2021-07-22 10:50:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228142-20210721164515.patch</filename>
            <type>text/plain</type>
            <size>33729</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmNDdjY2QyNmUyOWNhMTI3OTUxOTdl
OGQzNmU5ODFkYTE2N2RlZmEuLjA3ZTNjNDVlY2M3Y2U2ZTVmNjdhNzMzYTgxMzFiMDkxODAwMTE4
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBNaWNyby1vcHRpbWl6ZSBpbm5lckhUTUwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpzaHJpbmtUb0Jlc3RGaXQpOiBUaGlzIHNocmlua3Mg
dGhlIGJhY2tpbmcgc3RvcmFnZSB0byAiYXBwcm9wcmlhdGUgZm9yIHRoZSBsaXZpbmcgVmVjdG9y
Ii4KKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6
OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOiBXVEY6OmVxdWFsIGZvciBTdHJpbmcgZG9l
cyBub3QgY2hlY2sgaGFzaC4gVGhpcyBpcyBiZWNhdXNlIGNvbXB1dGluZyBoYXNoIGlzIGV4cGVu
c2l2ZQorICAgICAgICBhbmQgd2Ugd291bGQgbGlrZSB0byBhdm9pZCB0aGF0IGlmIGl0IGlzIG5v
dCBuZWNlc3NhcnkuIEJ1dCB3aGVuIGluc2VydGluZyBzdHJpbmcgaW50byBBdG9tU3RyaW5nVGFi
bGUsIHdlIGNhbiB1c2UgaGFzaCB2YWx1ZQorICAgICAgICBzaW5jZSB0aGV5IG11c3QgYmUgYWxy
ZWFkeSBjb21wdXRlZCBiZWNhdXNlIG9mIEhhc2hNYXAncyByZXF1aXJlbWVudC4gU28gbGV0J3Mg
dXNlIGl0IGJlZm9yZSBjYWxsaW5nIFdURjo6ZXF1YWwuCisgICAgICAgIChXVEY6OkxDaGFyQnVm
ZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0
YVRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKTog
QWRkIHRoaXMgYW5kIHVzZSBpdCBpbiBIVE1MVHJlZUJ1aWxkZXIuCisKIDIwMjEtMDctMTUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2sxXSBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtd2VibS1vcHVzLXBhcnRpYWwuaHRtbCBpcyBhIGNvbnNpc3RlbnQg
ZmFpbHVyZSAoRW5hYmxlIFZQOC9WUDkvVm9yYmlzL09wdXMgaW4gV2ViS2l0TGVnYWN5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDFlMWEyMjU4ZGU2NWZiMzA3Yjg1MDdiMmFhZGMxYjgxMDdkMDdhNjAuLjA5OTQz
ZDg3MjliMWY2NmZkYjg5YWNlYjVlOWU2MTJiZTcyYTRjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3NSBAQAorMjAyMS0wNy0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIE1pY3JvLW9wdGltaXplIGlubmVySFRNTAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggZG9lcyBzb21lIG1pY3JvIG9wdGltaXphdGlvbnMgcmV2ZWFsZWQgYnkgdGhl
IHByb2ZpbGVyIHdoZW4gcnVubmluZyBzb21lIG9mIFNwZWVkb21ldGVyMiB0ZXN0cyB3aGljaCBp
bnRlbnNpdmVseSB1c2UgaW5uZXJIVE1MLgorICAgICAgICBUaGlzIG9mZmVycyBpbXByb3ZlbWVu
dCBpbiBqUXVlcnktVG9kb01WQyBhbmQgVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2Rv
TVZDIHNpbmNlIGJvdGggYXJlIHN1cGVyIGlubmVySFRNTCBoZWF2eSBiZW5jaG1hcmtzLgorCisg
ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgfCAgICAgICAgICAgICAgIHN1YnRlc3Qg
ICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBw
VmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxzZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgRWxtLVRvZG9NVkMgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwxMjYuODYyNTAwICAgfDEyNi42ODc1MDAgICB8MC45OTg2MjEgIHwgMC42NzM0
NjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBW
dWVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDI3Ljc3NTAwMCAgICB8MjcuNjQ1
ODMzICAgIHwwLjk5NTM1MCAgfCAwLjc0MTU4OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICB8MTI5LjM1MDAwMCAgIHwxMjkuMTI5MTY3ICAgfDAuOTk4MjkzICB8IDAuNjI0MTk2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2Jv
bmVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS4xMjkxNjcgICAgfDUxLjIwNDE2NyAg
ICB8MS4wMDE0NjcgIHwgMC43MTY2MjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
fDIxLjg3MDgzMyAgICB8MjEuMzM3NTAwICAgIHwwLjk3NTYxNCAgfCAwLjIxNzc3MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICB8MTM5Ljg1NDE2NyAgIHwxNDAuMjY2NjY3ICAgfDEu
MDAyOTUwICB8IDAuNDg5ODM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9kb01WQyAgICAgICAgICAgICAgIHw2OS4y
MjkxNjcgICAgfDY4Ljg5NTgzMyAgICB8MC45OTUxODUgIHwgMC4yMzg3NzIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBJbmZlcm5vLVRvZG9NVkMg
ICAgICAgICAgICAgICAgICAgICAgfDY4LjM5MTY2NyAgICB8NjguMjY2NjY3ICAgIHwwLjk5ODE3
MiAgfCAwLjc2MjI4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8NzcuOTc5MTY3
ICAgIHw3OC4xNjY2NjcgICAgfDEuMDAyNDA0ICB8IDAuNzEwMzI0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQW5ndWxhcjItVHlwZVNjcmlwdC1U
b2RvTVZDICAgICAgICAgIHwzOS43NDE2NjcgICAgfDM5Ljk2NjY2NyAgICB8MS4wMDU2NjIgIHwg
MC41MjQxMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDU1LjQxNjY2NyAgICB8
NTUuNTEyNTAwICAgIHwxLjAwMTcyOSAgfCAwLjc4MTQ0NyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGpRdWVyeS1Ub2RvTVZDICAgICAgICAgICAg
ICAgICAgICAgICB8MjY4LjgxMjUwMCAgIHwyNjYuOTY2NjY3ICAgfDAuOTkzMTMzICB8IDAuMDAz
Mzg0IChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
RW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAgICAgICAgICAgIHwzNDUuMzgzMzMzICAgfDM0NS42
NjI1MDAgICB8MS4wMDA4MDggIHwgMC42OTUyNTkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAg
ICAgICAgfDkwLjY3OTE2NyAgICB8OTAuMTc5MTY3ICAgIHwwLjk5NDQ4NiAgfCAwLjA2NzQ3NyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFJlYWN0
LVJlZHV4LVRvZG9NVkMgICAgICAgICAgICAgICAgICB8MTUyLjY5MTY2NyAgIHwxNTIuNjg3NTAw
ICAgfDAuOTk5OTczICB8IDAuOTkxMjA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2RvTVZD
IHw2Ni40ODc1MDAgICAgfDY1LjcyOTE2NyAgICB8MC45ODg1OTQgIHwgMC4wMDAxMTggKHNpZ25p
ZmljYW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisKKyAgICAgICAgYSBtZWFuID0gMjQyLjEyMzE5CisgICAgICAgIGIgbWVhbiA9IDI0
Mi44MDQ4NQorICAgICAgICBwVmFsdWUgPSAwLjE5OTI2NTQxMjgKKyAgICAgICAgKEJpZ2dlciBt
ZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4wMDMgdGltZXMgYmV0dGVyCisgICAgICAgIFJl
c3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydFRleHROb2RlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXJMb29w
KTogV2UgZG8gbm90IG5lZWQgdG8gY2FsbCBgc2hyaW5rVG9CZXN0Rml0YCBpbiBmcmFnbWVudCBw
YXJzaW5nIGNhc2Ugc2luY2UKKyAgICAgICAgd2Ugd2lsbCBkaXNjYXJkIEhUTUxUb2tlbiBzb29u
LgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjbGVhcik6IFdl
IGZvdW5kIHRoYXQgdGhlc2UgYGNsZWFyYCBjYWxscyBjYXVzZSBwZXJmb3JtYW5jZSBwcm9ibGVt
IGFjY29yZGluZyB0byB0aGUgSW5zdHJ1bWVudHM6IHdlCisgICAgICAgIHJlcGVhdGVkbHkgdXNl
IHRoaXMgVmVjdG9yLCBhbmQgd2UgcmVwZWF0ZWRseSBhbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSB0
aGlzIFZlY3RvciB1bm5lY2Vzc2FyaWx5LiBXZSB1c2UgYHJlc2l6ZSgwKWAgaW5zdGVhZAorICAg
ICAgICB0byBhdm9pZCB0aGlzIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KTogQnV0IEhUTUxUb2tlbiBpcyBr
ZXB0IHNvIGxvbmcsIHNvIGF0IHNvbWUgcG9pbnQsIHdlIHdvdWxkIGxpa2UgdG8gbWFrZSBiYWNr
aW5nIHN0b3JhZ2UKKyAgICAgICAgc21hbGwuIFNvLCB3ZSBhZGQgc2hyaW5rVG9CZXN0Rml0IGFu
ZCB3ZSBjYWxsIGl0IG9ubHkgYWZ0ZXIgZmluaXNoaW5nIGJhdGNoaW5nIG9mIEhUTUxUb2tlbiBw
cm9jZXNzaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6
ZXI6OnNocmlua1RvQmVzdEZpdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFy
YWN0ZXJUb2tlbkJ1ZmZlcjo6Y2hhcmFjdGVyUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVtYmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluVGFibGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5G
b3JlaWduQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NGYWtlQ2hhcmFjdGVycyk6IERlbGV0ZWQuIEl0IGlzIGRlYWQgY29kZSBiZWZvcmUgdGhpcyBw
YXRjaC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKwogMjAyMS0w
Ny0xNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXazFd
IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS13ZWJtLW9wdXMtcGFydGlhbC5odG1sIGlzIGEgY29u
c2lzdGVudCBmYWlsdXJlIChFbmFibGUgVlA4L1ZQOS9Wb3JiaXMvT3B1cyBpbiBXZWJLaXRMZWdh
Y3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCmluZGV4IGNkMTQ3NDQxMWNmN2IwYjg2NTFkMDljOGE3NWI5OGI3NTU3YzYwZGEu
LmViMDE3ZDNmZjVhNmQyZjMyM2Q5MWU4Y2VkNzEwZWFlMmI0MDg0YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03
NjYsNiArNzY2LDcgQEAgY2xhc3MgVmVjdG9yIDogcHJpdmF0ZSBWZWN0b3JCdWZmZXI8VCwgaW5s
aW5lQ2FwYWNpdHksIE1hbGxvYz4gewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCB0cnlSZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpemVfdCBpbml0aWFsQ2FwYWNpdHkpIHsgcmV0dXJuIHJlc2VydmVJ
bml0aWFsQ2FwYWNpdHk8RmFpbHVyZUFjdGlvbjo6UmVwb3J0Pihpbml0aWFsQ2FwYWNpdHkpOyB9
CiAgICAgdm9pZCBzaHJpbmtDYXBhY2l0eShzaXplX3QgbmV3Q2FwYWNpdHkpOwogICAgIHZvaWQg
c2hyaW5rVG9GaXQoKSB7IHNocmlua0NhcGFjaXR5KHNpemUoKSk7IH0KKyAgICB2b2lkIHNocmlu
a1RvQmVzdEZpdCgpOwogCiAgICAgdm9pZCBjbGVhcigpIHsgc2hyaW5rQ2FwYWNpdHkoMCk7IH0K
IApAQCAtMTI1NSw2ICsxMjU2LDE1IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpzaHJpbmtDYXBhCiAgICAgYXNh
blNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgordm9pZCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua1RvQmVz
dEZpdCgpCit7CisgICAgc2l6ZV90IGN1cnJlbnRTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBu
ZXdDYXBhY2l0eSA9IGN1cnJlbnRTaXplID8gc3RkOjptYXg8c2l6ZV90PihtaW5DYXBhY2l0eSwg
Y3VycmVudFNpemUgKyBjdXJyZW50U2l6ZSAvIDQgKyAxKSA6IDA7CisgICAgQVNTRVJUKGN1cnJl
bnRTaXplIDw9IG5ld0NhcGFjaXR5KTsKKyAgICBzaHJpbmtDYXBhY2l0eShuZXdDYXBhY2l0eSk7
Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4K
IHRlbXBsYXRlPEZhaWx1cmVBY3Rpb24gYWN0aW9uLCB0eXBlbmFtZSBVPgogQUxXQVlTX0lOTElO
RSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eSwgTWFsbG9jPjo6YXBwZW5kKGNvbnN0IFUqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKaW5kZXggMDA5ZTJhMThmZmQyYTRhNDc0
YTFlZGRmNTU4ZjZlY2FiODI3OTM0ZS4uNDFjMjhjZThkMmY5Y2YyY2Y0Mzg5Yjc3ZjFhYzdiZDcx
ODExYWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKQEAgLTEyNyw3
ICsxMjcsMTAgQEAgc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvciB7CiAKICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwgY29uc3QgVUNoYXJC
dWZmZXImIGJ1ZikKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0ci5nZXQoKSwg
YnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0g
c3RyLmdldCgpOworICAgICAgICBpZiAoaW1wbC0+ZXhpc3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKGlt
cGwsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9p
ZCB0cmFuc2xhdGUoUGFja2VkUHRyPFN0cmluZ0ltcGw+JiBsb2NhdGlvbiwgY29uc3QgVUNoYXJC
dWZmZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkKQEAgLTMwNyw3ICszMTAsMTAgQEAgc3RydWN0IExD
aGFyQnVmZmVyVHJhbnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8
U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwgY29uc3QgTENoYXJCdWZmZXImIGJ1ZikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5s
ZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLmdldCgpOworICAgICAgICBp
ZiAoaW1wbC0+ZXhpc3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFyYWN0ZXJzLCBi
dWYubGVuZ3RoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUGFja2VkUHRy
PFN0cmluZ0ltcGw+JiBsb2NhdGlvbiwgY29uc3QgTENoYXJCdWZmZXImIGJ1ZiwgdW5zaWduZWQg
aGFzaCkKQEAgLTMyOSw3ICszMzUsMTAgQEAgc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJh
bnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4g
Y29uc3QmIHN0ciwgY29uc3QgQnVmZmVyJiBidWYpCiAgICAgewotICAgICAgICByZXR1cm4gV1RG
OjplcXVhbChzdHIuZ2V0KCksIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsKKyAgICAgICAg
U3RyaW5nSW1wbCogaW1wbCA9IHN0ci5nZXQoKTsKKyAgICAgICAgaWYgKGltcGwtPmV4aXN0aW5n
SGFzaCgpICE9IGJ1Zi5oYXNoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gV1RGOjplcXVhbChpbXBsLCBidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCk7CiAgICAg
fQogCiAgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFBhY2tlZFB0cjxTdHJpbmdJbXBsPiYgbG9j
YXRpb24sIGNvbnN0IEJ1ZmZlciYgYnVmLCB1bnNpZ25lZCBoYXNoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaAppbmRleCBlZGVmZTE1OWQyZDcxOGViNmNlMTM5NGQ5NmIzMjBhNDQ0OGI4OTA3Li5h
NjBmNmQ5YWE1YzgyZDY4Y2U1MTIyOGNlZWJlZDg1NGEwZDNkMmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaApAQCAtMTMwLDYgKzEzMCw4IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewog
ICAgIFN0cmluZ1ZpZXcgbGVmdCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0
cmluZygwLCBsZW5ndGgpOyB9CiAgICAgU3RyaW5nVmlldyByaWdodCh1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3Ro
KTsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4K
KyAgICBTdHJpbmdWaWV3IHN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IE1hdGNo
ZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hh
cmFjdGVyUHJlZGljYXRlPgogICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdN
YXRjaGVkQ2hhcmFjdGVycyhjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7CiAKQEAg
LTE4MSw2ICsxODMsOSBAQCBjbGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgorICAg
IFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVy
VHlwZSosIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsKKwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNh
dGU+CiAgICAgU3RyaW5nVmlldyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0
ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRl
Jik7CiAKQEAgLTEwMjksNiArMTAzNCwzMiBAQCBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpTcGxp
dFJlc3VsdDo6SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKQogICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4KK2lubGluZSBTdHJp
bmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUm
IHByZWRpY2F0ZSkKK3sKKyAgICB1bnNpZ25lZCBzdGFydCA9IDA7CisgICAgd2hpbGUgKHN0YXJ0
IDwgbV9sZW5ndGggJiYgcHJlZGljYXRlKGNoYXJhY3RlcnNbc3RhcnRdKSkKKyAgICAgICAgKytz
dGFydDsKKworICAgIGlmIChzdGFydCA9PSBtX2xlbmd0aCkKKyAgICAgICAgcmV0dXJuIFN0cmlu
Z1ZpZXc6OmVtcHR5KCk7CisKKyAgICBpZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm4gKnRoaXM7
CisKKyAgICBTdHJpbmdWaWV3IHJlc3VsdChjaGFyYWN0ZXJzICsgc3RhcnQsIG1fbGVuZ3RoIC0g
c3RhcnQpOworICAgIHJlc3VsdC5zZXRVbmRlcmx5aW5nU3RyaW5nKCp0aGlzKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGlj
YXRlPgorU3RyaW5nVmlldyBTdHJpbmdWaWV3OjpzdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVy
cyhjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJiBwcmVkaWNhdGUpCit7CisgICAgaWYg
KGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnM8
TENoYXI+KGNoYXJhY3RlcnM4KCksIHByZWRpY2F0ZSk7CisgICAgcmV0dXJuIHN0cmlwTGVhZGlu
Z01hdGNoZWRDaGFyYWN0ZXJzPFVDaGFyPihjaGFyYWN0ZXJzMTYoKSwgcHJlZGljYXRlKTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENoYXJh
Y3RlclByZWRpY2F0ZT4KIGlubGluZSBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFj
dGVycywgY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYgcHJlZGljYXRlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CmluZGV4IDQ5ODBmNDVkNzY3MjJkNGQxZDMzZGE0OTBiYjNiODFhYjAzZDY2OGYuLjVkODUyZWMx
MGNlNGJjZjZkOGRjMWIzMTg1Y2RjMTJiNmU3ZDc0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTU2Niw3ICs1NjYs
NyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudChBdG9t
aWNIVE1MVG9rZW4mJiB0b2tlbiwgY29uc3QgQQogICAgICAgICBtX29wZW5FbGVtZW50cy5wdXNo
KEhUTUxTdGFja0l0ZW06OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnQpLCBXVEZNb3ZlKHRva2VuKSwg
bmFtZXNwYWNlVVJJKSk7CiB9CiAKLXZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRl
eHROb2RlKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vZGUgd2hpdGVzcGFj
ZU1vZGUpCit2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShTdHJpbmcm
JiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW9kZSB3aGl0ZXNwYWNlTW9kZSkKIHsKICAgICBIVE1M
Q29uc3RydWN0aW9uU2l0ZVRhc2sgdGFzayhIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6Okluc2Vy
dCk7CiAgICAgdGFzay5wYXJlbnQgPSAmY3VycmVudE5vZGUoKTsKQEAgLTU5Niw3ICs1OTYsNyBA
QCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcm
IGNoYXJhY3RlcnMsIFdoaXRlc3BhY2VNbwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2hvbGUg
c3RyaW5nIG9mIHVuYnJlYWthYmxlIGNoYXJhY3RlcnMgdGhlIGFib3ZlIGNvdWxkIGxlYWQgdG8g
YW4gaW5maW5pdGUgbG9vcC4gRXhjZWVkaW5nIHRoZSBsZW5ndGggbGltaXQgaXMgdGhlIGxlc3Nl
ciBldmlsLgogICAgICAgICBpZiAoIXRleHROb2RlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAg
U3RyaW5nIHN1YnN0cmluZyA9IGNoYXJhY3RlcnMuc3Vic3RyaW5nKGN1cnJlbnRQb3NpdGlvbik7
Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1l
bnQoKSwgc2hvdWxkVXNlQXRvbVN0cmluZyA/IEF0b21TdHJpbmcoc3Vic3RyaW5nKS5zdHJpbmco
KSA6IHN1YnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0YXNr
LnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxkVXNlQXRvbVN0cmluZyA/IEF0b21TdHJpbmcoV1RG
TW92ZShzdWJzdHJpbmcpKS5zdHJpbmcoKSA6IHN1YnN0cmluZyk7CiAgICAgICAgIH0KIAogICAg
ICAgICBjdXJyZW50UG9zaXRpb24gKz0gdGV4dE5vZGUtPmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggNTczMWZi
MDVhMjRjZmNjYjJiNDg0NTQ0MzEyYWNkZDhiMzViYjk5My4uMTI3ODU0OWQ3MWJmNzZiZTFkNDZk
NjMwOTA0Y2I1ZTA2NzY0N2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgSFRNTENv
bnN0cnVjdGlvblNpdGUgewogICAgIHZvaWQgaW5zZXJ0SFRNTEJvZHlFbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYmKTsKICAgICB2b2lkIGluc2VydEhUTUxGb3JtRWxlbWVudChBdG9taWNIVE1MVG9r
ZW4mJiwgYm9vbCBpc0RlbW90ZWQgPSBmYWxzZSk7CiAgICAgdm9pZCBpbnNlcnRTY3JpcHRFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiYmKTsKLSAgICB2b2lkIGluc2VydFRleHROb2RlKGNvbnN0IFN0
cmluZyYsIFdoaXRlc3BhY2VNb2RlID0gV2hpdGVzcGFjZVVua25vd24pOworICAgIHZvaWQgaW5z
ZXJ0VGV4dE5vZGUoU3RyaW5nJiYsIFdoaXRlc3BhY2VNb2RlID0gV2hpdGVzcGFjZVVua25vd24p
OwogICAgIHZvaWQgaW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYsIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAKICAgICB2b2lkIGluc2VydEhUTUxIdG1sU3Rh
cnRUYWdCZWZvcmVIVE1MKEF0b21pY0hUTUxUb2tlbiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDYzNDk2Y2IxMjRjNWMw
NzExZTUyODQ4ZTY2OTNkMTM1ODM1MjQ4YWEuLmQ5ZmYyMGRjZDRkOWQxYzQ2YmQ5OGVlY2NmMzll
M2NmZGFmZjA0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25T
Y2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGhyb3dP
bkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmgiCi0KKyNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0yNTYsNiArMjU2LDExIEBAIERvY3VtZW50KiBIVE1MRG9jdW1lbnRQYXJz
ZXI6OmNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpCiAKIGJvb2wgSFRNTERvY3VtZW50UGFyc2Vy
OjpwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJh
Z21lbnQsIFB1bXBTZXNzaW9uJiBzZXNzaW9uKQogeworICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFr
ZVNjb3BlRXhpdChbJl0geworICAgICAgICBpZiAoIXBhcnNpbmdGcmFnbWVudCkKKyAgICAgICAg
ICAgIG1fdG9rZW5pemVyLnNocmlua1RvQmVzdEZpdCgpOworICAgIH0pOworCiAgICAgZG8gewog
ICAgICAgICBpZiAoVU5MSUtFTFkoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSkgewogICAgICAgICAg
ICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAmJiBtX3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWll
bGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQobV90cmVlQnVpbGRlci0+c2NyaXB0VG9Qcm9jZXNzKCks
IHNlc3Npb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1l
dGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAKaW5kZXggM2IwNjY4ZDI0YjI5NmE5NDY2MTFmMDI1M2RlODRhOGU5
MGZlM2E5MS4uMDdjOTViNDAyZDZlYWZkYTc1ZGRiNGJmYTAyYzliNWJjY2Q5Nzc0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIlRleHRDb2RlYy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5LmgiCisj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU3LDYg
KzE1OCwxMCBAQCBib29sIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNl
dChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIGJvb2wgaWdub3JlZFNhd0Vy
cm9yRmxhZzsKICAgICBtX2lucHV0LmFwcGVuZChtX2NvZGVjLT5kZWNvZGUoZGF0YSwgbGVuZ3Ro
LCBmYWxzZSwgZmFsc2UsIGlnbm9yZWRTYXdFcnJvckZsYWcpKTsKIAorICAgIGF1dG8gc2NvcGVF
eGl0ID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBtX3Rva2VuaXplci5zaHJpbmtUb0Jl
c3RGaXQoKTsKKyAgICB9KTsKKwogICAgIHdoaWxlIChhdXRvIHRva2VuID0gbV90b2tlbml6ZXIu
bmV4dFRva2VuKG1faW5wdXQpKSB7CiAgICAgICAgIGJvb2wgaXNFbmQgPSB0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6RW5kVGFnOwogICAgICAgICBpZiAoaXNFbmQgfHwgdG9rZW4tPnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA5NDgxOWVjZWU5ZTc3M2U0YzU4NWQ5
NzY0N2Q0NThjNjA4NTRlMmVmLi4yZGFhNDQ5YjAyZTcwMDk5YzBkY2ZhM2I0YzQ3OGY3NmE1Yjg0
MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKQEAgLTUxNCw2ICs1MTQsNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2Nh
bihIVE1MUmVzb3VyY2VQcmVsb2FkZXImIHByZWxvYWRlciwgRG9jdW1lbnQmIGRvY3VtZQogICAg
ICAgICAgICAgbV90b2tlbml6ZXIudXBkYXRlU3RhdGVGb3IoQXRvbVN0cmluZyh0b2tlbi0+bmFt
ZSgpKSk7CiAgICAgICAgIG1fc2Nhbm5lci5zY2FuKCp0b2tlbiwgcmVxdWVzdHMsIGRvY3VtZW50
KTsKICAgICB9CisgICAgbV90b2tlbml6ZXIuc2hyaW5rVG9CZXN0Rml0KCk7CiAKICAgICBwcmVs
b2FkZXIucHJlbG9hZChXVEZNb3ZlKHJlcXVlc3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oCmluZGV4IGI1MDdlNGY4ZTNhOGExMGNhMDc5ZmVkYTM5MTVkZjI3NTJj
YjYyM2IuLjUxZWI1NDc3NTVhM2Y4OTU4MmJmZTI5MmZmMmJjNWVlNTVjYTZkNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIEhU
TUxUb2tlbiB7CiAgICAgSFRNTFRva2VuKCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9p
ZCBzaHJpbmtUb0Jlc3RGaXQoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogCkBAIC0xNzAs
MTAgKzE3MSwxNiBAQCBpbmxpbmUgSFRNTFRva2VuOjpIVE1MVG9rZW4oKQogaW5saW5lIHZvaWQg
SFRNTFRva2VuOjpjbGVhcigpCiB7CiAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKLSAgICBt
X2RhdGEuY2xlYXIoKTsKKyAgICBtX2RhdGEucmVzaXplKDApOwogICAgIG1fZGF0YThCaXRDaGVj
ayA9IDA7CiB9CiAKK2lubGluZSB2b2lkIEhUTUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KCkKK3sK
KyAgICBtX2RhdGEuc2hyaW5rVG9CZXN0Rml0KCk7CisgICAgbV9hdHRyaWJ1dGVzLnNocmlua1Rv
QmVzdEZpdCgpOworfQorCiBpbmxpbmUgSFRNTFRva2VuOjpUeXBlIEhUTUxUb2tlbjo6dHlwZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlwZTsKQEAgLTI3Myw3ICsyODAsNyBAQCBpbmxpbmUg
dm9pZCBIVE1MVG9rZW46OmJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQogICAgIEFTU0VS
VChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CiAgICAgbV90eXBlID0gU3RhcnRUYWc7CiAgICAg
bV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1f
YXR0cmlidXRlcy5yZXNpemUoMCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVu
dEF0dHJpYnV0ZSA9IG51bGxwdHI7CkBAIC0yODgsNyArMjk1LDcgQEAgaW5saW5lIHZvaWQgSFRN
TFRva2VuOjpiZWdpbkVuZFRhZyhMQ2hhciBjaGFyYWN0ZXIpCiAgICAgQVNTRVJUKG1fdHlwZSA9
PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBFbmRUYWc7CiAgICAgbV9zZWxmQ2xvc2lu
ZyA9IGZhbHNlOwotICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5y
ZXNpemUoMCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9
IG51bGxwdHI7CkBAIC0zMDIsNyArMzA5LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdp
bkVuZFRhZyhjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICBBU1NFUlQo
bV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IEVuZFRhZzsKICAgICBtX3Nl
bGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9hdHRy
aWJ1dGVzLnJlc2l6ZSgwKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50QXR0
cmlidXRlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuaAppbmRleCA1ZDgxOTFmNDQ4OTU0NDIxNThjZjdlMjU0YTNhMWM1Njg3YTgwNDRjLi4wOWZl
ZWRhMTk3YjdlYzQ1ODUwZjE4ODczYzk4Zjk1OWNhMTkxMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCkBAIC03OSw2ICs3OSwxMSBAQCBjbGFzcyBIVE1M
VG9rZW5pemVyIHsKIAogICAgIGJvb2wgbmV2ZXJTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdDsK
IAorICAgIHZvaWQgc2hyaW5rVG9CZXN0Rml0KCkKKyAgICB7CisgICAgICAgIG1fdG9rZW4uc2hy
aW5rVG9CZXN0Rml0KCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGVudW0gU3RhdGUgewogICAg
ICAgICBEYXRhU3RhdGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcAppbmRleCBiNDU4NWMxNDVkNTJlMjBiYTgzMjExMGU5M2UxNDcwY2NhY2JjNWE2
Li43NTVmOGQ0OTVlMTk1MzY1Njc0YjIwODc0OWY0MjQ1ZTZlMDNhM2I4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTIyNiwxMSArMjI2
LDcgQEAgY2xhc3MgSFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVy
IHsKICAgICB0ZW1wbGF0ZTxib29sIGNoYXJhY3RlclByZWRpY2F0ZShVQ2hhcik+IHZvaWQgc2tp
cExlYWRpbmcoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAgICB3
aGlsZSAoY2hhcmFjdGVyUHJlZGljYXRlKG1fdGV4dFswXSkpIHsKLSAgICAgICAgICAgIG1fdGV4
dCA9IG1fdGV4dC5zdWJzdHJpbmcoMSk7Ci0gICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgbV90ZXh0ID0g
bV90ZXh0LnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNoYXJhY3RlclByZWRpY2F0ZSk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPiBT
dHJpbmcgdGFrZUxlYWRpbmcoKQpAQCAtNDMzLDEzICs0MjksNiBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0Zha2VFbmRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKICAg
ICBwcm9jZXNzRmFrZUVuZFRhZyh0YWdOYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAotdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGNoYXJhY3Rl
cnMpCi17Ci0gICAgQVNTRVJUKCFjaGFyYWN0ZXJzLmlzRW1wdHkoKSk7Ci0gICAgRXh0ZXJuYWxD
aGFyYWN0ZXJUb2tlbkJ1ZmZlciBidWZmZXIoY2hhcmFjdGVycyk7Ci0gICAgcHJvY2Vzc0NoYXJh
Y3RlckJ1ZmZlcihidWZmZXIpOwotfQotCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zh
a2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1l
bnRzKCkuaW5CdXR0b25TY29wZShwVGFnLT5sb2NhbE5hbWUoKSkpCkBAIC0yMTk1LDcgKzIxODQs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlcihBdG9taWNIVE1MVG9r
ZW4mJiB0b2tlbikKIAogLy8gRklYTUU6IEV4dHJhY3QgdGhlIGZvbGxvd2luZyBpT1Mtc3BlY2lm
aWMgY29kZSBpbnRvIGEgc2VwYXJhdGUgZmlsZS4KIC8vIEZyb20gdGhlIHN0cmluZyA0MDg5OTYx
MDEwLCBjcmVhdGVzIGEgbGluayBvZiB0aGUgZm9ybSA8YSBocmVmPSJ0ZWw6NDA4OTk2MTAxMCI+
NDA4OTk2MTAxMDwvYT4gYW5kIGluc2VydHMgaXQuCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5z
ZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBIVE1MVHJlZUJ1
aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgVmVj
dG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpocmVmQXR0ciwgbWFrZVN0cmluZygidGVsOiJfcywgc3RyaW5nKSkpOwpA
QCAtMjIwNiw3ICsyMTk1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVt
YmVyTGluayhjb25zdCBTdHJpbmcmIHN0cmluZykKIAogICAgIHByb2Nlc3NTdGFydFRhZyhXVEZN
b3ZlKGFTdGFydFRva2VuKSk7CiAgICAgbV90cmVlLmV4ZWN1dGVRdWV1ZWRUYXNrcygpOwotICAg
IG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShzdHJpbmcpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9k
ZShXVEZNb3ZlKHN0cmluZykpOwogICAgIHByb2Nlc3NFbmRUYWcoV1RGTW92ZShhRW5kVG9rZW4p
KTsKIH0KIApAQCAtMjIxNSw3ICsyMjA0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2Vy
dFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmIHN0cmluZykKIC8vIDIuIFdyYXBzIHRoZSBw
aG9uZSBudW1iZXIgaW4gYSB0ZWw6IGxpbmsuCiAvLyAzLiBHb2VzIGJhY2sgdG8gc3RlcCAxIGlm
IGEgcGhvbmUgbnVtYmVyIGlzIGZvdW5kIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuCiAvLyA0
LiBBcHBlbmRzIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgYXMgYSB0ZXh0IG5vZGUuCi12b2lkIEhU
TUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcmIHN0cmluZykK
K3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKFN0cmluZyYmIHN0cmlu
ZykKIHsKICAgICBBU1NFUlQoVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkp
OwogCkBAIC0yMjQ4LDEwICsyMjM3LDEwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5
UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlmIChzY2FubmVyUG9zaXRp
b24gPiAwKSB7CiAgICAgICAgIGlmIChzY2FubmVyUG9zaXRpb24gPCBsZW5ndGgpIHsKICAgICAg
ICAgICAgIFN0cmluZyBhZnRlciA9IHN0cmluZy5zdWJzdHJpbmcoc2Nhbm5lclBvc2l0aW9uLCBs
ZW5ndGggLSBzY2FubmVyUG9zaXRpb24pOwotICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHRO
b2RlKGFmdGVyKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGFm
dGVyKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgbV90cmVlLmluc2VydFRleHRO
b2RlKHN0cmluZyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0cmlu
ZykpOwogfQogCiAvLyBMb29rcyBhdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBlbGVtZW50IHRvIGRl
dGVybWluZSB3aGV0aGVyIHdlJ3JlIGluc2lkZSBhbiBlbGVtZW50IHdoaWNoIGRpc2FsbG93cyBw
YXJzaW5nIHBob25lIG51bWJlcnMuCkBAIC0yMzI0LDcgKzIzMTMsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVm
ZmVyJiBidWZmZQogICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5IZWFkOiB7CiAgICAgICAgIFN0
cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlTGVhZGluZ1doaXRlc3BhY2UoKTsK
ICAgICAgICAgaWYgKCFsZWFkaW5nV2hpdGVzcGFjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBt
X3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOwor
ICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUobGVhZGluZ1doaXRlc3Bh
Y2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKQEAgLTIzMzQsNyAr
MjMyMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4
dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2Rl
OjpBZnRlckhlYWQ6IHsKICAgICAgICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVy
LnRha2VMZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hp
dGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5v
ZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVmYXVs
dEZvckFmdGVySGVhZCgpOwpAQCAtMjM3Miw3ICsyMzYxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYg
YnVmZmUKICAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXA6IHsKICAgICAgICAg
U3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgp
OwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7
CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVz
cGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJ
bkNvbHVtbkdyb3VwKCkpIHsKQEAgLTIzOTUsNyArMjM4NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIm
IGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJbkhlYWROb3NjcmlwdDogewogICAgICAg
ICBTdHJpbmcgbGVhZGluZ1doaXRlc3BhY2UgPSBidWZmZXIudGFrZUxlYWRpbmdXaGl0ZXNwYWNl
KCk7CiAgICAgICAgIGlmICghbGVhZGluZ1doaXRlc3BhY2UuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgbV90cmVlLmluc2VydFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNl
KTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRpbmdXaGl0
ZXNwYWNlKSwgQWxsV2hpdGVzcGFjZSk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsK
QEAgLTI0MDUsNyArMjM5NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFj
dGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJ
bnNlcnRpb25Nb2RlOjpBZnRlckZyYW1lc2V0OiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hp
dGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAo
IWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRU
ZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBt
X3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRl
c3BhY2UpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJy
b3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFueQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFy
YWN0ZXJzLgogICAgICAgICBicmVhazsKQEAgLTI0MTgsNyArMjQwNyw3IEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5C
dWZmZXImIGJ1ZmZlCiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50
YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNl
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9y
bWF0dGluZ0VsZW1lbnRzKCk7Ci0gICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVh
ZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOworICAgICAgICAgICAgbV90cmVlLmluc2Vy
dFRleHROb2RlKFdURk1vdmUobGVhZGluZ1doaXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAg
ICAgICAgfQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJy
b3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFueQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFy
YWN0ZXJzLgpAQCAtMjQzMSwxNiArMjQyMCwxNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZgog
ewogICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwog
ICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gYnVmZmVyLnRha2VSZW1haW5pbmcoKTsKKyAgICBpZiAo
bV9mcmFtZXNldE9rICYmICFpc0FsbFdoaXRlc3BhY2VPclJlcGxhY2VtZW50Q2hhcmFjdGVycyhj
aGFyYWN0ZXJzKSkKKyAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAjaWYgRU5BQkxFKFRF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
ICghaXNQYXJzaW5nRnJhZ21lbnQoKSAmJiBtX3RyZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5n
RW5hYmxlZCgpICYmIHNob3VsZFBhcnNlVGVsZXBob25lTnVtYmVyc0luTm9kZShtX3RyZWUuY3Vy
cmVudE5vZGUoKSkgJiYgVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpCi0g
ICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMoY2hhcmFjdGVycyk7CisgICAgICAgIGxpbmtpZnlQ
aG9uZU51bWJlcnMoV1RGTW92ZShjaGFyYWN0ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBtX3Ry
ZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0
Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpKTsKICNlbHNlCi0gICAgbV90cmVlLmluc2VydFRleHRO
b2RlKGNoYXJhY3RlcnMpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJh
Y3RlcnMpKTsKICNlbmRpZgotICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFj
ZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQotICAgICAgICBtX2ZyYW1lc2V0
T2sgPSBmYWxzZTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUo
QXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCkBAIC0yNTc3LDEyICsyNTY2LDEyIEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKQogICAgICAgICAvLyBGSVhNRTog
cGFyc2UgZXJyb3IKICAgICAgICAgSFRNTENvbnN0cnVjdGlvblNpdGU6OlJlZGlyZWN0VG9Gb3N0
ZXJQYXJlbnRHdWFyZCByZWRpcmVjdGVyKG1fdHJlZSk7CiAgICAgICAgIG1fdHJlZS5yZWNvbnN0
cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwotICAgICAgICBtX3RyZWUuaW5zZXJ0
VGV4dE5vZGUoY2hhcmFjdGVycywgTm90QWxsV2hpdGVzcGFjZSk7CisgICAgICAgIG1fdHJlZS5p
bnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpLCBOb3RBbGxXaGl0ZXNwYWNlKTsKICAg
ICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAgICAgICAgIG1faW5zZXJ0aW9uTW9kZSA9IG1f
b3JpZ2luYWxJbnNlcnRpb25Nb2RlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fdHJl
ZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKKyAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUo
V1RGTW92ZShjaGFyYWN0ZXJzKSk7CiAgICAgbV9pbnNlcnRpb25Nb2RlID0gbV9vcmlnaW5hbElu
c2VydGlvbk1vZGU7CiB9CiAKQEAgLTI4MjAsOSArMjgwOSw5IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiYmIHRva2Vu
KQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewogICAg
ICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJzKCksIHRva2Vu
LmNoYXJhY3RlcnNMZW5ndGgoKSk7Ci0gICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFy
YWN0ZXJzKTsKICAgICAgICAgaWYgKG1fZnJhbWVzZXRPayAmJiAhaXNBbGxXaGl0ZXNwYWNlT3JS
ZXBsYWNlbWVudENoYXJhY3RlcnMoY2hhcmFjdGVycykpCiAgICAgICAgICAgICBtX2ZyYW1lc2V0
T2sgPSBmYWxzZTsKKyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUoY2hhcmFj
dGVycykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZE9m
RmlsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5k
ZXggZTk2NmQ3ZjRhMjc3Y2MzYzNiOWJiYzNlNjJkZmU1Yjk1NjQxODk3YS4uMGVmYzc3ZjY1Nzc4
YTdiMWQwZmEwYzA4NDkyMmE4ZGU3ODU3ZGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBjbGFzcyBIVE1MVHJl
ZUJ1aWxkZXIgewogICAgIGJvb2wgaXNQYXJzaW5nRnJhZ21lbnRPclRlbXBsYXRlQ29udGVudHMo
KSBjb25zdDsKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIGluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIGxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJik7Cisg
ICAgdm9pZCBpbnNlcnRQaG9uZU51bWJlckxpbmsoU3RyaW5nJiYpOworICAgIHZvaWQgbGlua2lm
eVBob25lTnVtYmVycyhTdHJpbmcmJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1Rva2Vu
KEF0b21pY0hUTUxUb2tlbiYmKTsKQEAgLTE0NSw3ICsxNDUsNiBAQCBjbGFzcyBIVE1MVHJlZUJ1
aWxkZXIgewogICAgIHZvaWQgcHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1l
JiwgVmVjdG9yPEF0dHJpYnV0ZT4mJiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSk7
CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgdm9pZCBwcm9j
ZXNzRmFrZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZVBF
bmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAKICAgICB2b2lkIHByb2Nlc3NHZW5lcmljUkNEQVRB
U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZmYjhlYmFjNWIzZDcyYWNjZGQ3NDZhMjRjYjU0MThh
MjIzMGJjNDIuLjVhMWQzOTk3Y2U2YTBjN2JlNjQ5ZjU5MzYzZmM4NTY0M2I1MTY0MDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wNy0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIE1pY3JvLW9wdGltaXplIGlubmVySFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdW
aWV3LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAyMS0wNy0xNSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgbXkgc3RhdHVzIGluIGNvbnRyaWJ1dG9ycy5q
c29uIHRvIHJldmlld2VyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdW
aWV3LmNwcAppbmRleCA4NGVjNWRhZjJlNDNiZWE5YzQ4NTI3Y2EyNWNkZmQ4MjlhZjA3ZjQzLi5k
YWE4YWY3NWRjZWE0NWQ2NmNjNzVhNjM2MDlkMDJlMTkwNGJiZDBiIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcApAQCAtOTU5LDYgKzk1OSwyOCBAQCBU
RVNUKFdURiwgU3RyaW5nVmlld1JldmVyc2VGaW5kQmFzaWMpCiAgICAgRVhQRUNUX0VRKHJlZmVy
ZW5jZS5yZXZlcnNlRmluZCgnYycsIDQpLCBub3RGb3VuZCk7CiB9CiAKK1RFU1QoV1RGLCBTdHJp
bmdWaWV3U3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMpCit7CisgICAgYXV0byBpc0EgPSBb
XSAoVUNoYXIgYykgeworICAgICAgICByZXR1cm4gYyA9PSAnQSc7CisgICAgfTsKKworICAgIEVY
UEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQUFBQkJCQUFBIikuc3RyaXBMZWFkaW5n
TWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkJCQkFBQSIp
KTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkFBQUJCQkNDQyIpLnN0
cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzQSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFs
KCJCQkJDQ0MiKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDQ0NC
QkJBQUEiKS5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0EpID09IHN0cmluZ1ZpZXdG
cm9tTGl0ZXJhbCgiQ0NDQkJCQUFBIikpOworICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9t
TGl0ZXJhbCgiQ0NDQkJCQ0NDIikuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9
PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNDQ0JCQkNDQyIpKTsKKyAgICBFWFBFQ1RfVFJVRShz
dHJpbmdWaWV3RnJvbUxpdGVyYWwoIkFBQUFBQUNDQyIpLnN0cmlwTGVhZGluZ01hdGNoZWRDaGFy
YWN0ZXJzKGlzQSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDQ0MiKSk7CisgICAgRVhQRUNU
X1RSVUUoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJCQkJBQUFBQUEiKS5zdHJpcExlYWRpbmdNYXRj
aGVkQ2hhcmFjdGVycyhpc0EpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQkJCQUFBQUFBIikp
OworICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ0NDQUFBQkJCIikuc3Ry
aXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwo
IkNDQ0FBQUJCQiIpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkFB
QUFBQUFBQSIpLnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzQSkgPT0gU3RyaW5nVmll
dzo6ZW1wdHkoKSk7CisKKyAgICBTdHJpbmdWaWV3IGVtcHR5VmlldyA9IFN0cmluZ1ZpZXc6OmVt
cHR5KCk7CisgICAgRVhQRUNUX1RSVUUoZW1wdHlWaWV3LnN0cmlwTGVhZGluZ01hdGNoZWRDaGFy
YWN0ZXJzKGlzQSkgPT0gZW1wdHlWaWV3KTsKKworICAgIFN0cmluZ1ZpZXcgbnVsbFZpZXc7Cisg
ICAgRVhQRUNUX1RSVUUobnVsbFZpZXcuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNB
KSA9PSBudWxsVmlldyk7Cit9CisKIFRFU1QoV1RGLCBTdHJpbmdWaWV3U3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycykKIHsKICAgICBhdXRvIGlzQSA9IFtdIChVQ2hhciBj
KSB7IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKaW5kZXggMTFmY2Ix
MWU5ZGMyMGIwZmVhNzczZTIwOGM2MWY5NjAyMDRlMjc4YS4uZDJmZDdhMDY1OTZlMDg0N2E0YTA5
Yjc2OGViM2YyMDZkMTYyMmNhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0
b3IuY3BwCkBAIC0xNDU4LDUgKzE0NTgsNDEgQEAgVEVTVChXVEZfVmVjdG9yLCBDb25zdHJ1Y3Rv
ckZyb21SYXdQb2ludGVyQW5kU2l6ZSkKICAgICBFWFBFQ1RfRVEodmVjdG9yWzNdLCA0KTsKICAg
ICBFWFBFQ1RfRVEodmVjdG9yWzRdLCA1KTsKIH0KLSAgICAKKworVEVTVChXVEZfVmVjdG9yLCBT
aHJpbmtUb0Jlc3RGaXRDbGVhcikKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IHZlY3RvcjsKKyAg
ICB2ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB2ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB2ZWN0b3Iu
YXBwZW5kKDIwKTsKKyAgICB2ZWN0b3IucmVzaXplKDApOworICAgIHZlY3Rvci5zaHJpbmtUb0Jl
c3RGaXQoKTsKKyAgICBFWFBFQ1RfRVEodmVjdG9yLnNpemUoKSwgMFUpOworICAgIEVYUEVDVF9F
USh2ZWN0b3IuY2FwYWNpdHkoKSwgMFUpOworfQorCitURVNUKFdURl9WZWN0b3IsIFNocmlua1Rv
QmVzdEZpdERvZXNOb3RDaGFuZ2VJZkNhcGFjaXR5TWF0Y2hlcykKK3sKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IHZlY3RvcjsKKyAgICB2ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB2ZWN0b3IuYXBwZW5k
KDIwKTsKKyAgICB2ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB1bnNpZ25lZCBjYXBhY2l0eSA9IHZl
Y3Rvci5jYXBhY2l0eSgpOworICAgIHZlY3Rvci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICBFWFBF
Q1RfRVEodmVjdG9yLnNpemUoKSwgM1UpOworICAgIEVYUEVDVF9FUSh2ZWN0b3IuY2FwYWNpdHko
KSwgY2FwYWNpdHkpOworfQorCitURVNUKFdURl9WZWN0b3IsIFNocmlua1RvQmVzdEZpdCkKK3sK
KyAgICBWZWN0b3I8dWludDMyX3Q+IHZlY3RvcjsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCA0MDA7ICsraW5kZXgpCisgICAgICAgIHZlY3Rvci5hcHBlbmQoaW5kZXgpOwor
ICAgIHZlY3Rvci5yZXNpemUoMTAwKTsKKyAgICBFWFBFQ1RfR0UodmVjdG9yLmNhcGFjaXR5KCks
IDQwMFUpOworICAgIHZlY3Rvci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICBFWFBFQ1RfTEUodmVj
dG9yLmNhcGFjaXR5KCksIDIwMFUpOworICAgIEVYUEVDVF9HRSh2ZWN0b3IuY2FwYWNpdHkoKSwg
MTAwVSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434020</attachid>
            <date>2021-07-22 10:50:44 -0700</date>
            <delta_ts>2021-07-22 10:52:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228142-20210722105043.patch</filename>
            <type>text/plain</type>
            <size>54290</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmNDdjY2QyNmUyOWNhMTI3OTUxOTdl
OGQzNmU5ODFkYTE2N2RlZmEuLmQ0YzVkN2RlZDBmODYxZTdjMDRlYzVkMTEzNzZmNjc4ZGQwMTE5
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBNaWNyby1vcHRpbWl6ZSBpbm5lckhUTUwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpzaHJpbmtUb0Jlc3RGaXQpOiBUaGlzIHNocmlua3Mg
dGhlIGJhY2tpbmcgc3RvcmFnZSB0byAiYXBwcm9wcmlhdGUgZm9yIHRoZSBsaXZpbmcgVmVjdG9y
Ii4KKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6
OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOiBXVEY6OmVxdWFsIGZvciBTdHJpbmcgZG9l
cyBub3QgY2hlY2sgaGFzaC4gVGhpcyBpcyBiZWNhdXNlIGNvbXB1dGluZyBoYXNoIGlzIGV4cGVu
c2l2ZQorICAgICAgICBhbmQgd2Ugd291bGQgbGlrZSB0byBhdm9pZCB0aGF0IGlmIGl0IGlzIG5v
dCBuZWNlc3NhcnkuIEJ1dCB3aGVuIGluc2VydGluZyBzdHJpbmcgaW50byBBdG9tU3RyaW5nVGFi
bGUsIHdlIGNhbiB1c2UgaGFzaCB2YWx1ZQorICAgICAgICBzaW5jZSB0aGV5IG11c3QgYmUgYWxy
ZWFkeSBjb21wdXRlZCBiZWNhdXNlIG9mIEhhc2hNYXAncyByZXF1aXJlbWVudC4gU28gbGV0J3Mg
dXNlIGl0IGJlZm9yZSBjYWxsaW5nIFdURjo6ZXF1YWwuCisgICAgICAgIChXVEY6OkxDaGFyQnVm
ZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0
YVRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKTog
QWRkIHRoaXMgYW5kIHVzZSBpdCBpbiBIVE1MVHJlZUJ1aWxkZXIuCisKIDIwMjEtMDctMTUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2sxXSBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtd2VibS1vcHVzLXBhcnRpYWwuaHRtbCBpcyBhIGNvbnNpc3RlbnQg
ZmFpbHVyZSAoRW5hYmxlIFZQOC9WUDkvVm9yYmlzL09wdXMgaW4gV2ViS2l0TGVnYWN5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDFlMWEyMjU4ZGU2NWZiMzA3Yjg1MDdiMmFhZGMxYjgxMDdkMDdhNjAuLjU2NDYw
YjYzNWRhOTE0Y2Q3MTljN2MzYzRmZDUxYjM1YWI4ZGIxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMTAgQEAKKzIwMjEtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBNaWNyby1vcHRpbWl6ZSBpbm5lckhUTUwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGRvZXMgc29tZSBtaWNybyBvcHRpbWl6YXRpb25zIHJldmVhbGVkIGJ5IHRo
ZSBwcm9maWxlciB3aGVuIHJ1bm5pbmcgc29tZSBvZiBTcGVlZG9tZXRlcjIgdGVzdHMgd2hpY2gg
aW50ZW5zaXZlbHkgdXNlIGlubmVySFRNTC4KKyAgICAgICAgVGhpcyBvZmZlcnMgaW1wcm92ZW1l
bnQgaW4galF1ZXJ5LVRvZG9NVkMgYW5kIFZhbmlsbGEtRVMyMDE1LUJhYmVsLVdlYnBhY2stVG9k
b01WQyBzaW5jZSBib3RoIGFyZSBzdXBlciBpbm5lckhUTUwgaGVhdnkgYmVuY2htYXJrcy4KKwor
ICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0
ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAgfCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwg
cFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFsc2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAg
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgICAgICAgICB8MTI2Ljg2MjUwMCAgIHwxMjYuNjg3NTAwICAgfDAuOTk4NjIxICB8IDAuNjcz
NDYyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
VnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHwyNy43NzUwMDAgICAgfDI3LjY0
NTgzMyAgICB8MC45OTUzNTAgIHwgMC43NDE1ODggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAg
ICAgICAgfDEyOS4zNTAwMDAgICB8MTI5LjEyOTE2NyAgIHwwLjk5ODI5MyAgfCAwLjYyNDE5NiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEJhY2ti
b25lSlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICB8NTEuMTI5MTY3ICAgIHw1MS4yMDQxNjcg
ICAgfDEuMDAxNDY3ICB8IDAuNzE2NjIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgUHJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAg
IHwyMS44NzA4MzMgICAgfDIxLjMzNzUwMCAgICB8MC45NzU2MTQgIHwgMC4yMTc3NzEgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBBbmd1bGFySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDEzOS44NTQxNjcgICB8MTQwLjI2NjY2NyAgIHwx
LjAwMjk1MCAgfCAwLjQ4OTgzOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LVRvZG9NVkMgICAgICAgICAgICAgICB8Njku
MjI5MTY3ICAgIHw2OC44OTU4MzMgICAgfDAuOTk1MTg1ICB8IDAuMjM4NzcyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZD
ICAgICAgICAgICAgICAgICAgICAgIHw2OC4zOTE2NjcgICAgfDY4LjI2NjY2NyAgICB8MC45OTgx
NzIgIHwgMC43NjIyODEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDc3Ljk3OTE2
NyAgICB8NzguMTY2NjY3ICAgIHwxLjAwMjQwNCAgfCAwLjcxMDMyNCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQt
VG9kb01WQyAgICAgICAgICB8MzkuNzQxNjY3ICAgIHwzOS45NjY2NjcgICAgfDEuMDA1NjYyICB8
IDAuNTI0MTIzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgIHw1NS40MTY2NjcgICAg
fDU1LjUxMjUwMCAgICB8MS4wMDE3MjkgIHwgMC43ODE0NDcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBqUXVlcnktVG9kb01WQyAgICAgICAgICAg
ICAgICAgICAgICAgfDI2OC44MTI1MDAgICB8MjY2Ljk2NjY2NyAgIHwwLjk5MzEzMyAgfCAwLjAw
MzM4NCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAgICAgICAgICB8MzQ1LjM4MzMzMyAgIHwzNDUu
NjYyNTAwICAgfDEuMDAwODA4ICB8IDAuNjk1MjU5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHw5MC42NzkxNjcgICAgfDkwLjE3OTE2NyAgICB8MC45OTQ0ODYgIHwgMC4wNjc0Nzcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFj
dC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgfDE1Mi42OTE2NjcgICB8MTUyLjY4NzUw
MCAgIHwwLjk5OTk3MyAgfCAwLjk5MTIwNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01W
QyB8NjYuNDg3NTAwICAgIHw2NS43MjkxNjcgICAgfDAuOTg4NTk0ICB8IDAuMDAwMTE4IChzaWdu
aWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworCisgICAgICAgIGEgbWVhbiA9IDI0Mi4xMjMxOQorICAgICAgICBiIG1lYW4gPSAy
NDIuODA0ODUKKyAgICAgICAgcFZhbHVlID0gMC4xOTkyNjU0MTI4CisgICAgICAgIChCaWdnZXIg
bWVhbnMgYXJlIGJldHRlci4pCisgICAgICAgIDEuMDAzIHRpbWVzIGJldHRlcgorICAgICAgICBS
ZXN1bHRzIEFSRSBOT1Qgc2lnbmlmaWNhbnQKKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRUZXh0Tm9kZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9v
cCk6IFdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgYHNocmlua1RvQmVzdEZpdGAgaW4gZnJhZ21lbnQg
cGFyc2luZyBjYXNlIHNpbmNlCisgICAgICAgIHdlIHdpbGwgZGlzY2FyZCBIVE1MVG9rZW4gc29v
bi4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVja0Zvck1ldGFDaGFyc2V0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2xlYXIpOiBX
ZSBmb3VuZCB0aGF0IHRoZXNlIGBjbGVhcmAgY2FsbHMgY2F1c2UgcGVyZm9ybWFuY2UgcHJvYmxl
bSBhY2NvcmRpbmcgdG8gdGhlIEluc3RydW1lbnRzOiB3ZQorICAgICAgICByZXBlYXRlZGx5IHVz
ZSB0aGlzIFZlY3RvciwgYW5kIHdlIHJlcGVhdGVkbHkgYWxsb2NhdGUgYW5kIGRlYWxsb2NhdGUg
dGhpcyBWZWN0b3IgdW5uZWNlc3NhcmlseS4gV2UgdXNlIGByZXNpemUoMClgIGluc3RlYWQKKyAg
ICAgICAgdG8gYXZvaWQgdGhpcyBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW46OnNocmlua1RvQmVzdEZpdCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OmJlZ2luU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
OjpiZWdpbkVuZFRhZyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2hyaW5rVG9CZXN0Rml0KTogQnV0IEhU
TUxUb2tlbiBpcyBrZXB0IHNvIGxvbmcsIHNvIGF0IHNvbWUgcG9pbnQsIHdlIHdvdWxkIGxpa2Ug
dG8gbWFrZSBiYWNraW5nIHN0b3JhZ2UKKyAgICAgICAgc21hbGwuIFNvLCB3ZSBhZGQgc2hyaW5r
VG9CZXN0Rml0IGFuZCB3ZSBjYWxsIGl0IG9ubHkgYWZ0ZXIgZmluaXNoaW5nIGJhdGNoaW5nIG9m
IEhUTUxUb2tlbiBwcm9jZXNzaW5nLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hh
cmFjdGVyVG9rZW5CdWZmZXI6OmNoYXJhY3RlclByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxl
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbklu
Rm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRmFrZUNoYXJhY3RlcnMpOiBEZWxldGVkLiBJdCBpcyBkZWFkIGNvZGUgYmVmb3JlIHRoaXMg
cGF0Y2guCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VnbWVudGVkU3RyaW5nOjpTdWJzdHJpbmc6OmFwcGVuZFRvIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlZ21lbnRlZFN0cmluZzo6c2V0RXhjbHVkZUxpbmVOdW1iZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZFN0cmluZzo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVk
U3RyaW5nOjphcHBlbmRTdWJzdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3Ry
aW5nOjpwdXNoQmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFu
Y2VXaXRob3V0VXBkYXRpbmdMaW5lTnVtYmVyMTYpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVu
dGVkU3RyaW5nOjphZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcjE2KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZVBhc3RTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmdX
aXRob3V0VXBkYXRpbmdMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0
cmluZzo6YWR2YW5jZVBhc3RTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VnbWVudGVkU3RyaW5nOjphZHZhbmNlRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2VnbWVudGVkU3RyaW5nOjp1cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2ludGVyc0ZvclNpbmdsZUNo
YXJhY3RlclN1YnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OnVw
ZGF0ZUFkdmFuY2VGdW5jdGlvblBvaW50ZXJzRm9yRW1wdHlTdHJpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50
ZWRTdHJpbmc6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3Ry
aW5nOjpTdWJzdHJpbmc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50
ZWRTdHJpbmc6OlN1YnN0cmluZzo6Y2FuQWR2YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWdtZW50ZWRTdHJpbmc6OlN1YnN0cmluZzo6Y29uc3VtZUFsbCk6CisgICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRTdHJpbmc6OlN1YnN0cmluZzo6aGFzT25lQ2hhcmFjdGVyTGVmdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OlN1YnN0cmluZzo6Y3VycmVu
dENoYXJhY3RlcjgpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpTdWJzdHJp
bmc6OmN1cnJlbnRDaGFyYWN0ZXI4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRl
ZFN0cmluZzo6U3Vic3RyaW5nOjpjdXJyZW50Q2hhcmFjdGVyMTYpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VnbWVudGVkU3RyaW5nOjpTdWJzdHJpbmc6OmN1cnJlbnRDaGFyYWN0ZXIxNiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OlN1YnN0cmluZzo6U3Vic3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6U3Vic3RyaW5nOjpudW1iZXJP
ZkNoYXJhY3RlcnNDb25zdW1lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRT
dHJpbmc6OlN1YnN0cmluZzo6Y3VycmVudENoYXJhY3RlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRTdHJpbmc6OlNlZ21lbnRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VXaXRob3V0VXBkYXRpbmdMaW5lTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VQYXN0TmV3bGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VQYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Z21lbnRlZFN0cmluZzo6dXBkYXRlQWR2YW5jZUZ1bmN0aW9uUG9pbnRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpTdWJzdHJpbmc6OmN1cnJlbnRDaGFyYWN0ZXJQcmVJ
bmNyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpk
ZWNyZW1lbnRBbmRDaGVja0xlbmd0aCk6IERlbGV0ZWQuCisKIDIwMjEtMDctMTUgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2sxXSBtZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtd2VibS1vcHVzLXBhcnRpYWwuaHRtbCBpcyBhIGNvbnNpc3RlbnQgZmFpbHVy
ZSAoRW5hYmxlIFZQOC9WUDkvVm9yYmlzL09wdXMgaW4gV2ViS2l0TGVnYWN5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRl
eCBjZDE0NzQ0MTFjZjdiMGI4NjUxZDA5YzhhNzViOThiNzU1N2M2MGRhLi44MDA0MTlkZjQyNDlh
NTNlZGQ4MTllODViMDQ5YWRhNWZlZDMxMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9W
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNzY3LDYgKzc2NywxMiBA
QCBjbGFzcyBWZWN0b3IgOiBwcml2YXRlIFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVDYXBhY2l0eSwg
TWFsbG9jPiB7CiAgICAgdm9pZCBzaHJpbmtDYXBhY2l0eShzaXplX3QgbmV3Q2FwYWNpdHkpOwog
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKSB7IHNocmlua0NhcGFjaXR5KHNpemUoKSk7IH0KIAorICAg
IC8vIHNocmlua1RvQmVzdEZpdCBzaHJpbmtzIHRoZSBjYXBhY2l0eSBvZiB0aGUgVmVjdG9yIGFz
IGlmIGV4cGFuZENhcGFjaXR5IGhhcHBlbnMganVzdCBub3cuIHNocmlua1RvRml0IGF0dGVtcHRz
IHRvIG1ha2Ugc2l6ZSgpID09IGNhcGFjaXR5KCkuIFRodXMsCisgICAgLy8gaWYgd2UgYXBwZW5k
IHNvbWUgaXRlbXMgdG8gdGhpcyBWZWN0b3IganVzdCBhZnRlciB0aGF0LCB3ZSBhbHdheXMgbmVl
ZCB0byBleHBhbmQgdGhlIFZlY3Rvci4gU28gc2hyaW5rVG9GaXQgaXMgbm90IGFwcHJvcHJpYXRl
IGlmIHdlIGtub3cgY2FwYWNpdHkgb2YKKyAgICAvLyB0aGUgVmVjdG9yIGlzIG11Y2ggbGFyZ2Vy
IHRoYW4gdGhlIHNpemUgYW5kIHRoZSBWZWN0b3IgY2FuIGJlIGFwcGVuZGVkIHNvb24uIE9uIHRo
ZSBvdGhlciBoYW5kLCBzaHJpbmtUb0Jlc3RGaXQgY2FuIGxlYXZlIHNvbWUgcmVhc29uYWJsZSBz
aXplIG9mCisgICAgLy8gdGhlIGNhcGFjaXR5LgorICAgIHZvaWQgc2hyaW5rVG9CZXN0Rml0KCk7
CisKICAgICB2b2lkIGNsZWFyKCkgeyBzaHJpbmtDYXBhY2l0eSgwKTsgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IFQ+IFZlY3RvcjxVPiBpc29sYXRlZENvcHkoKSBjb25zdCAmOwpAQCAt
MTI1NSw2ICsxMjYxLDE1IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpzaHJpbmtDYXBhCiAgICAgYXNhblNldElu
aXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgordm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua1RvQmVzdEZpdCgp
Cit7CisgICAgc2l6ZV90IGN1cnJlbnRTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBuZXdDYXBh
Y2l0eSA9IGN1cnJlbnRTaXplID8gc3RkOjptYXg8c2l6ZV90PihtaW5DYXBhY2l0eSwgY3VycmVu
dFNpemUgKyBjdXJyZW50U2l6ZSAvIDQgKyAxKSA6IDA7CisgICAgQVNTRVJUKGN1cnJlbnRTaXpl
IDw9IG5ld0NhcGFjaXR5KTsKKyAgICBzaHJpbmtDYXBhY2l0eShuZXdDYXBhY2l0eSk7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KIHRlbXBs
YXRlPEZhaWx1cmVBY3Rpb24gYWN0aW9uLCB0eXBlbmFtZSBVPgogQUxXQVlTX0lOTElORSBib29s
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwg
TWFsbG9jPjo6YXBwZW5kKGNvbnN0IFUqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKaW5kZXggMDA5ZTJhMThmZmQyYTRhNDc0YTFlZGRm
NTU4ZjZlY2FiODI3OTM0ZS4uODRjZjhmNTJmMjVhNTc4OWQ4Mzg1NTIyZTRhODNjZTZiOWUxMjc2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKQEAgLTEyNyw3ICsxMjcs
MTAgQEAgc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9vbCBl
cXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwgY29uc3QgVUNoYXJCdWZmZXIm
IGJ1ZikKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNo
YXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOworICAgICAgICBhdXRvKiBpbXBsID0gc3RyLmdldCgpOwor
ICAgICAgICBpZiAoaW1wbC0+ZXhpc3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFy
YWN0ZXJzLCBidWYubGVuZ3RoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUo
UGFja2VkUHRyPFN0cmluZ0ltcGw+JiBsb2NhdGlvbiwgY29uc3QgVUNoYXJCdWZmZXImIGJ1Ziwg
dW5zaWduZWQgaGFzaCkKQEAgLTMwNyw3ICszMTAsMTAgQEAgc3RydWN0IExDaGFyQnVmZmVyVHJh
bnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4g
Y29uc3QmIHN0ciwgY29uc3QgTENoYXJCdWZmZXImIGJ1ZikKICAgICB7Ci0gICAgICAgIHJldHVy
biBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOworICAg
ICAgICBhdXRvKiBpbXBsID0gc3RyLmdldCgpOworICAgICAgICBpZiAoaW1wbC0+ZXhpc3RpbmdI
YXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUGFja2VkUHRyPFN0cmluZ0ltcGw+JiBsb2Nh
dGlvbiwgY29uc3QgTENoYXJCdWZmZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkKQEAgLTMyOSw3ICsz
MzUsMTAgQEAgc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvciB7CiAKICAgICBz
dGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwgY29uc3Qg
QnVmZmVyJiBidWYpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjplcXVhbChzdHIuZ2V0KCks
IGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsKKyAgICAgICAgYXV0byogaW1wbCA9IHN0ci5n
ZXQoKTsKKyAgICAgICAgaWYgKGltcGwtPmV4aXN0aW5nSGFzaCgpICE9IGJ1Zi5oYXNoKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjplcXVhbChpbXBsLCBi
dWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgdHJh
bnNsYXRlKFBhY2tlZFB0cjxTdHJpbmdJbXBsPiYgbG9jYXRpb24sIGNvbnN0IEJ1ZmZlciYgYnVm
LCB1bnNpZ25lZCBoYXNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBlZGVmZTE1OWQy
ZDcxOGViNmNlMTM5NGQ5NmIzMjBhNDQ0OGI4OTA3Li5hNjBmNmQ5YWE1YzgyZDY4Y2U1MTIyOGNl
ZWJlZDg1NGEwZDNkMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTMwLDYgKzEz
MCw4IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewogICAgIFN0cmluZ1ZpZXcgbGVmdCh1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW5ndGgpOyB9CiAgICAg
U3RyaW5nVmlldyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmlu
Zyh0aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4KKyAgICBTdHJpbmdWaWV3IHN0cmlwTGVh
ZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgogICAgIFN0
cmluZ1ZpZXcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBN
YXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7CiAKQEAgLTE4MSw2ICsxODMsOSBAQCBjbGFzcyBT
dHJpbmdWaWV3IGZpbmFsIHsKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTENoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFt
ZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgorICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5n
TWF0Y2hlZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IE1hdGNoZWRDaGFy
YWN0ZXJQcmVkaWNhdGUmKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUs
IHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+CiAgICAgU3RyaW5nVmlldyBzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUq
LCBjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7CiAKQEAgLTEwMjksNiArMTAzNCwz
MiBAQCBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6Om9wZXJh
dG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKQogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hl
ZENoYXJhY3RlclByZWRpY2F0ZT4KK2lubGluZSBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlw
TGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmIHByZWRpY2F0ZSkKK3sKKyAgICB1bnNp
Z25lZCBzdGFydCA9IDA7CisgICAgd2hpbGUgKHN0YXJ0IDwgbV9sZW5ndGggJiYgcHJlZGljYXRl
KGNoYXJhY3RlcnNbc3RhcnRdKSkKKyAgICAgICAgKytzdGFydDsKKworICAgIGlmIChzdGFydCA9
PSBtX2xlbmd0aCkKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXc6OmVtcHR5KCk7CisKKyAgICBp
ZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBTdHJpbmdWaWV3IHJlc3Vs
dChjaGFyYWN0ZXJzICsgc3RhcnQsIG1fbGVuZ3RoIC0gc3RhcnQpOworICAgIHJlc3VsdC5zZXRV
bmRlcmx5aW5nU3RyaW5nKCp0aGlzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgorU3RyaW5nVmlldyBTdHJpbmdW
aWV3OjpzdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBNYXRjaGVkQ2hhcmFjdGVy
UHJlZGljYXRlJiBwcmVkaWNhdGUpCit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1
cm4gc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KGNoYXJhY3RlcnM4KCksIHBy
ZWRpY2F0ZSk7CisgICAgcmV0dXJuIHN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzPFVDaGFy
PihjaGFyYWN0ZXJzMTYoKSwgcHJlZGljYXRlKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4KIGlubGluZSBT
dHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJh
Y3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgY29uc3QgTWF0Y2hlZENoYXJh
Y3RlclByZWRpY2F0ZSYgcHJlZGljYXRlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDQ5ODBmNDVkNzY3MjJkNGQx
ZDMzZGE0OTBiYjNiODFhYjAzZDY2OGYuLjVkODUyZWMxMGNlNGJjZjZkOGRjMWIzMTg1Y2RjMTJi
NmU3ZDc0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbiwgY29u
c3QgQQogICAgICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShX
VEZNb3ZlKGVsZW1lbnQpLCBXVEZNb3ZlKHRva2VuKSwgbmFtZXNwYWNlVVJJKSk7CiB9CiAKLXZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYgY2hh
cmFjdGVycywgV2hpdGVzcGFjZU1vZGUgd2hpdGVzcGFjZU1vZGUpCit2b2lkIEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShTdHJpbmcmJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNl
TW9kZSB3aGl0ZXNwYWNlTW9kZSkKIHsKICAgICBIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2sgdGFz
ayhIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6Okluc2VydCk7CiAgICAgdGFzay5wYXJlbnQgPSAm
Y3VycmVudE5vZGUoKTsKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMsIFdoaXRlc3BhY2VN
bwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2hvbGUgc3RyaW5nIG9mIHVuYnJlYWthYmxlIGNo
YXJhY3RlcnMgdGhlIGFib3ZlIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcC4gRXhjZWVk
aW5nIHRoZSBsZW5ndGggbGltaXQgaXMgdGhlIGxlc3NlciBldmlsLgogICAgICAgICBpZiAoIXRl
eHROb2RlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9IGNoYXJh
Y3RlcnMuc3Vic3RyaW5nKGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9
IFRleHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxkVXNlQXRvbVN0cmlu
ZyA/IEF0b21TdHJpbmcoc3Vic3RyaW5nKS5zdHJpbmcoKSA6IHN1YnN0cmluZyk7CisgICAgICAg
ICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hv
dWxkVXNlQXRvbVN0cmluZyA/IEF0b21TdHJpbmcoV1RGTW92ZShzdWJzdHJpbmcpKS5zdHJpbmco
KSA6IHN1YnN0cmluZyk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0g
dGV4dE5vZGUtPmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggNTczMWZiMDVhMjRjZmNjYjJiNDg0NTQ0MzEyYWNk
ZDhiMzViYjk5My4uMTI3ODU0OWQ3MWJmNzZiZTFkNDZkNjMwOTA0Y2I1ZTA2NzY0N2NiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5o
CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgSFRNTENvbnN0cnVjdGlvblNpdGUgewogICAgIHZv
aWQgaW5zZXJ0SFRNTEJvZHlFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsKICAgICB2b2lkIGlu
c2VydEhUTUxGb3JtRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiwgYm9vbCBpc0RlbW90ZWQgPSBm
YWxzZSk7CiAgICAgdm9pZCBpbnNlcnRTY3JpcHRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsK
LSAgICB2b2lkIGluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYsIFdoaXRlc3BhY2VNb2RlID0g
V2hpdGVzcGFjZVVua25vd24pOworICAgIHZvaWQgaW5zZXJ0VGV4dE5vZGUoU3RyaW5nJiYsIFdo
aXRlc3BhY2VNb2RlID0gV2hpdGVzcGFjZVVua25vd24pOwogICAgIHZvaWQgaW5zZXJ0Rm9yZWln
bkVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVS
SSk7CiAKICAgICB2b2lkIGluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hU
TUxUb2tlbiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCmluZGV4IDYzNDk2Y2IxMjRjNWMwNzExZTUyODQ4ZTY2OTNkMTM1ODM1MjQ4
YWEuLmQ5ZmYyMGRjZDRkOWQxYzQ2YmQ5OGVlY2NmMzllM2NmZGFmZjA0YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDMs
NyArNDMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25D
b3VudEluY3JlbWVudGVyLmgiCi0KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTYsNiArMjU2
LDExIEBAIERvY3VtZW50KiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnRleHRGb3JQYXJzaW5nU2Vz
c2lvbigpCiAKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5j
aHJvbm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJhZ21lbnQsIFB1bXBTZXNzaW9uJiBzZXNz
aW9uKQogeworICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAg
ICBpZiAoIXBhcnNpbmdGcmFnbWVudCkKKyAgICAgICAgICAgIG1fdG9rZW5pemVyLnNocmlua1Rv
QmVzdEZpdCgpOworICAgIH0pOworCiAgICAgZG8gewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNX
YWl0aW5nRm9yU2NyaXB0cygpKSkgewogICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVs
ZCAmJiBtX3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQo
bV90cmVlQnVpbGRlci0+c2NyaXB0VG9Qcm9jZXNzKCksIHNlc3Npb24pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5kZXgg
M2IwNjY4ZDI0YjI5NmE5NDY2MTFmMDI1M2RlODRhOGU5MGZlM2E5MS4uMDdjOTViNDAyZDZlYWZk
YTc1ZGRiNGJmYTAyYzliNWJjY2Q5Nzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlRleHRDb2RlYy5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU3LDYgKzE1OCwxMCBAQCBib29sIEhUTUxNZXRh
Q2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQogICAgIGJvb2wgaWdub3JlZFNhd0Vycm9yRmxhZzsKICAgICBtX2lucHV0LmFw
cGVuZChtX2NvZGVjLT5kZWNvZGUoZGF0YSwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UsIGlnbm9yZWRT
YXdFcnJvckZsYWcpKTsKIAorICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0g
eworICAgICAgICBtX3Rva2VuaXplci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICB9KTsKKwogICAg
IHdoaWxlIChhdXRvIHRva2VuID0gbV90b2tlbml6ZXIubmV4dFRva2VuKG1faW5wdXQpKSB7CiAg
ICAgICAgIGJvb2wgaXNFbmQgPSB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnOwog
ICAgICAgICBpZiAoaXNFbmQgfHwgdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFn
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcAppbmRleCA5NDgxOWVjZWU5ZTc3M2U0YzU4NWQ5NzY0N2Q0NThjNjA4NTRlMmVmLi4yZGFh
NDQ5YjAyZTcwMDk5YzBkY2ZhM2I0YzQ3OGY3NmE1Yjg0MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTUxNCw2ICs1MTQs
NyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIm
IHByZWxvYWRlciwgRG9jdW1lbnQmIGRvY3VtZQogICAgICAgICAgICAgbV90b2tlbml6ZXIudXBk
YXRlU3RhdGVGb3IoQXRvbVN0cmluZyh0b2tlbi0+bmFtZSgpKSk7CiAgICAgICAgIG1fc2Nhbm5l
ci5zY2FuKCp0b2tlbiwgcmVxdWVzdHMsIGRvY3VtZW50KTsKICAgICB9CisgICAgbV90b2tlbml6
ZXIuc2hyaW5rVG9CZXN0Rml0KCk7CiAKICAgICBwcmVsb2FkZXIucHJlbG9hZChXVEZNb3ZlKHJl
cXVlc3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IGI1
MDdlNGY4ZTNhOGExMGNhMDc5ZmVkYTM5MTVkZjI3NTJjYjYyM2IuLjUxZWI1NDc3NTVhM2Y4OTU4
MmJmZTI5MmZmMmJjNWVlNTVjYTZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
b2tlbi5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIEhUTUxUb2tlbiB7CiAgICAgSFRNTFRva2Vu
KCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaHJpbmtUb0Jlc3RGaXQoKTsKIAog
ICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogCkBAIC0xNzAsMTAgKzE3MSwxNiBAQCBpbmxpbmUgSFRN
TFRva2VuOjpIVE1MVG9rZW4oKQogaW5saW5lIHZvaWQgSFRNTFRva2VuOjpjbGVhcigpCiB7CiAg
ICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKLSAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICBtX2Rh
dGEucmVzaXplKDApOwogICAgIG1fZGF0YThCaXRDaGVjayA9IDA7CiB9CiAKK2lubGluZSB2b2lk
IEhUTUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KCkKK3sKKyAgICBtX2RhdGEuc2hyaW5rVG9CZXN0
Rml0KCk7CisgICAgbV9hdHRyaWJ1dGVzLnNocmlua1RvQmVzdEZpdCgpOworfQorCiBpbmxpbmUg
SFRNTFRva2VuOjpUeXBlIEhUTUxUb2tlbjo6dHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
dHlwZTsKQEAgLTI3Myw3ICsyODAsNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luU3Rh
cnRUYWcoVUNoYXIgY2hhcmFjdGVyKQogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXpl
ZCk7CiAgICAgbV90eXBlID0gU3RhcnRUYWc7CiAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwot
ICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5yZXNpemUoMCk7CiAK
ICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CkBA
IC0yODgsNyArMjk1LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkVuZFRhZyhMQ2hh
ciBjaGFyYWN0ZXIpCiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBt
X3R5cGUgPSBFbmRUYWc7CiAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAgIG1fYXR0cmli
dXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5yZXNpemUoMCk7CiAKICNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CkBAIC0zMDIsNyArMzA5
LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkVuZFRhZyhjb25zdCBWZWN0b3I8TENo
YXIsIDMyPiYgY2hhcmFjdGVycykKICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQp
OwogICAgIG1fdHlwZSA9IEVuZFRhZzsKICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0gICAg
bV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9hdHRyaWJ1dGVzLnJlc2l6ZSgwKTsKIAogI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAppbmRleCA1ZDgxOTFmNDQ4OTU0
NDIxNThjZjdlMjU0YTNhMWM1Njg3YTgwNDRjLi4wOWZlZWRhMTk3YjdlYzQ1ODUwZjE4ODczYzk4
Zjk1OWNhMTkxMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXpl
ci5oCkBAIC03OSw2ICs3OSwxMSBAQCBjbGFzcyBIVE1MVG9rZW5pemVyIHsKIAogICAgIGJvb2wg
bmV2ZXJTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdDsKIAorICAgIHZvaWQgc2hyaW5rVG9CZXN0
Rml0KCkKKyAgICB7CisgICAgICAgIG1fdG9rZW4uc2hyaW5rVG9CZXN0Rml0KCk7CisgICAgfQor
CiBwcml2YXRlOgogICAgIGVudW0gU3RhdGUgewogICAgICAgICBEYXRhU3RhdGUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBiNDU4NWMx
NDVkNTJlMjBiYTgzMjExMGU5M2UxNDcwY2NhY2JjNWE2Li43NTVmOGQ0OTVlMTk1MzY1Njc0YjIw
ODc0OWY0MjQ1ZTZlMDNhM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5jcHAKQEAgLTIyNiwxMSArMjI2LDcgQEAgY2xhc3MgSFRNTFRyZWVCdWls
ZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIHsKICAgICB0ZW1wbGF0ZTxib29sIGNo
YXJhY3RlclByZWRpY2F0ZShVQ2hhcik+IHZvaWQgc2tpcExlYWRpbmcoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAgICB3aGlsZSAoY2hhcmFjdGVyUHJlZGljYXRl
KG1fdGV4dFswXSkpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9IG1fdGV4dC5zdWJzdHJpbmcoMSk7
Ci0gICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgbV90ZXh0ID0gbV90ZXh0LnN0cmlwTGVhZGluZ01hdGNo
ZWRDaGFyYWN0ZXJzKGNoYXJhY3RlclByZWRpY2F0ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPiBTdHJpbmcgdGFrZUxlYWRpbmcoKQpAQCAt
NDMzLDEzICs0MjksNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VFbmRUYWco
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKICAgICBwcm9jZXNzRmFrZUVuZFRhZyh0YWdO
YW1lLmxvY2FsTmFtZSgpKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtl
Q2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMpCi17Ci0gICAgQVNTRVJUKCFjaGFy
YWN0ZXJzLmlzRW1wdHkoKSk7Ci0gICAgRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciBidWZm
ZXIoY2hhcmFjdGVycyk7Ci0gICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihidWZmZXIpOwotfQot
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29w
ZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCkuaW5CdXR0b25TY29wZShwVGFn
LT5sb2NhbE5hbWUoKSkpCkBAIC0yMTk1LDcgKzIxODQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NoYXJhY3RlcihBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKIAogLy8gRklYTUU6
IEV4dHJhY3QgdGhlIGZvbGxvd2luZyBpT1Mtc3BlY2lmaWMgY29kZSBpbnRvIGEgc2VwYXJhdGUg
ZmlsZS4KIC8vIEZyb20gdGhlIHN0cmluZyA0MDg5OTYxMDEwLCBjcmVhdGVzIGEgbGluayBvZiB0
aGUgZm9ybSA8YSBocmVmPSJ0ZWw6NDA4OTk2MTAxMCI+NDA4OTk2MTAxMDwvYT4gYW5kIGluc2Vy
dHMgaXQuCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVy
TGluayhTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRl
czsKICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0ciwg
bWFrZVN0cmluZygidGVsOiJfcywgc3RyaW5nKSkpOwpAQCAtMjIwNiw3ICsyMTk1LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmIHN0
cmluZykKIAogICAgIHByb2Nlc3NTdGFydFRhZyhXVEZNb3ZlKGFTdGFydFRva2VuKSk7CiAgICAg
bV90cmVlLmV4ZWN1dGVRdWV1ZWRUYXNrcygpOwotICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShz
dHJpbmcpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpOwogICAg
IHByb2Nlc3NFbmRUYWcoV1RGTW92ZShhRW5kVG9rZW4pKTsKIH0KIApAQCAtMjIxNSw3ICsyMjA0
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBT
dHJpbmcmIHN0cmluZykKIC8vIDIuIFdyYXBzIHRoZSBwaG9uZSBudW1iZXIgaW4gYSB0ZWw6IGxp
bmsuCiAvLyAzLiBHb2VzIGJhY2sgdG8gc3RlcCAxIGlmIGEgcGhvbmUgbnVtYmVyIGlzIGZvdW5k
IGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuCiAvLyA0LiBBcHBlbmRzIHRoZSByZXN0IG9mIHRo
ZSBzdHJpbmcgYXMgYSB0ZXh0IG5vZGUuCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBo
b25lTnVtYmVycyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjps
aW5raWZ5UGhvbmVOdW1iZXJzKFN0cmluZyYmIHN0cmluZykKIHsKICAgICBBU1NFUlQoVGVsZXBo
b25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpOwogCkBAIC0yMjQ4LDEwICsyMjM3LDEw
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogICAgIGlmIChzY2FubmVyUG9zaXRpb24gPiAwKSB7CiAgICAgICAgIGlmIChz
Y2FubmVyUG9zaXRpb24gPCBsZW5ndGgpIHsKICAgICAgICAgICAgIFN0cmluZyBhZnRlciA9IHN0
cmluZy5zdWJzdHJpbmcoc2Nhbm5lclBvc2l0aW9uLCBsZW5ndGggLSBzY2FubmVyUG9zaXRpb24p
OwotICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGFmdGVyKTsKKyAgICAgICAgICAg
IG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGFmdGVyKSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UKLSAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmluZyk7CisgICAgICAgIG1f
dHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpOwogfQogCiAvLyBMb29rcyBhdCB0
aGUgYW5jZXN0b3JzIG9mIHRoZSBlbGVtZW50IHRvIGRldGVybWluZSB3aGV0aGVyIHdlJ3JlIGlu
c2lkZSBhbiBlbGVtZW50IHdoaWNoIGRpc2FsbG93cyBwYXJzaW5nIHBob25lIG51bWJlcnMuCkBA
IC0yMzI0LDcgKzIzMTMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rl
ckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJiBidWZmZQogICAgIGNhc2UgSW5z
ZXJ0aW9uTW9kZTo6SW5IZWFkOiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9
IGJ1ZmZlci50YWtlTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKCFsZWFkaW5nV2hp
dGVzcGFjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVh
ZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOworICAgICAgICAgICAgbV90cmVlLmluc2Vy
dFRleHROb2RlKFdURk1vdmUobGVhZGluZ1doaXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAg
ICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGRlZmF1bHRGb3JJbkhlYWQoKTsKQEAgLTIzMzQsNyArMjMyMyw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZm
ZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpBZnRlckhlYWQ6IHsKICAgICAgICAg
U3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgp
OwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7
CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVz
cGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVmYXVsdEZvckFmdGVySGVhZCgpOwpAQCAtMjM3
Miw3ICsyMzYxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZm
ZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYgYnVmZmUKICAgICBjYXNlIEluc2VydGlv
bk1vZGU6OkluQ29sdW1uR3JvdXA6IHsKICAgICAgICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNl
ID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdX
aGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShs
ZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5z
ZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwog
ICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKQEAgLTIz
OTUsNyArMjM4NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVm
ZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRp
b25Nb2RlOjpJbkhlYWROb3NjcmlwdDogewogICAgICAgICBTdHJpbmcgbGVhZGluZ1doaXRlc3Bh
Y2UgPSBidWZmZXIudGFrZUxlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmICghbGVhZGlu
Z1doaXRlc3BhY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2Rl
KGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNlKTsKKyAgICAgICAgICAgIG1fdHJlZS5p
bnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRpbmdXaGl0ZXNwYWNlKSwgQWxsV2hpdGVzcGFjZSk7
CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKQEAgLTI0MDUsNyArMjM5NCw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFj
dGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpBZnRlckZyYW1l
c2V0OiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVt
YWluaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFj
ZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RG
TW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJyb3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFu
eQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgogICAgICAgICBicmVhazsK
QEAgLTI0MTgsNyArMjQwNyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFj
dGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgICAgIFN0
cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgp
OwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7Ci0gICAg
ICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRl
c3BhY2UpOworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUobGVhZGlu
Z1doaXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJyb3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFu
eQogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgpAQCAtMjQzMSwxNiArMjQy
MCwxNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvcklu
Qm9keShFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZgogewogICAgIG1fdHJlZS5yZWNvbnN0cnVj
dFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwogICAgIFN0cmluZyBjaGFyYWN0ZXJzID0g
YnVmZmVyLnRha2VSZW1haW5pbmcoKTsKKyAgICBpZiAobV9mcmFtZXNldE9rICYmICFpc0FsbFdo
aXRlc3BhY2VPclJlcGxhY2VtZW50Q2hhcmFjdGVycyhjaGFyYWN0ZXJzKSkKKyAgICAgICAgbV9m
cmFtZXNldE9rID0gZmFsc2U7CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSAm
JiBtX3RyZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpICYmIHNob3VsZFBhcnNl
VGVsZXBob25lTnVtYmVyc0luTm9kZShtX3RyZWUuY3VycmVudE5vZGUoKSkgJiYgVGVsZXBob25l
TnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpCi0gICAgICAgIGxpbmtpZnlQaG9uZU51bWJl
cnMoY2hhcmFjdGVycyk7CisgICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMoV1RGTW92ZShjaGFy
YWN0ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFj
dGVycyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMp
KTsKICNlbHNlCi0gICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOworICAgIG1f
dHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpKTsKICNlbmRpZgotICAgIGlm
IChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJz
KGNoYXJhY3RlcnMpKQotICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKIH0KIAogdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4p
CkBAIC0yNTc3LDEyICsyNTY2LDEyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9y
SW5UYWJsZVRleHQoKQogICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IKICAgICAgICAgSFRN
TENvbnN0cnVjdGlvblNpdGU6OlJlZGlyZWN0VG9Gb3N0ZXJQYXJlbnRHdWFyZCByZWRpcmVjdGVy
KG1fdHJlZSk7CiAgICAgICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdF
bGVtZW50cygpOwotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycywgTm90
QWxsV2hpdGVzcGFjZSk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNo
YXJhY3RlcnMpLCBOb3RBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgbV9mcmFtZXNldE9rID0gZmFs
c2U7CiAgICAgICAgIG1faW5zZXJ0aW9uTW9kZSA9IG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0
ZXJzKTsKKyAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShjaGFyYWN0ZXJzKSk7CiAg
ICAgbV9pbnNlcnRpb25Nb2RlID0gbV9vcmlnaW5hbEluc2VydGlvbk1vZGU7CiB9CiAKQEAgLTI4
MjAsOSArMjgwOSw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVp
Z25Db250ZW50KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewogICAgICAgICBTdHJpbmcgY2hhcmFjdGVycyA9
IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJzKCksIHRva2VuLmNoYXJhY3RlcnNMZW5ndGgoKSk7Ci0g
ICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKICAgICAgICAgaWYgKG1f
ZnJhbWVzZXRPayAmJiAhaXNBbGxXaGl0ZXNwYWNlT3JSZXBsYWNlbWVudENoYXJhY3RlcnMoY2hh
cmFjdGVycykpCiAgICAgICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKKyAgICAgICAgbV90
cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUoY2hhcmFjdGVycykpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggZTk2NmQ3ZjRhMjc3Y2MzYzNiOWJi
YzNlNjJkZmU1Yjk1NjQxODk3YS4uMGVmYzc3ZjY1Nzc4YTdiMWQwZmEwYzA4NDkyMmE4ZGU3ODU3
ZGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgK
QEAgLTEwOCw4ICsxMDgsOCBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAgIGJvb2wgaXNQ
YXJzaW5nRnJhZ21lbnRPclRlbXBsYXRlQ29udGVudHMoKSBjb25zdDsKIAogI2lmIEVOQUJMRShU
RUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2
b2lkIGluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGxpbmtp
ZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBpbnNlcnRQaG9uZU51bWJl
ckxpbmsoU3RyaW5nJiYpOworICAgIHZvaWQgbGlua2lmeVBob25lTnVtYmVycyhTdHJpbmcmJik7
CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiYmKTsKQEAg
LTE0NSw3ICsxNDUsNiBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAgIHZvaWQgcHJvY2Vz
c0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9yPEF0dHJpYnV0ZT4mJiBh
dHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSk7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVu
ZFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhj
b25zdCBBdG9tU3RyaW5nJik7Ci0gICAgdm9pZCBwcm9jZXNzRmFrZUNoYXJhY3RlcnMoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7
CiAKICAgICB2b2lkIHByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2Vu
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRT
dHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
Y3BwCmluZGV4IGMwODNlYTdhZjc0YzI2YzNlNDE1Y2U0NTg2MGFiN2U4ZDFkZGU4OWUuLjhlNzdi
NWFhOTRlYWJlZjMyNjlmYjA5ODg5Nzg3MWQ3MTgwMDU1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKQEAgLTI1LDkgKzI1LDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3QgY2hhciogY29uc3QgZW1wdHlTdHJpbmdQ
b2ludGVyID0gIiI7CisKIGlubGluZSB2b2lkIFNlZ21lbnRlZFN0cmluZzo6U3Vic3RyaW5nOjph
cHBlbmRUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewotICAgIGJ1aWxkZXIuYXBw
ZW5kU3Vic3RyaW5nKHN0cmluZywgc3RyaW5nLmxlbmd0aCgpIC0gbGVuZ3RoLCBsZW5ndGgpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kU3Vic3RyaW5nKG1fc3RyaW5nLCBtX3N0cmluZy5sZW5ndGgoKSAt
IGxlbmd0aCgpLCBsZW5ndGgoKSk7CiB9CiAKIFNlZ21lbnRlZFN0cmluZyYgU2VnbWVudGVkU3Ry
aW5nOjpvcGVyYXRvcj0oU2VnbWVudGVkU3RyaW5nJiYgb3RoZXIpCkBAIC01NCwyNSArNTYsMjUg
QEAgU2VnbWVudGVkU3RyaW5nJiBTZWdtZW50ZWRTdHJpbmc6Om9wZXJhdG9yPShTZWdtZW50ZWRT
dHJpbmcmJiBvdGhlcikKIAogdW5zaWduZWQgU2VnbWVudGVkU3RyaW5nOjpsZW5ndGgoKSBjb25z
dAogewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fY3VycmVudFN1YnN0cmluZy5sZW5ndGg7Cisg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jdXJyZW50U3Vic3RyaW5nLmxlbmd0aCgpOwogICAgIGZv
ciAoYXV0byYgc3Vic3RyaW5nIDogbV9vdGhlclN1YnN0cmluZ3MpCi0gICAgICAgIGxlbmd0aCAr
PSBzdWJzdHJpbmcubGVuZ3RoOworICAgICAgICBsZW5ndGggKz0gc3Vic3RyaW5nLmxlbmd0aCgp
OwogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpzZXRFeGNs
dWRlTGluZU51bWJlcnMoKQogewotICAgIGlmICghbV9jdXJyZW50U3Vic3RyaW5nLmRvTm90RXhj
bHVkZUxpbmVOdW1iZXJzKQorICAgIGlmICghbV9jdXJyZW50U3Vic3RyaW5nLm1fZG9Ob3RFeGNs
dWRlTGluZU51bWJlcnMpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRTdWJzdHJpbmcu
ZG9Ob3RFeGNsdWRlTGluZU51bWJlcnMgPSBmYWxzZTsKKyAgICBtX2N1cnJlbnRTdWJzdHJpbmcu
bV9kb05vdEV4Y2x1ZGVMaW5lTnVtYmVycyA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3Vic3Ry
aW5nIDogbV9vdGhlclN1YnN0cmluZ3MpCi0gICAgICAgIHN1YnN0cmluZy5kb05vdEV4Y2x1ZGVM
aW5lTnVtYmVycyA9IGZhbHNlOworICAgICAgICBzdWJzdHJpbmcubV9kb05vdEV4Y2x1ZGVMaW5l
TnVtYmVycyA9IGZhbHNlOwogICAgIHVwZGF0ZUFkdmFuY2VGdW5jdGlvblBvaW50ZXJzKCk7CiB9
CiAKIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpjbGVhcigpCiB7Ci0gICAgbV9jdXJyZW50U3Vic3Ry
aW5nLmxlbmd0aCA9IDA7CisgICAgbV9jdXJyZW50U3Vic3RyaW5nLmNvbnN1bWVBbGwoKTsKICAg
ICBtX290aGVyU3Vic3RyaW5ncy5jbGVhcigpOwogCiAgICAgbV9pc0Nsb3NlZCA9IGZhbHNlOwpA
QCAtODksOSArOTEsOSBAQCB2b2lkIFNlZ21lbnRlZFN0cmluZzo6Y2xlYXIoKQogaW5saW5lIHZv
aWQgU2VnbWVudGVkU3RyaW5nOjphcHBlbmRTdWJzdHJpbmcoU3Vic3RyaW5nJiYgc3Vic3RyaW5n
KQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7Ci0gICAgaWYgKCFzdWJzdHJpbmcubGVuZ3Ro
KQorICAgIGlmICghc3Vic3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KG1fY3VycmVudFN1YnN0cmluZy5sZW5ndGgpCisgICAgaWYgKG1fY3VycmVudFN1YnN0cmluZy5s
ZW5ndGgoKSkKICAgICAgICAgbV9vdGhlclN1YnN0cmluZ3MuYXBwZW5kKFdURk1vdmUoc3Vic3Ry
aW5nKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fbnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWRQ
cmlvclRvQ3VycmVudFN1YnN0cmluZyArPSBtX2N1cnJlbnRTdWJzdHJpbmcubnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWQoKTsKQEAgLTExNSwxMCArMTE3LDEwIEBAIHZvaWQgU2VnbWVudGVkU3Ry
aW5nOjpwdXNoQmFjayhTdHJpbmcmJiBzdHJpbmcpCiAgICAgQVNTRVJUKHN0cmluZy5sZW5ndGgo
KSA8PSBudW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKIAogICAgIG1fbnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWRQcmlvclRvQ3VycmVudFN1YnN0cmluZyArPSBtX2N1cnJlbnRTdWJzdHJp
bmcubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKTsKLSAgICBpZiAobV9jdXJyZW50U3Vic3Ry
aW5nLmxlbmd0aCkKKyAgICBpZiAobV9jdXJyZW50U3Vic3RyaW5nLmxlbmd0aCgpKQogICAgICAg
ICBtX290aGVyU3Vic3RyaW5ncy5wcmVwZW5kKFdURk1vdmUobV9jdXJyZW50U3Vic3RyaW5nKSk7
CiAgICAgbV9jdXJyZW50U3Vic3RyaW5nID0gV1RGTW92ZShzdHJpbmcpOwotICAgIG1fbnVtYmVy
T2ZDaGFyYWN0ZXJzQ29uc3VtZWRQcmlvclRvQ3VycmVudFN1YnN0cmluZyAtPSBtX2N1cnJlbnRT
dWJzdHJpbmcubGVuZ3RoOworICAgIG1fbnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWRQcmlvclRv
Q3VycmVudFN1YnN0cmluZyAtPSBtX2N1cnJlbnRTdWJzdHJpbmcubGVuZ3RoKCk7CiAgICAgbV9j
dXJyZW50Q2hhcmFjdGVyID0gbV9jdXJyZW50U3Vic3RyaW5nLmN1cnJlbnRDaGFyYWN0ZXIoKTsK
ICAgICB1cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2ludGVycygpOwogfQpAQCAtMTY0LDIzICsxNjYs
MjUgQEAgU3RyaW5nIFNlZ21lbnRlZFN0cmluZzo6dG9TdHJpbmcoKSBjb25zdAogCiB2b2lkIFNl
Z21lbnRlZFN0cmluZzo6YWR2YW5jZVdpdGhvdXRVcGRhdGluZ0xpbmVOdW1iZXIxNigpCiB7Ci0g
ICAgbV9jdXJyZW50Q2hhcmFjdGVyID0gKisrbV9jdXJyZW50U3Vic3RyaW5nLmN1cnJlbnRDaGFy
YWN0ZXIxNjsKLSAgICBkZWNyZW1lbnRBbmRDaGVja0xlbmd0aCgpOworICAgIG1fY3VycmVudENo
YXJhY3RlciA9ICorK21fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVyMTYoKTsKKyAg
ICBpZiAoVU5MSUtFTFkobV9jdXJyZW50U3Vic3RyaW5nLmhhc09uZUNoYXJhY3RlckxlZnQoKSkp
CisgICAgICAgIHVwZGF0ZUFkdmFuY2VGdW5jdGlvblBvaW50ZXJzRm9yU2luZ2xlQ2hhcmFjdGVy
U3Vic3RyaW5nKCk7CiB9CiAKIHZvaWQgU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlQW5kVXBkYXRl
TGluZU51bWJlcjE2KCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50U3Vic3RyaW5nLmRvTm90RXhj
bHVkZUxpbmVOdW1iZXJzKTsKKyAgICBBU1NFUlQobV9jdXJyZW50U3Vic3RyaW5nLm1fZG9Ob3RF
eGNsdWRlTGluZU51bWJlcnMpOwogICAgIHByb2Nlc3NQb3NzaWJsZU5ld2xpbmUoKTsKLSAgICBt
X2N1cnJlbnRDaGFyYWN0ZXIgPSAqKyttX2N1cnJlbnRTdWJzdHJpbmcuY3VycmVudENoYXJhY3Rl
cjE2OwotICAgIGRlY3JlbWVudEFuZENoZWNrTGVuZ3RoKCk7CisgICAgbV9jdXJyZW50Q2hhcmFj
dGVyID0gKisrbV9jdXJyZW50U3Vic3RyaW5nLmN1cnJlbnRDaGFyYWN0ZXIxNigpOworICAgIGlm
IChVTkxJS0VMWShtX2N1cnJlbnRTdWJzdHJpbmcuaGFzT25lQ2hhcmFjdGVyTGVmdCgpKSkKKyAg
ICAgICAgdXBkYXRlQWR2YW5jZUZ1bmN0aW9uUG9pbnRlcnNGb3JTaW5nbGVDaGFyYWN0ZXJTdWJz
dHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlUGFzdFNp
bmdsZUNoYXJhY3RlclN1YnN0cmluZ1dpdGhvdXRVcGRhdGluZ0xpbmVOdW1iZXIoKQogewotICAg
IEFTU0VSVChtX2N1cnJlbnRTdWJzdHJpbmcubGVuZ3RoID09IDEpOworICAgIEFTU0VSVChtX2N1
cnJlbnRTdWJzdHJpbmcuaGFzT25lQ2hhcmFjdGVyTGVmdCgpKTsKICAgICBpZiAobV9vdGhlclN1
YnN0cmluZ3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fY3VycmVudFN1YnN0cmluZy5sZW5ndGgg
PSAwOworICAgICAgICBtX2N1cnJlbnRTdWJzdHJpbmcuY29uc3VtZUFsbCgpOwogICAgICAgICBt
X2N1cnJlbnRDaGFyYWN0ZXIgPSAwOwogICAgICAgICB1cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2lu
dGVyc0ZvckVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE5NiwyNSArMjAwLDI1
IEBAIGlubGluZSB2b2lkIFNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZVBhc3RTaW5nbGVDaGFyYWN0
ZXJTdWJzdHJpbmdXaXRob3V0VXBkYXRpbmdMCiAKIHZvaWQgU2VnbWVudGVkU3RyaW5nOjphZHZh
bmNlUGFzdFNpbmdsZUNoYXJhY3RlclN1YnN0cmluZygpCiB7Ci0gICAgQVNTRVJUKG1fY3VycmVu
dFN1YnN0cmluZy5sZW5ndGggPT0gMSk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFN1YnN0cmluZy5k
b05vdEV4Y2x1ZGVMaW5lTnVtYmVycyk7CisgICAgQVNTRVJUKG1fY3VycmVudFN1YnN0cmluZy5o
YXNPbmVDaGFyYWN0ZXJMZWZ0KCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRTdWJzdHJpbmcubV9k
b05vdEV4Y2x1ZGVMaW5lTnVtYmVycyk7CiAgICAgcHJvY2Vzc1Bvc3NpYmxlTmV3bGluZSgpOwog
ICAgIGFkdmFuY2VQYXN0U2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nV2l0aG91dFVwZGF0aW5nTGlu
ZU51bWJlcigpOwogfQogCiB2b2lkIFNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZUVtcHR5KCkKIHsK
LSAgICBBU1NFUlQoIW1fY3VycmVudFN1YnN0cmluZy5sZW5ndGgpOworICAgIEFTU0VSVCghbV9j
dXJyZW50U3Vic3RyaW5nLmxlbmd0aCgpKTsKICAgICBBU1NFUlQobV9vdGhlclN1YnN0cmluZ3Mu
aXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fY3VycmVudENoYXJhY3Rlcik7CiB9CiAKIHZvaWQg
U2VnbWVudGVkU3RyaW5nOjp1cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2ludGVyc0ZvclNpbmdsZUNo
YXJhY3RlclN1YnN0cmluZygpCiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudFN1YnN0cmluZy5sZW5n
dGggPT0gMSk7CisgICAgQVNTRVJUKG1fY3VycmVudFN1YnN0cmluZy5oYXNPbmVDaGFyYWN0ZXJM
ZWZ0KCkpOwogICAgIG1fZmFzdFBhdGhGbGFncyA9IE5vRmFzdFBhdGg7CiAgICAgbV9hZHZhbmNl
V2l0aG91dFVwZGF0aW5nTGluZU51bWJlckZ1bmN0aW9uID0gJlNlZ21lbnRlZFN0cmluZzo6YWR2
YW5jZVBhc3RTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmdXaXRob3V0VXBkYXRpbmdMaW5lTnVtYmVy
OwotICAgIGlmIChtX2N1cnJlbnRTdWJzdHJpbmcuZG9Ob3RFeGNsdWRlTGluZU51bWJlcnMpCisg
ICAgaWYgKG1fY3VycmVudFN1YnN0cmluZy5tX2RvTm90RXhjbHVkZUxpbmVOdW1iZXJzKQogICAg
ICAgICBtX2FkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyRnVuY3Rpb24gPSAmU2VnbWVudGVkU3Ry
aW5nOjphZHZhbmNlUGFzdFNpbmdsZUNoYXJhY3RlclN1YnN0cmluZzsKICAgICBlbHNlCiAgICAg
ICAgIG1fYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXJGdW5jdGlvbiA9ICZTZWdtZW50ZWRTdHJp
bmc6OmFkdmFuY2VQYXN0U2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nV2l0aG91dFVwZGF0aW5nTGlu
ZU51bWJlcjsKQEAgLTI2MCw3ICsyNjQsNyBAQCBTZWdtZW50ZWRTdHJpbmc6OkFkdmFuY2VQYXN0
UmVzdWx0IFNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZVBhc3RTbG93Q2FzZShjb25zdCBjaAogCiB2
b2lkIFNlZ21lbnRlZFN0cmluZzo6dXBkYXRlQWR2YW5jZUZ1bmN0aW9uUG9pbnRlcnNGb3JFbXB0
eVN0cmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRTdWJzdHJpbmcubGVuZ3RoKTsKKyAg
ICBBU1NFUlQoIW1fY3VycmVudFN1YnN0cmluZy5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKG1fb3Ro
ZXJTdWJzdHJpbmdzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2N1cnJlbnRDaGFyYWN0ZXIp
OwogICAgIG1fZmFzdFBhdGhGbGFncyA9IE5vRmFzdFBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaAppbmRleCBmZTdmMTkxNDAzN2QzMzViZjk4
ZTQ4ZTVkNmY5MzE5MzA5YzI2MGM3Li42ZTI4ZjkzMGQ0ZTI5ZTEzYThlNTdlYzExMGY1MTA3NzJl
OTE1ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRl
ZFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3Ry
aW5nLmgKQEAgLTI3LDYgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IFRo
aXMgc2hvdWxkIG5vdCBzdGFydCB3aXRoICJrIi4KIC8vIEZJWE1FOiBUaGlzIGlzIGEgc2hhcmVk
IHRva2VuaXplciBjb25jZXB0LCBub3QgYSBTZWdtZW50ZWRTdHJpbmcgY29uY2VwdCwgYnV0IHRo
aXMgaXMgdGhlIG9ubHkgY29tbW9uIGhlYWRlciBmb3Igbm93LgogY29uc3RleHByIExDaGFyIGtF
bmRPZkZpbGVNYXJrZXIgPSAwOworZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVtcHR5U3RyaW5n
UG9pbnRlcjsKIAogY2xhc3MgU2VnbWVudGVkU3RyaW5nIHsKIHB1YmxpYzoKQEAgLTUzLDcgKzU0
LDcgQEAgY2xhc3MgU2VnbWVudGVkU3RyaW5nIHsKIAogICAgIHZvaWQgc2V0RXhjbHVkZUxpbmVO
dW1iZXJzKCk7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9jdXJyZW50
U3Vic3RyaW5nLmxlbmd0aDsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFt
X2N1cnJlbnRTdWJzdHJpbmcubGVuZ3RoKCk7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKIAogICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CkBA
IC04NSwxOSArODYsNjAgQEAgY2xhc3MgU2VnbWVudGVkU3RyaW5nIHsKICAgICAgICAgU3Vic3Ry
aW5nKFN0cmluZyYmKTsKIAogICAgICAgICBVQ2hhciBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3Q7
Ci0gICAgICAgIFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXJQcmVJbmNyZW1lbnQoKTsKIAogICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpIGNvbnN0OwogICAgICAgICB2
b2lkIGFwcGVuZFRvKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAotICAgICAgICBTdHJpbmcgc3Ry
aW5nOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07Ci0gICAgICAgIGJvb2wgaXM4Qml0
OwotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogY3VycmVudENoYXJh
Y3Rlcjg7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY3VycmVudENoYXJhY3RlcjE2OwotICAg
ICAgICB9OwotICAgICAgICBib29sIGRvTm90RXhjbHVkZUxpbmVOdW1iZXJzIHsgdHJ1ZSB9Owor
ICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gKG1fbGFzdEJlZm9yZU9uZUN1cnNvciArICgxVSA8PCAhbV9pczhCaXQpIC0gbV9jdXJy
ZW50Q2hhcmFjdGVyQ3Vyc29yKSA+PiAhbV9pczhCaXQ7CisgICAgICAgIH0KKworICAgICAgICAv
LyBFcXVpdmFsZW50IHRvIGBsZW5ndGgoKSA+IDFgLgorICAgICAgICBib29sIGNhbkFkdmFuY2Uo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50Q2hhcmFjdGVy
Q3Vyc29yIDwgbV9sYXN0QmVmb3JlT25lQ3Vyc29yOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBjb25zdW1lQWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jdXJyZW50Q2hhcmFjdGVy
Q3Vyc29yID0gMDsKKyAgICAgICAgICAgIG1fbGFzdEJlZm9yZU9uZUN1cnNvciA9IG1fY3VycmVu
dENoYXJhY3RlckN1cnNvciAtICgxVSA8PCAhbV9pczhCaXQpOworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBoYXNPbmVDaGFyYWN0ZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hh
cmFjdGVyQ3Vyc29yID09IG1fbGFzdEJlZm9yZU9uZUN1cnNvcjsgfQorCisgICAgICAgIHVzaW5n
IENvbnN0TENoYXJQb2ludGVyID0gY29uc3QgTENoYXIqOworICAgICAgICB1c2luZyBDb25zdFVD
aGFyUG9pbnRlciA9IGNvbnN0IFVDaGFyKjsKKworICAgICAgICBDb25zdExDaGFyUG9pbnRlciYg
Y3VycmVudENoYXJhY3RlcjgoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9pczhC
aXQpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29uc3RMQ2hhclBvaW50
ZXImPihtX2N1cnJlbnRDaGFyYWN0ZXJDdXJzb3IpOworICAgICAgICB9CisgICAgICAgIGNvbnN0
IENvbnN0TENoYXJQb2ludGVyJiBjdXJyZW50Q2hhcmFjdGVyOCgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChtX2lzOEJpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBDb25zdExDaGFyUG9pbnRlciY+KG1fY3VycmVudENoYXJhY3RlckN1
cnNvcik7CisgICAgICAgIH0KKworICAgICAgICBDb25zdFVDaGFyUG9pbnRlciYgY3VycmVudENo
YXJhY3RlcjE2KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFtX2lzOEJpdCk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb25zdFVDaGFyUG9pbnRlciY+KG1f
Y3VycmVudENoYXJhY3RlckN1cnNvcik7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBDb25z
dFVDaGFyUG9pbnRlciYgY3VycmVudENoYXJhY3RlcjE2KCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKCFtX2lzOEJpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBDb25zdFVDaGFyUG9pbnRlciY+KG1fY3VycmVudENoYXJhY3RlckN1cnNv
cik7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgICAgIGJvb2wg
bV9pczhCaXQgeyB0cnVlIH07CisgICAgICAgIGJvb2wgbV9kb05vdEV4Y2x1ZGVMaW5lTnVtYmVy
cyB7IHRydWUgfTsKKyAgICAgICAgdWludHB0cl90IG1fY3VycmVudENoYXJhY3RlckN1cnNvciB7
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVtcHR5U3RyaW5nUG9pbnRlcikgfTsKKyAgICAgICAg
dWludHB0cl90IG1fbGFzdEJlZm9yZU9uZUN1cnNvciB7IG1fY3VycmVudENoYXJhY3RlckN1cnNv
ciAtIDEgfTsKICAgICB9OwogCiAgICAgZW51bSBGYXN0UGF0aEZsYWdzIHsKQEAgLTEyMiw4ICsx
NjQsNiBAQCBjbGFzcyBTZWdtZW50ZWRTdHJpbmcgewogICAgIHZvaWQgdXBkYXRlQWR2YW5jZUZ1
bmN0aW9uUG9pbnRlcnNGb3JFbXB0eVN0cmluZygpOwogICAgIHZvaWQgdXBkYXRlQWR2YW5jZUZ1
bmN0aW9uUG9pbnRlcnNGb3JTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoKTsKIAotICAgIHZvaWQg
ZGVjcmVtZW50QW5kQ2hlY2tMZW5ndGgoKTsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBib29sIGNoYXJhY3Rlck1pc21hdGNoKENoYXJhY3RlclR5cGUsIGNo
YXIsIGJvb2wgbGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKTsKICAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBsZW5ndGgsIGJvb2wgbGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlPiBBZHZhbmNlUGFzdFJlc3Vs
dCBhZHZhbmNlUGFzdChjb25zdCBjaGFyICgmbGl0ZXJhbClbbGVuZ3RoXSk7CiAgICAgQWR2YW5j
ZVBhc3RSZXN1bHQgYWR2YW5jZVBhc3RTbG93Q2FzZShjb25zdCBjaGFyKiBsaXRlcmFsLCBib29s
IGxldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSk7CkBAIC0xNDUsMzkgKzE4NSw0NSBAQCBjbGFzcyBT
ZWdtZW50ZWRTdHJpbmcgewogfTsKIAogaW5saW5lIFNlZ21lbnRlZFN0cmluZzo6U3Vic3RyaW5n
OjpTdWJzdHJpbmcoU3RyaW5nJiYgcGFzc2VkU3RyaW5nKQotICAgIDogc3RyaW5nKFdURk1vdmUo
cGFzc2VkU3RyaW5nKSkKLSAgICAsIGxlbmd0aChzdHJpbmcubGVuZ3RoKCkpCisgICAgOiBtX3N0
cmluZyhXVEZNb3ZlKHBhc3NlZFN0cmluZykpCiB7Ci0gICAgaWYgKGxlbmd0aCkgewotICAgICAg
ICBpczhCaXQgPSBzdHJpbmcuaW1wbCgpLT5pczhCaXQoKTsKLSAgICAgICAgaWYgKGlzOEJpdCkK
LSAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXI4ID0gc3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVy
czgoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY3VycmVudENoYXJhY3RlcjE2ID0gc3Ry
aW5nLmltcGwoKS0+Y2hhcmFjdGVyczE2KCk7CisgICAgaWYgKG1fc3RyaW5nLmxlbmd0aCgpKSB7
CisgICAgICAgIG1faXM4Qml0ID0gbV9zdHJpbmcuaW1wbCgpLT5pczhCaXQoKTsKKyAgICAgICAg
aWYgKG1faXM4Qml0KSB7CisgICAgICAgICAgICBhdXRvKiBjaGFyYWN0ZXI4ID0gbV9zdHJpbmcu
aW1wbCgpLT5jaGFyYWN0ZXJzOCgpOworICAgICAgICAgICAgYXV0byogbGFzdEJlZm9yZU9uZTgg
PSBjaGFyYWN0ZXI4ICsgbV9zdHJpbmcubGVuZ3RoKCkgLSAxOworICAgICAgICAgICAgbV9jdXJy
ZW50Q2hhcmFjdGVyQ3Vyc29yID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2hhcmFjdGVyOCk7
CisgICAgICAgICAgICBtX2xhc3RCZWZvcmVPbmVDdXJzb3IgPSBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihsYXN0QmVmb3JlT25lOCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRv
KiBjaGFyYWN0ZXIxNiA9IG1fc3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVyczE2KCk7CisgICAgICAg
ICAgICBhdXRvKiBsYXN0QmVmb3JlT25lMTYgPSBjaGFyYWN0ZXIxNiArIG1fc3RyaW5nLmxlbmd0
aCgpIC0gMTsKKyAgICAgICAgICAgIG1fY3VycmVudENoYXJhY3RlckN1cnNvciA9IGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGNoYXJhY3RlcjE2KTsKKyAgICAgICAgICAgIG1fbGFzdEJlZm9yZU9u
ZUN1cnNvciA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxhc3RCZWZvcmVPbmUxNik7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBtX2lzOEJpdCA9IHRydWU7CisgICAgICAgIG1f
Y3VycmVudENoYXJhY3RlckN1cnNvciA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVtcHR5U3Ry
aW5nUG9pbnRlcik7CisgICAgICAgIG1fbGFzdEJlZm9yZU9uZUN1cnNvciA9IG1fY3VycmVudENo
YXJhY3RlckN1cnNvciAtIDE7CiAgICAgfQorICAgIEFTU0VSVChtX2N1cnJlbnRDaGFyYWN0ZXJD
dXJzb3IpOworICAgIEFTU0VSVChsZW5ndGgoKSA9PSBtX3N0cmluZy5sZW5ndGgoKSk7CiB9CiAK
IGlubGluZSB1bnNpZ25lZCBTZWdtZW50ZWRTdHJpbmc6OlN1YnN0cmluZzo6bnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWQoKSBjb25zdAogewotICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgLSBs
ZW5ndGg7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpIC0gbGVuZ3RoKCk7CiB9CiAKIEFM
V0FZU19JTkxJTkUgVUNoYXIgU2VnbWVudGVkU3RyaW5nOjpTdWJzdHJpbmc6OmN1cnJlbnRDaGFy
YWN0ZXIoKSBjb25zdAogewotICAgIEFTU0VSVChsZW5ndGgpOwotICAgIHJldHVybiBpczhCaXQg
PyAqY3VycmVudENoYXJhY3RlcjggOiAqY3VycmVudENoYXJhY3RlcjE2OwotfQotCi1BTFdBWVNf
SU5MSU5FIFVDaGFyIFNlZ21lbnRlZFN0cmluZzo6U3Vic3RyaW5nOjpjdXJyZW50Q2hhcmFjdGVy
UHJlSW5jcmVtZW50KCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoKTsKLSAgICByZXR1cm4gaXM4Qml0
ID8gKisrY3VycmVudENoYXJhY3RlcjggOiAqKytjdXJyZW50Q2hhcmFjdGVyMTY7CisgICAgQVNT
RVJUKGxlbmd0aCgpKTsKKyAgICByZXR1cm4gbV9pczhCaXQgPyAqY3VycmVudENoYXJhY3Rlcjgo
KSA6ICpjdXJyZW50Q2hhcmFjdGVyMTYoKTsKIH0KIAogaW5saW5lIFNlZ21lbnRlZFN0cmluZzo6
U2VnbWVudGVkU3RyaW5nKFN0cmluZyYmIHN0cmluZykKICAgICA6IG1fY3VycmVudFN1YnN0cmlu
ZyhXVEZNb3ZlKHN0cmluZykpCiB7Ci0gICAgaWYgKG1fY3VycmVudFN1YnN0cmluZy5sZW5ndGgp
IHsKKyAgICBpZiAobV9jdXJyZW50U3Vic3RyaW5nLmxlbmd0aCgpKSB7CiAgICAgICAgIG1fY3Vy
cmVudENoYXJhY3RlciA9IG1fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVyKCk7CiAg
ICAgICAgIHVwZGF0ZUFkdmFuY2VGdW5jdGlvblBvaW50ZXJzKCk7CiAgICAgfQpAQCAtMTg4LDE4
ICsyMzQsMTIgQEAgaW5saW5lIFNlZ21lbnRlZFN0cmluZzo6U2VnbWVudGVkU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgU2VnbWVudGVkU3Ry
aW5nOjpkZWNyZW1lbnRBbmRDaGVja0xlbmd0aCgpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudFN1
YnN0cmluZy5sZW5ndGggPiAxKTsKLSAgICBpZiAoVU5MSUtFTFkoLS1tX2N1cnJlbnRTdWJzdHJp
bmcubGVuZ3RoID09IDEpKQotICAgICAgICB1cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2ludGVyc0Zv
clNpbmdsZUNoYXJhY3RlclN1YnN0cmluZygpOwotfQotCiBBTFdBWVNfSU5MSU5FIHZvaWQgU2Vn
bWVudGVkU3RyaW5nOjphZHZhbmNlV2l0aG91dFVwZGF0aW5nTGluZU51bWJlcigpCiB7CiAgICAg
aWYgKExJS0VMWShtX2Zhc3RQYXRoRmxhZ3MgJiBVc2U4Qml0QWR2YW5jZSkpIHsKLSAgICAgICAg
bV9jdXJyZW50Q2hhcmFjdGVyID0gKisrbV9jdXJyZW50U3Vic3RyaW5nLmN1cnJlbnRDaGFyYWN0
ZXI4OwotICAgICAgICBkZWNyZW1lbnRBbmRDaGVja0xlbmd0aCgpOworICAgICAgICBtX2N1cnJl
bnRDaGFyYWN0ZXIgPSAqKyttX2N1cnJlbnRTdWJzdHJpbmcuY3VycmVudENoYXJhY3RlcjgoKTsK
KyAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudFN1YnN0cmluZy5oYXNPbmVDaGFyYWN0ZXJM
ZWZ0KCkpKQorICAgICAgICAgICAgdXBkYXRlQWR2YW5jZUZ1bmN0aW9uUG9pbnRlcnNGb3JTaW5n
bGVDaGFyYWN0ZXJTdWJzdHJpbmcoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjIx
LDEwICsyNjEsMTAgQEAgaW5saW5lIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpwcm9jZXNzUG9zc2li
bGVOZXdsaW5lKCkKIGlubGluZSB2b2lkIFNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZSgpCiB7CiAg
ICAgaWYgKExJS0VMWShtX2Zhc3RQYXRoRmxhZ3MgJiBVc2U4Qml0QWR2YW5jZSkpIHsKLSAgICAg
ICAgQVNTRVJUKG1fY3VycmVudFN1YnN0cmluZy5sZW5ndGggPiAxKTsKKyAgICAgICAgQVNTRVJU
KG1fY3VycmVudFN1YnN0cmluZy5jYW5BZHZhbmNlKCkpOwogICAgICAgICBib29sIGxhc3RDaGFy
YWN0ZXJXYXNOZXdsaW5lID0gbV9jdXJyZW50Q2hhcmFjdGVyID09ICdcbic7Ci0gICAgICAgIG1f
Y3VycmVudENoYXJhY3RlciA9ICorK21fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVy
ODsKLSAgICAgICAgYm9vbCBoYXZlT25lQ2hhcmFjdGVyTGVmdCA9IC0tbV9jdXJyZW50U3Vic3Ry
aW5nLmxlbmd0aCA9PSAxOworICAgICAgICBtX2N1cnJlbnRDaGFyYWN0ZXIgPSAqKyttX2N1cnJl
bnRTdWJzdHJpbmcuY3VycmVudENoYXJhY3RlcjgoKTsKKyAgICAgICAgYm9vbCBoYXZlT25lQ2hh
cmFjdGVyTGVmdCA9IG1fY3VycmVudFN1YnN0cmluZy5oYXNPbmVDaGFyYWN0ZXJMZWZ0KCk7CiAg
ICAgICAgIGlmIChMSUtFTFkoIShsYXN0Q2hhcmFjdGVyV2FzTmV3bGluZSB8IGhhdmVPbmVDaGFy
YWN0ZXJMZWZ0KSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChsYXN0Q2hhcmFj
dGVyV2FzTmV3bGluZSAmICEhKG1fZmFzdFBhdGhGbGFncyAmIFVzZThCaXRBZHZhbmNlQW5kVXBk
YXRlTGluZU51bWJlcnMpKQpAQCAtMjQ2LDExICsyODYsMTUgQEAgQUxXQVlTX0lOTElORSB2b2lk
IFNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZVBhc3ROb25OZXdsaW5lKCkKIGlubGluZSB2b2lkIFNl
Z21lbnRlZFN0cmluZzo6YWR2YW5jZVBhc3ROZXdsaW5lKCkKIHsKICAgICBBU1NFUlQobV9jdXJy
ZW50Q2hhcmFjdGVyID09ICdcbicpOwotICAgIGlmIChtX2N1cnJlbnRTdWJzdHJpbmcubGVuZ3Ro
ID4gMSkgewotICAgICAgICBpZiAobV9jdXJyZW50U3Vic3RyaW5nLmRvTm90RXhjbHVkZUxpbmVO
dW1iZXJzKQorICAgIGlmIChMSUtFTFkobV9jdXJyZW50U3Vic3RyaW5nLmNhbkFkdmFuY2UoKSkp
IHsKKyAgICAgICAgaWYgKG1fY3VycmVudFN1YnN0cmluZy5tX2RvTm90RXhjbHVkZUxpbmVOdW1i
ZXJzKQogICAgICAgICAgICAgc3RhcnROZXdMaW5lKCk7Ci0gICAgICAgIG1fY3VycmVudENoYXJh
Y3RlciA9IG1fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVyUHJlSW5jcmVtZW50KCk7
Ci0gICAgICAgIGRlY3JlbWVudEFuZENoZWNrTGVuZ3RoKCk7CisgICAgICAgIGlmIChtX2N1cnJl
bnRTdWJzdHJpbmcubV9pczhCaXQpCisgICAgICAgICAgICBtX2N1cnJlbnRDaGFyYWN0ZXIgPSAq
KyttX2N1cnJlbnRTdWJzdHJpbmcuY3VycmVudENoYXJhY3RlcjgoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9jdXJyZW50Q2hhcmFjdGVyID0gKisrbV9jdXJyZW50U3Vic3RyaW5nLmN1
cnJlbnRDaGFyYWN0ZXIxNigpOworICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50U3Vic3Ry
aW5nLmhhc09uZUNoYXJhY3RlckxlZnQoKSkpCisgICAgICAgICAgICB1cGRhdGVBZHZhbmNlRnVu
Y3Rpb25Qb2ludGVyc0ZvclNpbmdsZUNoYXJhY3RlclN1YnN0cmluZygpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yNzIsMjMgKzMxNiwyMiBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5n
dGhJbmNsdWRpbmdUZXJtaW5hdG9yLCBib29sIGxldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZT4gU2Vn
bQogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBsZW5ndGggPSBsZW5ndGhJbmNsdWRpbmdUZXJtaW5h
dG9yIC0gMTsKICAgICBBU1NFUlQoIWxpdGVyYWxbbGVuZ3RoXSk7CiAgICAgQVNTRVJUKCFzdHJj
aHIobGl0ZXJhbCwgJ1xuJykpOwotICAgIGlmIChsZW5ndGggKyAxIDwgbV9jdXJyZW50U3Vic3Ry
aW5nLmxlbmd0aCkgewotICAgICAgICBpZiAobV9jdXJyZW50U3Vic3RyaW5nLmlzOEJpdCkgewor
ICAgIGlmIChsZW5ndGggKyAxIDwgbV9jdXJyZW50U3Vic3RyaW5nLmxlbmd0aCgpKSB7CisgICAg
ICAgIGlmIChtX2N1cnJlbnRTdWJzdHJpbmcubV9pczhCaXQpIHsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChj
aGFyYWN0ZXJNaXNtYXRjaChtX2N1cnJlbnRTdWJzdHJpbmcuY3VycmVudENoYXJhY3RlcjhbaV0s
IGxpdGVyYWxbaV0sIGxldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSkpCisgICAgICAgICAgICAgICAg
aWYgKGNoYXJhY3Rlck1pc21hdGNoKG1fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVy
OCgpW2ldLCBsaXRlcmFsW2ldLCBsZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRGlkTm90TWF0Y2g7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBtX2N1cnJlbnRTdWJzdHJpbmcuY3VycmVudENoYXJhY3RlcjggKz0gbGVuZ3RoOwotICAgICAg
ICAgICAgbV9jdXJyZW50Q2hhcmFjdGVyID0gKm1fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hh
cmFjdGVyODsKKyAgICAgICAgICAgIG1fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVy
OCgpICs9IGxlbmd0aDsKKyAgICAgICAgICAgIG1fY3VycmVudENoYXJhY3RlciA9ICptX2N1cnJl
bnRTdWJzdHJpbmcuY3VycmVudENoYXJhY3RlcjgoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgICAgIGlmIChjaGFyYWN0ZXJNaXNtYXRjaChtX2N1cnJlbnRTdWJzdHJpbmcuY3VycmVudENo
YXJhY3RlcjE2W2ldLCBsaXRlcmFsW2ldLCBsZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UpKQorICAg
ICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJNaXNtYXRjaChtX2N1cnJlbnRTdWJzdHJpbmcuY3Vy
cmVudENoYXJhY3RlcjE2KClbaV0sIGxpdGVyYWxbaV0sIGxldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEaWROb3RNYXRjaDsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG1fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVyMTYgKz0g
bGVuZ3RoOwotICAgICAgICAgICAgbV9jdXJyZW50Q2hhcmFjdGVyID0gKm1fY3VycmVudFN1YnN0
cmluZy5jdXJyZW50Q2hhcmFjdGVyMTY7CisgICAgICAgICAgICBtX2N1cnJlbnRTdWJzdHJpbmcu
Y3VycmVudENoYXJhY3RlcjE2KCkgKz0gbGVuZ3RoOworICAgICAgICAgICAgbV9jdXJyZW50Q2hh
cmFjdGVyID0gKm1fY3VycmVudFN1YnN0cmluZy5jdXJyZW50Q2hhcmFjdGVyMTYoKTsKICAgICAg
ICAgfQotICAgICAgICBtX2N1cnJlbnRTdWJzdHJpbmcubGVuZ3RoIC09IGxlbmd0aDsKICAgICAg
ICAgcmV0dXJuIERpZE1hdGNoOwogICAgIH0KICAgICByZXR1cm4gYWR2YW5jZVBhc3RTbG93Q2Fz
ZShsaXRlcmFsLCBsZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UpOwpAQCAtMjk2LDIzICszMzksMjMg
QEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoSW5jbHVkaW5nVGVybWluYXRvciwgYm9vbCBsZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2U+IFNlZ20KIAogaW5saW5lIHZvaWQgU2VnbWVudGVkU3RyaW5n
Ojp1cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2ludGVycygpCiB7Ci0gICAgaWYgKG1fY3VycmVudFN1
YnN0cmluZy5sZW5ndGggPiAxKSB7Ci0gICAgICAgIGlmIChtX2N1cnJlbnRTdWJzdHJpbmcuaXM4
Qml0KSB7CisgICAgaWYgKG1fY3VycmVudFN1YnN0cmluZy5jYW5BZHZhbmNlKCkpIHsKKyAgICAg
ICAgaWYgKG1fY3VycmVudFN1YnN0cmluZy5tX2lzOEJpdCkgewogICAgICAgICAgICAgbV9mYXN0
UGF0aEZsYWdzID0gVXNlOEJpdEFkdmFuY2U7Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50U3Vi
c3RyaW5nLmRvTm90RXhjbHVkZUxpbmVOdW1iZXJzKQorICAgICAgICAgICAgaWYgKG1fY3VycmVu
dFN1YnN0cmluZy5tX2RvTm90RXhjbHVkZUxpbmVOdW1iZXJzKQogICAgICAgICAgICAgICAgIG1f
ZmFzdFBhdGhGbGFncyB8PSBVc2U4Qml0QWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXJzOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fZmFzdFBhdGhGbGFncyA9IE5v
RmFzdFBhdGg7CiAgICAgICAgIG1fYWR2YW5jZVdpdGhvdXRVcGRhdGluZ0xpbmVOdW1iZXJGdW5j
dGlvbiA9ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VXaXRob3V0VXBkYXRpbmdMaW5lTnVtYmVy
MTY7Ci0gICAgICAgIGlmIChtX2N1cnJlbnRTdWJzdHJpbmcuZG9Ob3RFeGNsdWRlTGluZU51bWJl
cnMpCisgICAgICAgIGlmIChtX2N1cnJlbnRTdWJzdHJpbmcubV9kb05vdEV4Y2x1ZGVMaW5lTnVt
YmVycykKICAgICAgICAgICAgIG1fYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXJGdW5jdGlvbiA9
ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyMTY7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXJGdW5jdGlvbiA9
ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VXaXRob3V0VXBkYXRpbmdMaW5lTnVtYmVyMTY7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fY3VycmVudFN1YnN0cmluZy5sZW5n
dGgpIHsKKyAgICBpZiAoIW1fY3VycmVudFN1YnN0cmluZy5sZW5ndGgoKSkgewogICAgICAgICB1
cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2ludGVyc0ZvckVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNmZiOGViYWM1YjNkNzJhY2NkZDc0NmEyNGNiNTQxOGEyMjMwYmM0Mi4uZGU5Yjk3
MGExNjFkYmRkZDQ4YTc0YTA4MTg3ZWZhZGM4ODQwNGFjZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA3LTIy
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTWljcm8tb3B0
aW1pemUgaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjgxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmVjdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA3
LTE1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHVwZGF0ZSBteSBzdGF0dXMgaW4gY29udHJpYnV0b3JzLmpzb24gdG8gcmV2aWV3ZXIu
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCmluZGV4IDg0
ZWM1ZGFmMmU0M2JlYTljNDg1MjdjYTI1Y2RmZDgyOWFmMDdmNDMuLmRhYThhZjc1ZGNlYTQ1ZDY2
Y2M3NWE2MzYwOWQwMmUxOTA0YmJkMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC05NTksNiArOTU5LDI4IEBAIFRFU1QoV1RGLCBTdHJpbmdW
aWV3UmV2ZXJzZUZpbmRCYXNpYykKICAgICBFWFBFQ1RfRVEocmVmZXJlbmNlLnJldmVyc2VGaW5k
KCdjJywgNCksIG5vdEZvdW5kKTsKIH0KIAorVEVTVChXVEYsIFN0cmluZ1ZpZXdTdHJpcExlYWRp
bmdNYXRjaGVkQ2hhcmFjdGVycykKK3sKKyAgICBhdXRvIGlzQSA9IFtdIChVQ2hhciBjKSB7Cisg
ICAgICAgIHJldHVybiBjID09ICdBJzsKKyAgICB9OworCisgICAgRVhQRUNUX1RSVUUoc3RyaW5n
Vmlld0Zyb21MaXRlcmFsKCJBQUFCQkJBQUEiKS5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVy
cyhpc0EpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQkJCQUFBIikpOworICAgIEVYUEVDVF9U
UlVFKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQUFBQkJCQ0NDIikuc3RyaXBMZWFkaW5nTWF0Y2hl
ZENoYXJhY3RlcnMoaXNBKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkJCQkNDQyIpKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNDQ0JCQkFBQSIpLnN0cmlwTGVh
ZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzQSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDQ0NC
QkJBQUEiKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDQ0NCQkJD
Q0MiKS5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0EpID09IHN0cmluZ1ZpZXdGcm9t
TGl0ZXJhbCgiQ0NDQkJCQ0NDIikpOworICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0
ZXJhbCgiQUFBQUFBQ0NDIikuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBz
dHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNDQyIpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdWaWV3
RnJvbUxpdGVyYWwoIkJCQkFBQUFBQSIpLnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlz
QSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJCQkJBQUFBQUEiKSk7CisgICAgRVhQRUNUX1RS
VUUoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDQ0NBQUFCQkIiKS5zdHJpcExlYWRpbmdNYXRjaGVk
Q2hhcmFjdGVycyhpc0EpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ0NDQUFBQkJCIikpOwor
ICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQUFBQUFBQUFBIikuc3RyaXBM
ZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBTdHJpbmdWaWV3OjplbXB0eSgpKTsKKwor
ICAgIFN0cmluZ1ZpZXcgZW1wdHlWaWV3ID0gU3RyaW5nVmlldzo6ZW1wdHkoKTsKKyAgICBFWFBF
Q1RfVFJVRShlbXB0eVZpZXcuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBl
bXB0eVZpZXcpOworCisgICAgU3RyaW5nVmlldyBudWxsVmlldzsKKyAgICBFWFBFQ1RfVFJVRShu
dWxsVmlldy5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0EpID09IG51bGxWaWV3KTsK
K30KKwogVEVTVChXVEYsIFN0cmluZ1ZpZXdTdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRD
aGFyYWN0ZXJzKQogewogICAgIGF1dG8gaXNBID0gW10gKFVDaGFyIGMpIHsgCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAppbmRleCAxMWZjYjExZTlkYzIwYjBmZWE3NzNl
MjA4YzYxZjk2MDIwNGUyNzhhLi5kMmZkN2EwNjU5NmUwODQ3YTRhMDliNzY4ZWIzZjIwNmQxNjIy
Y2FhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKQEAgLTE0NTgs
NSArMTQ1OCw0MSBAQCBURVNUKFdURl9WZWN0b3IsIENvbnN0cnVjdG9yRnJvbVJhd1BvaW50ZXJB
bmRTaXplKQogICAgIEVYUEVDVF9FUSh2ZWN0b3JbM10sIDQpOwogICAgIEVYUEVDVF9FUSh2ZWN0
b3JbNF0sIDUpOwogfQotICAgIAorCitURVNUKFdURl9WZWN0b3IsIFNocmlua1RvQmVzdEZpdENs
ZWFyKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gdmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQo
MjApOworICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAg
IHZlY3Rvci5yZXNpemUoMCk7CisgICAgdmVjdG9yLnNocmlua1RvQmVzdEZpdCgpOworICAgIEVY
UEVDVF9FUSh2ZWN0b3Iuc2l6ZSgpLCAwVSk7CisgICAgRVhQRUNUX0VRKHZlY3Rvci5jYXBhY2l0
eSgpLCAwVSk7Cit9CisKK1RFU1QoV1RGX1ZlY3RvciwgU2hyaW5rVG9CZXN0Rml0RG9lc05vdENo
YW5nZUlmQ2FwYWNpdHlNYXRjaGVzKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gdmVjdG9yOwor
ICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAgIHZlY3Rv
ci5hcHBlbmQoMjApOworICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gdmVjdG9yLmNhcGFjaXR5KCk7
CisgICAgdmVjdG9yLnNocmlua1RvQmVzdEZpdCgpOworICAgIEVYUEVDVF9FUSh2ZWN0b3Iuc2l6
ZSgpLCAzVSk7CisgICAgRVhQRUNUX0VRKHZlY3Rvci5jYXBhY2l0eSgpLCBjYXBhY2l0eSk7Cit9
CisKK1RFU1QoV1RGX1ZlY3RvciwgU2hyaW5rVG9CZXN0Rml0KQoreworICAgIFZlY3Rvcjx1aW50
MzJfdD4gdmVjdG9yOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IDQwMDsg
KytpbmRleCkKKyAgICAgICAgdmVjdG9yLmFwcGVuZChpbmRleCk7CisgICAgdmVjdG9yLnJlc2l6
ZSgxMDApOworICAgIEVYUEVDVF9HRSh2ZWN0b3IuY2FwYWNpdHkoKSwgNDAwVSk7CisgICAgdmVj
dG9yLnNocmlua1RvQmVzdEZpdCgpOworICAgIEVYUEVDVF9MRSh2ZWN0b3IuY2FwYWNpdHkoKSwg
MjAwVSk7CisgICAgRVhQRUNUX0dFKHZlY3Rvci5jYXBhY2l0eSgpLCAxMDBVKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434021</attachid>
            <date>2021-07-22 10:52:23 -0700</date>
            <delta_ts>2021-07-22 11:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228142-20210722105222.patch</filename>
            <type>text/plain</type>
            <size>34136</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmNDdjY2QyNmUyOWNhMTI3OTUxOTdl
OGQzNmU5ODFkYTE2N2RlZmEuLmQ0YzVkN2RlZDBmODYxZTdjMDRlYzVkMTEzNzZmNjc4ZGQwMTE5
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBNaWNyby1vcHRpbWl6ZSBpbm5lckhUTUwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpzaHJpbmtUb0Jlc3RGaXQpOiBUaGlzIHNocmlua3Mg
dGhlIGJhY2tpbmcgc3RvcmFnZSB0byAiYXBwcm9wcmlhdGUgZm9yIHRoZSBsaXZpbmcgVmVjdG9y
Ii4KKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6
OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOiBXVEY6OmVxdWFsIGZvciBTdHJpbmcgZG9l
cyBub3QgY2hlY2sgaGFzaC4gVGhpcyBpcyBiZWNhdXNlIGNvbXB1dGluZyBoYXNoIGlzIGV4cGVu
c2l2ZQorICAgICAgICBhbmQgd2Ugd291bGQgbGlrZSB0byBhdm9pZCB0aGF0IGlmIGl0IGlzIG5v
dCBuZWNlc3NhcnkuIEJ1dCB3aGVuIGluc2VydGluZyBzdHJpbmcgaW50byBBdG9tU3RyaW5nVGFi
bGUsIHdlIGNhbiB1c2UgaGFzaCB2YWx1ZQorICAgICAgICBzaW5jZSB0aGV5IG11c3QgYmUgYWxy
ZWFkeSBjb21wdXRlZCBiZWNhdXNlIG9mIEhhc2hNYXAncyByZXF1aXJlbWVudC4gU28gbGV0J3Mg
dXNlIGl0IGJlZm9yZSBjYWxsaW5nIFdURjo6ZXF1YWwuCisgICAgICAgIChXVEY6OkxDaGFyQnVm
ZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0
YVRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKTog
QWRkIHRoaXMgYW5kIHVzZSBpdCBpbiBIVE1MVHJlZUJ1aWxkZXIuCisKIDIwMjEtMDctMTUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2sxXSBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtd2VibS1vcHVzLXBhcnRpYWwuaHRtbCBpcyBhIGNvbnNpc3RlbnQg
ZmFpbHVyZSAoRW5hYmxlIFZQOC9WUDkvVm9yYmlzL09wdXMgaW4gV2ViS2l0TGVnYWN5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDFlMWEyMjU4ZGU2NWZiMzA3Yjg1MDdiMmFhZGMxYjgxMDdkMDdhNjAuLmY0ZWZi
M2Q1YWU1MDI4MDliZTFjNGM2OTA2MjY5MjYyOTJiNzk1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3NSBAQAorMjAyMS0wNy0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIE1pY3JvLW9wdGltaXplIGlubmVySFRNTAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggZG9lcyBzb21lIG1pY3JvIG9wdGltaXphdGlvbnMgcmV2ZWFsZWQgYnkgdGhl
IHByb2ZpbGVyIHdoZW4gcnVubmluZyBzb21lIG9mIFNwZWVkb21ldGVyMiB0ZXN0cyB3aGljaCBp
bnRlbnNpdmVseSB1c2UgaW5uZXJIVE1MLgorICAgICAgICBUaGlzIG9mZmVycyBpbXByb3ZlbWVu
dCBpbiBqUXVlcnktVG9kb01WQyBhbmQgVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2Rv
TVZDIHNpbmNlIGJvdGggYXJlIHN1cGVyIGlubmVySFRNTCBoZWF2eSBiZW5jaG1hcmtzLgorCisg
ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgfCAgICAgICAgICAgICAgIHN1YnRlc3Qg
ICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBw
VmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxzZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgRWxtLVRvZG9NVkMgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwxMjYuODYyNTAwICAgfDEyNi42ODc1MDAgICB8MC45OTg2MjEgIHwgMC42NzM0
NjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBW
dWVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDI3Ljc3NTAwMCAgICB8MjcuNjQ1
ODMzICAgIHwwLjk5NTM1MCAgfCAwLjc0MTU4OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICB8MTI5LjM1MDAwMCAgIHwxMjkuMTI5MTY3ICAgfDAuOTk4MjkzICB8IDAuNjI0MTk2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2Jv
bmVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS4xMjkxNjcgICAgfDUxLjIwNDE2NyAg
ICB8MS4wMDE0NjcgIHwgMC43MTY2MjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
fDIxLjg3MDgzMyAgICB8MjEuMzM3NTAwICAgIHwwLjk3NTYxNCAgfCAwLjIxNzc3MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICB8MTM5Ljg1NDE2NyAgIHwxNDAuMjY2NjY3ICAgfDEu
MDAyOTUwICB8IDAuNDg5ODM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9kb01WQyAgICAgICAgICAgICAgIHw2OS4y
MjkxNjcgICAgfDY4Ljg5NTgzMyAgICB8MC45OTUxODUgIHwgMC4yMzg3NzIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBJbmZlcm5vLVRvZG9NVkMg
ICAgICAgICAgICAgICAgICAgICAgfDY4LjM5MTY2NyAgICB8NjguMjY2NjY3ICAgIHwwLjk5ODE3
MiAgfCAwLjc2MjI4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8NzcuOTc5MTY3
ICAgIHw3OC4xNjY2NjcgICAgfDEuMDAyNDA0ICB8IDAuNzEwMzI0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQW5ndWxhcjItVHlwZVNjcmlwdC1U
b2RvTVZDICAgICAgICAgIHwzOS43NDE2NjcgICAgfDM5Ljk2NjY2NyAgICB8MS4wMDU2NjIgIHwg
MC41MjQxMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDU1LjQxNjY2NyAgICB8
NTUuNTEyNTAwICAgIHwxLjAwMTcyOSAgfCAwLjc4MTQ0NyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGpRdWVyeS1Ub2RvTVZDICAgICAgICAgICAg
ICAgICAgICAgICB8MjY4LjgxMjUwMCAgIHwyNjYuOTY2NjY3ICAgfDAuOTkzMTMzICB8IDAuMDAz
Mzg0IChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
RW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAgICAgICAgICAgIHwzNDUuMzgzMzMzICAgfDM0NS42
NjI1MDAgICB8MS4wMDA4MDggIHwgMC42OTUyNTkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAg
ICAgICAgfDkwLjY3OTE2NyAgICB8OTAuMTc5MTY3ICAgIHwwLjk5NDQ4NiAgfCAwLjA2NzQ3NyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFJlYWN0
LVJlZHV4LVRvZG9NVkMgICAgICAgICAgICAgICAgICB8MTUyLjY5MTY2NyAgIHwxNTIuNjg3NTAw
ICAgfDAuOTk5OTczICB8IDAuOTkxMjA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2RvTVZD
IHw2Ni40ODc1MDAgICAgfDY1LjcyOTE2NyAgICB8MC45ODg1OTQgIHwgMC4wMDAxMTggKHNpZ25p
ZmljYW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisKKyAgICAgICAgYSBtZWFuID0gMjQyLjEyMzE5CisgICAgICAgIGIgbWVhbiA9IDI0
Mi44MDQ4NQorICAgICAgICBwVmFsdWUgPSAwLjE5OTI2NTQxMjgKKyAgICAgICAgKEJpZ2dlciBt
ZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4wMDMgdGltZXMgYmV0dGVyCisgICAgICAgIFJl
c3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydFRleHROb2RlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXJMb29w
KTogV2UgZG8gbm90IG5lZWQgdG8gY2FsbCBgc2hyaW5rVG9CZXN0Rml0YCBpbiBmcmFnbWVudCBw
YXJzaW5nIGNhc2Ugc2luY2UKKyAgICAgICAgd2Ugd2lsbCBkaXNjYXJkIEhUTUxUb2tlbiBzb29u
LgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjbGVhcik6IFdl
IGZvdW5kIHRoYXQgdGhlc2UgYGNsZWFyYCBjYWxscyBjYXVzZSBwZXJmb3JtYW5jZSBwcm9ibGVt
IGFjY29yZGluZyB0byB0aGUgSW5zdHJ1bWVudHM6IHdlCisgICAgICAgIHJlcGVhdGVkbHkgdXNl
IHRoaXMgVmVjdG9yLCBhbmQgd2UgcmVwZWF0ZWRseSBhbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSB0
aGlzIFZlY3RvciB1bm5lY2Vzc2FyaWx5LiBXZSB1c2UgYHJlc2l6ZSgwKWAgaW5zdGVhZAorICAg
ICAgICB0byBhdm9pZCB0aGlzIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KTogQnV0IEhUTUxUb2tlbiBpcyBr
ZXB0IHNvIGxvbmcsIHNvIGF0IHNvbWUgcG9pbnQsIHdlIHdvdWxkIGxpa2UgdG8gbWFrZSBiYWNr
aW5nIHN0b3JhZ2UKKyAgICAgICAgc21hbGwuIFNvLCB3ZSBhZGQgc2hyaW5rVG9CZXN0Rml0IGFu
ZCB3ZSBjYWxsIGl0IG9ubHkgYWZ0ZXIgZmluaXNoaW5nIGJhdGNoaW5nIG9mIEhUTUxUb2tlbiBw
cm9jZXNzaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6
ZXI6OnNocmlua1RvQmVzdEZpdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFy
YWN0ZXJUb2tlbkJ1ZmZlcjo6Y2hhcmFjdGVyUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVtYmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluVGFibGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5G
b3JlaWduQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NGYWtlQ2hhcmFjdGVycyk6IERlbGV0ZWQuIEl0IGlzIGRlYWQgY29kZSBiZWZvcmUgdGhpcyBw
YXRjaC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKwogMjAyMS0w
Ny0xNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXazFd
IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS13ZWJtLW9wdXMtcGFydGlhbC5odG1sIGlzIGEgY29u
c2lzdGVudCBmYWlsdXJlIChFbmFibGUgVlA4L1ZQOS9Wb3JiaXMvT3B1cyBpbiBXZWJLaXRMZWdh
Y3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCmluZGV4IGNkMTQ3NDQxMWNmN2IwYjg2NTFkMDljOGE3NWI5OGI3NTU3YzYwZGEu
LjgwMDQxOWRmNDI0OWE1M2VkZDgxOWU4NWIwNDlhZGE1ZmVkMzEyMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03
NjcsNiArNzY3LDEyIEBAIGNsYXNzIFZlY3RvciA6IHByaXZhdGUgVmVjdG9yQnVmZmVyPFQsIGlu
bGluZUNhcGFjaXR5LCBNYWxsb2M+IHsKICAgICB2b2lkIHNocmlua0NhcGFjaXR5KHNpemVfdCBu
ZXdDYXBhY2l0eSk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpIHsgc2hyaW5rQ2FwYWNpdHkoc2l6
ZSgpKTsgfQogCisgICAgLy8gc2hyaW5rVG9CZXN0Rml0IHNocmlua3MgdGhlIGNhcGFjaXR5IG9m
IHRoZSBWZWN0b3IgYXMgaWYgZXhwYW5kQ2FwYWNpdHkgaGFwcGVucyBqdXN0IG5vdy4gc2hyaW5r
VG9GaXQgYXR0ZW1wdHMgdG8gbWFrZSBzaXplKCkgPT0gY2FwYWNpdHkoKS4gVGh1cywKKyAgICAv
LyBpZiB3ZSBhcHBlbmQgc29tZSBpdGVtcyB0byB0aGlzIFZlY3RvciBqdXN0IGFmdGVyIHRoYXQs
IHdlIGFsd2F5cyBuZWVkIHRvIGV4cGFuZCB0aGUgVmVjdG9yLiBTbyBzaHJpbmtUb0ZpdCBpcyBu
b3QgYXBwcm9wcmlhdGUgaWYgd2Uga25vdyBjYXBhY2l0eSBvZgorICAgIC8vIHRoZSBWZWN0b3Ig
aXMgbXVjaCBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBhbmQgdGhlIFZlY3RvciBjYW4gYmUgYXBwZW5k
ZWQgc29vbi4gT24gdGhlIG90aGVyIGhhbmQsIHNocmlua1RvQmVzdEZpdCBjYW4gbGVhdmUgc29t
ZSByZWFzb25hYmxlIHNpemUgb2YKKyAgICAvLyB0aGUgY2FwYWNpdHkuCisgICAgdm9pZCBzaHJp
bmtUb0Jlc3RGaXQoKTsKKwogICAgIHZvaWQgY2xlYXIoKSB7IHNocmlua0NhcGFjaXR5KDApOyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gVmVjdG9yPFU+IGlzb2xhdGVkQ29weSgp
IGNvbnN0ICY7CkBAIC0xMjU1LDYgKzEyNjEsMTUgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua0NhcGEK
ICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit2b2lkIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6c2hy
aW5rVG9CZXN0Rml0KCkKK3sKKyAgICBzaXplX3QgY3VycmVudFNpemUgPSBzaXplKCk7CisgICAg
c2l6ZV90IG5ld0NhcGFjaXR5ID0gY3VycmVudFNpemUgPyBzdGQ6Om1heDxzaXplX3Q+KG1pbkNh
cGFjaXR5LCBjdXJyZW50U2l6ZSArIGN1cnJlbnRTaXplIC8gNCArIDEpIDogMDsKKyAgICBBU1NF
UlQoY3VycmVudFNpemUgPD0gbmV3Q2FwYWNpdHkpOworICAgIHNocmlua0NhcGFjaXR5KG5ld0Nh
cGFjaXR5KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUg
TWFsbG9jPgogdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiBhY3Rpb24sIHR5cGVuYW1lIFU+CiBBTFdB
WVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmQoY29uc3QgVSogZGF0YSwgc2l6ZV90IGRhdGFT
aXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcAppbmRleCAwMDllMmExOGZm
ZDJhNGE0NzRhMWVkZGY1NThmNmVjYWI4Mjc5MzRlLi40MWMyOGNlOGQyZjljZjJjZjQzODliNzdm
MWFjN2JkNzE4MTFhY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJp
bmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcApA
QCAtMTI3LDcgKzEyNywxMCBAQCBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yIHsKIAogICAg
IHN0YXRpYyBib29sIGVxdWFsKFBhY2tlZFB0cjxTdHJpbmdJbXBsPiBjb25zdCYgc3RyLCBjb25z
dCBVQ2hhckJ1ZmZlciYgYnVmKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3Ry
LmdldCgpLCBidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGwq
IGltcGwgPSBzdHIuZ2V0KCk7CisgICAgICAgIGlmIChpbXBsLT5leGlzdGluZ0hhc2goKSAhPSBi
dWYuaGFzaCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6
ZXF1YWwoaW1wbCwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOwogICAgIH0KIAogICAgIHN0
YXRpYyB2b2lkIHRyYW5zbGF0ZShQYWNrZWRQdHI8U3RyaW5nSW1wbD4mIGxvY2F0aW9uLCBjb25z
dCBVQ2hhckJ1ZmZlciYgYnVmLCB1bnNpZ25lZCBoYXNoKQpAQCAtMzA3LDcgKzMxMCwxMCBAQCBz
dHJ1Y3QgTENoYXJCdWZmZXJUcmFuc2xhdG9yIHsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKFBh
Y2tlZFB0cjxTdHJpbmdJbXBsPiBjb25zdCYgc3RyLCBjb25zdCBMQ2hhckJ1ZmZlciYgYnVmKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3RyLmdldCgpLCBidWYuY2hhcmFjdGVy
cywgYnVmLmxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHIuZ2V0KCk7Cisg
ICAgICAgIGlmIChpbXBsLT5leGlzdGluZ0hhc2goKSAhPSBidWYuaGFzaCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoaW1wbCwgYnVmLmNoYXJh
Y3RlcnMsIGJ1Zi5sZW5ndGgpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShQ
YWNrZWRQdHI8U3RyaW5nSW1wbD4mIGxvY2F0aW9uLCBjb25zdCBMQ2hhckJ1ZmZlciYgYnVmLCB1
bnNpZ25lZCBoYXNoKQpAQCAtMzI5LDcgKzMzNSwxMCBAQCBzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRp
Y0RhdGFUcmFuc2xhdG9yIHsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKFBhY2tlZFB0cjxTdHJp
bmdJbXBsPiBjb25zdCYgc3RyLCBjb25zdCBCdWZmZXImIGJ1ZikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOwor
ICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLmdldCgpOworICAgICAgICBpZiAoaW1wbC0+
ZXhpc3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3Ro
KTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUGFja2VkUHRyPFN0cmluZ0lt
cGw+JiBsb2NhdGlvbiwgY29uc3QgQnVmZmVyJiBidWYsIHVuc2lnbmVkIGhhc2gpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCmluZGV4IGVkZWZlMTU5ZDJkNzE4ZWI2Y2UxMzk0ZDk2YjMyMGE0NDQ4
Yjg5MDcuLmE2MGY2ZDlhYTVjODJkNjhjZTUxMjI4Y2VlYmVkODU0YTBkM2QyZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMzAsNiArMTMwLDggQEAgY2xhc3MgU3RyaW5nVmlldyBm
aW5hbCB7CiAgICAgU3RyaW5nVmlldyBsZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1
cm4gc3Vic3RyaW5nKDAsIGxlbmd0aCk7IH0KICAgICBTdHJpbmdWaWV3IHJpZ2h0KHVuc2lnbmVk
IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKHRoaXMtPmxlbmd0aCgpIC0gbGVuZ3Ro
LCBsZW5ndGgpOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJl
ZGljYXRlPgorICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoY29u
c3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1h
dGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+CiAgICAgU3RyaW5nVmlldyBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUm
KTsKIApAQCAtMTgxLDYgKzE4Myw5IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewogICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCBp
bml0aWFsaXplKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNh
dGU+CisgICAgU3RyaW5nVmlldyBzdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBD
aGFyYWN0ZXJUeXBlKiwgY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOworCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENoYXJhY3Rl
clByZWRpY2F0ZT4KICAgICBTdHJpbmdWaWV3IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hl
ZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQ
cmVkaWNhdGUmKTsKIApAQCAtMTAyOSw2ICsxMDM0LDMyIEBAIGlubGluZSBib29sIFN0cmluZ1Zp
ZXc6OlNwbGl0UmVzdWx0OjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3Ro
ZXIpCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgoraW5s
aW5lIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6c3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgY29uc3QgTWF0Y2hlZENoYXJhY3RlclBy
ZWRpY2F0ZSYgcHJlZGljYXRlKQoreworICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICB3aGls
ZSAoc3RhcnQgPCBtX2xlbmd0aCAmJiBwcmVkaWNhdGUoY2hhcmFjdGVyc1tzdGFydF0pKQorICAg
ICAgICArK3N0YXJ0OworCisgICAgaWYgKHN0YXJ0ID09IG1fbGVuZ3RoKQorICAgICAgICByZXR1
cm4gU3RyaW5nVmlldzo6ZW1wdHkoKTsKKworICAgIGlmICghc3RhcnQpCisgICAgICAgIHJldHVy
biAqdGhpczsKKworICAgIFN0cmluZ1ZpZXcgcmVzdWx0KGNoYXJhY3RlcnMgKyBzdGFydCwgbV9s
ZW5ndGggLSBzdGFydCk7CisgICAgcmVzdWx0LnNldFVuZGVybHlpbmdTdHJpbmcoKnRoaXMpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0
ZXJQcmVkaWNhdGU+CitTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRD
aGFyYWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmIHByZWRpY2F0ZSkKK3sK
KyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBzdHJpcExlYWRpbmdNYXRjaGVkQ2hh
cmFjdGVyczxMQ2hhcj4oY2hhcmFjdGVyczgoKSwgcHJlZGljYXRlKTsKKyAgICByZXR1cm4gc3Ry
aXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnM8VUNoYXI+KGNoYXJhY3RlcnMxNigpLCBwcmVkaWNh
dGUpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRj
aGVkQ2hhcmFjdGVyUHJlZGljYXRlPgogaW5saW5lIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6c3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBl
KiBjaGFyYWN0ZXJzLCBjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJiBwcmVkaWNhdGUp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKaW5kZXggNDk4MGY0NWQ3NjcyMmQ0ZDFkMzNkYTQ5MGJiM2I4MWFiMDNkNjY4Zi4u
NWQ4NTJlYzEwY2U0YmNmNmQ4ZGMxYjMxODVjZGMxMmI2ZTdkNzQzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTY2
LDcgKzU2Niw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuLCBjb25zdCBBCiAgICAgICAgIG1fb3BlbkVsZW1l
bnRzLnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKFdURk1vdmUoZWxlbWVudCksIFdURk1vdmUo
dG9rZW4pLCBuYW1lc3BhY2VVUkkpKTsKIH0KIAotdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW9kZSB3
aGl0ZXNwYWNlTW9kZSkKK3ZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2Rl
KFN0cmluZyYmIGNoYXJhY3RlcnMsIFdoaXRlc3BhY2VNb2RlIHdoaXRlc3BhY2VNb2RlKQogewog
ICAgIEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayB0YXNrKEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFz
azo6SW5zZXJ0KTsKICAgICB0YXNrLnBhcmVudCA9ICZjdXJyZW50Tm9kZSgpOwpAQCAtNTk2LDcg
KzU5Niw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKGNvbnN0
IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vCiAgICAgICAgIC8vIElmIHdlIGhhdmUg
YSB3aG9sZSBzdHJpbmcgb2YgdW5icmVha2FibGUgY2hhcmFjdGVycyB0aGUgYWJvdmUgY291bGQg
bGVhZCB0byBhbiBpbmZpbml0ZSBsb29wLiBFeGNlZWRpbmcgdGhlIGxlbmd0aCBsaW1pdCBpcyB0
aGUgbGVzc2VyIGV2aWwuCiAgICAgICAgIGlmICghdGV4dE5vZGUtPmxlbmd0aCgpKSB7CiAgICAg
ICAgICAgICBTdHJpbmcgc3Vic3RyaW5nID0gY2hhcmFjdGVycy5zdWJzdHJpbmcoY3VycmVudFBv
c2l0aW9uKTsKLSAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKHRhc2sucGFyZW50
LT5kb2N1bWVudCgpLCBzaG91bGRVc2VBdG9tU3RyaW5nID8gQXRvbVN0cmluZyhzdWJzdHJpbmcp
LnN0cmluZygpIDogc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3Jl
YXRlKHRhc2sucGFyZW50LT5kb2N1bWVudCgpLCBzaG91bGRVc2VBdG9tU3RyaW5nID8gQXRvbVN0
cmluZyhXVEZNb3ZlKHN1YnN0cmluZykpLnN0cmluZygpIDogc3Vic3RyaW5nKTsKICAgICAgICAg
fQogCiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAppbmRl
eCA1NzMxZmIwNWEyNGNmY2NiMmI0ODQ1NDQzMTJhY2RkOGIzNWJiOTkzLi4xMjc4NTQ5ZDcxYmY3
NmJlMWQ0NmQ2MzA5MDRjYjVlMDY3NjQ3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFz
cyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAgICAgdm9pZCBpbnNlcnRIVE1MQm9keUVsZW1lbnQo
QXRvbWljSFRNTFRva2VuJiYpOwogICAgIHZvaWQgaW5zZXJ0SFRNTEZvcm1FbGVtZW50KEF0b21p
Y0hUTUxUb2tlbiYmLCBib29sIGlzRGVtb3RlZCA9IGZhbHNlKTsKICAgICB2b2lkIGluc2VydFNj
cmlwdEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYpOwotICAgIHZvaWQgaW5zZXJ0VGV4dE5vZGUo
Y29uc3QgU3RyaW5nJiwgV2hpdGVzcGFjZU1vZGUgPSBXaGl0ZXNwYWNlVW5rbm93bik7CisgICAg
dm9pZCBpbnNlcnRUZXh0Tm9kZShTdHJpbmcmJiwgV2hpdGVzcGFjZU1vZGUgPSBXaGl0ZXNwYWNl
VW5rbm93bik7CiAgICAgdm9pZCBpbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4m
JiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJKTsKIAogICAgIHZvaWQgaW5zZXJ0SFRN
TEh0bWxTdGFydFRhZ0JlZm9yZUhUTUwoQXRvbWljSFRNTFRva2VuJiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNjM0OTZj
YjEyNGM1YzA3MTFlNTI4NDhlNjY5M2QxMzU4MzUyNDhhYS4uZDlmZjIwZGNkNGQ5ZDFjNDZiZDk4
ZWVjY2YzOWUzY2ZkYWZmMDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiTmF2
aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCIKLQorI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1Niw2ICsyNTYsMTEgQEAgRG9jdW1lbnQqIEhUTUxEb2N1
bWVudFBhcnNlcjo6Y29udGV4dEZvclBhcnNpbmdTZXNzaW9uKCkKIAogYm9vbCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnB1bXBUb2tlbml6ZXJMb29wKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBib29sIHBh
cnNpbmdGcmFnbWVudCwgUHVtcFNlc3Npb24mIHNlc3Npb24pCiB7CisgICAgYXV0byBzY29wZUV4
aXQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGlmICghcGFyc2luZ0ZyYWdtZW50KQor
ICAgICAgICAgICAgbV90b2tlbml6ZXIuc2hyaW5rVG9CZXN0Rml0KCk7CisgICAgfSk7CisKICAg
ICBkbyB7CiAgICAgICAgIGlmIChVTkxJS0VMWShpc1dhaXRpbmdGb3JTY3JpcHRzKCkpKSB7CiAg
ICAgICAgICAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5z
aG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChtX3RyZWVCdWlsZGVyLT5zY3JpcHRUb1By
b2Nlc3MoKSwgc2Vzc2lvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAppbmRleCAzYjA2NjhkMjRiMjk2YTk0NjYxMWYwMjUz
ZGU4NGE4ZTkwZmUzYTkxLi4wN2M5NWI0MDJkNmVhZmRhNzVkZGI0YmZhMDJjOWI1YmNjZDk3NzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNl
dFBhcnNlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nUmVnaXN0
cnkuaCIKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNTcsNiArMTU4LDEwIEBAIGJvb2wgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVja0Zvck1l
dGFDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAgYm9vbCBpZ25v
cmVkU2F3RXJyb3JGbGFnOwogICAgIG1faW5wdXQuYXBwZW5kKG1fY29kZWMtPmRlY29kZShkYXRh
LCBsZW5ndGgsIGZhbHNlLCBmYWxzZSwgaWdub3JlZFNhd0Vycm9yRmxhZykpOwogCisgICAgYXV0
byBzY29wZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIG1fdG9rZW5pemVyLnNo
cmlua1RvQmVzdEZpdCgpOworICAgIH0pOworCiAgICAgd2hpbGUgKGF1dG8gdG9rZW4gPSBtX3Rv
a2VuaXplci5uZXh0VG9rZW4obV9pbnB1dCkpIHsKICAgICAgICAgYm9vbCBpc0VuZCA9IHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWc7CiAgICAgICAgIGlmIChpc0VuZCB8fCB0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDk0ODE5ZWNlZTllNzcz
ZTRjNTg1ZDk3NjQ3ZDQ1OGM2MDg1NGUyZWYuLjJkYWE0NDliMDJlNzAwOTljMGRjZmEzYjRjNDc4
Zjc2YTViODQyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcApAQCAtNTE0LDYgKzUxNCw3IEBAIHZvaWQgSFRNTFByZWxvYWRTY2Fu
bmVyOjpzY2FuKEhUTUxSZXNvdXJjZVByZWxvYWRlciYgcHJlbG9hZGVyLCBEb2N1bWVudCYgZG9j
dW1lCiAgICAgICAgICAgICBtX3Rva2VuaXplci51cGRhdGVTdGF0ZUZvcihBdG9tU3RyaW5nKHRv
a2VuLT5uYW1lKCkpKTsKICAgICAgICAgbV9zY2FubmVyLnNjYW4oKnRva2VuLCByZXF1ZXN0cywg
ZG9jdW1lbnQpOwogICAgIH0KKyAgICBtX3Rva2VuaXplci5zaHJpbmtUb0Jlc3RGaXQoKTsKIAog
ICAgIHByZWxvYWRlci5wcmVsb2FkKFdURk1vdmUocmVxdWVzdHMpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggYjUwN2U0ZjhlM2E4YTEwY2EwNzlmZWRhMzkx
NWRmMjc1MmNiNjIzYi4uNTFlYjU0Nzc1NWEzZjg5NTgyYmZlMjkyZmYyYmM1ZWU1NWNhNmQ3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTY4LDYgKzY4LDcgQEAg
Y2xhc3MgSFRNTFRva2VuIHsKICAgICBIVE1MVG9rZW4oKTsKIAogICAgIHZvaWQgY2xlYXIoKTsK
KyAgICB2b2lkIHNocmlua1RvQmVzdEZpdCgpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7CiAK
QEAgLTE3MCwxMCArMTcxLDE2IEBAIGlubGluZSBIVE1MVG9rZW46OkhUTUxUb2tlbigpCiBpbmxp
bmUgdm9pZCBIVE1MVG9rZW46OmNsZWFyKCkKIHsKICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVk
OwotICAgIG1fZGF0YS5jbGVhcigpOworICAgIG1fZGF0YS5yZXNpemUoMCk7CiAgICAgbV9kYXRh
OEJpdENoZWNrID0gMDsKIH0KIAoraW5saW5lIHZvaWQgSFRNTFRva2VuOjpzaHJpbmtUb0Jlc3RG
aXQoKQoreworICAgIG1fZGF0YS5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICBtX2F0dHJpYnV0ZXMu
c2hyaW5rVG9CZXN0Rml0KCk7Cit9CisKIGlubGluZSBIVE1MVG9rZW46OlR5cGUgSFRNTFRva2Vu
Ojp0eXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90eXBlOwpAQCAtMjczLDcgKzI4MCw3IEBA
IGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0ZXIpCiAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBTdGFydFRh
ZzsKICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7
CisgICAgbV9hdHRyaWJ1dGVzLnJlc2l6ZSgwKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
bV9jdXJyZW50QXR0cmlidXRlID0gbnVsbHB0cjsKQEAgLTI4OCw3ICsyOTUsNyBAQCBpbmxpbmUg
dm9pZCBIVE1MVG9rZW46OmJlZ2luRW5kVGFnKExDaGFyIGNoYXJhY3RlcikKICAgICBBU1NFUlQo
bV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IEVuZFRhZzsKICAgICBtX3Nl
bGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9hdHRy
aWJ1dGVzLnJlc2l6ZSgwKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50QXR0
cmlidXRlID0gbnVsbHB0cjsKQEAgLTMwMiw3ICszMDksNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9r
ZW46OmJlZ2luRW5kVGFnKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0ZXJzKQogICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CiAgICAgbV90eXBlID0gRW5kVGFnOwog
ICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKLSAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKKyAg
ICBtX2F0dHJpYnV0ZXMucmVzaXplKDApOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuaXplci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRva2VuaXplci5oCmluZGV4IDVkODE5MWY0NDg5NTQ0MjE1OGNmN2UyNTRhM2ExYzU2ODdhODA0
NGMuLjA5ZmVlZGExOTdiN2VjNDU4NTBmMTg4NzNjOThmOTU5Y2ExOTEwZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKQEAgLTc5LDYgKzc5LDExIEBAIGNs
YXNzIEhUTUxUb2tlbml6ZXIgewogCiAgICAgYm9vbCBuZXZlclNraXBOdWxsQ2hhcmFjdGVycygp
IGNvbnN0OwogCisgICAgdm9pZCBzaHJpbmtUb0Jlc3RGaXQoKQorICAgIHsKKyAgICAgICAgbV90
b2tlbi5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZW51bSBTdGF0
ZSB7CiAgICAgICAgIERhdGFTdGF0ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGI0NTg1YzE0NWQ1MmUyMGJhODMyMTEwZTkzZTE0NzBj
Y2FjYmM1YTYuLjc1NWY4ZDQ5NWUxOTUzNjU2NzRiMjA4NzQ5ZjQyNDVlNmUwM2EzYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjI2
LDExICsyMjYsNyBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9r
ZW5CdWZmZXIgewogICAgIHRlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKFVDaGFyKT4g
dm9pZCBza2lwTGVhZGluZygpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7Ci0g
ICAgICAgIHdoaWxlIChjaGFyYWN0ZXJQcmVkaWNhdGUobV90ZXh0WzBdKSkgewotICAgICAgICAg
ICAgbV90ZXh0ID0gbV90ZXh0LnN1YnN0cmluZygxKTsKLSAgICAgICAgICAgIGlmIChtX3RleHQu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBt
X3RleHQgPSBtX3RleHQuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoY2hhcmFjdGVyUHJl
ZGljYXRlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxib29sIGNoYXJhY3RlclByZWRpY2F0ZShV
Q2hhcik+IFN0cmluZyB0YWtlTGVhZGluZygpCkBAIC00MzMsMTMgKzQyOSw2IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lKQogICAgIHByb2Nlc3NGYWtlRW5kVGFnKHRhZ05hbWUubG9jYWxOYW1lKCkpOwogfQogCi12
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYg
Y2hhcmFjdGVycykKLXsKLSAgICBBU1NFUlQoIWNoYXJhY3RlcnMuaXNFbXB0eSgpKTsKLSAgICBF
eHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIGJ1ZmZlcihjaGFyYWN0ZXJzKTsKLSAgICBwcm9j
ZXNzQ2hhcmFjdGVyQnVmZmVyKGJ1ZmZlcik7Ci19Ci0KIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCkKIHsKICAgICBpZiAoIW1fdHJlZS5v
cGVuRWxlbWVudHMoKS5pbkJ1dHRvblNjb3BlKHBUYWctPmxvY2FsTmFtZSgpKSkKQEAgLTIxOTUs
NyArMjE4NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKEF0b21p
Y0hUTUxUb2tlbiYmIHRva2VuKQogCiAvLyBGSVhNRTogRXh0cmFjdCB0aGUgZm9sbG93aW5nIGlP
Uy1zcGVjaWZpYyBjb2RlIGludG8gYSBzZXBhcmF0ZSBmaWxlLgogLy8gRnJvbSB0aGUgc3RyaW5n
IDQwODk5NjEwMTAsIGNyZWF0ZXMgYSBsaW5rIG9mIHRoZSBmb3JtIDxhIGhyZWY9InRlbDo0MDg5
OTYxMDEwIj40MDg5OTYxMDEwPC9hPiBhbmQgaW5zZXJ0cyBpdC4KLXZvaWQgSFRNTFRyZWVCdWls
ZGVyOjppbnNlcnRQaG9uZU51bWJlckxpbmsoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKFN0cmluZyYmIHN0cmluZykKIHsK
ICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMuYXBwZW5k
KEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyLCBtYWtlU3RyaW5nKCJ0ZWw6Il9zLCBzdHJp
bmcpKSk7CkBAIC0yMjA2LDcgKzIxOTUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0
UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiAgICAgcHJvY2Vzc1N0YXJ0
VGFnKFdURk1vdmUoYVN0YXJ0VG9rZW4pKTsKICAgICBtX3RyZWUuZXhlY3V0ZVF1ZXVlZFRhc2tz
KCk7Ci0gICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmluZyk7CisgICAgbV90cmVlLmluc2Vy
dFRleHROb2RlKFdURk1vdmUoc3RyaW5nKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhXVEZNb3ZlKGFF
bmRUb2tlbikpOwogfQogCkBAIC0yMjE1LDcgKzIyMDQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogLy8gMi4gV3Jh
cHMgdGhlIHBob25lIG51bWJlciBpbiBhIHRlbDogbGluay4KIC8vIDMuIEdvZXMgYmFjayB0byBz
dGVwIDEgaWYgYSBwaG9uZSBudW1iZXIgaXMgZm91bmQgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmlu
Zy4KIC8vIDQuIEFwcGVuZHMgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyBhcyBhIHRleHQgbm9kZS4K
LXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMoU3RyaW5n
JiYgc3RyaW5nKQogewogICAgIEFTU0VSVChUZWxlcGhvbmVOdW1iZXJEZXRlY3Rvcjo6aXNTdXBw
b3J0ZWQoKSk7CiAKQEAgLTIyNDgsMTAgKzIyMzcsMTAgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OmxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaWYgKHNjYW5u
ZXJQb3NpdGlvbiA+IDApIHsKICAgICAgICAgaWYgKHNjYW5uZXJQb3NpdGlvbiA8IGxlbmd0aCkg
ewogICAgICAgICAgICAgU3RyaW5nIGFmdGVyID0gc3RyaW5nLnN1YnN0cmluZyhzY2FubmVyUG9z
aXRpb24sIGxlbmd0aCAtIHNjYW5uZXJQb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3RyZWUuaW5z
ZXJ0VGV4dE5vZGUoYWZ0ZXIpOworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdU
Rk1vdmUoYWZ0ZXIpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBtX3RyZWUuaW5z
ZXJ0VGV4dE5vZGUoc3RyaW5nKTsKKyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1v
dmUoc3RyaW5nKSk7CiB9CiAKIC8vIExvb2tzIGF0IHRoZSBhbmNlc3RvcnMgb2YgdGhlIGVsZW1l
bnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UncmUgaW5zaWRlIGFuIGVsZW1lbnQgd2hpY2ggZGlz
YWxsb3dzIHBhcnNpbmcgcGhvbmUgbnVtYmVycy4KQEAgLTIzMjQsNyArMjMxMyw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVy
VG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJbkhlYWQ6IHsKICAg
ICAgICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVz
cGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVz
cGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5n
V2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVmYXVsdEZvckluSGVhZCgpOwpAQCAt
MjMzNCw3ICsyMzIzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJC
dWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYgYnVmZmUKICAgICBjYXNlIEluc2Vy
dGlvbk1vZGU6OkFmdGVySGVhZDogewogICAgICAgICBTdHJpbmcgbGVhZGluZ1doaXRlc3BhY2Ug
PSBidWZmZXIudGFrZUxlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmICghbGVhZGluZ1do
aXRlc3BhY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGxl
YWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNlKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNl
cnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRpbmdXaGl0ZXNwYWNlKSwgQWxsV2hpdGVzcGFjZSk7CiAg
ICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBkZWZhdWx0Rm9yQWZ0ZXJIZWFkKCk7CkBAIC0yMzcyLDcgKzIzNjEsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2Vu
QnVmZmVyJiBidWZmZQogICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5Db2x1bW5Hcm91cDogewog
ICAgICAgICBTdHJpbmcgbGVhZGluZ1doaXRlc3BhY2UgPSBidWZmZXIudGFrZUxlYWRpbmdXaGl0
ZXNwYWNlKCk7CiAgICAgICAgIGlmICghbGVhZGluZ1doaXRlc3BhY2UuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0
ZXNwYWNlKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRp
bmdXaGl0ZXNwYWNlKSwgQWxsV2hpdGVzcGFjZSk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXByb2Nlc3NDb2xncm91cEVu
ZFRhZ0ZvckluQ29sdW1uR3JvdXAoKSkgewpAQCAtMjM5NSw3ICsyMzg0LDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tl
bkJ1ZmZlciYgYnVmZmUKICAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluSGVhZE5vc2NyaXB0OiB7
CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlTGVhZGluZ1do
aXRlc3BhY2UoKTsKICAgICAgICAgaWYgKCFsZWFkaW5nV2hpdGVzcGFjZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UsIEFsbFdo
aXRlc3BhY2UpOworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUobGVh
ZGluZ1doaXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1bHRGb3JJbkhlYWROb3Nj
cmlwdCgpOwpAQCAtMjQwNSw3ICsyMzk0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NDaGFyYWN0ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYgYnVmZmUKICAg
ICBjYXNlIEluc2VydGlvbk1vZGU6OkFmdGVyRnJhbWVzZXQ6IHsKICAgICAgICAgU3RyaW5nIGxl
YWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VSZW1haW5pbmdXaGl0ZXNwYWNlKCk7CiAgICAg
ICAgIGlmICghbGVhZGluZ1doaXRlc3BhY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV90cmVl
Lmluc2VydFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNlKTsKKyAgICAg
ICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRpbmdXaGl0ZXNwYWNlKSwg
QWxsV2hpdGVzcGFjZSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2VuZXJhdGUgYSBw
YXJzZSBlcnJvciBpZiB3ZSBza2lwcGVkIG92ZXIgYW55CiAgICAgICAgIC8vIG5vbi13aGl0ZXNw
YWNlIGNoYXJhY3RlcnMuCiAgICAgICAgIGJyZWFrOwpAQCAtMjQxOCw3ICsyNDA3LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0
ZXJUb2tlbkJ1ZmZlciYgYnVmZmUKICAgICAgICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0g
YnVmZmVyLnRha2VSZW1haW5pbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmICghbGVhZGluZ1do
aXRlc3BhY2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVB
Y3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0
Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3Ry
ZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3Bh
Y2UpOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2VuZXJhdGUgYSBw
YXJzZSBlcnJvciBpZiB3ZSBza2lwcGVkIG92ZXIgYW55CiAgICAgICAgIC8vIG5vbi13aGl0ZXNw
YWNlIGNoYXJhY3RlcnMuCkBAIC0yNDMxLDE2ICsyNDIwLDE2IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5KEV4dGVybmFsQ2hhcmFjdGVyVG9r
ZW5CdWZmCiB7CiAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1l
bnRzKCk7CiAgICAgU3RyaW5nIGNoYXJhY3RlcnMgPSBidWZmZXIudGFrZVJlbWFpbmluZygpOwor
ICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFy
YWN0ZXJzKGNoYXJhY3RlcnMpKQorICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKICNpZiBF
TkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKCFpc1BhcnNpbmdGcmFnbWVudCgpICYmIG1fdHJlZS5pc1RlbGVwaG9uZU51bWJl
clBhcnNpbmdFbmFibGVkKCkgJiYgc2hvdWxkUGFyc2VUZWxlcGhvbmVOdW1iZXJzSW5Ob2RlKG1f
dHJlZS5jdXJyZW50Tm9kZSgpKSAmJiBUZWxlcGhvbmVOdW1iZXJEZXRlY3Rvcjo6aXNTdXBwb3J0
ZWQoKSkKLSAgICAgICAgbGlua2lmeVBob25lTnVtYmVycyhjaGFyYWN0ZXJzKTsKKyAgICAgICAg
bGlua2lmeVBob25lTnVtYmVycyhXVEZNb3ZlKGNoYXJhY3RlcnMpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKKyAgICAgICAgbV90cmVlLmlu
c2VydFRleHROb2RlKFdURk1vdmUoY2hhcmFjdGVycykpOwogI2Vsc2UKLSAgICBtX3RyZWUuaW5z
ZXJ0VGV4dE5vZGUoY2hhcmFjdGVycyk7CisgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1v
dmUoY2hhcmFjdGVycykpOwogI2VuZGlmCi0gICAgaWYgKG1fZnJhbWVzZXRPayAmJiAhaXNBbGxX
aGl0ZXNwYWNlT3JSZXBsYWNlbWVudENoYXJhY3RlcnMoY2hhcmFjdGVycykpCi0gICAgICAgIG1f
ZnJhbWVzZXRPayA9IGZhbHNlOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZE9mRmlsZShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKQEAgLTI1NzcsMTIgKzI1NjYsMTIgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxlVGV4dCgpCiAgICAgICAgIC8v
IEZJWE1FOiBwYXJzZSBlcnJvcgogICAgICAgICBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6UmVkaXJl
Y3RUb0Zvc3RlclBhcmVudEd1YXJkIHJlZGlyZWN0ZXIobV90cmVlKTsKICAgICAgICAgbV90cmVl
LnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7Ci0gICAgICAgIG1fdHJl
ZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzLCBOb3RBbGxXaGl0ZXNwYWNlKTsKKyAgICAgICAg
bV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUoY2hhcmFjdGVycyksIE5vdEFsbFdoaXRlc3Bh
Y2UpOwogICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKICAgICAgICAgbV9pbnNlcnRpb25N
b2RlID0gbV9vcmlnaW5hbEluc2VydGlvbk1vZGU7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOworICAgIG1fdHJlZS5pbnNlcnRU
ZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpKTsKICAgICBtX2luc2VydGlvbk1vZGUgPSBtX29y
aWdpbmFsSW5zZXJ0aW9uTW9kZTsKIH0KIApAQCAtMjgyMCw5ICsyODA5LDkgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2Vu
JiYgdG9rZW4pCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVy
OiB7CiAgICAgICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gU3RyaW5nKHRva2VuLmNoYXJhY3RlcnMo
KSwgdG9rZW4uY2hhcmFjdGVyc0xlbmd0aCgpKTsKLSAgICAgICAgbV90cmVlLmluc2VydFRleHRO
b2RlKGNoYXJhY3RlcnMpOwogICAgICAgICBpZiAobV9mcmFtZXNldE9rICYmICFpc0FsbFdoaXRl
c3BhY2VPclJlcGxhY2VtZW50Q2hhcmFjdGVycyhjaGFyYWN0ZXJzKSkKICAgICAgICAgICAgIG1f
ZnJhbWVzZXRPayA9IGZhbHNlOworICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92
ZShjaGFyYWN0ZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEhUTUxUb2tl
bjo6RW5kT2ZGaWxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaAppbmRleCBlOTY2ZDdmNGEyNzdjYzNjM2I5YmJjM2U2MmRmZTViOTU2NDE4OTdhLi4wZWZj
NzdmNjU3NzhhN2IxZDBmYTBjMDg0OTIyYThkZTc4NTdkZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtMTA4LDggKzEwOCw4IEBAIGNsYXNz
IEhUTUxUcmVlQnVpbGRlciB7CiAgICAgYm9vbCBpc1BhcnNpbmdGcmFnbWVudE9yVGVtcGxhdGVD
b250ZW50cygpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgaW5zZXJ0UGhvbmVOdW1iZXJMaW5r
KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgbGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIGluc2VydFBob25lTnVtYmVyTGluayhTdHJpbmcmJik7CisgICAgdm9p
ZCBsaW5raWZ5UGhvbmVOdW1iZXJzKFN0cmluZyYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBwcm9j
ZXNzVG9rZW4oQXRvbWljSFRNTFRva2VuJiYpOwpAQCAtMTQ1LDcgKzE0NSw2IEBAIGNsYXNzIEhU
TUxUcmVlQnVpbGRlciB7CiAgICAgdm9pZCBwcm9jZXNzRmFrZVN0YXJ0VGFnKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBWZWN0b3I8QXR0cmlidXRlPiYmIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmli
dXRlPigpKTsKICAgICB2b2lkIHByb2Nlc3NGYWtlRW5kVGFnKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2b2lkIHByb2Nlc3NGYWtlRW5kVGFnKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICB2
b2lkIHByb2Nlc3NGYWtlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHByb2Nl
c3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKTsKIAogICAgIHZvaWQgcHJvY2Vzc0dlbmVy
aWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmZiOGViYWM1YjNkNzJhY2NkZDc0NmEy
NGNiNTQxOGEyMjMwYmM0Mi4uZGU5Yjk3MGExNjFkYmRkZDQ4YTc0YTA4MTg3ZWZhZGM4ODQwNGFj
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIxLTA3LTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgTWljcm8tb3B0aW1pemUgaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDIxLTA3LTE1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVwZGF0ZSBteSBzdGF0dXMgaW4gY29udHJp
YnV0b3JzLmpzb24gdG8gcmV2aWV3ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ1ZpZXcuY3BwCmluZGV4IDg0ZWM1ZGFmMmU0M2JlYTljNDg1MjdjYTI1Y2RmZDgyOWFm
MDdmNDMuLmRhYThhZjc1ZGNlYTQ1ZDY2Y2M3NWE2MzYwOWQwMmUxOTA0YmJkMGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC05NTksNiArOTU5
LDI4IEBAIFRFU1QoV1RGLCBTdHJpbmdWaWV3UmV2ZXJzZUZpbmRCYXNpYykKICAgICBFWFBFQ1Rf
RVEocmVmZXJlbmNlLnJldmVyc2VGaW5kKCdjJywgNCksIG5vdEZvdW5kKTsKIH0KIAorVEVTVChX
VEYsIFN0cmluZ1ZpZXdTdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycykKK3sKKyAgICBhdXRv
IGlzQSA9IFtdIChVQ2hhciBjKSB7CisgICAgICAgIHJldHVybiBjID09ICdBJzsKKyAgICB9Owor
CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJBQUFCQkJBQUEiKS5zdHJp
cExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0EpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgi
QkJCQUFBIikpOworICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQUFBQkJC
Q0NDIikuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBzdHJpbmdWaWV3RnJv
bUxpdGVyYWwoIkJCQkNDQyIpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdWaWV3RnJvbUxpdGVy
YWwoIkNDQ0JCQkFBQSIpLnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzQSkgPT0gc3Ry
aW5nVmlld0Zyb21MaXRlcmFsKCJDQ0NCQkJBQUEiKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5n
Vmlld0Zyb21MaXRlcmFsKCJDQ0NCQkJDQ0MiKS5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVy
cyhpc0EpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ0NDQkJCQ0NDIikpOworICAgIEVYUEVD
VF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQUFBQUFBQ0NDIikuc3RyaXBMZWFkaW5nTWF0
Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNDQyIpKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkJCQkFBQUFBQSIpLnN0cmlwTGVh
ZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzQSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJCQkJB
QUFBQUEiKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDQ0NBQUFC
QkIiKS5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0EpID09IHN0cmluZ1ZpZXdGcm9t
TGl0ZXJhbCgiQ0NDQUFBQkJCIikpOworICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0
ZXJhbCgiQUFBQUFBQUFBIikuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBT
dHJpbmdWaWV3OjplbXB0eSgpKTsKKworICAgIFN0cmluZ1ZpZXcgZW1wdHlWaWV3ID0gU3RyaW5n
Vmlldzo6ZW1wdHkoKTsKKyAgICBFWFBFQ1RfVFJVRShlbXB0eVZpZXcuc3RyaXBMZWFkaW5nTWF0
Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBlbXB0eVZpZXcpOworCisgICAgU3RyaW5nVmlldyBudWxs
VmlldzsKKyAgICBFWFBFQ1RfVFJVRShudWxsVmlldy5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFj
dGVycyhpc0EpID09IG51bGxWaWV3KTsKK30KKwogVEVTVChXVEYsIFN0cmluZ1ZpZXdTdHJpcExl
YWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKQogewogICAgIGF1dG8gaXNBID0gW10g
KFVDaGFyIGMpIHsgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
ZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAppbmRl
eCAxMWZjYjExZTlkYzIwYjBmZWE3NzNlMjA4YzYxZjk2MDIwNGUyNzhhLi5kMmZkN2EwNjU5NmUw
ODQ3YTRhMDliNzY4ZWIzZjIwNmQxNjIyY2FhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1ZlY3Rvci5jcHAKQEAgLTE0NTgsNSArMTQ1OCw0MSBAQCBURVNUKFdURl9WZWN0b3IsIENv
bnN0cnVjdG9yRnJvbVJhd1BvaW50ZXJBbmRTaXplKQogICAgIEVYUEVDVF9FUSh2ZWN0b3JbM10s
IDQpOwogICAgIEVYUEVDVF9FUSh2ZWN0b3JbNF0sIDUpOwogfQotICAgIAorCitURVNUKFdURl9W
ZWN0b3IsIFNocmlua1RvQmVzdEZpdENsZWFyKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gdmVj
dG9yOworICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAg
IHZlY3Rvci5hcHBlbmQoMjApOworICAgIHZlY3Rvci5yZXNpemUoMCk7CisgICAgdmVjdG9yLnNo
cmlua1RvQmVzdEZpdCgpOworICAgIEVYUEVDVF9FUSh2ZWN0b3Iuc2l6ZSgpLCAwVSk7CisgICAg
RVhQRUNUX0VRKHZlY3Rvci5jYXBhY2l0eSgpLCAwVSk7Cit9CisKK1RFU1QoV1RGX1ZlY3Rvciwg
U2hyaW5rVG9CZXN0Rml0RG9lc05vdENoYW5nZUlmQ2FwYWNpdHlNYXRjaGVzKQoreworICAgIFZl
Y3Rvcjx1aW50MzJfdD4gdmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAgIHZlY3Rv
ci5hcHBlbmQoMjApOworICAgIHZlY3Rvci5hcHBlbmQoMjApOworICAgIHVuc2lnbmVkIGNhcGFj
aXR5ID0gdmVjdG9yLmNhcGFjaXR5KCk7CisgICAgdmVjdG9yLnNocmlua1RvQmVzdEZpdCgpOwor
ICAgIEVYUEVDVF9FUSh2ZWN0b3Iuc2l6ZSgpLCAzVSk7CisgICAgRVhQRUNUX0VRKHZlY3Rvci5j
YXBhY2l0eSgpLCBjYXBhY2l0eSk7Cit9CisKK1RFU1QoV1RGX1ZlY3RvciwgU2hyaW5rVG9CZXN0
Rml0KQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gdmVjdG9yOworICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IDQwMDsgKytpbmRleCkKKyAgICAgICAgdmVjdG9yLmFwcGVuZChp
bmRleCk7CisgICAgdmVjdG9yLnJlc2l6ZSgxMDApOworICAgIEVYUEVDVF9HRSh2ZWN0b3IuY2Fw
YWNpdHkoKSwgNDAwVSk7CisgICAgdmVjdG9yLnNocmlua1RvQmVzdEZpdCgpOworICAgIEVYUEVD
VF9MRSh2ZWN0b3IuY2FwYWNpdHkoKSwgMjAwVSk7CisgICAgRVhQRUNUX0dFKHZlY3Rvci5jYXBh
Y2l0eSgpLCAxMDBVKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434023</attachid>
            <date>2021-07-22 11:14:28 -0700</date>
            <delta_ts>2021-07-22 11:55:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228142-20210722111427.patch</filename>
            <type>text/plain</type>
            <size>33873</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmNDdjY2QyNmUyOWNhMTI3OTUxOTdl
OGQzNmU5ODFkYTE2N2RlZmEuLmQ0YzVkN2RlZDBmODYxZTdjMDRlYzVkMTEzNzZmNjc4ZGQwMTE5
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBNaWNyby1vcHRpbWl6ZSBpbm5lckhUTUwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpzaHJpbmtUb0Jlc3RGaXQpOiBUaGlzIHNocmlua3Mg
dGhlIGJhY2tpbmcgc3RvcmFnZSB0byAiYXBwcm9wcmlhdGUgZm9yIHRoZSBsaXZpbmcgVmVjdG9y
Ii4KKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6
OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOiBXVEY6OmVxdWFsIGZvciBTdHJpbmcgZG9l
cyBub3QgY2hlY2sgaGFzaC4gVGhpcyBpcyBiZWNhdXNlIGNvbXB1dGluZyBoYXNoIGlzIGV4cGVu
c2l2ZQorICAgICAgICBhbmQgd2Ugd291bGQgbGlrZSB0byBhdm9pZCB0aGF0IGlmIGl0IGlzIG5v
dCBuZWNlc3NhcnkuIEJ1dCB3aGVuIGluc2VydGluZyBzdHJpbmcgaW50byBBdG9tU3RyaW5nVGFi
bGUsIHdlIGNhbiB1c2UgaGFzaCB2YWx1ZQorICAgICAgICBzaW5jZSB0aGV5IG11c3QgYmUgYWxy
ZWFkeSBjb21wdXRlZCBiZWNhdXNlIG9mIEhhc2hNYXAncyByZXF1aXJlbWVudC4gU28gbGV0J3Mg
dXNlIGl0IGJlZm9yZSBjYWxsaW5nIFdURjo6ZXF1YWwuCisgICAgICAgIChXVEY6OkxDaGFyQnVm
ZmVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0
YVRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKTog
QWRkIHRoaXMgYW5kIHVzZSBpdCBpbiBIVE1MVHJlZUJ1aWxkZXIuCisKIDIwMjEtMDctMTUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2sxXSBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtd2VibS1vcHVzLXBhcnRpYWwuaHRtbCBpcyBhIGNvbnNpc3RlbnQg
ZmFpbHVyZSAoRW5hYmxlIFZQOC9WUDkvVm9yYmlzL09wdXMgaW4gV2ViS2l0TGVnYWN5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDFlMWEyMjU4ZGU2NWZiMzA3Yjg1MDdiMmFhZGMxYjgxMDdkMDdhNjAuLmY0ZWZi
M2Q1YWU1MDI4MDliZTFjNGM2OTA2MjY5MjYyOTJiNzk1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3NSBAQAorMjAyMS0wNy0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIE1pY3JvLW9wdGltaXplIGlubmVySFRNTAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggZG9lcyBzb21lIG1pY3JvIG9wdGltaXphdGlvbnMgcmV2ZWFsZWQgYnkgdGhl
IHByb2ZpbGVyIHdoZW4gcnVubmluZyBzb21lIG9mIFNwZWVkb21ldGVyMiB0ZXN0cyB3aGljaCBp
bnRlbnNpdmVseSB1c2UgaW5uZXJIVE1MLgorICAgICAgICBUaGlzIG9mZmVycyBpbXByb3ZlbWVu
dCBpbiBqUXVlcnktVG9kb01WQyBhbmQgVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2Rv
TVZDIHNpbmNlIGJvdGggYXJlIHN1cGVyIGlubmVySFRNTCBoZWF2eSBiZW5jaG1hcmtzLgorCisg
ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgfCAgICAgICAgICAgICAgIHN1YnRlc3Qg
ICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBw
VmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxzZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgRWxtLVRvZG9NVkMgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwxMjYuODYyNTAwICAgfDEyNi42ODc1MDAgICB8MC45OTg2MjEgIHwgMC42NzM0
NjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBW
dWVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDI3Ljc3NTAwMCAgICB8MjcuNjQ1
ODMzICAgIHwwLjk5NTM1MCAgfCAwLjc0MTU4OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICB8MTI5LjM1MDAwMCAgIHwxMjkuMTI5MTY3ICAgfDAuOTk4MjkzICB8IDAuNjI0MTk2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2Jv
bmVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS4xMjkxNjcgICAgfDUxLjIwNDE2NyAg
ICB8MS4wMDE0NjcgIHwgMC43MTY2MjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
fDIxLjg3MDgzMyAgICB8MjEuMzM3NTAwICAgIHwwLjk3NTYxNCAgfCAwLjIxNzc3MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICB8MTM5Ljg1NDE2NyAgIHwxNDAuMjY2NjY3ICAgfDEu
MDAyOTUwICB8IDAuNDg5ODM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9kb01WQyAgICAgICAgICAgICAgIHw2OS4y
MjkxNjcgICAgfDY4Ljg5NTgzMyAgICB8MC45OTUxODUgIHwgMC4yMzg3NzIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBJbmZlcm5vLVRvZG9NVkMg
ICAgICAgICAgICAgICAgICAgICAgfDY4LjM5MTY2NyAgICB8NjguMjY2NjY3ICAgIHwwLjk5ODE3
MiAgfCAwLjc2MjI4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8NzcuOTc5MTY3
ICAgIHw3OC4xNjY2NjcgICAgfDEuMDAyNDA0ICB8IDAuNzEwMzI0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQW5ndWxhcjItVHlwZVNjcmlwdC1U
b2RvTVZDICAgICAgICAgIHwzOS43NDE2NjcgICAgfDM5Ljk2NjY2NyAgICB8MS4wMDU2NjIgIHwg
MC41MjQxMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDU1LjQxNjY2NyAgICB8
NTUuNTEyNTAwICAgIHwxLjAwMTcyOSAgfCAwLjc4MTQ0NyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGpRdWVyeS1Ub2RvTVZDICAgICAgICAgICAg
ICAgICAgICAgICB8MjY4LjgxMjUwMCAgIHwyNjYuOTY2NjY3ICAgfDAuOTkzMTMzICB8IDAuMDAz
Mzg0IChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
RW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAgICAgICAgICAgIHwzNDUuMzgzMzMzICAgfDM0NS42
NjI1MDAgICB8MS4wMDA4MDggIHwgMC42OTUyNTkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAg
ICAgICAgfDkwLjY3OTE2NyAgICB8OTAuMTc5MTY3ICAgIHwwLjk5NDQ4NiAgfCAwLjA2NzQ3NyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFJlYWN0
LVJlZHV4LVRvZG9NVkMgICAgICAgICAgICAgICAgICB8MTUyLjY5MTY2NyAgIHwxNTIuNjg3NTAw
ICAgfDAuOTk5OTczICB8IDAuOTkxMjA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2RvTVZD
IHw2Ni40ODc1MDAgICAgfDY1LjcyOTE2NyAgICB8MC45ODg1OTQgIHwgMC4wMDAxMTggKHNpZ25p
ZmljYW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisKKyAgICAgICAgYSBtZWFuID0gMjQyLjEyMzE5CisgICAgICAgIGIgbWVhbiA9IDI0
Mi44MDQ4NQorICAgICAgICBwVmFsdWUgPSAwLjE5OTI2NTQxMjgKKyAgICAgICAgKEJpZ2dlciBt
ZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4wMDMgdGltZXMgYmV0dGVyCisgICAgICAgIFJl
c3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydFRleHROb2RlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXJMb29w
KTogV2UgZG8gbm90IG5lZWQgdG8gY2FsbCBgc2hyaW5rVG9CZXN0Rml0YCBpbiBmcmFnbWVudCBw
YXJzaW5nIGNhc2Ugc2luY2UKKyAgICAgICAgd2Ugd2lsbCBkaXNjYXJkIEhUTUxUb2tlbiBzb29u
LgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjbGVhcik6IFdl
IGZvdW5kIHRoYXQgdGhlc2UgYGNsZWFyYCBjYWxscyBjYXVzZSBwZXJmb3JtYW5jZSBwcm9ibGVt
IGFjY29yZGluZyB0byB0aGUgSW5zdHJ1bWVudHM6IHdlCisgICAgICAgIHJlcGVhdGVkbHkgdXNl
IHRoaXMgVmVjdG9yLCBhbmQgd2UgcmVwZWF0ZWRseSBhbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSB0
aGlzIFZlY3RvciB1bm5lY2Vzc2FyaWx5LiBXZSB1c2UgYHJlc2l6ZSgwKWAgaW5zdGVhZAorICAg
ICAgICB0byBhdm9pZCB0aGlzIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KTogQnV0IEhUTUxUb2tlbiBpcyBr
ZXB0IHNvIGxvbmcsIHNvIGF0IHNvbWUgcG9pbnQsIHdlIHdvdWxkIGxpa2UgdG8gbWFrZSBiYWNr
aW5nIHN0b3JhZ2UKKyAgICAgICAgc21hbGwuIFNvLCB3ZSBhZGQgc2hyaW5rVG9CZXN0Rml0IGFu
ZCB3ZSBjYWxsIGl0IG9ubHkgYWZ0ZXIgZmluaXNoaW5nIGJhdGNoaW5nIG9mIEhUTUxUb2tlbiBw
cm9jZXNzaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6
ZXI6OnNocmlua1RvQmVzdEZpdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFy
YWN0ZXJUb2tlbkJ1ZmZlcjo6Y2hhcmFjdGVyUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVtYmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluVGFibGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5G
b3JlaWduQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NGYWtlQ2hhcmFjdGVycyk6IERlbGV0ZWQuIEl0IGlzIGRlYWQgY29kZSBiZWZvcmUgdGhpcyBw
YXRjaC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKwogMjAyMS0w
Ny0xNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXazFd
IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS13ZWJtLW9wdXMtcGFydGlhbC5odG1sIGlzIGEgY29u
c2lzdGVudCBmYWlsdXJlIChFbmFibGUgVlA4L1ZQOS9Wb3JiaXMvT3B1cyBpbiBXZWJLaXRMZWdh
Y3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCmluZGV4IGNkMTQ3NDQxMWNmN2IwYjg2NTFkMDljOGE3NWI5OGI3NTU3YzYwZGEu
Ljg3OTExYTYzNmU1MWNjNTlhZDZkNDMyMjk4ZGJmNzg2NWU3NTM3ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03
NjcsNiArNzY3LDEwIEBAIGNsYXNzIFZlY3RvciA6IHByaXZhdGUgVmVjdG9yQnVmZmVyPFQsIGlu
bGluZUNhcGFjaXR5LCBNYWxsb2M+IHsKICAgICB2b2lkIHNocmlua0NhcGFjaXR5KHNpemVfdCBu
ZXdDYXBhY2l0eSk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpIHsgc2hyaW5rQ2FwYWNpdHkoc2l6
ZSgpKTsgfQogCisgICAgLy8gInNocmlua1RvQmVzdEZpdCgpIiBzaHJpbmtzIHRoZSBjYXBhY2l0
eSB0byBmaXggdGhlIGN1cnJlbnQgc2l6ZSwgd2hpbGUgbGVhdmluZyBzdWZmaWNpZW50IGNhcGFj
aXR5IGZvciBtb3JlIGl0ZW1zLiBUaGUgdXBwZXJib3VuZCBvZiB0aGUKKyAgICAvLyBjYXBhY2l0
eSBpcyB0aGUgb25lIGFzIGlmIGV4cGFuZENhcGFjaXR5IGhhcHBlbnMgd2l0aCB0aGUgY3VycmVu
dCBzaXplLgorICAgIHZvaWQgc2hyaW5rVG9CZXN0Rml0KCk7CisKICAgICB2b2lkIGNsZWFyKCkg
eyBzaHJpbmtDYXBhY2l0eSgwKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IFZl
Y3RvcjxVPiBpc29sYXRlZENvcHkoKSBjb25zdCAmOwpAQCAtMTI1NSw2ICsxMjU5LDE1IEBAIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
LCBNYWxsb2M+OjpzaHJpbmtDYXBhCiAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6
ZSgpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jPgordm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvYz46OnNocmlua1RvQmVzdEZpdCgpCit7CisgICAgc2l6ZV90IGN1cnJl
bnRTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9IGN1cnJlbnRTaXplID8g
c3RkOjptYXg8c2l6ZV90PihtaW5DYXBhY2l0eSwgY3VycmVudFNpemUgKyBjdXJyZW50U2l6ZSAv
IDQgKyAxKSA6IDA7CisgICAgQVNTRVJUKGN1cnJlbnRTaXplIDw9IG5ld0NhcGFjaXR5KTsKKyAg
ICBzaHJpbmtDYXBhY2l0eShuZXdDYXBhY2l0eSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KIHRlbXBsYXRlPEZhaWx1cmVBY3Rpb24gYWN0
aW9uLCB0eXBlbmFtZSBVPgogQUxXQVlTX0lOTElORSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6YXBwZW5kKGNvbnN0
IFUqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1w
bC5jcHAKaW5kZXggMDA5ZTJhMThmZmQyYTRhNDc0YTFlZGRmNTU4ZjZlY2FiODI3OTM0ZS4uNDFj
MjhjZThkMmY5Y2YyY2Y0Mzg5Yjc3ZjFhYzdiZDcxODExYWNjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nSW1wbC5jcHAKQEAgLTEyNyw3ICsxMjcsMTAgQEAgc3RydWN0IFVDaGFyQnVm
ZmVyVHJhbnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5n
SW1wbD4gY29uc3QmIHN0ciwgY29uc3QgVUNoYXJCdWZmZXImIGJ1ZikKICAgICB7Ci0gICAgICAg
IHJldHVybiBXVEY6OmVxdWFsKHN0ci5nZXQoKSwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgp
OworICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLmdldCgpOworICAgICAgICBpZiAoaW1w
bC0+ZXhpc3RpbmdIYXNoKCkgIT0gYnVmLmhhc2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKGltcGwsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVu
Z3RoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUGFja2VkUHRyPFN0cmlu
Z0ltcGw+JiBsb2NhdGlvbiwgY29uc3QgVUNoYXJCdWZmZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkK
QEAgLTMwNyw3ICszMTAsMTAgQEAgc3RydWN0IExDaGFyQnVmZmVyVHJhbnNsYXRvciB7CiAKICAg
ICBzdGF0aWMgYm9vbCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwgY29u
c3QgTENoYXJCdWZmZXImIGJ1ZikKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0
ci5nZXQoKSwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBs
KiBpbXBsID0gc3RyLmdldCgpOworICAgICAgICBpZiAoaW1wbC0+ZXhpc3RpbmdIYXNoKCkgIT0g
YnVmLmhhc2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6
OmVxdWFsKGltcGwsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCB0cmFuc2xhdGUoUGFja2VkUHRyPFN0cmluZ0ltcGw+JiBsb2NhdGlvbiwgY29u
c3QgTENoYXJCdWZmZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkKQEAgLTMyOSw3ICszMzUsMTAgQEAg
c3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvciB7CiAKICAgICBzdGF0aWMgYm9v
bCBlcXVhbChQYWNrZWRQdHI8U3RyaW5nSW1wbD4gY29uc3QmIHN0ciwgY29uc3QgQnVmZmVyJiBi
dWYpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjplcXVhbChzdHIuZ2V0KCksIGJ1Zi5jaGFy
YWN0ZXJzLCBidWYubGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHN0ci5nZXQo
KTsKKyAgICAgICAgaWYgKGltcGwtPmV4aXN0aW5nSGFzaCgpICE9IGJ1Zi5oYXNoKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjplcXVhbChpbXBsLCBidWYu
Y2hhcmFjdGVycywgYnVmLmxlbmd0aCk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgdHJhbnNs
YXRlKFBhY2tlZFB0cjxTdHJpbmdJbXBsPiYgbG9jYXRpb24sIGNvbnN0IEJ1ZmZlciYgYnVmLCB1
bnNpZ25lZCBoYXNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBlZGVmZTE1OWQyZDcx
OGViNmNlMTM5NGQ5NmIzMjBhNDQ0OGI4OTA3Li5hNjBmNmQ5YWE1YzgyZDY4Y2U1MTIyOGNlZWJl
ZDg1NGEwZDNkMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTMwLDYgKzEzMCw4
IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewogICAgIFN0cmluZ1ZpZXcgbGVmdCh1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW5ndGgpOyB9CiAgICAgU3Ry
aW5nVmlldyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyh0
aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4KKyAgICBTdHJpbmdWaWV3IHN0cmlwTGVhZGlu
Z01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgogICAgIFN0cmlu
Z1ZpZXcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBNYXRj
aGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7CiAKQEAgLTE4MSw2ICsxODMsOSBAQCBjbGFzcyBTdHJp
bmdWaWV3IGZpbmFsIHsKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTENoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBN
YXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgorICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nTWF0
Y2hlZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IE1hdGNoZWRDaGFyYWN0
ZXJQcmVkaWNhdGUmKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5
cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+CiAgICAgU3RyaW5nVmlldyBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBj
b25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7CiAKQEAgLTEwMjksNiArMTAzNCwzMiBA
QCBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6Om9wZXJhdG9y
IT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKQogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENo
YXJhY3RlclByZWRpY2F0ZT4KK2lubGluZSBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVh
ZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGNv
bnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmIHByZWRpY2F0ZSkKK3sKKyAgICB1bnNpZ25l
ZCBzdGFydCA9IDA7CisgICAgd2hpbGUgKHN0YXJ0IDwgbV9sZW5ndGggJiYgcHJlZGljYXRlKGNo
YXJhY3RlcnNbc3RhcnRdKSkKKyAgICAgICAgKytzdGFydDsKKworICAgIGlmIChzdGFydCA9PSBt
X2xlbmd0aCkKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXc6OmVtcHR5KCk7CisKKyAgICBpZiAo
IXN0YXJ0KQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBTdHJpbmdWaWV3IHJlc3VsdChj
aGFyYWN0ZXJzICsgc3RhcnQsIG1fbGVuZ3RoIC0gc3RhcnQpOworICAgIHJlc3VsdC5zZXRVbmRl
cmx5aW5nU3RyaW5nKCp0aGlzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgorU3RyaW5nVmlldyBTdHJpbmdWaWV3
OjpzdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJl
ZGljYXRlJiBwcmVkaWNhdGUpCit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4g
c3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KGNoYXJhY3RlcnM4KCksIHByZWRp
Y2F0ZSk7CisgICAgcmV0dXJuIHN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzPFVDaGFyPihj
aGFyYWN0ZXJzMTYoKSwgcHJlZGljYXRlKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4KIGlubGluZSBTdHJp
bmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3Rl
cnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgY29uc3QgTWF0Y2hlZENoYXJhY3Rl
clByZWRpY2F0ZSYgcHJlZGljYXRlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDQ5ODBmNDVkNzY3MjJkNGQxZDMz
ZGE0OTBiYjNiODFhYjAzZDY2OGYuLjVkODUyZWMxMGNlNGJjZjZkOGRjMWIzMTg1Y2RjMTJiNmU3
ZDc0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbiwgY29uc3Qg
QQogICAgICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShXVEZN
b3ZlKGVsZW1lbnQpLCBXVEZNb3ZlKHRva2VuKSwgbmFtZXNwYWNlVVJJKSk7CiB9CiAKLXZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYgY2hhcmFj
dGVycywgV2hpdGVzcGFjZU1vZGUgd2hpdGVzcGFjZU1vZGUpCit2b2lkIEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjppbnNlcnRUZXh0Tm9kZShTdHJpbmcmJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW9k
ZSB3aGl0ZXNwYWNlTW9kZSkKIHsKICAgICBIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2sgdGFzayhI
VE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6Okluc2VydCk7CiAgICAgdGFzay5wYXJlbnQgPSAmY3Vy
cmVudE5vZGUoKTsKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMsIFdoaXRlc3BhY2VNbwog
ICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2hvbGUgc3RyaW5nIG9mIHVuYnJlYWthYmxlIGNoYXJh
Y3RlcnMgdGhlIGFib3ZlIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcC4gRXhjZWVkaW5n
IHRoZSBsZW5ndGggbGltaXQgaXMgdGhlIGxlc3NlciBldmlsLgogICAgICAgICBpZiAoIXRleHRO
b2RlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9IGNoYXJhY3Rl
cnMuc3Vic3RyaW5nKGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9IFRl
eHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxkVXNlQXRvbVN0cmluZyA/
IEF0b21TdHJpbmcoc3Vic3RyaW5nKS5zdHJpbmcoKSA6IHN1YnN0cmluZyk7CisgICAgICAgICAg
ICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxk
VXNlQXRvbVN0cmluZyA/IEF0b21TdHJpbmcoV1RGTW92ZShzdWJzdHJpbmcpKS5zdHJpbmcoKSA6
IHN1YnN0cmluZyk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gdGV4
dE5vZGUtPmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggNTczMWZiMDVhMjRjZmNjYjJiNDg0NTQ0MzEyYWNkZDhi
MzViYjk5My4uMTI3ODU0OWQ3MWJmNzZiZTFkNDZkNjMwOTA0Y2I1ZTA2NzY0N2NiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBA
IC0xMTEsNyArMTExLDcgQEAgY2xhc3MgSFRNTENvbnN0cnVjdGlvblNpdGUgewogICAgIHZvaWQg
aW5zZXJ0SFRNTEJvZHlFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsKICAgICB2b2lkIGluc2Vy
dEhUTUxGb3JtRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiwgYm9vbCBpc0RlbW90ZWQgPSBmYWxz
ZSk7CiAgICAgdm9pZCBpbnNlcnRTY3JpcHRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsKLSAg
ICB2b2lkIGluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYsIFdoaXRlc3BhY2VNb2RlID0gV2hp
dGVzcGFjZVVua25vd24pOworICAgIHZvaWQgaW5zZXJ0VGV4dE5vZGUoU3RyaW5nJiYsIFdoaXRl
c3BhY2VNb2RlID0gV2hpdGVzcGFjZVVua25vd24pOwogICAgIHZvaWQgaW5zZXJ0Rm9yZWlnbkVs
ZW1lbnQoQXRvbWljSFRNTFRva2VuJiYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSk7
CiAKICAgICB2b2lkIGluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hUTUxU
b2tlbiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IDYzNDk2Y2IxMjRjNWMwNzExZTUyODQ4ZTY2OTNkMTM1ODM1MjQ4YWEu
LmQ5ZmYyMGRjZDRkOWQxYzQ2YmQ5OGVlY2NmMzllM2NmZGFmZjA0YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDMsNyAr
NDMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3Vu
dEluY3JlbWVudGVyLmgiCi0KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYv
U3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTYsNiArMjU2LDEx
IEBAIERvY3VtZW50KiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnRleHRGb3JQYXJzaW5nU2Vzc2lv
bigpCiAKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJv
bm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJhZ21lbnQsIFB1bXBTZXNzaW9uJiBzZXNzaW9u
KQogeworICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBp
ZiAoIXBhcnNpbmdGcmFnbWVudCkKKyAgICAgICAgICAgIG1fdG9rZW5pemVyLnNocmlua1RvQmVz
dEZpdCgpOworICAgIH0pOworCiAgICAgZG8gewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNXYWl0
aW5nRm9yU2NyaXB0cygpKSkgewogICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAm
JiBtX3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQobV90
cmVlQnVpbGRlci0+c2NyaXB0VG9Qcm9jZXNzKCksIHNlc3Npb24pKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5kZXggM2Iw
NjY4ZDI0YjI5NmE5NDY2MTFmMDI1M2RlODRhOGU5MGZlM2E5MS4uMDdjOTViNDAyZDZlYWZkYTc1
ZGRiNGJmYTAyYzliNWJjY2Q5Nzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlRleHRDb2RlYy5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU3LDYgKzE1OCwxMCBAQCBib29sIEhUTUxNZXRhQ2hh
cnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogICAgIGJvb2wgaWdub3JlZFNhd0Vycm9yRmxhZzsKICAgICBtX2lucHV0LmFwcGVu
ZChtX2NvZGVjLT5kZWNvZGUoZGF0YSwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UsIGlnbm9yZWRTYXdF
cnJvckZsYWcpKTsKIAorICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0gewor
ICAgICAgICBtX3Rva2VuaXplci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICB9KTsKKwogICAgIHdo
aWxlIChhdXRvIHRva2VuID0gbV90b2tlbml6ZXIubmV4dFRva2VuKG1faW5wdXQpKSB7CiAgICAg
ICAgIGJvb2wgaXNFbmQgPSB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnOwogICAg
ICAgICBpZiAoaXNFbmQgfHwgdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cAppbmRleCA5NDgxOWVjZWU5ZTc3M2U0YzU4NWQ5NzY0N2Q0NThjNjA4NTRlMmVmLi4yZGFhNDQ5
YjAyZTcwMDk5YzBkY2ZhM2I0YzQ3OGY3NmE1Yjg0MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTUxNCw2ICs1MTQsNyBA
QCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXImIHBy
ZWxvYWRlciwgRG9jdW1lbnQmIGRvY3VtZQogICAgICAgICAgICAgbV90b2tlbml6ZXIudXBkYXRl
U3RhdGVGb3IoQXRvbVN0cmluZyh0b2tlbi0+bmFtZSgpKSk7CiAgICAgICAgIG1fc2Nhbm5lci5z
Y2FuKCp0b2tlbiwgcmVxdWVzdHMsIGRvY3VtZW50KTsKICAgICB9CisgICAgbV90b2tlbml6ZXIu
c2hyaW5rVG9CZXN0Rml0KCk7CiAKICAgICBwcmVsb2FkZXIucHJlbG9hZChXVEZNb3ZlKHJlcXVl
c3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IGI1MDdl
NGY4ZTNhOGExMGNhMDc5ZmVkYTM5MTVkZjI3NTJjYjYyM2IuLjUxZWI1NDc3NTVhM2Y4OTU4MmJm
ZTI5MmZmMmJjNWVlNTVjYTZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIEhUTUxUb2tlbiB7CiAgICAgSFRNTFRva2VuKCk7
CiAKICAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaHJpbmtUb0Jlc3RGaXQoKTsKIAogICAg
IFR5cGUgdHlwZSgpIGNvbnN0OwogCkBAIC0xNzAsMTAgKzE3MSwxNiBAQCBpbmxpbmUgSFRNTFRv
a2VuOjpIVE1MVG9rZW4oKQogaW5saW5lIHZvaWQgSFRNTFRva2VuOjpjbGVhcigpCiB7CiAgICAg
bV90eXBlID0gVW5pbml0aWFsaXplZDsKLSAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICBtX2RhdGEu
cmVzaXplKDApOwogICAgIG1fZGF0YThCaXRDaGVjayA9IDA7CiB9CiAKK2lubGluZSB2b2lkIEhU
TUxUb2tlbjo6c2hyaW5rVG9CZXN0Rml0KCkKK3sKKyAgICBtX2RhdGEuc2hyaW5rVG9CZXN0Rml0
KCk7CisgICAgbV9hdHRyaWJ1dGVzLnNocmlua1RvQmVzdEZpdCgpOworfQorCiBpbmxpbmUgSFRN
TFRva2VuOjpUeXBlIEhUTUxUb2tlbjo6dHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlw
ZTsKQEAgLTI3Myw3ICsyODAsNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luU3RhcnRU
YWcoVUNoYXIgY2hhcmFjdGVyKQogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7
CiAgICAgbV90eXBlID0gU3RhcnRUYWc7CiAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAg
IG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5yZXNpemUoMCk7CiAKICNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CkBAIC0y
ODgsNyArMjk1LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkVuZFRhZyhMQ2hhciBj
aGFyYWN0ZXIpCiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5
cGUgPSBFbmRUYWc7CiAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAgIG1fYXR0cmlidXRl
cy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5yZXNpemUoMCk7CiAKICNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CkBAIC0zMDIsNyArMzA5LDcg
QEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkVuZFRhZyhjb25zdCBWZWN0b3I8TENoYXIs
IDMyPiYgY2hhcmFjdGVycykKICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwog
ICAgIG1fdHlwZSA9IEVuZFRhZzsKICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgbV9h
dHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9hdHRyaWJ1dGVzLnJlc2l6ZSgwKTsKIAogI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAppbmRleCA1ZDgxOTFmNDQ4OTU0NDIx
NThjZjdlMjU0YTNhMWM1Njg3YTgwNDRjLi4wOWZlZWRhMTk3YjdlYzQ1ODUwZjE4ODczYzk4Zjk1
OWNhMTkxMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW5pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5o
CkBAIC03OSw2ICs3OSwxMSBAQCBjbGFzcyBIVE1MVG9rZW5pemVyIHsKIAogICAgIGJvb2wgbmV2
ZXJTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdDsKIAorICAgIHZvaWQgc2hyaW5rVG9CZXN0Rml0
KCkKKyAgICB7CisgICAgICAgIG1fdG9rZW4uc2hyaW5rVG9CZXN0Rml0KCk7CisgICAgfQorCiBw
cml2YXRlOgogICAgIGVudW0gU3RhdGUgewogICAgICAgICBEYXRhU3RhdGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBiNDU4NWMxNDVk
NTJlMjBiYTgzMjExMGU5M2UxNDcwY2NhY2JjNWE2Li43NTVmOGQ0OTVlMTk1MzY1Njc0YjIwODc0
OWY0MjQ1ZTZlMDNhM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHAKQEAgLTIyNiwxMSArMjI2LDcgQEAgY2xhc3MgSFRNTFRyZWVCdWlsZGVy
OjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIHsKICAgICB0ZW1wbGF0ZTxib29sIGNoYXJh
Y3RlclByZWRpY2F0ZShVQ2hhcik+IHZvaWQgc2tpcExlYWRpbmcoKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAgICB3aGlsZSAoY2hhcmFjdGVyUHJlZGljYXRlKG1f
dGV4dFswXSkpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9IG1fdGV4dC5zdWJzdHJpbmcoMSk7Ci0g
ICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICAgICAgbV90ZXh0ID0gbV90ZXh0LnN0cmlwTGVhZGluZ01hdGNoZWRD
aGFyYWN0ZXJzKGNoYXJhY3RlclByZWRpY2F0ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Ym9v
bCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPiBTdHJpbmcgdGFrZUxlYWRpbmcoKQpAQCAtNDMz
LDEzICs0MjksNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VFbmRUYWcoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKICAgICBwcm9jZXNzRmFrZUVuZFRhZyh0YWdOYW1l
LmxvY2FsTmFtZSgpKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlQ2hh
cmFjdGVycyhjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMpCi17Ci0gICAgQVNTRVJUKCFjaGFyYWN0
ZXJzLmlzRW1wdHkoKSk7Ci0gICAgRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciBidWZmZXIo
Y2hhcmFjdGVycyk7Ci0gICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihidWZmZXIpOwotfQotCiB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgp
CiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCkuaW5CdXR0b25TY29wZShwVGFnLT5s
b2NhbE5hbWUoKSkpCkBAIC0yMTk1LDcgKzIxODQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0NoYXJhY3RlcihBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKIAogLy8gRklYTUU6IEV4
dHJhY3QgdGhlIGZvbGxvd2luZyBpT1Mtc3BlY2lmaWMgY29kZSBpbnRvIGEgc2VwYXJhdGUgZmls
ZS4KIC8vIEZyb20gdGhlIHN0cmluZyA0MDg5OTYxMDEwLCBjcmVhdGVzIGEgbGluayBvZiB0aGUg
Zm9ybSA8YSBocmVmPSJ0ZWw6NDA4OTk2MTAxMCI+NDA4OTk2MTAxMDwvYT4gYW5kIGluc2VydHMg
aXQuCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGlu
ayhTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsK
ICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0ciwgbWFr
ZVN0cmluZygidGVsOiJfcywgc3RyaW5nKSkpOwpAQCAtMjIwNiw3ICsyMTk1LDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIAogICAgIHByb2Nlc3NTdGFydFRhZyhXVEZNb3ZlKGFTdGFydFRva2VuKSk7CiAgICAgbV90
cmVlLmV4ZWN1dGVRdWV1ZWRUYXNrcygpOwotICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShzdHJp
bmcpOworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpOwogICAgIHBy
b2Nlc3NFbmRUYWcoV1RGTW92ZShhRW5kVG9rZW4pKTsKIH0KIApAQCAtMjIxNSw3ICsyMjA0LDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJp
bmcmIHN0cmluZykKIC8vIDIuIFdyYXBzIHRoZSBwaG9uZSBudW1iZXIgaW4gYSB0ZWw6IGxpbmsu
CiAvLyAzLiBHb2VzIGJhY2sgdG8gc3RlcCAxIGlmIGEgcGhvbmUgbnVtYmVyIGlzIGZvdW5kIGlu
IHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuCiAvLyA0LiBBcHBlbmRzIHRoZSByZXN0IG9mIHRoZSBz
dHJpbmcgYXMgYSB0ZXh0IG5vZGUuCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25l
TnVtYmVycyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5r
aWZ5UGhvbmVOdW1iZXJzKFN0cmluZyYmIHN0cmluZykKIHsKICAgICBBU1NFUlQoVGVsZXBob25l
TnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpOwogCkBAIC0yMjQ4LDEwICsyMjM3LDEwIEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIGlmIChzY2FubmVyUG9zaXRpb24gPiAwKSB7CiAgICAgICAgIGlmIChzY2Fu
bmVyUG9zaXRpb24gPCBsZW5ndGgpIHsKICAgICAgICAgICAgIFN0cmluZyBhZnRlciA9IHN0cmlu
Zy5zdWJzdHJpbmcoc2Nhbm5lclBvc2l0aW9uLCBsZW5ndGggLSBzY2FubmVyUG9zaXRpb24pOwot
ICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGFmdGVyKTsKKyAgICAgICAgICAgIG1f
dHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGFmdGVyKSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UKLSAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmluZyk7CisgICAgICAgIG1fdHJl
ZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpOwogfQogCiAvLyBMb29rcyBhdCB0aGUg
YW5jZXN0b3JzIG9mIHRoZSBlbGVtZW50IHRvIGRldGVybWluZSB3aGV0aGVyIHdlJ3JlIGluc2lk
ZSBhbiBlbGVtZW50IHdoaWNoIGRpc2FsbG93cyBwYXJzaW5nIHBob25lIG51bWJlcnMuCkBAIC0y
MzI0LDcgKzIzMTMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1
ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJiBidWZmZQogICAgIGNhc2UgSW5zZXJ0
aW9uTW9kZTo6SW5IZWFkOiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1
ZmZlci50YWtlTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKCFsZWFkaW5nV2hpdGVz
cGFjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGlu
Z1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOworICAgICAgICAgICAgbV90cmVlLmluc2VydFRl
eHROb2RlKFdURk1vdmUobGVhZGluZ1doaXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAgICAg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRl
ZmF1bHRGb3JJbkhlYWQoKTsKQEAgLTIzMzQsNyArMjMyMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIm
IGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpBZnRlckhlYWQ6IHsKICAgICAgICAgU3Ry
aW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgpOwog
ICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1f
dHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7Cisg
ICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFj
ZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgZGVmYXVsdEZvckFmdGVySGVhZCgpOwpAQCAtMjM3Miw3
ICsyMzYxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIo
RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYgYnVmZmUKICAgICBjYXNlIEluc2VydGlvbk1v
ZGU6OkluQ29sdW1uR3JvdXA6IHsKICAgICAgICAgU3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0g
YnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0
ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFk
aW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0
VGV4dE5vZGUoV1RGTW92ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAg
ICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
aWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKQEAgLTIzOTUs
NyArMjM4NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVy
KEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25N
b2RlOjpJbkhlYWROb3NjcmlwdDogewogICAgICAgICBTdHJpbmcgbGVhZGluZ1doaXRlc3BhY2Ug
PSBidWZmZXIudGFrZUxlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmICghbGVhZGluZ1do
aXRlc3BhY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGxl
YWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNlKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNl
cnRUZXh0Tm9kZShXVEZNb3ZlKGxlYWRpbmdXaGl0ZXNwYWNlKSwgQWxsV2hpdGVzcGFjZSk7CiAg
ICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKQEAgLTI0MDUsNyArMjM5NCw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVy
VG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpBZnRlckZyYW1lc2V0
OiB7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWlu
aW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwg
QWxsV2hpdGVzcGFjZSk7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92
ZShsZWFkaW5nV2hpdGVzcGFjZSksIEFsbFdoaXRlc3BhY2UpOwogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJyb3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFueQog
ICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgogICAgICAgICBicmVhazsKQEAg
LTI0MTgsNyArMjQwNyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVy
QnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlCiAgICAgICAgIFN0cmlu
ZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgpOwog
ICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
bV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7Ci0gICAgICAg
ICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3Bh
Y2UpOworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKFdURk1vdmUobGVhZGluZ1do
aXRlc3BhY2UpLCBBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGdlbmVyYXRlIGEgcGFyc2UgZXJyb3IgaWYgd2Ugc2tpcHBlZCBvdmVyIGFueQog
ICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgpAQCAtMjQzMSwxNiArMjQyMCwx
NiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9k
eShFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZgogewogICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRo
ZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwogICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gYnVm
ZmVyLnRha2VSZW1haW5pbmcoKTsKKyAgICBpZiAobV9mcmFtZXNldE9rICYmICFpc0FsbFdoaXRl
c3BhY2VPclJlcGxhY2VtZW50Q2hhcmFjdGVycyhjaGFyYWN0ZXJzKSkKKyAgICAgICAgbV9mcmFt
ZXNldE9rID0gZmFsc2U7CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSAmJiBt
X3RyZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpICYmIHNob3VsZFBhcnNlVGVs
ZXBob25lTnVtYmVyc0luTm9kZShtX3RyZWUuY3VycmVudE5vZGUoKSkgJiYgVGVsZXBob25lTnVt
YmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpCi0gICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMo
Y2hhcmFjdGVycyk7CisgICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMoV1RGTW92ZShjaGFyYWN0
ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVy
cyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpKTsK
ICNlbHNlCi0gICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOworICAgIG1fdHJl
ZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJhY3RlcnMpKTsKICNlbmRpZgotICAgIGlmICht
X2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNo
YXJhY3RlcnMpKQotICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKIH0KIAogdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCkBA
IC0yNTc3LDEyICsyNTY2LDEyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5U
YWJsZVRleHQoKQogICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IKICAgICAgICAgSFRNTENv
bnN0cnVjdGlvblNpdGU6OlJlZGlyZWN0VG9Gb3N0ZXJQYXJlbnRHdWFyZCByZWRpcmVjdGVyKG1f
dHJlZSk7CiAgICAgICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVt
ZW50cygpOwotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycywgTm90QWxs
V2hpdGVzcGFjZSk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShXVEZNb3ZlKGNoYXJh
Y3RlcnMpLCBOb3RBbGxXaGl0ZXNwYWNlKTsKICAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7
CiAgICAgICAgIG1faW5zZXJ0aW9uTW9kZSA9IG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJz
KTsKKyAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoV1RGTW92ZShjaGFyYWN0ZXJzKSk7CiAgICAg
bV9pbnNlcnRpb25Nb2RlID0gbV9vcmlnaW5hbEluc2VydGlvbk1vZGU7CiB9CiAKQEAgLTI4MjAs
OSArMjgwOSw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25D
b250ZW50KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewogICAgICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IFN0
cmluZyh0b2tlbi5jaGFyYWN0ZXJzKCksIHRva2VuLmNoYXJhY3RlcnNMZW5ndGgoKSk7Ci0gICAg
ICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKICAgICAgICAgaWYgKG1fZnJh
bWVzZXRPayAmJiAhaXNBbGxXaGl0ZXNwYWNlT3JSZXBsYWNlbWVudENoYXJhY3RlcnMoY2hhcmFj
dGVycykpCiAgICAgICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKKyAgICAgICAgbV90cmVl
Lmluc2VydFRleHROb2RlKFdURk1vdmUoY2hhcmFjdGVycykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggZTk2NmQ3ZjRhMjc3Y2MzYzNiOWJiYzNl
NjJkZmU1Yjk1NjQxODk3YS4uMGVmYzc3ZjY1Nzc4YTdiMWQwZmEwYzA4NDkyMmE4ZGU3ODU3ZGYy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAg
LTEwOCw4ICsxMDgsOCBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAgIGJvb2wgaXNQYXJz
aW5nRnJhZ21lbnRPclRlbXBsYXRlQ29udGVudHMoKSBjb25zdDsKIAogI2lmIEVOQUJMRShURUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lk
IGluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGxpbmtpZnlQ
aG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBpbnNlcnRQaG9uZU51bWJlckxp
bmsoU3RyaW5nJiYpOworICAgIHZvaWQgbGlua2lmeVBob25lTnVtYmVycyhTdHJpbmcmJik7CiAj
ZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiYmKTsKQEAgLTE0
NSw3ICsxNDUsNiBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAgIHZvaWQgcHJvY2Vzc0Zh
a2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9yPEF0dHJpYnV0ZT4mJiBhdHRy
aWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSk7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRh
Zyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25z
dCBBdG9tU3RyaW5nJik7Ci0gICAgdm9pZCBwcm9jZXNzRmFrZUNoYXJhY3RlcnMoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAK
ICAgICB2b2lkIHByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZm
YjhlYmFjNWIzZDcyYWNjZGQ3NDZhMjRjYjU0MThhMjIzMGJjNDIuLmRlOWI5NzBhMTYxZGJkZGQ0
OGE3NGEwODE4N2VmYWRjODg0MDRhY2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNy0yMiAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIE1pY3JvLW9wdGltaXplIGlubmVy
SFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wNy0xNSAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRh
dGUgbXkgc3RhdHVzIGluIGNvbnRyaWJ1dG9ycy5qc29uIHRvIHJldmlld2VyLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAppbmRleCA4NGVjNWRhZjJlNDNi
ZWE5YzQ4NTI3Y2EyNWNkZmQ4MjlhZjA3ZjQzLi5kYWE4YWY3NWRjZWE0NWQ2NmNjNzVhNjM2MDlk
MDJlMTkwNGJiZDBiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdW
aWV3LmNwcApAQCAtOTU5LDYgKzk1OSwyOCBAQCBURVNUKFdURiwgU3RyaW5nVmlld1JldmVyc2VG
aW5kQmFzaWMpCiAgICAgRVhQRUNUX0VRKHJlZmVyZW5jZS5yZXZlcnNlRmluZCgnYycsIDQpLCBu
b3RGb3VuZCk7CiB9CiAKK1RFU1QoV1RGLCBTdHJpbmdWaWV3U3RyaXBMZWFkaW5nTWF0Y2hlZENo
YXJhY3RlcnMpCit7CisgICAgYXV0byBpc0EgPSBbXSAoVUNoYXIgYykgeworICAgICAgICByZXR1
cm4gYyA9PSAnQSc7CisgICAgfTsKKworICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0
ZXJhbCgiQUFBQkJCQUFBIikuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBz
dHJpbmdWaWV3RnJvbUxpdGVyYWwoIkJCQkFBQSIpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdW
aWV3RnJvbUxpdGVyYWwoIkFBQUJCQkNDQyIpLnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJz
KGlzQSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJCQkJDQ0MiKSk7CisgICAgRVhQRUNUX1RS
VUUoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDQ0NCQkJBQUEiKS5zdHJpcExlYWRpbmdNYXRjaGVk
Q2hhcmFjdGVycyhpc0EpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ0NDQkJCQUFBIikpOwor
ICAgIEVYUEVDVF9UUlVFKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ0NDQkJCQ0NDIikuc3RyaXBM
ZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkND
Q0JCQkNDQyIpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkFBQUFB
QUNDQyIpLnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzQSkgPT0gc3RyaW5nVmlld0Zy
b21MaXRlcmFsKCJDQ0MiKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nVmlld0Zyb21MaXRlcmFs
KCJCQkJBQUFBQUEiKS5zdHJpcExlYWRpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0EpID09IHN0cmlu
Z1ZpZXdGcm9tTGl0ZXJhbCgiQkJCQUFBQUFBIikpOworICAgIEVYUEVDVF9UUlVFKHN0cmluZ1Zp
ZXdGcm9tTGl0ZXJhbCgiQ0NDQUFBQkJCIikuc3RyaXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMo
aXNBKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNDQ0FBQUJCQiIpKTsKKyAgICBFWFBFQ1Rf
VFJVRShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkFBQUFBQUFBQSIpLnN0cmlwTGVhZGluZ01hdGNo
ZWRDaGFyYWN0ZXJzKGlzQSkgPT0gU3RyaW5nVmlldzo6ZW1wdHkoKSk7CisKKyAgICBTdHJpbmdW
aWV3IGVtcHR5VmlldyA9IFN0cmluZ1ZpZXc6OmVtcHR5KCk7CisgICAgRVhQRUNUX1RSVUUoZW1w
dHlWaWV3LnN0cmlwTGVhZGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzQSkgPT0gZW1wdHlWaWV3KTsK
KworICAgIFN0cmluZ1ZpZXcgbnVsbFZpZXc7CisgICAgRVhQRUNUX1RSVUUobnVsbFZpZXcuc3Ry
aXBMZWFkaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNBKSA9PSBudWxsVmlldyk7Cit9CisKIFRFU1Qo
V1RGLCBTdHJpbmdWaWV3U3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycykK
IHsKICAgICBhdXRvIGlzQSA9IFtdIChVQ2hhciBjKSB7IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1ZlY3Rvci5jcHAKaW5kZXggMTFmY2IxMWU5ZGMyMGIwZmVhNzczZTIwOGM2MWY5NjAy
MDRlMjc4YS4uZDJmZDdhMDY1OTZlMDg0N2E0YTA5Yjc2OGViM2YyMDZkMTYyMmNhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCkBAIC0xNDU4LDUgKzE0NTgsNDEg
QEAgVEVTVChXVEZfVmVjdG9yLCBDb25zdHJ1Y3RvckZyb21SYXdQb2ludGVyQW5kU2l6ZSkKICAg
ICBFWFBFQ1RfRVEodmVjdG9yWzNdLCA0KTsKICAgICBFWFBFQ1RfRVEodmVjdG9yWzRdLCA1KTsK
IH0KLSAgICAKKworVEVTVChXVEZfVmVjdG9yLCBTaHJpbmtUb0Jlc3RGaXRDbGVhcikKK3sKKyAg
ICBWZWN0b3I8dWludDMyX3Q+IHZlY3RvcjsKKyAgICB2ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB2
ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB2ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB2ZWN0b3IucmVz
aXplKDApOworICAgIHZlY3Rvci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICBFWFBFQ1RfRVEodmVj
dG9yLnNpemUoKSwgMFUpOworICAgIEVYUEVDVF9FUSh2ZWN0b3IuY2FwYWNpdHkoKSwgMFUpOwor
fQorCitURVNUKFdURl9WZWN0b3IsIFNocmlua1RvQmVzdEZpdERvZXNOb3RDaGFuZ2VJZkNhcGFj
aXR5TWF0Y2hlcykKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IHZlY3RvcjsKKyAgICB2ZWN0b3Iu
YXBwZW5kKDIwKTsKKyAgICB2ZWN0b3IuYXBwZW5kKDIwKTsKKyAgICB2ZWN0b3IuYXBwZW5kKDIw
KTsKKyAgICB1bnNpZ25lZCBjYXBhY2l0eSA9IHZlY3Rvci5jYXBhY2l0eSgpOworICAgIHZlY3Rv
ci5zaHJpbmtUb0Jlc3RGaXQoKTsKKyAgICBFWFBFQ1RfRVEodmVjdG9yLnNpemUoKSwgM1UpOwor
ICAgIEVYUEVDVF9FUSh2ZWN0b3IuY2FwYWNpdHkoKSwgY2FwYWNpdHkpOworfQorCitURVNUKFdU
Rl9WZWN0b3IsIFNocmlua1RvQmVzdEZpdCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IHZlY3Rv
cjsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCA0MDA7ICsraW5kZXgpCisg
ICAgICAgIHZlY3Rvci5hcHBlbmQoaW5kZXgpOworICAgIHZlY3Rvci5yZXNpemUoMTAwKTsKKyAg
ICBFWFBFQ1RfR0UodmVjdG9yLmNhcGFjaXR5KCksIDQwMFUpOworICAgIHZlY3Rvci5zaHJpbmtU
b0Jlc3RGaXQoKTsKKyAgICBFWFBFQ1RfTEUodmVjdG9yLmNhcGFjaXR5KCksIDIwMFUpOworICAg
IEVYUEVDVF9HRSh2ZWN0b3IuY2FwYWNpdHkoKSwgMTAwVSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="456424"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>