<?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>226514</bug_id>
          
          <creation_ts>2021-06-01 14:41:43 -0700</creation_ts>
          <short_desc>Rename Checked::unsafeGet() to Checked::value()</short_desc>
          <delta_ts>2021-06-02 14:03:52 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>226537</blocked>
    
    <blocked>226553</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765764</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 14:41:43 -0700</bug_when>
    <thetext>Rename Checked::unsafeGet() to Checked::value(). The &quot;unsafeGet&quot; naming is confusing as this function isn&apos;t really unsafe since it will crash if the value has overflowed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765766</commentid>
    <comment_count>1</comment_count>
      <attachid>430290</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 14:46:17 -0700</bug_when>
    <thetext>Created attachment 430290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765769</commentid>
    <comment_count>2</comment_count>
      <attachid>430290</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 14:51:01 -0700</bug_when>
    <thetext>Comment on attachment 430290
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Rename Checked::unsafeGet() to Checked::value(). The &quot;unsafeGet&quot; naming is confusing as this

safeGet() is used a lot less and is a bit awkward to use (due to having both a return value and an out-parameter). I think my preference would be to drop safeGet() in a follow-up and port the few call sites that use it to Checked::hasOverflowed() / Checked::value(). I don&apos;t think there I much value in having separate functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765770</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-01 14:53:11 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Comment on attachment 430290 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430290&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; +        Rename Checked::unsafeGet() to Checked::value(). The &quot;unsafeGet&quot; naming is confusing as this
&gt; 
&gt; safeGet() is used a lot less and is a bit awkward to use (due to having both
&gt; a return value and an out-parameter). I think my preference would be to drop
&gt; safeGet() in a follow-up and port the few call sites that use it to
&gt; Checked::hasOverflowed() / Checked::value(). I don&apos;t think there I much
&gt; value in having separate functions.

We should just make Checked::get() return Optional&lt;T&gt; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765775</commentid>
    <comment_count>4</comment_count>
      <attachid>430290</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 14:56:21 -0700</bug_when>
    <thetext>Comment on attachment 430290
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt;&gt; +        Rename Checked::unsafeGet() to Checked::value(). The &quot;unsafeGet&quot; naming is confusing as this
&gt;&gt; 
&gt;&gt; safeGet() is used a lot less and is a bit awkward to use (due to having both a return value and an out-parameter). I think my preference would be to drop safeGet() in a follow-up and port the few call sites that use it to Checked::hasOverflowed() / Checked::value(). I don&apos;t think there I much value in having separate functions.
&gt; 
&gt; We should just make Checked::get() return Optional&lt;T&gt; instead.

I initially tried that but I did not like how the call sites looked after this. I had to add new locals to store the optional result of .get() to then use those locals to replace the hasOverflowed() checks (and then later on in the spot where the value is actually needed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765778</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-01 14:58:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 430290 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430290&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt;&gt;&gt; +        Rename Checked::unsafeGet() to Checked::value(). The &quot;unsafeGet&quot; naming is confusing as this
&gt; &gt;&gt; 
&gt; &gt;&gt; safeGet() is used a lot less and is a bit awkward to use (due to having both a return value and an out-parameter). I think my preference would be to drop safeGet() in a follow-up and port the few call sites that use it to Checked::hasOverflowed() / Checked::value(). I don&apos;t think there I much value in having separate functions.
&gt; &gt; 
&gt; &gt; We should just make Checked::get() return Optional&lt;T&gt; instead.
&gt; 
&gt; I initially tried that but I did not like how the call sites looked after
&gt; this. I had to add new locals to store the optional result of .get() to then
&gt; use those locals to replace the hasOverflowed() checks (and then later on in
&gt; the spot where the value is actually needed).

I see. Then maybe we should just get rid of it as you suggest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765779</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 15:00:40 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #5)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; Comment on attachment 430290 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=430290&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; &gt;&gt;&gt; +        Rename Checked::unsafeGet() to Checked::value(). The &quot;unsafeGet&quot; naming is confusing as this
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; safeGet() is used a lot less and is a bit awkward to use (due to having both a return value and an out-parameter). I think my preference would be to drop safeGet() in a follow-up and port the few call sites that use it to Checked::hasOverflowed() / Checked::value(). I don&apos;t think there I much value in having separate functions.
&gt; &gt; &gt; 
&gt; &gt; &gt; We should just make Checked::get() return Optional&lt;T&gt; instead.
&gt; &gt; 
&gt; &gt; I initially tried that but I did not like how the call sites looked after
&gt; &gt; this. I had to add new locals to store the optional result of .get() to then
&gt; &gt; use those locals to replace the hasOverflowed() checks (and then later on in
&gt; &gt; the spot where the value is actually needed).
&gt; 
&gt; I see. Then maybe we should just get rid of it as you suggest.

To be clear, my proposal is to rename unsafeGet() to value() (this patch) and drop safeGet() in a follow-up (by using hasOverflowed() + value() instead). safeGet() is not used a lot, the common pattern in WebKit was hasOverFlowed() + unsafeGet().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765785</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 15:05:02 -0700</bug_when>
    <thetext>Seems to me that get() returning Optional is neat. And value() being synonym for get().value() is also neat, and (aside from ambiguities over whether the crash is a debug-only assert or a release assert, which I suppose is a *big* deal) that brings us back to renaming unsafeGet() to value(), which seems really good to me. I would also use operator* as a synonym for value() and operator! and the like, all of which could make Checked more like std::optional and WTF::Expected and fit in as a family, while still being super-safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765786</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 15:05:06 -0700</bug_when>
    <thetext>Seems to me that get() returning Optional is neat. And value() being synonym for get().value() is also neat, and (aside from ambiguities over whether the crash is a debug-only assert or a release assert, which I suppose is a *big* deal) that brings us back to renaming unsafeGet() to value(), which seems really good to me. I would also use operator* as a synonym for value() and operator! and the like, all of which could make Checked more like std::optional and WTF::Expected and fit in as a family, while still being super-safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765787</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-01 15:08:58 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Ryosuke Niwa from comment #5)
&gt; &gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; &gt; I initially tried that but I did not like how the call sites looked after
&gt; &gt; &gt; this. I had to add new locals to store the optional result of .get() to then
&gt; &gt; &gt; use those locals to replace the hasOverflowed() checks (and then later on in
&gt; &gt; &gt; the spot where the value is actually needed).
&gt; &gt; 
&gt; &gt; I see. Then maybe we should just get rid of it as you suggest.
&gt; 
&gt; To be clear, my proposal is to rename unsafeGet() to value() (this patch)
&gt; and drop safeGet() in a follow-up (by using hasOverflowed() + value()
&gt; instead). safeGet() is not used a lot, the common pattern in WebKit was
&gt; hasOverFlowed() + unsafeGet().

One unfortunate consequence of using hasOverflowed() / value() pair is that we&apos;d check the flag twice when the compiler fails to eliminate the check in value() for crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765788</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 15:09:14 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Seems to me that get() returning Optional is neat. And value() being synonym
&gt; for get().value() is also neat, and (aside from ambiguities over whether the
&gt; crash is a debug-only assert or a release assert, which I suppose is a *big*
&gt; deal) that brings us back to renaming unsafeGet() to value(), which seems
&gt; really good to me. I would also use operator* as a synonym for value() and
&gt; operator! and the like, all of which could make Checked more like
&gt; std::optional and WTF::Expected and fit in as a family, while still being
&gt; super-safe.

One other thing that is confusing is that there is currently an operator bool but it looks like so:
    explicit operator bool() const
    {
        if (UNLIKELY(this-&gt;hasOverflowed()))
            this-&gt;crash();
        return m_value;
    }

So definitely doesn&apos;t behave like an optional but rather mimics doing a bool check on the underlying value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765790</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 15:17:15 -0700</bug_when>
    <thetext>I think an important part of this is removing lots of the unhelpful members. I think that bool one is particularly unhelpful! Maybe let us not add an operator! or operator bool for a while. If we scale Checked back then maybe we can improve its usefulness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765801</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 15:38:04 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; I think an important part of this is removing lots of the unhelpful members.
&gt; I think that bool one is particularly unhelpful! Maybe let us not add an
&gt; operator! or operator bool for a while. If we scale Checked back then maybe
&gt; we can improve its usefulness.

I think it is a matter of taste. Checked currently tries to mimic being an actual number. So you apply arithmetic on it directly. You can use operator! or operator bool on it and it will act as if it was a number type. The only extra bit of information is hasOverflowed().

If we follow the same model, we would add an operator that would implicitly convert the Checked to its underlying number type (crashing if overflowed) and we would likely not need value() / unsafeGet() anymore.

Of course, we could go the other way and act more like optional but that&apos;s a larger behavior change. Doing arithmetic on an &quot;optional&quot; would not be great IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765803</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 15:41:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; If we follow the same model, we would add an operator that would implicitly
&gt; convert the Checked to its underlying number type (crashing if overflowed)

I like that. Seems like we could and should go with it rather than trying to be more like std::optional.

&gt; and we would likely not need value() / unsafeGet() anymore.

I think we would still need value() when we want to use auto rather than re-writing the type, for example, and in other cases where argument type matters. The illusion that Checked is the integer type sometimes falls apart because of C++ language rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765822</commentid>
    <comment_count>14</comment_count>
      <attachid>430306</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 17:05:20 -0700</bug_when>
    <thetext>Created attachment 430306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765851</commentid>
    <comment_count>15</comment_count>
      <attachid>430306</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 18:56:51 -0700</bug_when>
    <thetext>Comment on attachment 430306
Patch

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

Now that you added operator T, presumably many of these value() calls could have been left out; but I noticed that some you left in and others you removed. How did you decide where to use value()? Is it only used where it’s needed to compile, or was there some other rule?

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:315
&gt; +    ASSERT(totalLength &lt;= static_cast&lt;int&gt;(String::MaxLength));

Can we use Checked&lt;uint32_t, AssertNoOverflow&gt; throughout this function instead of Checked&lt;int, AssertNoOverflow&gt;?

Also, what’s the point of using AssertNoOverflow instead of RecordOverflow? Is that for better efficiency?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765854</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 19:14:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #15)
&gt; Comment on attachment 430306 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430306&amp;action=review
&gt; 
&gt; Now that you added operator T, presumably many of these value() calls could
&gt; have been left out; but I noticed that some you left in and others you
&gt; removed. How did you decide where to use value()? Is it only used where it’s
&gt; needed to compile, or was there some other rule?
&gt; 

Honestly, I used the new operator in cases where it was obvious it would build. I did not try to use it very aggressively yet. If you’d prefer, I can do another pass and use it in every case it would build.

&gt; &gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:315
&gt; &gt; +    ASSERT(totalLength &lt;= static_cast&lt;int&gt;(String::MaxLength));
&gt; 
&gt; Can we use Checked&lt;uint32_t, AssertNoOverflow&gt; throughout this function
&gt; instead of Checked&lt;int, AssertNoOverflow&gt;?
&gt; 
&gt; Also, what’s the point of using AssertNoOverflow instead of RecordOverflow?
&gt; Is that for better efficiency?

I will check. I am a little worried about making changes that could introduce regressions in a rename patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765856</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 19:20:11 -0700</bug_when>
    <thetext>Yes, fine to do those things later. Neither needs to be in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765857</commentid>
    <comment_count>18</comment_count>
      <attachid>430314</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 20:14:15 -0700</bug_when>
    <thetext>Created attachment 430314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765875</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-01 22:21:20 -0700</bug_when>
    <thetext>Committed r278338 (238371@main): &lt;https://commits.webkit.org/238371@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430314.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765876</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-01 22:22:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/78748101&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430290</attachid>
            <date>2021-06-01 14:46:17 -0700</date>
            <delta_ts>2021-06-01 17:05:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226514-20210601144616.patch</filename>
            <type>text/plain</type>
            <size>226786</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi4zNDk3YWI0MmY1ZGViNTFi
NDQzZTMxNGU4MDdlODAzMzgxYzk2ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjYgQEAKKzIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1l
IENoZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRoZSAidW5zYWZlR2V0
IiBuYW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXNuJ3QgcmVh
bGx5IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dl
ZC4KKworICAgICAgICAqIGIzL0IzQ29uc3QzMlZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0MzJWYWx1ZTo6Y2hlY2tBZGRDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIz
OjpDb25zdDMyVmFsdWU6OmNoZWNrU3ViQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpC
Mzo6Q29uc3QzMlZhbHVlOjpjaGVja011bENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBiMy9C
M0NvbnN0NjRWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmNoZWNr
QWRkQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjpjaGVj
a1N1YkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6Y2hl
Y2tNdWxDb25zdGFudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkZpbmFsbHlDb250ZXh0OjpudW1iZXJPZkJyZWFrc09y
Q29udGludWVzIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5l
d0FycmF5V2l0aFNwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVGb3J3YXJkVmFyYXJnc1dpdGhTcHJlYWQpOgorICAg
ICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChK
U0M6OkhlYXA6OmRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeVNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6ZXh0cmFNZW1vcnlTaXplKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRl
QWxsb2NhdGlvbkxpbWl0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZCk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6
OlNsb3RWaXNpdG9yOjpwcm9wYWdhdGVFeHRlcm5hbE1lbW9yeVZpc2l0ZWRJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcnVudGltZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXI6OnNsb3dFbnN1cmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSk6CisgICAgICAgICogcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmNvbmNhdEFwcGVuZE9uZSk6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgp
OgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGlt
ZS9IYXNoTWFwSW1wbC5oOgorICAgICAgICAoSlNDOjpIYXNoTWFwQnVmZmVyOjphbGxvY2F0aW9u
U2l6ZSk6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsOjpIYXNoTWFwSW1wbCk6CisgICAgICAg
ICogcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6bmV4dENhcGFj
aXR5KToKKyAgICAgICAgKEpTQzo6SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldFR5cGU+OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpwYXJzZUludCk6CisgICAgICAgICogcnVudGltZS9KU0ltbXV0YWJsZUJ1
dHRlcmZseS5oOgorICAgICAgICAoSlNDOjpKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgIChK
U0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlZhcmlhYmxlKToKKyAgICAgICAgKEpT
Qzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplRm9yU2NvcGVTaXplKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVkQXJndW1lbnRz
OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OmpzU3BsaWNlU3Vic3RyaW5ncyk6CisgICAgICAgIChKU0M6
OmpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpTY3JhdGNoQnVmZmVyOjph
bGxvY2F0aW9uU2l6ZSk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwSW1wbC5oOgorICAgICAg
ICAoSlNDOjpXZWFrTWFwQnVmZmVyOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgICogd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
ZW1pdENhbGxQYXRjaHBvaW50KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6Cisg
ICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAgICAgICAqIHdhc20vV2FzbUluc3Rh
bmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjphbGxvY2F0aW9uU2l6ZSk6Cisg
ICAgICAgICogd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpMTEludEdlbmVyYXRvcjo6cHVzaCk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJh
dG9yOjpnZXREcm9wS2VlcENvdW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0
b3I6OndhbGtFeHByZXNzaW9uU3RhY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2Fs
bEluZm9ybWF0aW9uRm9yQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0
b3I6OmFkZExvb3ApOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkVG9w
TGV2ZWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkQmxvY2spOgor
ICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkSWYpOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkRWxzZVRvVW5yZWFjaGFibGUpOgorICAgICAgICAq
IHdhc20vV2FzbVNpZ25hdHVyZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmU6OmFs
bG9jYXRlZFNpemUpOgorICAgICAgICAqIHdhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6YWRkQnl0ZXMpOgorICAgICAgICAq
IHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6OlRhYmxlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6Omdyb3cpOgorICAgICAgICAoSlNDOjpXYXNtOjpG
dW5jUmVmVGFibGU6OkZ1bmNSZWZUYWJsZSk6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6RGlzanVuY3Rpb25Db250
ZXh0OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjpQ
YXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAo
SlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6YWxsb2NQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbUNoYXJhY3RlckNsYXNz
KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tQmFja1JlZmVyZW5jZSk6
CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbVBhcmVudGhldGljYWxBc3Nl
cnRpb25FbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRo
ZXNlc1N1YnBhdHRlcm5FbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0
b21QYXJlbnRoZXNlc09uY2VFbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6
OmF0b21QYXJlbnRoZXNlc1Rlcm1pbmFsRW5kKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNv
bXBpbGVyOjplbWl0RGlzanVuY3Rpb24pOgorICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVUZXJtOjpCeXRlVGVybSk6CisgICAgICAgIChK
U0M6OllhcnI6OkJ5dGVUZXJtOjpDaGVja0lucHV0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0
ZVRlcm06OlVuY2hlY2tJbnB1dCk6CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAg
ICAgKiB5YXJyL1lhcnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpjb25z
dW1lTnVtYmVyKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpT
Qzo6WWFycjo6UGF0dGVyblRlcm06OmR1bXBRdWFudGlmaWVyKToKKwogMjAyMS0wNi0wMSAgQWRy
aWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
W0dUS10gU3VwcG9ydCBidWlsZGluZyBhZ2FpbnN0IHVDbGliYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkZWE3Y2JkY2E4Mjlh
YTcxM2M4NTE4NDhlYjIyMWY2MmRkYTc3ZTk2Li44ODE2MDc5OTAzMjZhNzhjMzg4MWY3MTI5YzIw
ZjkwOTEyMWIzOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA2LTAxICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIENoZWNrZWQ6OnVuc2FmZUdl
dCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbmFtZSBDaGVja2VkOjp1bnNhZmVHZXQoKSB0byBDaGVja2VkOjp2
YWx1ZSgpLiBUaGUgInVuc2FmZUdldCIgbmFtaW5nIGlzIGNvbmZ1c2luZyBhcyB0aGlzCisgICAg
ICAgIGZ1bmN0aW9uIGlzbid0IHJlYWxseSB1bnNhZmUgc2luY2UgaXQgd2lsbCBjcmFzaCBpZiB0
aGUgdmFsdWUgaGFzIG92ZXJmbG93ZWQuCisKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaDoKKyAgICAgICAgKFdURjo6Q2hlY2tlZDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAg
ICAgIChXVEY6OkNoZWNrZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q2hlY2tlZDo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OkNoZWNrZWQ6Om9wZXJhdG9yPCBjb25zdCk6Cisg
ICAgICAgIChXVEY6OkNoZWNrZWQ6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpD
aGVja2VkOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoV1RGOjpDaGVja2VkOjpvcGVyYXRv
cj49IGNvbnN0KToKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudEJ1ZmZlci5oOgorICAgICAgICAq
IHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6ZmFzdENhbGxvYyk6CisgICAgICAg
IChXVEY6OnRyeUZhc3RDYWxsb2MpOgorICAgICAgICAqIHd0Zi9HaWdhY2FnZS5jcHA6CisgICAg
ICAgIChHaWdhY2FnZTo6dHJ5TWFsbG9jQXJyYXkpOgorICAgICAgICAqIHd0Zi9VUkxIZWxwZXJz
LmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6dXNlclZpc2libGVVUkwpOgorICAgICAg
ICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnBhcnNlSVB2
NFBpZWNlKToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYvY29j
b2EvTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5n
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdU
Rjo6U29ja2V0Q29ubmVjdGlvbjo6cmVhZE1lc3NhZ2UpOgorICAgICAgICAoV1RGOjpTb2NrZXRD
b25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5jcHA6
CisgICAgICAgIChXVEY6OkNTdHJpbmdCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWZm
ZXI6OlN0cmluZ0J1ZmZlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlckpTT04u
Y3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRRdW90ZWRKU09OU3RyaW5n
KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAoV1RG
Ojp0cnlNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJ
bXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmFsbG9jYXRpb25TaXplKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg6CisgICAgICAgIChXVEY6
OnBhcnNlSW50ZWdlcik6CisKIDIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjc3ODgxLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBmZjcxMTJhYzI4OTBjMzU5Yjg1NDcwYmVjMzBiYmY2YmMyYjk3OTQuLmI3MzUx
NTNhOTVmMGRhM2MxYzExNTAyZjcxM2JkODUwODQwNGJlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNDcgQEAKKzIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIENo
ZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRoZSAidW5zYWZlR2V0IiBu
YW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXNuJ3QgcmVhbGx5
IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KiBkb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyU3RyZWFtRW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dGFrZVJl
c3VsdHMpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAg
ICogaHRtbC9JbWFnZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKToK
KyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNFbGVtZW50UmVjdE1vc3RseUluTWFpbkZyYW1lKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnNsaWNlQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1ZmZlcik6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGFJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVDb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjbGlwMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVEcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEltYWdlU3ViUmVjdGFuZ2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0
aXBseSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpOgorICAgICAgICAq
IHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5OjpzdGF0ZU9iamVj
dEFkZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0FycmF5OjpyZXNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUNy
ZWF0ZUF1ZGlvQnVmZmVyTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FS
aW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6YWRvcHRTdG9y
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6aW5pdGlhbGl6ZUFmdGVyQWxs
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmFsbG9jYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybWF0Q29udmVydGVyOjpGb3JtYXRDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQmFja2luZ1N0b3JlOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFj
a2luZ1N0b3JlOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y2Fs
Y3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZnJhbWVCeXRlcyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxC
dWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1lQnl0ZXNBdEluZGV4IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnNl
dEJ5dGVSYW5nZU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OmJ5dGVSYW5nZUZvckF0dGFjaG1lbnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZUJhY2tkcm9wRmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvTGF5ZXJQb29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUG9vbDo6YmFja2lu
Z1N0b3JlQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDR0JhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6ZnJhbWVCeXRlc0F0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjplZmZlY3RBcHBseUFjY2VsZXJhdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVs
ZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVByZW11bHRpcGx5
aW5nQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVVucHJlbXVsdGlwbHlpbmdBbHBoYSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9j
YXRvck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQmluZEdyb3VwQWxsb2NhdG9yOjph
bGxvY2F0ZUFuZFNldEVuY29kZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJpbmRHcm91cEFs
bG9jYXRvcjo6cmVhbGxvY2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUNvbW1h
bmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW06CisgICAgICAgIChXZWJD
b3JlOjpHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNw
cDoKKyAgICAgICAgKE5pY29zaWE6OkJ1ZmZlcjo6QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlyZWN0MkQ6OmNyZWF0ZURpcmVjdDJESW1hZ2VTdXJmYWNlV2l0aERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJp
dG1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVj
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpmcmFtZUJ5
dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURl
Y29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzeWNjNDQ0VG9SR0IpOgorICAgICAgICAoV2ViQ29yZTo6c3ljYzQyMlRvUkdCKToK
KyAgICAgICAgKFdlYkNvcmU6OnN5Y2M0MjBUb1JHQik6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVMYXllclBvb2wubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5
ZXJQb29sOjpieXRlc0JhY2tpbmdMYXllcldpdGhQaXhlbFNpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
VVRGMTY6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
VEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjg6OmVuY29kZVVURjgpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQ2Fu
dmFzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogc3RvcmFn
ZS9TdG9yYWdlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OnNldEl0ZW0p
OgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyk6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnhzbHRQYXJhbUFycmF5RnJvbVBh
cmFtZXRlck1hcCk6CisgICAgICAgICogeG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJz
ZXJJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNl
KToKKwogMjAyMS0wNi0wMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNv
bT4KIAogICAgICAgICBbV2luXSBSZW1vdmUgdW51c2VkIEdyYXBoaWNzQ29udGV4dDo6aGRjKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYjNjMTE0NjdmN2ZmY2FmY2JjNmIyMTVlNmVhNDcyODY1YTAwMGRjOS4uYTZk
MTk3OWQ2MTk4ZDcyZDZhN2U1MWNhYjYwZjQ2YWFhMTczNDEwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAyMS0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbmFtZSBDaGVja2VkOjp1bnNhZmVHZXQoKSB0byBDaGVja2VkOjp2YWx1ZSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgQ2hl
Y2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUoKS4gVGhlICJ1bnNhZmVHZXQiIG5h
bWluZyBpcyBjb25mdXNpbmcgYXMgdGhpcworICAgICAgICBmdW5jdGlvbiBpc24ndCByZWFsbHkg
dW5zYWZlIHNpbmNlIGl0IHdpbGwgY3Jhc2ggaWYgdGhlIHZhbHVlIGhhcyBvdmVyZmxvd2VkLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNldEl0ZW0pOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6cHV0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6Y3JlYXRlTWVzc2FnZURlY29kZXIpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHA6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdl
OjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmJ5dGVzUGVy
Um93IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRl
cyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVDR0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFGb3JtYXRSZWFkZXI6OmNvcHlUcmFja0FycmF5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFTYW1wbGVDdXJzb3I6OmNvcHlTYW1wbGVMb2NhdGlvbiBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b2NrZXRDaGFubmVsOjppbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YSk6CisKIDIwMjEtMDYtMDEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMjc4MjUzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3QzMlZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5j
cHAKaW5kZXggYjBiMGIzNzQ1Y2MzZjU4YjQxNDBhNGIwMjQ3NTUxMzg3OGY2ZDQ2MS4uMjA5NGZi
ZTEyNzg2NWRkZWQzMzNmYTkzMDJiYmNiOTVjN2IxNmNiOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFZhbHVlKiBDb25z
dDMyVmFsdWU6OmNoZWNrQWRkQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0CiAgICAgQ2hlY2tlZEludDMyIHJlc3VsdCA9IENoZWNrZWRJbnQzMihtX3Zh
bHVlKSArIENoZWNrZWRJbnQzMihvdGhlci0+YXNJbnQzMigpKTsKICAgICBpZiAocmVzdWx0Lmhh
c092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHByb2Mu
YWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIHJlc3VsdC51bnNhZmVHZXQoKSk7CisgICAgcmV0
dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0K
IAogVmFsdWUqIENvbnN0MzJWYWx1ZTo6Y2hlY2tTdWJDb25zdGFudChQcm9jZWR1cmUmIHByb2Ms
IGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKQEAgLTg1LDcgKzg1LDcgQEAgVmFsdWUqIENvbnN0
MzJWYWx1ZTo6Y2hlY2tTdWJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKICAgICBDaGVja2VkSW50MzIgcmVzdWx0ID0gQ2hlY2tlZEludDMyKG1fdmFs
dWUpIC0gQ2hlY2tlZEludDMyKG90aGVyLT5hc0ludDMyKCkpOwogICAgIGlmIChyZXN1bHQuaGFz
T3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5h
ZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1
cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQog
CiBWYWx1ZSogQ29uc3QzMlZhbHVlOjpjaGVja011bENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywg
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTUsNyBAQCBWYWx1ZSogQ29uc3Qz
MlZhbHVlOjpjaGVja011bENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdAogICAgIENoZWNrZWRJbnQzMiByZXN1bHQgPSBDaGVja2VkSW50MzIobV92YWx1
ZSkgKiBDaGVja2VkSW50MzIob3RoZXItPmFzSW50MzIoKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNP
dmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBwcm9jLmFk
ZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCByZXN1bHQudW5zYWZlR2V0KCkpOworICAgIHJldHVy
biBwcm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAK
IFZhbHVlKiBDb25zdDMyVmFsdWU6OmNoZWNrTmVnQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKaW5kZXgg
ZDNlMmE0MjczNTkwMWJmMGI1NjIyN2QxMzljZmM1NTE1YWVhNTU4OS4uYjFiNWQ1MmNiZjI5YzY4
OWZkZWEzYjcxZjk4ZGRjYzAyY2EwZTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdDY0VmFsdWUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFZhbHVlKiBDb25zdDY0VmFsdWU6
OmNoZWNrQWRkQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNv
bnN0CiAgICAgQ2hlY2tlZEludDY0IHJlc3VsdCA9IENoZWNrZWRJbnQ2NChtX3ZhbHVlKSArIENo
ZWNrZWRJbnQ2NChvdGhlci0+YXNJbnQ2NCgpKTsKICAgICBpZiAocmVzdWx0Lmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHByb2MuYWRkPENvbnN0
NjRWYWx1ZT4ob3JpZ2luKCksIHJlc3VsdC51bnNhZmVHZXQoKSk7CisgICAgcmV0dXJuIHByb2Mu
YWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogVmFsdWUq
IENvbnN0NjRWYWx1ZTo6Y2hlY2tTdWJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3QKQEAgLTg1LDcgKzg1LDcgQEAgVmFsdWUqIENvbnN0NjRWYWx1ZTo6
Y2hlY2tTdWJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKICAgICBDaGVja2VkSW50NjQgcmVzdWx0ID0gQ2hlY2tlZEludDY0KG1fdmFsdWUpIC0gQ2hl
Y2tlZEludDY0KG90aGVyLT5hc0ludDY0KCkpOwogICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dl
ZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2
NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gcHJvYy5h
ZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiBWYWx1ZSog
Q29uc3Q2NFZhbHVlOjpjaGVja011bENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTUsNyBAQCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjpj
aGVja011bENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogICAgIENoZWNrZWRJbnQ2NCByZXN1bHQgPSBDaGVja2VkSW50NjQobV92YWx1ZSkgKiBDaGVj
a2VkSW50NjQob3RoZXItPmFzSW50NjQoKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0
VmFsdWU+KG9yaWdpbigpLCByZXN1bHQudW5zYWZlR2V0KCkpOworICAgIHJldHVybiBwcm9jLmFk
ZDxDb25zdDY0VmFsdWU+KG9yaWdpbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIFZhbHVlKiBD
b25zdDY0VmFsdWU6OmNoZWNrTmVnQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IGNiOTY5MzQyYWRkOGRmNjJjNjU2ZDQwNGI4NWQ0ZmE3ZjMzOTc4ZDguLmYx
Y2VkMGExOThkZjRlMDAyYzU4ZDljMzZhNDMzMmU4ZWQxMGM1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTIwNyw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogY29t
cGxldGlvblR5cGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGxldGlvblJlY29yZC50
eXBlUmVnaXN0ZXIuZ2V0KCk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogY29tcGxldGlvblZhbHVl
UmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbXBsZXRpb25SZWNvcmQudmFsdWVSZWdpc3Rl
ci5nZXQoKTsgfQogCi0gICAgICAgIHVpbnQzMl90IG51bWJlck9mQnJlYWtzT3JDb250aW51ZXMo
KSBjb25zdCB7IHJldHVybiBtX251bWJlck9mQnJlYWtzT3JDb250aW51ZXMudW5zYWZlR2V0KCk7
IH0KKyAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcy52YWx1ZSgpOyB9CiAgICAgICAgIHZv
aWQgaW5jTnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcygpIHsgbV9udW1iZXJPZkJyZWFrc09yQ29u
dGludWVzKys7IH0KIAogICAgICAgICBib29sIGhhbmRsZXNSZXR1cm5zKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGVzUmV0dXJuczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCAyZWRkOWFlNWFkNzliNGMyMjlh
NjM3OTZhMmZhM2Q3MmRmOGE3YTc0Li44ZjQ0OGJkZDMwMDBkNjRmYTA0ODNhNmM1ODBhODhmZmEy
ZmQzMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzk5LDcgKzM5OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgaWYgKGNoZWNrZWRJbmRleC5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gY2hlY2tlZEluZGV4LnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gY2hlY2tlZEluZGV4LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgTm9kZSog
YXJndW1lbnRzID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gYXJndW1lbnRzLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBmY2IwNDQ2MGEzZmQwNzE1ZDk0NzVmYmFh
ZjAzODEzNzBmNzhkMjg0Li4yYjVlODZhMDYwMWRhMTA3Y2M1MjM0Y2RkNzliNmQ3ZTFhMjAxNTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTMw
NDcsNyArMzA0Nyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJh
eVdpdGhTcHJlYWRTbG93LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNoZWNrZWRMZW5ndGgudW5z
YWZlR2V0KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY2hlY2tlZExlbmd0aC52YWx1ZSgpOwog
ICAgIGlmIChVTkxJS0VMWShsZW5ndGggPj0gTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9O
X0xFTkdUSCkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZm
YmNmZDYyM2NhNWM1YzdkLi4yMGVjZGZiYWMzOTNlYWVlOTNjZWRkMjZjMzMyOWM1ZWY2YTZkZDNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC03Mjg0LDcgKzcyODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmNvbnN0SW50
MzIoc3RhcnRMZW5ndGgudW5zYWZlR2V0KCkpOworICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9
IG1fb3V0LmNvbnN0SW50MzIoc3RhcnRMZW5ndGgudmFsdWUoKSk7CiAKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGUtPm51bUNoaWxkcmVuKCk7ICsraSkgewogICAg
ICAgICAgICAgICAgIGlmIChiaXRWZWN0b3ItPmdldChpKSkgewpAQCAtNzMzMSw3ICs3MzMxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBy
ZXN1bHRlZCBhcnJheSBmcm9tIE5ld0FycmF5V2l0aFNwcmVhZCBpcyBhbHdheXMgY29udGlndW91
cywgd2Ugc2hvdWxkIG5vdCBnZW5lcmF0ZSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpbiBEb3VibGUgZm9ybSBldmVuIGlmIFBoYW50b21OZXdBcnJheUJ1ZmZlcidz
IGluZGV4aW5nVHlwZSBpcyBBcnJheVdpdGhEb3VibGUuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdldChpKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29u
c3RJbnQ2NCh2YWx1ZSksIG1fb3V0LmJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgSlNW
YWx1ZSgpLCAoQ2hlY2tlZDxpbnQzMl90PihzaXplb2YoSlNWYWx1ZSkpICogaSkudW5zYWZlR2V0
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291
dC5jb25zdEludDY0KHZhbHVlKSwgbV9vdXQuYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4
LCBKU1ZhbHVlKCksIChDaGVja2VkPGludDMyX3Q+KHNpemVvZihKU1ZhbHVlKSkgKiBpKS52YWx1
ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4ID0gbV9vdXQuYWRkKGluZGV4LCBtX291dC5jb25zdEludFB0cihhcnJh
eS0+bGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC03NjI1
LDcgKzc2MjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKGltbXV0YWJsZUJ1dHRl
cmZseS0+bGVuZ3RoKCkgPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CiAKICAgICAgICAg
ICAgIExWYWx1ZSBmYXN0SW1tdXRhYmxlQnV0dGVyZmx5VmFsdWUgPSBhbGxvY2F0ZVZhcmlhYmxl
U2l6ZWRDZWxsPEpTSW1tdXRhYmxlQnV0dGVyZmx5PigKLSAgICAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cihKU0ltbXV0YWJsZUJ1dHRlcmZseTo6YWxsb2NhdGlvblNpemUoaW1tdXRhYmxl
QnV0dGVyZmx5LT5sZW5ndGgoKSkudW5zYWZlR2V0KCkpLAorICAgICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50UHRyKEpTSW1tdXRhYmxlQnV0dGVyZmx5OjphbGxvY2F0aW9uU2l6ZShpbW11dGFi
bGVCdXR0ZXJmbHktPmxlbmd0aCgpKS52YWx1ZSgpKSwKICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5n
VHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1No
YXBlc10uZ2V0KCksIHNsb3dBbGxvY2F0aW9uKTsKICAgICAgICAgICAgIExWYWx1ZSBmYXN0SW1t
dXRhYmxlQnV0dGVyZmx5U3RvcmFnZSA9IHRvQnV0dGVyZmx5KGZhc3RJbW11dGFibGVCdXR0ZXJm
bHlWYWx1ZSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoaW1t
dXRhYmxlQnV0dGVyZmx5LT5sZW5ndGgoKSksIGZhc3RJbW11dGFibGVCdXR0ZXJmbHlTdG9yYWdl
LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwpAQCAtMTAyMzcsNyArMTAyMzcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VkPGludDMy
X3Q+IGN1cnJlbnRTdG9yZU9mZnNldCB7IHN0b3JlT2Zmc2V0IH07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRTdG9yZU9mZnNldCAtPSAob2Zmc2V0Q291bnQgKiBzdGF0
aWNfY2FzdDxpbnQzMl90PihzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNj
cmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIGN1cnJlbnRTdG9yZU9mZnNldC51
bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6
OlRpbWVzRWlnaHQsIGN1cnJlbnRTdG9yZU9mZnNldC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oYXJyYXktPmxl
bmd0aCgpKSksIHNjcmF0Y2hHUFIyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMDg4NSw3ICsxMDg4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IC8vIEJlY2F1c2UgZm9yd2FyZGVkIHZhbHVlcyBhcmUgZHJhaW5lZCBhcyBKU1ZhbHVlLCB3ZSBz
aG91bGQgbm90IGdlbmVyYXRlIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgIC8vIGluIERvdWJs
ZSBmb3JtIGV2ZW4gaWYgUGhhbnRvbU5ld0FycmF5QnVmZmVyJ3MgaW5kZXhpbmdUeXBlIGlzIEFy
cmF5V2l0aERvdWJsZS4KICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IEpTVmFs
dWU6OmVuY29kZShhcnJheS0+Z2V0KGkpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmU2NChtX291dC5jb25zdEludDY0KHZhbHVlKSwgbV9vdXQuYmFzZUluZGV4KG1faGVhcHMudmFy
aWFibGVzLCB0YXJnZXRTdGFydCwgc3RvcmVJbmRleCwgSlNWYWx1ZSgpLCAoQ2hlY2tlZDxpbnQz
Ml90PihzaXplb2YoUmVnaXN0ZXIpKSAqIGkpLnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSksIG1fb3V0LmJhc2VJ
bmRleChtX2hlYXBzLnZhcmlhYmxlcywgdGFyZ2V0U3RhcnQsIHN0b3JlSW5kZXgsIEpTVmFsdWUo
KSwgKENoZWNrZWQ8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBpKS52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQu
Y29uc3RJbnRQdHIoYXJyYXktPmxlbmd0aCgpKSwgc3RvcmVJbmRleCk7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCAyNTgw
NGExNTI5NDA3MDg5MzIxNDc0NGMyNWQyNmU5YTVkN2U0NzFiLi40ZTE3OWUwNzM3ZDM1YWQ4ZTE1
NTM3MDUwMmQwOTI0OTU1OTk5OTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3BlcmF0aW9ucy5jcHAKQEAgLTYyOCw3ICs2MjgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUiwgSlNDZWxsKiwgKEpTR2xvYmFsT2Jq
ZQogCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgdGhyb3cgYW4gb3V0IG9mIG1lbW9yeSBl
cnJvciBoZXJlIGlmIGNoZWNrZWRBcnJheVNpemUgaGFzIGhhc092ZXJmbG93ZWQoKSBvciB0cnlD
cmVhdGUoKSBmYWlscy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2OTc4NAotICAgICAgICB1bnNpZ25lZCBhcnJheVNpemUgPSBjaGVja2VkQXJy
YXlTaXplLnVuc2FmZUdldCgpOyAvLyBDcmFzaGVzIGlmIG92ZXJmbG93ZWQuCisgICAgICAgIHVu
c2lnbmVkIGFycmF5U2l6ZSA9IGNoZWNrZWRBcnJheVNpemUudmFsdWUoKTsgLy8gQ3Jhc2hlcyBp
ZiBvdmVyZmxvd2VkLgogICAgICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVh
dGUodm0sIHN0cnVjdHVyZSwgYXJyYXlTaXplKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBjYjA3OWJmNzVhMWQ3
NDg0YzhiMjg3N2I0MjQ4MzVkNDY3MmMwOThhLi5lY2YyZTU1NGYzNTAyYzhmZTk4ZGQyMzEwOGY0
Njc3OTg4ZGU5MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNTE3LDcg
KzUxNyw3IEBAIHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2xvd0Nhc2Uo
c2l6ZV90IHNpemUpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDQxMQogICAgIENoZWNrZWRTaXplIGNoZWNrZWROZXdTaXplID0gbV9kZXByZWNhdGVk
RXh0cmFNZW1vcnlTaXplOwogICAgIGNoZWNrZWROZXdTaXplICs9IHNpemU7Ci0gICAgbV9kZXBy
ZWNhdGVkRXh0cmFNZW1vcnlTaXplID0gVU5MSUtFTFkoY2hlY2tlZE5ld1NpemUuaGFzT3ZlcmZs
b3dlZCgpKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgOiBjaGVja2VkTmV3
U2l6ZS51bnNhZmVHZXQoKTsKKyAgICBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUgPSBVTkxJ
S0VMWShjaGVja2VkTmV3U2l6ZS5oYXNPdmVyZmxvd2VkKCkpID8gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSA6IGNoZWNrZWROZXdTaXplLnZhbHVlKCk7CiAgICAgcmVwb3J0RXh0
cmFNZW1vcnlBbGxvY2F0ZWRTbG93Q2FzZShzaXplKTsKIH0KIApAQCAtODI2LDcgKzgyNiw3IEBA
IHNpemVfdCBIZWFwOjpleHRyYU1lbW9yeVNpemUoKQogICAgIENoZWNrZWRTaXplIGNoZWNrZWRU
b3RhbCA9IG1fZXh0cmFNZW1vcnlTaXplOwogICAgIGNoZWNrZWRUb3RhbCArPSBtX2RlcHJlY2F0
ZWRFeHRyYU1lbW9yeVNpemU7CiAgICAgY2hlY2tlZFRvdGFsICs9IG1fYXJyYXlCdWZmZXJzLnNp
emUoKTsKLSAgICBzaXplX3QgdG90YWwgPSBVTkxJS0VMWShjaGVja2VkVG90YWwuaGFzT3ZlcmZs
b3dlZCgpKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgOiBjaGVja2VkVG90
YWwudW5zYWZlR2V0KCk7CisgICAgc2l6ZV90IHRvdGFsID0gVU5MSUtFTFkoY2hlY2tlZFRvdGFs
Lmhhc092ZXJmbG93ZWQoKSkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIDog
Y2hlY2tlZFRvdGFsLnZhbHVlKCk7CiAKICAgICBBU1NFUlQobV9vYmplY3RTcGFjZS5jYXBhY2l0
eSgpID49IG1fb2JqZWN0U3BhY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gc3RkOjptaW4odG90YWws
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBtX29iamVjdFNwYWNlLmNhcGFj
aXR5KCkpOwpAQCAtMjI1NSw3ICsyMjU1LDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9u
TGltaXRzKCkKICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgQ2hlY2tlZFNpemUg
Y2hlY2tlZEN1cnJlbnRIZWFwU2l6ZSA9IG1fdG90YWxCeXRlc1Zpc2l0ZWQ7CiAgICAgICAgIGNo
ZWNrZWRDdXJyZW50SGVhcFNpemUgKz0gZXh0cmFNZW1vcnlTaXplKCk7Ci0gICAgICAgIEFTU0VS
VCghY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZS5oYXNPdmVyZmxvd2VkKCkgJiYgY2hlY2tlZEN1cnJl
bnRIZWFwU2l6ZS51bnNhZmVHZXQoKSA9PSBjdXJyZW50SGVhcFNpemUpOworICAgICAgICBBU1NF
UlQoIWNoZWNrZWRDdXJyZW50SGVhcFNpemUuaGFzT3ZlcmZsb3dlZCgpICYmIGNoZWNrZWRDdXJy
ZW50SGVhcFNpemUudmFsdWUoKSA9PSBjdXJyZW50SGVhcFNpemUpOwogICAgIH0KIAogICAgIGlm
ICh2ZXJib3NlKQpAQCAtMjU1OCw3ICsyNTU4LDcgQEAgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1l
bW9yeVZpc2l0ZWQoc2l6ZV90IHNpemUpCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0MTEKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE5l
d1NpemUgPSBvbGRTaXplOwogICAgICAgICBjaGVja2VkTmV3U2l6ZSArPSBzaXplOwotICAgICAg
ICBzaXplX3QgbmV3U2l6ZSA9IFVOTElLRUxZKGNoZWNrZWROZXdTaXplLmhhc092ZXJmbG93ZWQo
KSkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIDogY2hlY2tlZE5ld1NpemUu
dW5zYWZlR2V0KCk7CisgICAgICAgIHNpemVfdCBuZXdTaXplID0gVU5MSUtFTFkoY2hlY2tlZE5l
d1NpemUuaGFzT3ZlcmZsb3dlZCgpKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkgOiBjaGVja2VkTmV3U2l6ZS52YWx1ZSgpOwogICAgICAgICBpZiAoV1RGOjphdG9taWNDb21w
YXJlRXhjaGFuZ2VXZWFrUmVsYXhlZChjb3VudGVyLCBvbGRTaXplLCBuZXdTaXplKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAKaW5kZXggYzVmMzdkYTVlNzZlYjUzZTJkYjg5YWRhNDYxOTQ4ZDFlNzk4MDlkZi4u
MzNhMmYzOWU0ZTI3MGZkOGU5NTVkYjdkYTUwMjI0MWM1OTA0YzlmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIGlubGlu
ZSB2b2lkIFNsb3RWaXNpdG9yOjpwcm9wYWdhdGVFeHRlcm5hbE1lbW9yeVZpc2l0ZWRJZk5lY2Vz
c2FyeSgpCiAgICAgICAgIGlmIChtX2V4dHJhTWVtb3J5U2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAg
ICAgICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgZWxzZSBpZiAobV9leHRyYU1lbW9yeVNp
emUpCi0gICAgICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2V4dHJh
TWVtb3J5U2l6ZS51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJh
TWVtb3J5VmlzaXRlZChtX2V4dHJhTWVtb3J5U2l6ZS52YWx1ZSgpKTsKICAgICAgICAgbV9leHRy
YU1lbW9yeVNpemUgPSAwOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAKaW5kZXggZjg0YzVhNjk0NzYwMmVlZWJkZmE1NGE4OTdlZGMyZmYzNzM2ZmUx
MC4uZjYyNWIxNzA5YmM1NTQ0ODJlMzYyZmM5YjEzNjcyYzc1MDU3NzJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBN
YXJrZWRBcmd1bWVudEJ1ZmZlcjo6c2xvd0Vuc3VyZUNhcGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRD
YXBhY2l0eSkKICAgICBhdXRvIGNoZWNrZWROZXdDYXBhY2l0eSA9IENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4ocmVxdWVzdGVkQ2FwYWNpdHkpOwogICAgIGlmIChVTkxJS0VMWShjaGVja2Vk
TmV3Q2FwYWNpdHkuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgcmV0dXJuIHRoaXMtPm92ZXJm
bG93ZWQoKTsKLSAgICBleHBhbmRDYXBhY2l0eShjaGVja2VkTmV3Q2FwYWNpdHkudW5zYWZlR2V0
KCkpOworICAgIGV4cGFuZENhcGFjaXR5KGNoZWNrZWROZXdDYXBhY2l0eS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkoKQpAQCAtODAsNyAr
ODAsNyBAQCB2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSgpCiAgICAg
YXV0byBjaGVja2VkTmV3Q2FwYWNpdHkgPSBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1f
Y2FwYWNpdHkpICogMjsKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE5ld0NhcGFjaXR5Lmhhc092
ZXJmbG93ZWQoKSkpCiAgICAgICAgIHJldHVybiB0aGlzLT5vdmVyZmxvd2VkKCk7Ci0gICAgZXhw
YW5kQ2FwYWNpdHkoY2hlY2tlZE5ld0NhcGFjaXR5LnVuc2FmZUdldCgpKTsKKyAgICBleHBhbmRD
YXBhY2l0eShjaGVja2VkTmV3Q2FwYWNpdHkudmFsdWUoKSk7CiB9CiAKIHZvaWQgTWFya2VkQXJn
dW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KGludCBuZXdDYXBhY2l0eSkKQEAgLTkwLDcgKzkw
LDcgQEAgdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkoaW50IG5ld0Nh
cGFjaXR5KQogICAgIGF1dG8gY2hlY2tlZFNpemUgPSBDaGVja2VkU2l6ZShuZXdDYXBhY2l0eSkg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShjaGVja2VkU2l6ZS5o
YXNPdmVyZmxvd2VkKCkpKQogICAgICAgICByZXR1cm4gdGhpcy0+b3ZlcmZsb3dlZCgpOwotICAg
IEVuY29kZWRKU1ZhbHVlKiBuZXdCdWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+
KEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OkpTVmFsdWUsIGNoZWNrZWRTaXplLnVuc2Fm
ZUdldCgpKSk7CisgICAgRW5jb2RlZEpTVmFsdWUqIG5ld0J1ZmZlciA9IHN0YXRpY19jYXN0PEVu
Y29kZWRKU1ZhbHVlKj4oR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6SlNWYWx1ZSwgY2hl
Y2tlZFNpemUudmFsdWUoKSkpOwogICAgIGlmICghbmV3QnVmZmVyKQogICAgICAgICByZXR1cm4g
dGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyArK2kp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCA3OTA2ODU2MTY1MjE5OWZiYjdlNzQ4NmU5MzU0NzkyNDQ3Nzc2OGZmLi41OWRmNTdh
NmU4NWJlNDQ5Mjk5NzgyMWUzYjM5NzUzYzVlN2ZiOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNDg1LDcgKzE0ODUsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY29uY2F0QXBwZW5kT25lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgSlNBcgogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUo
KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHRTaXplID0gY2hlY2tlZFJlc3VsdFNpemUu
dW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgcmVzdWx0U2l6ZSA9IGNoZWNrZWRSZXN1bHRTaXpl
LnZhbHVlKCk7CiAgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBmaXJzdC0+bWVyZ2VJbmRleGluZ1R5
cGVGb3JDb3B5aW5nKGluZGV4aW5nVHlwZUZvclZhbHVlKHNlY29uZCkgfCBJc0FycmF5KTsKICAg
ICAKICAgICBpZiAodHlwZSA9PSBOb25BcnJheSkKQEAgLTE1NzksNyArMTU3OSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHksIChK
U0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAg
IH0KIAotICAgIHVuc2lnbmVkIHJlc3VsdFNpemUgPSBjaGVja2VkUmVzdWx0U2l6ZS51bnNhZmVH
ZXQoKTsKKyAgICB1bnNpZ25lZCByZXN1bHRTaXplID0gY2hlY2tlZFJlc3VsdFNpemUudmFsdWUo
KTsKICAgICBJbmRleGluZ1R5cGUgZmlyc3RUeXBlID0gZmlyc3RBcnJheS0+aW5kZXhpbmdUeXBl
KCk7CiAgICAgSW5kZXhpbmdUeXBlIHNlY29uZFR5cGUgPSBzZWNvbmRBcnJheS0+aW5kZXhpbmdU
eXBlKCk7CiAgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBmaXJzdEFycmF5LT5tZXJnZUluZGV4aW5n
VHlwZUZvckNvcHlpbmcoc2Vjb25kVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAyZWM2ZWM0YWUwMTFiMDkwOGU3Yjk4
OTE1NDA5MGM1OTZlM2Q0MmNiLi5lMWEyMjZjYTNhNmVhMjM1MThjNDg2N2E0MTU2YjA1NGY3YmIz
ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTE0MTUsNyArMTQxNSw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFU
SChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKQogICAgIGlmIChVTkxJS0VMWShjaGVj
a2VkQXJyYXlTaXplLmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CiAKLSAgICB1bnNpZ25lZCBhcnJheVNpemUgPSBj
aGVja2VkQXJyYXlTaXplLnVuc2FmZUdldCgpOworICAgIHVuc2lnbmVkIGFycmF5U2l6ZSA9IGNo
ZWNrZWRBcnJheVNpemUudmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoYXJyYXlTaXplID49IE1J
Tl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKQogICAgICAgICBUSFJPVyhjcmVh
dGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCmluZGV4IGJlOTUwZjE1NmFlNzM3N2Jl
ODhiOGY0ZGJhZDkxYjc1YjM2ZWJjN2UuLmM0ZmQ1N2RiMDJhODBhZTk3NzU0YzE2MGY2ODdmOGU2
NDE1NjhmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFy
Z3VtZW50cy5oCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZTbG90KENoZWNrZWQ8c2l6ZV90PiBpbmRleCkKICAgICB7Ci0gICAgICAg
IHJldHVybiAoc3RvcmFnZU9mZnNldCgpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikg
KiBpbmRleCkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAoc3RvcmFnZU9mZnNldCgpICsg
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBpbmRleCkudmFsdWUoKTsKICAgICB9CiAg
ICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gY2Fw
YWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFw
SW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAppbmRl
eCBkODE1YTMyMGMyZTE4MTFmYjVkYjI5Y2NkOWZlY2YwYmFiOWY2MDRmLi4xMjI5NjJiZTc1ODQ4
ZTg4MTYwMjYxMzUzZGUwZGQ1NTQ0NWQ1ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hhc2hNYXBJbXBsLmgKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBjYXBhY2l0eSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAoY2FwYWNpdHkgKiBzaXplb2YoQnVja2V0VHlwZSopKS51bnNh
ZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIChjYXBhY2l0eSAqIHNpemVvZihCdWNrZXRUeXBlKikp
LnZhbHVlKCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBCdWNrZXRUeXBlKiogYnVmZmVy
KCkgY29uc3QKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9rZXlDb3Vu
dCgwKQogICAgICAgICAsIG1fZGVsZXRlQ291bnQoMCkKICAgICB7Ci0gICAgICAgIHVpbnQzMl90
IGNhcGFjaXR5ID0gKChDaGVja2VkPHVpbnQzMl90PihzaXplSGludCkgKiAyKSArIDEpLnVuc2Fm
ZUdldCgpOworICAgICAgICB1aW50MzJfdCBjYXBhY2l0eSA9ICgoQ2hlY2tlZDx1aW50MzJfdD4o
c2l6ZUhpbnQpICogMikgKyAxKS52YWx1ZSgpOwogICAgICAgICBjYXBhY2l0eSA9IHN0ZDo6bWF4
PHVpbnQzMl90PihXVEY6OnJvdW5kVXBUb1Bvd2VyT2ZUd28oY2FwYWNpdHkpLCA0VSk7CiAgICAg
ICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oCmluZGV4IDUxNjBlODE4YzAxOWJl
ZDcyNjE4M2EzNDllNjY3ODE2MWQ2MjAxMDYuLmU0NDBmZjJiNmM4MDY3MGEzZTQ4MTA3ZjNiNTI4
ZmRjNDFkNjdhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsSW5saW5lcy5oCkBAIC0xNjksNyArMTY5LDcgQEAgQUxXQVlTX0lOTElORSB1aW50
MzJfdCBuZXh0Q2FwYWNpdHkodWludDMyX3QgY2FwYWNpdHksIHVpbnQzMl90IGtleUNvdW50KQog
ICAgICAgICAvLyBhdCB0aGUgc2FtZSBjYXBhY2l0eSkuCiAgICAgICAgIHJldHVybiBjYXBhY2l0
eTsKICAgICB9Ci0gICAgcmV0dXJuIChDaGVja2VkPHVpbnQzMl90PihjYXBhY2l0eSkgKiAyKS51
bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gKENoZWNrZWQ8dWludDMyX3Q+KGNhcGFjaXR5KSAqIDIp
LnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwQnVja2V0VHlwZT4KQEAg
LTE5Myw3ICsxOTMsNyBAQCB2b2lkIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXRUeXBlPjo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKIAogICAgIC8vIFRoaXMgc2l6ZSBzaG91bGQgYmUgdGhlIHNhbWUgdG8g
dGhlIGNhc2Ugd2hlbiB5b3UgY2xvbmUgdGhlIG1hcCBieSBjYWxsaW5nIGFkZCgpIHJlcGVhdGVk
bHkuCi0gICAgdWludDMyX3QgY2FwYWNpdHkgPSAoKENoZWNrZWQ8dWludDMyX3Q+KGJhc2UtPm1f
a2V5Q291bnQpICogMikgKyAxKS51bnNhZmVHZXQoKTsKKyAgICB1aW50MzJfdCBjYXBhY2l0eSA9
ICgoQ2hlY2tlZDx1aW50MzJfdD4oYmFzZS0+bV9rZXlDb3VudCkgKiAyKSArIDEpLnZhbHVlKCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FwYWNpdHkgPD0gKDFVIDw8IDMxKSk7CiAgICAgY2FwYWNp
dHkgPSBzdGQ6Om1heDx1aW50MzJfdD4oV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKGNhcGFjaXR5
KSwgNFUpOwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCAxNzUzNzExZjRiYjY5MGJlM2E5MjMzYzBiMzIz
MmE4MzE2OTIxMTJjLi44MzdmMjQ3MTExNDFmMzdmYzZmNGEwNWI3NWE3MWY3OWE4ODI2Y2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0yNTI3LDgg
KzI1MjcsOCBAQCBKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogbnVs
bE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBWTSYgdm0sIENoYQogCiAgICAgICAgIGlmICghaGVhcFJl
c3VsdCkgewogICAgICAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGRpZ2l0LnVuc2FmZUdldCgpIDw9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpOwotICAgICAgICAgICAgICAgIGludDY0X3Qg
bWF5YmVSZXN1bHQgPSBkaWdpdC51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
ZGlnaXQudmFsdWUoKSA8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWF4KCkpKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG1heWJlUmVzdWx0
ID0gZGlnaXQudmFsdWUoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobWF5YmVSZXN1bHQgPj0g
MCk7CiAgICAgICAgICAgICAgICAgaWYgKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpCiAg
ICAgICAgICAgICAgICAgICAgIG1heWJlUmVzdWx0ICo9IC0xOwpAQCAtMjU0Nyw5ICsyNTQ3LDkg
QEAgSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2Jh
bE9iamVjdEZvck9PTSwgVk0mIHZtLCBDaGEKICAgICAgICAgICAgIGhlYXBSZXN1bHQtPmluaXRp
YWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CiAgICAgICAgIH0KIAotICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PERpZ2l0PihtdWx0aXBs
aWVyLnVuc2FmZUdldCgpKSkgPT0gbXVsdGlwbGllci51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0LnVuc2Fm
ZUdldCgpKSkgPT0gZGlnaXQudW5zYWZlR2V0KCkpOwotICAgICAgICBoZWFwUmVzdWx0LT5pbnBs
YWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KG11bHRpcGxpZXIudW5zYWZlR2V0KCkp
LCBzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci52YWx1
ZSgpKSkgPT0gbXVsdGlwbGllci52YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQudmFsdWUoKSkpID09IGRpZ2l0LnZh
bHVlKCkpOworICAgICAgICBoZWFwUmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nh
c3Q8RGlnaXQ+KG11bHRpcGxpZXIudmFsdWUoKSksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdC52
YWx1ZSgpKSk7CiAgICAgfQogCiAgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNl
SW50U2lnbjo6U2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCmluZGV4IDkwNjVjMjQwMzViZjU0OWE0YWJhYzM3NGU3
MzM1M2VhODRmMTQ2M2MuLjI1Y2QzNjg0MzlhMzVmNmY0NTI4YjhlODQwY2M2ZjRjZTM1MjM3Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0
dGVyZmx5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVC
dXR0ZXJmbHkuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICAvLyBCZWNhdXNlIG9mIHRoZSBhYm92ZSBtYXhpbXVtTGVuZ3Ro
IHJlcXVpcmVtZW50LCBhbGxvY2F0aW9uU2l6ZSBjYW4gbmV2ZXIgb3ZlcmZsb3cuCi0gICAgICAg
IHZvaWQqIGJ1ZmZlciA9IHRyeUFsbG9jYXRlQ2VsbDxKU0ltbXV0YWJsZUJ1dHRlcmZseT4odm0u
aGVhcCwgYWxsb2NhdGlvblNpemUobGVuZ3RoKS51bnNhZmVHZXQoKSk7CisgICAgICAgIHZvaWQq
IGJ1ZmZlciA9IHRyeUFsbG9jYXRlQ2VsbDxKU0ltbXV0YWJsZUJ1dHRlcmZseT4odm0uaGVhcCwg
YWxsb2NhdGlvblNpemUobGVuZ3RoKS52YWx1ZSgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFi
dWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIEpTSW1tdXRhYmxl
QnV0dGVyZmx5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGJ1ZmZlcikgSlNJbW11dGFibGVCdXR0
ZXJmbHkodm0sIHN0cnVjdHVyZSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDkwMTIzYTJlOGU0Mjlk
NmJmYWJmOTY1ZTdlOGZhYjIzMjhlM2Y1OWQuLjhjZTI2YTc2NDhmOTlmZjZjYjVjOWZmNDUxZjdh
MDIyMTM2N2YzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtNzQsMTIgKzc0LDEyIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mVmFyaWFibGUoU2NvcGVPZmZzZXQgb2Zmc2V0KQogICAgIHsK
ICAgICAgICAgQ2hlY2tlZDxzaXplX3Q+IHNjb3BlT2Zmc2V0ID0gb2Zmc2V0Lm9mZnNldCgpOwot
ICAgICAgICByZXR1cm4gKG9mZnNldE9mVmFyaWFibGVzKCkgKyBzY29wZU9mZnNldCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIChv
ZmZzZXRPZlZhcmlhYmxlcygpICsgc2NvcGVPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSkudmFsdWUoKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25T
aXplRm9yU2NvcGVTaXplKENoZWNrZWQ8c2l6ZV90PiBzY29wZVNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gKG9mZnNldE9mVmFyaWFibGVzKCkgKyBzY29wZVNpemUgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAob2Zmc2V0T2ZW
YXJpYWJsZXMoKSArIHNjb3BlU2l6ZSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKS52
YWx1ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKaW5kZXggNmMwMjI5MDU1ZTgzNzI2M2U0MGQ1MGExZDkxNjA2NWRkNGI4ODliNi4uYjdiMWU1
ODA3YjQ3MGE0NGU5ZWYzMzQ0Y2RlOTk2OGI1NWExMWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xMTg2LDcgKzExODYsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBh
Y2l0eSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc2l6ZW9mKEpTT2JqZWN0KSArIGlubGluZUNh
cGFjaXR5ICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKS51bnNhZmVHZXQoKTsK
KyAgICAgICAgcmV0dXJuIChzaXplb2YoSlNPYmplY3QpICsgaW5saW5lQ2FwYWNpdHkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikpLnZhbHVlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIGlubGluZSBjb25zdCBUeXBlSW5mbyB0eXBlSW5mbygpIHsgcmV0dXJuIFR5cGVJbmZvKEZp
bmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAppbmRl
eCA4YTViNjljNWU5NWQwMmZlNGE1YmFjN2JlY2U4NzExN2VmYTRkODc0Li4yZjNiZjdlYjUxNGI3
NDU5MDE2Y2VhZDc3NjU4NjQzNGM3ZDYxZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6c19p
bmZvID0geyAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIiwKIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvciogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdWludDMyX3QgaW5kZXhlZExlbmd0aCwgdWludDMyX3QgbnVtYmVyU3RydWN0
dXJlUHJvcGVydGllcywgUHJvcGVydHlOYW1lQXJyYXkmJiBwcm9wZXJ0eU5hbWVzKQogewogICAg
IHVuc2lnbmVkIHByb3BlcnR5TmFtZXNTaXplID0gcHJvcGVydHlOYW1lcy5zaXplKCk7Ci0gICAg
dW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzID0gKENoZWNrZWQ8dW5zaWdu
ZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSku
dW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVz
ID0gKENoZWNrZWQ8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVvZihXcml0ZUJh
cnJpZXI8SlNTdHJpbmc+KSkudmFsdWUoKTsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KiBw
cm9wZXJ0eU5hbWVzQnVmZmVyID0gbnVsbHB0cjsKICAgICBpZiAocHJvcGVydHlOYW1lc0J1ZmZl
clNpemVJbkJ5dGVzKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA2NjkyZjA1NWIzZjhhZTA1MTcyZDhjODhj
NDk5MjFmOWE0ZWYxNzJlLi45MzdiYTZkNTBlMjMzMGM0MmI4Yjc5N2Y4ZjAyNzk0Y2NhNjUzNjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTM5NSw5ICsz
OTUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VtLnVuc2FmZUdldCgpKSA8PSBNYXhMZW5ndGgp
OworICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdW0udmFsdWUoKSkg
PD0gTWF4TGVuZ3RoKTsKICAgICAgICAgICAgIG1fc3RyaW5ncy5hcHBlbmQoanNTdHJpbmcpOwot
ICAgICAgICAgICAgbV9sZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VtLnVuc2FmZUdl
dCgpKTsKKyAgICAgICAgICAgIG1fbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1bS52
YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCmluZGV4IDU4
M2U5ZTM2ZjMwMjEyZmIwMTU2NWI4MDFhODFlMzFiZWE5MjdjYTYuLjIzMGYzMGQ0Yzg4MDA4MzYy
OTZiZDJjYmMxYjJiNDRjNWEyNmNkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcApAQCAtNTUsNyArNTUsNyBAQCBTY29wZWRBcmd1
bWVudHMqIFNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dQogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IG51bGxw
dHI7CiAgICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0aCgpKSB7CiAgICAgICAgIENo
ZWNrZWQ8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxMZW5ndGggLSB0YWJsZS0+bGVu
Z3RoKCk7Ci0gICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93
bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIChvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKS51bnNh
ZmVHZXQoKSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICAg
ICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgKG92ZXJmbG93
TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLnZhbHVlKCksIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgfQogCiAgICAgU2NvcGVkQXJn
dW1lbnRzKiByZXN1bHQgPSBuZXcgKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggZjVmYjc4NWRiYTFmNGQzNWI0M2JiMjc2ZDEy
NDFiMWI1MDE5ODlhZS4uMGI2ZDhlNWRlNDJjY2Q2ZjMxMzc1MGRlNWEwMjk2MmRmZGFiZmM0MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpz
U3BsaWNlU3Vic3RyaW5ncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmIChz
b3VyY2UuaXM4Qml0KCkpIHsKICAgICAgICAgTENoYXIqIGJ1ZmZlcjsKICAgICAgICAgY29uc3Qg
TENoYXIqIHNvdXJjZURhdGEgPSBzb3VyY2UuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgYXV0byBp
bXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aC51bnNh
ZmVHZXQoKSwgYnVmZmVyKTsKKyAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aC52YWx1ZSgpLCBidWZmZXIpOwogICAgICAgICBp
ZiAoIWltcGwpIHsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzI5LDcgKzMyOSw3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3MoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgQ2hlY2tlZDxpbnQsIEFzc2VydE5v
T3ZlcmZsb3c+IGJ1ZmZlclBvcyA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFu
Z2VDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jh
bmdlc1tpXS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhidWZmZXIgKyBidWZmZXJQb3MudW5zYWZlR2V0KCksIHNvdXJjZURhdGEgKyBzdWJzdHJp
bmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNvdXJjZURhdGEg
KyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAg
YnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzQwLDcg
KzM0MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmlu
Z3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBVQ2hhciogYnVmZmVyOwogICAg
IGNvbnN0IFVDaGFyKiBzb3VyY2VEYXRhID0gc291cmNlLmNoYXJhY3RlcnMxNigpOwogCi0gICAg
YXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0
aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKKyAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnZhbHVlKCksIGJ1ZmZlcik7CiAgICAgaWYg
KCFpbXBsKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNDksNyArMzQ5LDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5ncyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIENoZWNrZWQ8aW50LCBBc3NlcnROb092ZXJmbG93PiBidWZm
ZXJQb3MgPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7CiAg
ICAgICAgIGlmIChpbnQgc3JjTGVuID0gc3Vic3RyaW5nUmFuZ2VzW2ldLmxlbmd0aCkgewotICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnVu
c2FmZUdldCgpLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNM
ZW4pOworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLnZhbHVlKCksIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24s
IHNyY0xlbik7CiAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3JjTGVuOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMzk5LDcgKzM5OSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBq
c1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhKU0dsb2JhbE9iamVjdCoKICAgICAgICAg
TENoYXIqIGJ1ZmZlcjsKICAgICAgICAgY29uc3QgTENoYXIqIHNvdXJjZURhdGEgPSBzb3VyY2Uu
Y2hhcmFjdGVyczgoKTsKIAotICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnVuc2FmZUdldCgpLCBidWZmZXIpOworICAgICAg
ICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVu
Z3RoLnZhbHVlKCksIGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkgewogICAgICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC00MTAsMTMgKzQxMCwxMyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4Q291bnQ7IGkrKykgewogICAgICAg
ICAgICAgaWYgKGkgPCByYW5nZUNvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGludCBzcmNM
ZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy51bnNhZmVHZXQoKSwg
c291cmNlRGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVy
UG9zLnZhbHVlKCksIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNy
Y0xlbik7CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBzcmNMZW47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGkgPCBzZXBhcmF0b3JD
b3VudCkgewogICAgICAgICAgICAgICAgIGlmIChpbnQgc2VwTGVuID0gc2VwYXJhdG9yc1tpXS5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVy
cyhidWZmZXIgKyBidWZmZXJQb3MudW5zYWZlR2V0KCksIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVy
czgoKSwgc2VwTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVy
czgoKSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNlcExlbjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00MjYsNyArNDI2LDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0
b3JzKEpTR2xvYmFsT2JqZWN0KgogICAgIH0KIAogICAgIFVDaGFyKiBidWZmZXI7Ci0gICAgYXV0
byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aC51
bnNhZmVHZXQoKSwgYnVmZmVyKTsKKyAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnZhbHVlKCksIGJ1ZmZlcik7CiAgICAgaWYgKCFp
bXBsKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00MzgsMTggKzQzOCwxOCBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMo
SlNHbG9iYWxPYmplY3QqCiAgICAgICAgIGlmIChpIDwgcmFuZ2VDb3VudCkgewogICAgICAgICAg
ICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnVuc2FmZUdldCgpLCBzb3Vy
Y2UuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsK
KyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsg
YnVmZmVyUG9zLnZhbHVlKCksIHNvdXJjZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3RyaW5nUmFuZ2Vz
W2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnVu
c2FmZUdldCgpLCBzb3VyY2UuY2hhcmFjdGVyczE2KCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9z
aXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
YWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzb3VyY2UuY2hhcmFjdGVyczE2KCkg
KyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAg
YnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBp
ZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICBpZiAoaW50IHNlcExlbiA9IHNl
cGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VwYXJhdG9yc1tp
XS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoYnVmZmVyICsgYnVmZmVyUG9zLnVuc2FmZUdldCgpLCBzZXBhcmF0b3JzW2ldLmNoYXJhY3Rl
cnM4KCksIHNlcExlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
YWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzZXBhcmF0b3JzW2ldLmNoYXJhY3Rl
cnM4KCksIHNlcExlbik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MudW5zYWZlR2V0
KCksIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczE2KCksIHNlcExlbik7CisgICAgICAgICAgICAg
ICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1
ZSgpLCBzZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnMxNigpLCBzZXBMZW4pOwogICAgICAgICAgICAg
ICAgIGJ1ZmZlclBvcyArPSBzZXBMZW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBk
Y2VjYTU2YTRkZGFkZDRlZDY3MjhkYmNmOTg4ZTZhYmMwMTI3NzFjLi40ODViNDBkMmZhOWY0MDM3
MjM4M2M3YWI1N2JjMzk3OTA2MjQ5OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFN0cnVjdHVyZUNo
YWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqIGhlYWQpCiAgICAg
Zm9yIChKU09iamVjdCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50
LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoY3VycmVudCkpCiAgICAgICAg
ICsrc2l6ZTsKICAgICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxwdHIuCi0gICAgc2l6ZV90IGJ5
dGVzID0gKENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJRCkpLnVuc2Fm
ZUdldCgpOworICAgIHNpemVfdCBieXRlcyA9IChDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXpl
b2YoU3RydWN0dXJlSUQpKS52YWx1ZSgpOwogICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0
aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZlY3RvciwgMCwgYnl0ZXMpOwogICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWlu
Pih2bS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4odm0sIHZtLnN0cnVjdHVyZUNoYWluU3RydWN0dXJl
LmdldCgpLCB2ZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggOThhNzVj
NmY4YjhkYjI3OWQwMjZmMzJlYmYzYmJjYzU0MWJhYjBmOS4uMTNjOGMxNzA0M2FjNzk1MTAyM2Yz
ZGNlZmIxZjgwZTI2YzNiMGM5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0y
NTksNyArMjU5LDcgQEAgc3RydWN0IFNjcmF0Y2hCdWZmZXIgewogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxz
aXplX3Q+IGJ1ZmZlclNpemUpIHsgcmV0dXJuIChzaXplb2YoU2NyYXRjaEJ1ZmZlcikgKyBidWZm
ZXJTaXplKS51bnNhZmVHZXQoKTsgfQorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
Q2hlY2tlZDxzaXplX3Q+IGJ1ZmZlclNpemUpIHsgcmV0dXJuIChzaXplb2YoU2NyYXRjaEJ1ZmZl
cikgKyBidWZmZXJTaXplKS52YWx1ZSgpOyB9CiAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6
ZV90IGFjdGl2ZUxlbmd0aCkgeyB1Lm1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVuZ3RoOyB9CiAg
ICAgc2l6ZV90IGFjdGl2ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHUubV9hY3RpdmVMZW5ndGg7
IH07CiAgICAgc2l6ZV90KiBhZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSB7IHJldHVybiAmdS5tX2Fj
dGl2ZUxlbmd0aDsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1w
bC5oCmluZGV4IDZiYmEyY2Q0NmIxZDU4NjRlYjE5MzE2YmNjYWM4NzBkMTgxMmI0MDUuLmU5NWM4
NzY0ZWY0ZTQ5NGM0ZDAxNmU4ZGNkYjc1YTkwNTRhMTJlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGNhcGFj
aXR5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIChjYXBhY2l0eSAqIHNpemVvZihCdWNrZXRUeXBl
KSkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAoY2FwYWNpdHkgKiBzaXplb2YoQnVja2V0
VHlwZSkpLnZhbHVlKCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBCdWNrZXRUeXBlKiBi
dWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKaW5kZXggZjRhNmRhOTY5MjU1MDliZjE1NzkzYzI0NTIzNWY1MzM5ZmQ5
ODIyNi4uYmZmYTI5NjhmODc4NWUwM2JmMDAyOWYxZDJmZDM2NzZmMjg2NWE4NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC04
NTAsOSArODUwLDkgQEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVs
ZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAgICAgICAgICAv
LyBUaGlzIGFsbG93cyB1cyB0byBlbGlkZSBzdGFjayBjaGVja3MgaW4gdGhlIFdhc20gLT4gRW1i
ZWRkZXIgY2FsbCBJQyBzdHViLiBTaW5jZSB0aGVzZSB3aWxsCiAgICAgICAgICAgICAgICAgLy8g
c3BpbGwgYWxsIGFyZ3VtZW50cyB0byB0aGUgc3RhY2ssIHdlIGVuc3VyZSB0aGF0IGEgc3RhY2sg
Y2hlY2sgaGVyZSBjb3ZlcnMgdGhlCiAgICAgICAgICAgICAgICAgLy8gc3RhY2sgdGhhdCBzdWNo
IGEgc3R1YiB3b3VsZCB1c2UuCi0gICAgICAgICAgICAgICAgKENoZWNrZWQ8dWludDMyX3Q+KG1f
bWF4TnVtSlNDYWxsQXJndW1lbnRzKSAqIHNpemVvZihSZWdpc3RlcikgKyBqc0NhbGxpbmdDb252
ZW50aW9uKCkuaGVhZGVyU2l6ZUluQnl0ZXMpLnVuc2FmZUdldCgpCisgICAgICAgICAgICAgICAg
KENoZWNrZWQ8dWludDMyX3Q+KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzKSAqIHNpemVvZihSZWdp
c3RlcikgKyBqc0NhbGxpbmdDb252ZW50aW9uKCkuaGVhZGVyU2l6ZUluQnl0ZXMpLnZhbHVlKCkK
ICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgY29uc3QgaW50MzJfdCBjaGVja1NpemUgPSBt
X21ha2VzQ2FsbHMgPyAod2FzbUZyYW1lU2l6ZSArIGV4dHJhRnJhbWVTaXplKS51bnNhZmVHZXQo
KSA6IHdhc21GcmFtZVNpemUudW5zYWZlR2V0KCk7CisgICAgICAgICAgICBjb25zdCBpbnQzMl90
IGNoZWNrU2l6ZSA9IG1fbWFrZXNDYWxscyA/ICh3YXNtRnJhbWVTaXplICsgZXh0cmFGcmFtZVNp
emUpLnZhbHVlKCkgOiB3YXNtRnJhbWVTaXplLnZhbHVlKCk7CiAgICAgICAgICAgICBib29sIG5l
ZWRVbmRlcmZsb3dDaGVjayA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGVja1NpemUpID4gT3B0
aW9uczo6cmVzZXJ2ZWRab25lU2l6ZSgpOwogICAgICAgICAgICAgYm9vbCBuZWVkc092ZXJmbG93
Q2hlY2sgPSBtX21ha2VzQ2FsbHMgfHwgd2FzbUZyYW1lU2l6ZSA+PSBtaW5pbXVtUGFyZW50Q2hl
Y2tTaXplIHx8IG5lZWRVbmRlcmZsb3dDaGVjazsKIApAQCAtMzE1NSw3ICszMTU1LDcgQEAgQjM6
OlBhdGNocG9pbnRWYWx1ZSogQWlySVJHZW5lcmF0b3I6OmVtaXRDYWxsUGF0Y2hwb2ludChCYXNp
Y0Jsb2NrKiBibG9jaywgY29uc3QKICAgICBDaGVja2VkPHNpemVfdD4gbmV3U2l6ZSA9IGNoZWNr
ZWRTdW08c2l6ZV90PihwYXRjaEFyZ3Muc2l6ZSgpLCBhcmdzLnNpemUoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIW5ld1NpemUuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIHBhdGNoQXJncy5ncm93
KG5ld1NpemUudW5zYWZlR2V0KCkpOworICAgIHBhdGNoQXJncy5ncm93KG5ld1NpemUudmFsdWUo
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCiAgICAg
ICAgIHBhdGNoQXJnc1tpICsgb2Zmc2V0XSA9IENvbnN0cmFpbmVkVG1wKGFyZ3NbaV0sIGxvY2F0
aW9ucy5wYXJhbXNbaV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMTA2Y2E1ZmQ1NWQ2ZGJkMmEzYWYxODM4NDVjYTRhNzk4
NzdiZDZjMi4uOWY1ZWEwYTg5NGExZmM4M2JhNzJjMzIzZTI1MDEyOTY4OGRiM2NmZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAt
NTIxLDkgKzUyMSw5IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxl
SW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlCiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBhbGxvd3MgdXMgdG8gZWxpZGUgc3RhY2sgY2hlY2tzIGluIHRoZSBXYXNtIC0+IEVt
YmVkZGVyIGNhbGwgSUMgc3R1Yi4gU2luY2UgdGhlc2Ugd2lsbAogICAgICAgICAgICAgICAgIC8v
IHNwaWxsIGFsbCBhcmd1bWVudHMgdG8gdGhlIHN0YWNrLCB3ZSBlbnN1cmUgdGhhdCBhIHN0YWNr
IGNoZWNrIGhlcmUgY292ZXJzIHRoZQogICAgICAgICAgICAgICAgIC8vIHN0YWNrIHRoYXQgc3Vj
aCBhIHN0dWIgd291bGQgdXNlLgotICAgICAgICAgICAgICAgIChDaGVja2VkPHVpbnQzMl90Piht
X21heE51bUpTQ2FsbEFyZ3VtZW50cykgKiBzaXplb2YoUmVnaXN0ZXIpICsgSlNDYWxsaW5nQ29u
dmVudGlvbjo6aGVhZGVyU2l6ZUluQnl0ZXMpLnVuc2FmZUdldCgpCisgICAgICAgICAgICAgICAg
KENoZWNrZWQ8dWludDMyX3Q+KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzKSAqIHNpemVvZihSZWdp
c3RlcikgKyBKU0NhbGxpbmdDb252ZW50aW9uOjpoZWFkZXJTaXplSW5CeXRlcykudmFsdWUoKQog
ICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBjb25zdCBpbnQzMl90IGNoZWNrU2l6ZSA9IG1f
bWFrZXNDYWxscyA/ICh3YXNtRnJhbWVTaXplICsgZXh0cmFGcmFtZVNpemUpLnVuc2FmZUdldCgp
IDogd2FzbUZyYW1lU2l6ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3Qg
Y2hlY2tTaXplID0gbV9tYWtlc0NhbGxzID8gKHdhc21GcmFtZVNpemUgKyBleHRyYUZyYW1lU2l6
ZSkudmFsdWUoKSA6IHdhc21GcmFtZVNpemUudmFsdWUoKTsKICAgICAgICAgICAgIGJvb2wgbmVl
ZFVuZGVyZmxvd0NoZWNrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoZWNrU2l6ZSkgPiBPcHRp
b25zOjpyZXNlcnZlZFpvbmVTaXplKCk7CiAgICAgICAgICAgICBib29sIG5lZWRzT3ZlcmZsb3dD
aGVjayA9IG1fbWFrZXNDYWxscyB8fCB3YXNtRnJhbWVTaXplID49IG1pbmltdW1QYXJlbnRDaGVj
a1NpemUgfHwgbmVlZFVuZGVyZmxvd0NoZWNrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUluc3RhbmNlLmNwcAppbmRleCA4NTc1NDU3MzBjY2MzMGQ2MzRmMzRiNGMyYjRjOWE2
NDEwYjlkYjdjLi5lNTJiMDA0ZGNiYzc3MTExYjA4ZDQ1NGMxY2RhZWIyZDQzZjA3NWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIG5hbWVzcGFjZSB7CiBzaXpl
X3QgZ2xvYmFsTWVtb3J5Qnl0ZVNpemUoTW9kdWxlJiBtb2R1bGUpCiB7Ci0gICAgcmV0dXJuIChD
aGVja2VkPHNpemVfdD4obW9kdWxlLm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCkp
ICogc2l6ZW9mKFJlZ2lzdGVyKSkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChDaGVja2VkPHNp
emVfdD4obW9kdWxlLm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCkpICogc2l6ZW9m
KFJlZ2lzdGVyKSkudmFsdWUoKTsKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5zdGFuY2UuaAppbmRleCA3ZWNjMTRhMzNiMzM2YzFjMDY3ZTJhM2I5OGUxYmNjYzM3MDIz
M2Q4Li5lZjQzMDY0OTliMzJmMTBkNmY3MzdmZjliMjRiMjQ2ZWI1OTkxNmYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtMjE1LDcgKzIxNSw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNp
emVfdD4gbnVtSW1wb3J0RnVuY3Rpb25zLCBDaGVja2VkPHNpemVfdD4gbnVtVGFibGVzKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIChvZmZzZXRPZlRhaWwoKSArIHNpemVvZihJbXBvcnRGdW5jdGlv
bkluZm8pICogbnVtSW1wb3J0RnVuY3Rpb25zICsgc2l6ZW9mKFRhYmxlKikgKiBudW1UYWJsZXMp
LnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gKG9mZnNldE9mVGFpbCgpICsgc2l6ZW9mKElt
cG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBvcnRGdW5jdGlvbnMgKyBzaXplb2YoVGFibGUqKSAq
IG51bVRhYmxlcykudmFsdWUoKTsKICAgICB9CiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIg
fTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
LgogICAgIENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IGQ1ZjUwN2NkYTYz
MzVhNjE2YTA4YzhlZmUyMWVkNzMzNDFkNDJlYjMuLjI5NzY0OWNjYzljMDZhNzg1NDdkNWEyZGFk
MzAwMTI4ODNjZTc0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHB1YmxpYzoKICAgICBFeHBy
ZXNzaW9uVHlwZSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVja1RhZykKICAgICB7CiAgICAgICAgIG1f
bWF4U3RhY2tTaXplID0gc3RkOjptYXgobV9tYXhTdGFja1NpemUsICsrbV9zdGFja1NpemUpOwot
ICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoKG1fc3RhY2tTaXplIC0gMSku
dW5zYWZlR2V0KCkpOworICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoKG1f
c3RhY2tTaXplIC0gMSkudmFsdWUoKSk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvblR5cGUgcHVz
aCgpCkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHN0YXJ0T2Zm
c2V0ID0gdGFyZ2V0LnN0YWNrU2l6ZSgpICsgMTsKICAgICAgICAga2VlcCA9IHRhcmdldC5icmFu
Y2hUYXJnZXRBcml0eSgpOwotICAgICAgICBkcm9wID0gKG1fc3RhY2tTaXplIC0gdGFyZ2V0LnN0
YWNrU2l6ZSgpIC0gdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCkpLnVuc2FmZUdldCgpOworICAg
ICAgICBkcm9wID0gKG1fc3RhY2tTaXplIC0gdGFyZ2V0LnN0YWNrU2l6ZSgpIC0gdGFyZ2V0LmJy
YW5jaFRhcmdldEFyaXR5KCkpLnZhbHVlKCk7CiAgICAgfQogCiAgICAgdm9pZCBkcm9wS2VlcChT
dGFjayYgdmFsdWVzLCBjb25zdCBDb250cm9sVHlwZSYgdGFyZ2V0LCBib29sIGRyb3BWYWx1ZXMp
CkBAIC0zNDksNyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogICAgIHZvaWQgd2Fsa0V4cHJlc3Npb25TdGFjayhTdGFjayYgZXhwcmVzc2lvblN0YWNr
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgd2Fsa0V4cHJlc3Npb25T
dGFjayhleHByZXNzaW9uU3RhY2ssIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBmdW5jdG9yKTsK
KyAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhleHByZXNzaW9uU3RhY2ssIG1fc3RhY2tTaXpl
LnZhbHVlKCksIGZ1bmN0b3IpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CkBAIC00ODMsNyArNDgzLDcgQEAgTExJbnRHZW5lcmF0b3I6OkxMSW50R2VuZXJhdG9yKGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCB1bnNpZ25lZCBmdW5jdGlvbkkKIHN0ZDo6dW5p
cXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9jaz4gTExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2NvZGVCbG9jayk7Ci0gICAgc2l6ZV90IG51bUNhbGxlZUxv
Y2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LCBtX21heFN0YWNrU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgc2l6ZV90IG51bUNhbGxlZUxvY2Fs
cyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBt
X21heFN0YWNrU2l6ZS52YWx1ZSgpKTsKICAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMgPSBudW1DYWxsZWVMb2NhbHM7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtQ2FsbGVlTG9jYWxz
ID09IG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAKQEAgLTU3NCw3ICs1NzQsNyBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgIC8vIEZJWE1FOiB3ZSBhcmUgYWxsb2NhdGlu
ZyB0aGUgZXh0cmEgc3BhY2UgZm9yIHRoZSBhcmd1bWVudC9yZXR1cm4gY291bnQgaW4gb3JkZXIg
dG8gYXZvaWQgaW50ZXJmZXJlbmNlLCBidXQgd2UgY291bGQgZG8gYmV0dGVyCiAgICAgLy8gTk9U
RTogV2UgaW5jcmVhc2UgYXJnIGNvdW50IGJ5IDEgZm9yIHRoZSBjYXNlIG9mIGluZGlyZWN0IGNh
bGxzCiAgICAgbV9zdGFja1NpemUgKz0gc3RkOjptYXgoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQo
KSArIDEsIHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpKSArIGdwckNvdW50ICsgZnByQ291bnQgKyBz
dGFja0NvdW50ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7Ci0gICAgaWYgKG1f
c3RhY2tTaXplLnVuc2FmZUdldCgpICUgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKKyAgICBp
ZiAobV9zdGFja1NpemUudmFsdWUoKSAlIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpCiAgICAg
ICAgICsrbV9zdGFja1NpemU7CiAgICAgaWYgKG1fbWF4U3RhY2tTaXplIDwgbV9zdGFja1NpemUp
CiAgICAgICAgIG1fbWF4U3RhY2tTaXplID0gbV9zdGFja1NpemU7CkBAIC01ODMsNyArNTgzLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICBSZXN1bHRMaXN0IGFyZ3VtZW50cyhzaWdu
YXR1cmUuYXJndW1lbnRDb3VudCgpKTsKICAgICBSZXN1bHRMaXN0IHRlbXBvcmFyeVJlc3VsdHMo
c2lnbmF0dXJlLnJldHVybkNvdW50KCkpOwogCi0gICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZz
ZXQgPSBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBzdGFja09m
ZnNldCA9IG1fc3RhY2tTaXplLnZhbHVlKCk7CiAgICAgY29uc3QgdW5zaWduZWQgYmFzZSA9IHN0
YWNrT2Zmc2V0IC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CiAKICAgICBjb25z
dCB1aW50MzJfdCBncHJMaW1pdCA9IGJhc2UgLSBzdGFja0NvdW50IC0gZ3ByQ291bnQ7CkBAIC04
NzYsNyArODc2LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVy
ZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ28KICAgICBSZWY8TGFiZWw+IGJv
ZHkgPSBuZXdFbWl0dGVkTGFiZWwoKTsKICAgICBSZWY8TGFiZWw+IGNvbnRpbnVhdGlvbiA9IG5l
d0xhYmVsKCk7CiAKLSAgICBibG9jayA9IENvbnRyb2xUeXBlOjpsb29wKHNpZ25hdHVyZSwgbV9z
dGFja1NpemUudW5zYWZlR2V0KCksIFdURk1vdmUoYm9keSksIFdURk1vdmUoY29udGludWF0aW9u
KSk7CisgICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9vcChzaWduYXR1cmUsIG1fc3RhY2tTaXpl
LnZhbHVlKCksIFdURk1vdmUoYm9keSksIFdURk1vdmUoY29udGludWF0aW9uKSk7CiAKICAgICBW
ZWN0b3I8VmlydHVhbFJlZ2lzdGVyPiBvc3JFbnRyeURhdGE7CiAgICAgZm9yICh1aW50MzJfdCBp
ID0gMDsgaSA8IG1fY29kZUJsb2NrLT5tX251bUFyZ3VtZW50czsgaSsrKQpAQCAtOTA0LDEzICs5
MDQsMTMgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWdu
YXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ28KIAogYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkVG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKSAtPiBDb250cm9sVHlwZQogewot
ICAgIHJldHVybiBDb250cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51
bnNhZmVHZXQoKSwgbmV3TGFiZWwoKSk7CisgICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZl
bChzaWduYXR1cmUsIG1fc3RhY2tTaXplLnZhbHVlKCksIG5ld0xhYmVsKCkpOwogfQogCiBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRCbG9jayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNr
JiBlbmNsb3NpbmdTdGFjaywgQ29udHJvbFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2sp
IC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5n
U3RhY2ssIG5ld1N0YWNrKTsKLSAgICBuZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWdu
YXR1cmUsIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBuZXdMYWJlbCgpKTsKKyAgICBuZXdCbG9j
ayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fc3RhY2tTaXplLnZhbHVlKCksIG5l
d0xhYmVsKCkpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTkyMyw3ICs5MjMsNyBAQCBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRJZihFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIEJsb2NrU2ln
bmF0dXJlIHNpZ25hdHVyZSwgUwogCiAgICAgV2FzbUpmYWxzZTo6ZW1pdCh0aGlzLCBjb25kaXRp
b24sIGFsdGVybmF0ZS0+YmluZCh0aGlzKSk7CiAKLSAgICByZXN1bHQgPSBDb250cm9sVHlwZTo6
aWZfKHNpZ25hdHVyZSwgbV9zdGFja1NpemUudW5zYWZlR2V0KCksIFdURk1vdmUoYWx0ZXJuYXRl
KSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKKyAgICByZXN1bHQgPSBDb250cm9sVHlwZTo6aWZf
KHNpZ25hdHVyZSwgbV9zdGFja1NpemUudmFsdWUoKSwgV1RGTW92ZShhbHRlcm5hdGUpLCBXVEZN
b3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTk0MSw3ICs5NDEs
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9sVHlw
ZSYgZGF0YSkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgQ29udHJvbElmJiBjb250cm9sID0gV1RG
OjpnZXQ8Q29udHJvbElmPihkYXRhKTsKICAgICBlbWl0TGFiZWwoY29udHJvbC5tX2FsdGVybmF0
ZS5nZXQoKSk7Ci0gICAgZGF0YSA9IENvbnRyb2xUeXBlOjpibG9jayhkYXRhLm1fc2lnbmF0dXJl
LCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgV1RGTW92ZShkYXRhLm1fY29udGludWF0aW9uKSk7
CisgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpibG9jayhkYXRhLm1fc2lnbmF0dXJlLCBtX3N0YWNr
U2l6ZS52YWx1ZSgpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKICAgICByZXR1cm4g
eyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2ln
bmF0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5k
ZXggZjBkZWFiYjA5NGY3NGIxYjU3MDgwMjcyNWY0MjNkNWQxOTY0NThiNC4uMWY3ZDAxYzZkMzY3
ZGEzNTU1Y2E5MzgyMjc4OGI5NjYyN2UyZTQyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TaWduYXR1cmUuaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBTaWduYXR1cmUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJlPiB7CiAgICAgVHlwZSogc3RvcmFn
ZShTaWduYXR1cmVBcmdDb3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFNpZ25hdHVy
ZSo+KHRoaXMpLT5zdG9yYWdlKGkpOyB9CiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0ZWRTaXpl
KENoZWNrZWQ8U2lnbmF0dXJlQXJnQ291bnQ+IHJldENvdW50LCBDaGVja2VkPFNpZ25hdHVyZUFy
Z0NvdW50PiBhcmdDb3VudCkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc2l6ZW9mKFNpZ25hdHVy
ZSkgKyAocmV0Q291bnQgKyBhcmdDb3VudCkgKiBzaXplb2YoVHlwZSkpLnVuc2FmZUdldCgpOwor
ICAgICAgICByZXR1cm4gKHNpemVvZihTaWduYXR1cmUpICsgKHJldENvdW50ICsgYXJnQ291bnQp
ICogc2l6ZW9mKFR5cGUpKS52YWx1ZSgpOwogICAgIH0KIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAppbmRleCA4OGM2
MjdjMTYwYzY5YjZhNzU4YzcyY2QzMTE5ODdlNTQ4MTVmMTkwLi4xNzAyYzYyYTIyM2YwYTQ2MzQw
ODY2N2YzNzJmMGZiYzFjNmQyYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIGF1dG8gU3Ry
ZWFtaW5nUGFyc2VyOjphZGRCeXRlcyhjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVz
U2l6ZSwgSXNFbmRPZlN0CiAgICAgICAgIHJldHVybiBtX3N0YXRlOwogCiAgICAgbV90b3RhbFNp
emUgKz0gYnl0ZXNTaXplOwotICAgIGlmIChVTkxJS0VMWShtX3RvdGFsU2l6ZS5oYXNPdmVyZmxv
d2VkKCkgfHwgbV90b3RhbFNpemUudW5zYWZlR2V0KCkgPiBtYXhNb2R1bGVTaXplKSkgeworICAg
IGlmIChVTkxJS0VMWShtX3RvdGFsU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgbV90b3RhbFNpemUu
dmFsdWUoKSA+IG1heE1vZHVsZVNpemUpKSB7CiAgICAgICAgIG1fc3RhdGUgPSBmYWlsKCJtb2R1
bGUgc2l6ZSBpcyB0b28gbGFyZ2UsIG1heGltdW0gIiwgbWF4TW9kdWxlU2l6ZSk7CiAgICAgICAg
IHJldHVybiBtX3N0YXRlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFi
bGUuY3BwCmluZGV4IDhhNTQ3NjE4NTRjYzYxZTVkZWU4YjBmNDAzMjRmMjgzNDk1NDFjMjEuLjJm
MjExM2QzMzA1OTM5NTIwN2YzNWNlN2ExOWFiMjI3YjQ2MGI0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBUYWJsZTo6VGFibGUo
dWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFibGVF
bGVtZW50VHlwZQogICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSB3b3J0aCB0cnlpbmcgdG8gcHJl
LWFsbG9jYXRlIG1heGltdW0gaGVyZS4gVGhlIHNwZWMgcmVjb21tZW5kcyBkb2luZyBzby4KICAg
ICAvLyBCdXQgZm9yIG5vdywgd2UncmUgbm90IGRvaW5nIHRoYXQuCiAgICAgLy8gRklYTUUgdGhp
cyBvdmVyLWFsbG9jYXRlcyBhbmQgY291bGQgYmUgc21hcnRlciBhYm91dCBub3QgY29tbWl0dGlu
ZyBhbGwgb2YgdGhhdCBtZW1vcnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MTQyNQotICAgIG1fanNWYWx1ZXMgPSBNYWxsb2NQdHI8V3JpdGVCYXJyaWVyPFVua25v
d24+LCBWTU1hbGxvYz46Om1hbGxvYygoc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBD
aGVja2VkPHNpemVfdD4oYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKSkpLnVuc2FmZUdldCgpKTsK
KyAgICBtX2pzVmFsdWVzID0gTWFsbG9jUHRyPFdyaXRlQmFycmllcjxVbmtub3duPiwgVk1NYWxs
b2M+OjptYWxsb2MoKHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICogQ2hlY2tlZDxzaXpl
X3Q+KGFsbG9jYXRlZExlbmd0aChtX2xlbmd0aCkpKS52YWx1ZSgpKTsKICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKTsgKytpKSB7CiAgICAgICAg
IG5ldyAoJm1fanNWYWx1ZXMuZ2V0KClbaV0pIFdyaXRlQmFycmllcjxVbmtub3duPigpOwogICAg
ICAgICBtX2pzVmFsdWVzLmdldCgpW2ldLnNldFN0YXJ0aW5nVmFsdWUoanNOdWxsKCkpOwpAQCAt
MTAwLDggKzEwMCw4IEBAIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFRhYmxlOjpncm93KHVpbnQz
Ml90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gY2hlY2tlZEdyb3cgPSBbJl0gKGF1dG8mIGNvbnRhaW5lciwgYXV0
byBpbml0aWFsaXplcikgewotICAgICAgICBpZiAobmV3TGVuZ3RoQ2hlY2tlZC51bnNhZmVHZXQo
KSA+IGFsbG9jYXRlZExlbmd0aChtX2xlbmd0aCkpIHsKLSAgICAgICAgICAgIENoZWNrZWQgcmVh
bGxvY1NpemVDaGVja2VkID0gYWxsb2NhdGVkTGVuZ3RoKG5ld0xlbmd0aENoZWNrZWQudW5zYWZl
R2V0KCkpOworICAgICAgICBpZiAobmV3TGVuZ3RoQ2hlY2tlZC52YWx1ZSgpID4gYWxsb2NhdGVk
TGVuZ3RoKG1fbGVuZ3RoKSkgeworICAgICAgICAgICAgQ2hlY2tlZCByZWFsbG9jU2l6ZUNoZWNr
ZWQgPSBhbGxvY2F0ZWRMZW5ndGgobmV3TGVuZ3RoQ2hlY2tlZC52YWx1ZSgpKTsKICAgICAgICAg
ICAgIHJlYWxsb2NTaXplQ2hlY2tlZCAqPSBzaXplb2YoKmNvbnRhaW5lci5nZXQoKSk7CiAgICAg
ICAgICAgICB1aW50MzJfdCByZWFsbG9jU2l6ZTsKICAgICAgICAgICAgIGlmIChyZWFsbG9jU2l6
ZUNoZWNrZWQuc2FmZUdldChyZWFsbG9jU2l6ZSkgPT0gQ2hlY2tlZFN0YXRlOjpEaWRPdmVyZmxv
dykKQEAgLTE5NSw5ICsxOTUsOSBAQCBGdW5jUmVmVGFibGU6OkZ1bmNSZWZUYWJsZSh1aW50MzJf
dCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQogewogICAgIC8vIEZJ
WE1FOiBJdCBtaWdodCBiZSB3b3J0aCB0cnlpbmcgdG8gcHJlLWFsbG9jYXRlIG1heGltdW0gaGVy
ZS4gVGhlIHNwZWMgcmVjb21tZW5kcyBkb2luZyBzby4KICAgICAvLyBCdXQgZm9yIG5vdywgd2Un
cmUgbm90IGRvaW5nIHRoYXQuCi0gICAgbV9pbXBvcnRhYmxlRnVuY3Rpb25zID0gTWFsbG9jUHRy
PFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIFZNTWFsbG9jPjo6bWFsbG9jKChzaXplb2Yo
V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbikgKiBDaGVja2VkPHNpemVfdD4oYWxsb2NhdGVk
TGVuZ3RoKG1fbGVuZ3RoKSkpLnVuc2FmZUdldCgpKTsKKyAgICBtX2ltcG9ydGFibGVGdW5jdGlv
bnMgPSBNYWxsb2NQdHI8V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiwgVk1NYWxsb2M+Ojpt
YWxsb2MoKHNpemVvZihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uKSAqIENoZWNrZWQ8c2l6
ZV90PihhbGxvY2F0ZWRMZW5ndGgobV9sZW5ndGgpKSkudmFsdWUoKSk7CiAgICAgLy8gRklYTUUg
dGhpcyBvdmVyLWFsbG9jYXRlcyBhbmQgY291bGQgYmUgc21hcnRlciBhYm91dCBub3QgY29tbWl0
dGluZyBhbGwgb2YgdGhhdCBtZW1vcnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTQyNQotICAgIG1faW5zdGFuY2VzID0gTWFsbG9jUHRyPEluc3RhbmNlKiwgVk1N
YWxsb2M+OjptYWxsb2MoKHNpemVvZihJbnN0YW5jZSopICogQ2hlY2tlZDxzaXplX3Q+KGFsbG9j
YXRlZExlbmd0aChtX2xlbmd0aCkpKS51bnNhZmVHZXQoKSk7CisgICAgbV9pbnN0YW5jZXMgPSBN
YWxsb2NQdHI8SW5zdGFuY2UqLCBWTU1hbGxvYz46Om1hbGxvYygoc2l6ZW9mKEluc3RhbmNlKikg
KiBDaGVja2VkPHNpemVfdD4oYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKSkpLnZhbHVlKCkpOwog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBhbGxvY2F0ZWRMZW5ndGgobV9sZW5ndGgpOyAr
K2kpIHsKICAgICAgICAgbmV3ICgmbV9pbXBvcnRhYmxlRnVuY3Rpb25zLmdldCgpW2ldKSBXYXNt
VG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uKCk7CiAgICAgICAgIEFTU0VSVChtX2ltcG9ydGFibGVG
dW5jdGlvbnMuZ2V0KClbaV0uc2lnbmF0dXJlSW5kZXggPT0gV2FzbTo6U2lnbmF0dXJlOjppbnZh
bGlkSW5kZXgpOyAvLyBXZSByZWx5IG9uIHRoaXMgaW4gY29tcGlsZWQgY29kZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IDNiMzQ5YmU4
M2I0NGMwMDM2ZjAxMDZmNzU5MjUyZTZiOTY3N2VmMWUuLjI4N2MyMGEyZDM4MjFhZTZjZDJlNGJl
ZTQ4MzY4ZmQ0MTI3ZjEwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemUodW5zaWduZWQgbnVtYmVyT2ZGcmFtZXMpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoYWxpZ25vZihEaXNqdW5jdGlvbkNvbnRleHQp
IDw9IHNpemVvZih2b2lkKiksICIiKTsKLSAgICAgICAgICAgIHNpemVfdCByYXdTaXplID0gKHNp
emVvZihEaXNqdW5jdGlvbkNvbnRleHQpIC0gc2l6ZW9mKHVpbnRwdHJfdCkgKyBDaGVja2VkPHNp
emVfdD4obnVtYmVyT2ZGcmFtZXMpICogc2l6ZW9mKHVpbnRwdHJfdCkpLnVuc2FmZUdldCgpOwor
ICAgICAgICAgICAgc2l6ZV90IHJhd1NpemUgPSAoc2l6ZW9mKERpc2p1bmN0aW9uQ29udGV4dCkg
LSBzaXplb2YodWludHB0cl90KSArIENoZWNrZWQ8c2l6ZV90PihudW1iZXJPZkZyYW1lcykgKiBz
aXplb2YodWludHB0cl90KSkudmFsdWUoKTsKICAgICAgICAgICAgIHNpemVfdCByb3VuZGVkU2l6
ZSA9IHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHZvaWQqKT4ocmF3U2l6ZSk7CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZGVkU2l6ZSA+PSByYXdTaXplKTsKICAgICAgICAgICAg
IHJldHVybiByb3VuZGVkU2l6ZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUodW5zaWduZWQgbnVtYmVyT2ZTdWJwYXR0ZXJu
cykKICAgICAgICAgewogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChhbGlnbm9mKFBhcmVudGhl
c2VzRGlzanVuY3Rpb25Db250ZXh0KSA8PSBzaXplb2Yodm9pZCopLCAiIik7Ci0gICAgICAgICAg
ICBzaXplX3QgcmF3U2l6ZSA9IChzaXplb2YoUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQp
IC0gc2l6ZW9mKHVuc2lnbmVkKSArIChDaGVja2VkPHNpemVfdD4obnVtYmVyT2ZTdWJwYXR0ZXJu
cykgKiAyVSkgKiBzaXplb2YodW5zaWduZWQpKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIHNp
emVfdCByYXdTaXplID0gKHNpemVvZihQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCkgLSBz
aXplb2YodW5zaWduZWQpICsgKENoZWNrZWQ8c2l6ZV90PihudW1iZXJPZlN1YnBhdHRlcm5zKSAq
IDJVKSAqIHNpemVvZih1bnNpZ25lZCkpLnZhbHVlKCk7CiAgICAgICAgICAgICBzaXplX3Qgcm91
bmRlZFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJhd1NpemUpOwog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRlZFNpemUgPj0gcmF3U2l6ZSk7CiAgICAg
ICAgICAgICByZXR1cm4gcm91bmRlZFNpemU7CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgog
CiAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGFsbG9jUGFyZW50aGVzZXNEaXNq
dW5jdGlvbkNvbnRleHQoQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgdW5zaWduZWQqIG91
dHB1dCwgQnl0ZVRlcm0mIHRlcm0pCiAgICAgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IChDaGVj
a2VkPHNpemVfdD4oUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OmFsbG9jYXRpb25TaXpl
KHRlcm0uYXRvbS5wYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5tX251bVN1YnBhdHRlcm5zKSkgKyBE
aXNqdW5jdGlvbkNvbnRleHQ6OmFsbG9jYXRpb25TaXplKGRpc2p1bmN0aW9uLT5tX2ZyYW1lU2l6
ZSkpLnVuc2FmZUdldCgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IChDaGVja2VkPHNpemVfdD4o
UGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OmFsbG9jYXRpb25TaXplKHRlcm0uYXRvbS5w
YXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5tX251bVN1YnBhdHRlcm5zKSkgKyBEaXNqdW5jdGlvbkNv
bnRleHQ6OmFsbG9jYXRpb25TaXplKGRpc2p1bmN0aW9uLT5tX2ZyYW1lU2l6ZSkpLnZhbHVlKCk7
CiAgICAgICAgIGFsbG9jYXRvclBvb2wgPSBhbGxvY2F0b3JQb29sLT5lbnN1cmVDYXBhY2l0eShz
aXplKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWxsb2NhdG9yUG9vbCk7CiAgICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRvclBvb2wtPmFsbG9jKHNpemUpKSBQYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uQ29udGV4dChvdXRwdXQsIHRlcm0pOwpAQCAtMTc4Niw3ICsxNzg2LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShj
aGFyYWN0ZXJDbGFzcywgaW52ZXJ0LCBpbnB1dFBvc2l0aW9uKSk7CiAKLSAgICAgICAgbV9ib2R5
RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0
eU1heENvdW50LnVuc2FmZUdldCgpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMu
bGFzdCgpLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQudmFsdWUoKTsK
ICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5hdG9tLnF1YW50aXR5VHlw
ZSA9IHF1YW50aXR5VHlwZTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3Qo
KS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKICAgICB9CkBAIC0xNzk3LDcgKzE3OTcs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChC
eXRlVGVybTo6QmFja1JlZmVyZW5jZShzdWJwYXR0ZXJuSWQsIGlucHV0UG9zaXRpb24pKTsKIAot
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmF0b20ucXVhbnRpdHlNYXhD
b3VudCA9IHF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1
bmN0aW9uLT50ZXJtcy5sYXN0KCkuYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhD
b3VudC52YWx1ZSgpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmF0
b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlv
bi0+dGVybXMubGFzdCgpLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwogICAgIH0KQEAg
LTE4NzQsOSArMTg3NCw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRl
cm1zW2VuZFRlcm1dLmF0b20ucGFyZW50aGVzZXNXaWR0aCA9IGVuZFRlcm0gLSBiZWdpblRlcm07
CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5mcmFtZUxvY2F0aW9u
ID0gZnJhbWVMb2NhdGlvbjsKIAotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVn
aW5UZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50LnVuc2FmZUdl
dCgpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnF1
YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50LnZhbHVlKCk7CiAgICAgICAgIG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRp
dHlUeXBlOwotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5x
dWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKTsKKyAgICAgICAg
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9
IHF1YW50aXR5TWF4Q291bnQudmFsdWUoKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRl
cm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwogICAgIH0KIApA
QCAtMTk3NCw4ICsxOTc0LDggQEAgcHVibGljOgogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJu
LCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGlu
cHV0UG9zaXRpb24pKTsKICAgICAgICAgbV9hbGxQYXJlbnRoZXNlc0luZm8uYXBwZW5kKFdURk1v
dmUocGFyZW50aGVzZXNEaXNqdW5jdGlvbikpOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291
bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRl
cm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCk7
CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRp
dHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291bnQudmFsdWUoKTsKKyAgICAgICAgbV9ib2R5RGlz
anVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRp
dHlNYXhDb3VudC52YWx1ZSgpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVn
aW5UZXJtXS5hdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAgICAgICAgbV9ib2R5
RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRp
b247CiAgICAgfQpAQCAtMTk5NiwxMSArMTk5NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnBhcmVudGhlc2VzV2lkdGggPSBlbmRU
ZXJtIC0gYmVnaW5UZXJtOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVy
bV0uZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CiAKLSAgICAgICAgbV9ib2R5RGlzanVu
Y3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0gcXVhbnRpdHlN
aW5Db3VudC51bnNhZmVHZXQoKTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2Jl
Z2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudC51bnNhZmVH
ZXQoKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5x
dWFudGl0eU1pbkNvdW50ID0gcXVhbnRpdHlNaW5Db3VudC52YWx1ZSgpOworICAgICAgICBtX2Jv
ZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBx
dWFudGl0eU1heENvdW50LnZhbHVlKCk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
c1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwotICAgICAgICBt
X2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0g
cXVhbnRpdHlNaW5Db3VudC51bnNhZmVHZXQoKTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24t
PnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5h
dG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eU1pbkNvdW50LnZhbHVlKCk7CisgICAgICAg
IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQg
PSBxdWFudGl0eU1heENvdW50LnZhbHVlKCk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50
ZXJtc1tlbmRUZXJtXS5hdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAgICB9CiAK
QEAgLTIwMjAsMTEgKzIwMjAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JvZHlEaXNqdW5jdGlv
bi0+dGVybXNbZW5kVGVybV0uYXRvbS5wYXJlbnRoZXNlc1dpZHRoID0gZW5kVGVybSAtIGJlZ2lu
VGVybTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmZyYW1lTG9j
YXRpb24gPSBmcmFtZUxvY2F0aW9uOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
c1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291bnQudW5z
YWZlR2V0KCk7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0
b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCk7CisgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNaW5D
b3VudCA9IHF1YW50aXR5TWluQ291bnQudmFsdWUoKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhD
b3VudC52YWx1ZSgpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJt
XS5hdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKLSAgICAgICAgbV9ib2R5RGlzanVu
Y3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWlu
Q291bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRU
ZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50LnVuc2FmZUdldCgp
OworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0
eU1pbkNvdW50ID0gcXVhbnRpdHlNaW5Db3VudC52YWx1ZSgpOworICAgICAgICBtX2JvZHlEaXNq
dW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlN
YXhDb3VudC52YWx1ZSgpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVy
bV0uYXRvbS5xdWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7CiAgICAgfQogCkBAIC0yMDkwLDI3
ICsyMDkwLDI3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoYXV0byYgdGVybSA6IGFsdGVy
bmF0aXZlLT5tX3Rlcm1zKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRpb25CT0woKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2Vk
IC0gdGVybS5pbnB1dFBvc2l0aW9uKS51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydGlvbkJPTCgoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9z
aXRpb24pLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25FT0w6Ci0gICAgICAgICAgICAg
ICAgICAgIGFzc2VydGlvbkVPTCgoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlu
cHV0UG9zaXRpb24pLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9u
RU9MKChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudmFs
dWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0aW9uV29yZEJvdW5kYXJ5KHRlcm0uaW52ZXJ0KCksIChjdXJyZW50Q291bnRB
bHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRpb25Xb3JkQm91bmRhcnkodGVybS5pbnZlcnQoKSwgKGN1cnJl
bnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKS52YWx1ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlcjoKLSAgICAgICAgICAgICAgICAgICAgYXRvbVBhdHRl
cm5DaGFyYWN0ZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCAoY3VycmVudENvdW50QWxyZWFkeUNo
ZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnVuc2FmZUdldCgpLCB0ZXJtLmZyYW1lTG9jYXRp
b24sIHRlcm0ucXVhbnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOworICAgICAgICAg
ICAgICAgICAgICBhdG9tUGF0dGVybkNoYXJhY3Rlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIsIChj
dXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudmFsdWUoKSwg
dGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRlcm0ucXVhbnRpdHlU
eXBlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3M6Ci0gICAgICAgICAgICAgICAgICAgIGF0
b21DaGFyYWN0ZXJDbGFzcyh0ZXJtLmNoYXJhY3RlckNsYXNzLCB0ZXJtLmludmVydCgpLCAoY3Vy
cmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnVuc2FmZUdldCgp
LCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0
eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBhdG9tQ2hhcmFjdGVyQ2xhc3ModGVybS5jaGFy
YWN0ZXJDbGFzcywgdGVybS5pbnZlcnQoKSwgKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0g
dGVybS5pbnB1dFBvc2l0aW9uKS52YWx1ZSgpLCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVh
bnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVCYWNrUmVmZXJl
bmNlOgotICAgICAgICAgICAgICAgICAgICBhdG9tQmFja1JlZmVyZW5jZSh0ZXJtLmJhY2tSZWZl
cmVuY2VTdWJwYXR0ZXJuSWQsIChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5w
dXRQb3NpdGlvbikudW5zYWZlR2V0KCksIHRlcm0uZnJhbWVMb2NhdGlvbiwgdGVybS5xdWFudGl0
eU1heENvdW50LCB0ZXJtLnF1YW50aXR5VHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGF0b21C
YWNrUmVmZXJlbmNlKHRlcm0uYmFja1JlZmVyZW5jZVN1YnBhdHRlcm5JZCwgKGN1cnJlbnRDb3Vu
dEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKS52YWx1ZSgpLCB0ZXJtLmZyYW1l
TG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGVGb3J3YXJkUmVmZXJlbmNlOgpAQCAtMjEyNSwxOSArMjEyNSwxOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzanVuY3Rpb25BbHJlYWR5Q2hlY2tlZENv
dW50ID0gdGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRl
cm5hdGl2ZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFy
ZW50aGVzZXNPbmNlOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZWdhdGVF
bmRJbnB1dE9mZnNldCA9IChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQ
b3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBk
ZWxlZ2F0ZUVuZElucHV0T2Zmc2V0ID0gKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVy
bS5pbnB1dFBvc2l0aW9uKS52YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXRvbVBh
cmVudGhlc2VzT25jZUJlZ2luKHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkLCB0ZXJtLmNh
cHR1cmUoKSwgZGlzanVuY3Rpb25BbHJlYWR5Q2hlY2tlZENvdW50ICsgZGVsZWdhdGVFbmRJbnB1
dE9mZnNldCwgdGVybS5mcmFtZUxvY2F0aW9uLCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBlbWl0RGlzanVuY3Rpb24o
dGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQs
IGRpc2p1bmN0aW9uQWxyZWFkeUNoZWNrZWRDb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgYXRvbVBhcmVudGhl
c2VzT25jZUVuZChkZWxlZ2F0ZUVuZElucHV0T2Zmc2V0LCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRl
cm0ucXVhbnRpdHlNaW5Db3VudCwgdGVybS5xdWFudGl0eU1heENvdW50LCB0ZXJtLnF1YW50aXR5
VHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5p
c1Rlcm1pbmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWxlZ2F0ZUVu
ZElucHV0T2Zmc2V0ID0gKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBv
c2l0aW9uKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRl
bGVnYXRlRW5kSW5wdXRPZmZzZXQgPSAoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJt
LmlucHV0UG9zaXRpb24pLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdG9tUGFy
ZW50aGVzZXNUZXJtaW5hbEJlZ2luKHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkLCB0ZXJt
LmNhcHR1cmUoKSwgZGlzanVuY3Rpb25BbHJlYWR5Q2hlY2tlZENvdW50ICsgZGVsZWdhdGVFbmRJ
bnB1dE9mZnNldCwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLmZyYW1lTG9jYXRpb24gKyBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFsKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gZW1pdERpc2p1bmN0aW9uKHRlcm0ucGFy
ZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkLCBkaXNqdW5j
dGlvbkFscmVhZHlDaGVja2VkQ291bnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21QYXJlbnRoZXNlc1Rlcm1p
bmFsRW5kKGRlbGVnYXRlRW5kSW5wdXRPZmZzZXQsIHRlcm0uZnJhbWVMb2NhdGlvbiwgdGVybS5x
dWFudGl0eU1pbkNvdW50LCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRlcm0ucXVhbnRpdHlUeXBl
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGRlbGVnYXRlRW5kSW5wdXRPZmZzZXQgPSAoY3VycmVudENvdW50QWxyZWFkeUNo
ZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZGVsZWdhdGVFbmRJbnB1dE9mZnNldCA9IChjdXJyZW50Q291bnRB
bHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbih0ZXJtLnBhcmVudGhl
c2VzLnN1YnBhdHRlcm5JZCwgdGVybS5jYXB0dXJlKCksIGRpc2p1bmN0aW9uQWxyZWFkeUNoZWNr
ZWRDb3VudCArIGRlbGVnYXRlRW5kSW5wdXRPZmZzZXQsIHRlcm0uZnJhbWVMb2NhdGlvbiwgMCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IGVtaXREaXNqdW5jdGlv
bih0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tl
ZCwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMjE0
OCw3ICsyMTQ4LDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246IHsKICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgYWx0ZXJuYXRpdmVGcmFtZUxvY2F0aW9uID0gdGVybS5mcmFtZUxvY2F0aW9uICsgWWFy
clN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbjsKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcG9zaXRpdmVJbnB1dE9mZnNldCA9IChjdXJyZW50Q291
bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aXZlSW5wdXRPZmZzZXQgPSAoY3VycmVudENv
dW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnZhbHVlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHVuY2hlY2tBbW91bnQgPSAwOwogICAgICAgICAgICAgICAg
ICAgICBpZiAocG9zaXRpdmVJbnB1dE9mZnNldCA+IHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rp
b24tPm1fbWluaW11bVNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuY2hlY2tBbW91
bnQgPSBwb3NpdGl2ZUlucHV0T2Zmc2V0IC0gdGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+
bV9taW5pbXVtU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmgKaW5kZXggY2U5MTI1M2EzODU4ZDFhOWViMjc5MDRkZjE1OTc2MGYyNmMxYzZmYy4uZjZm
YjBjN2FkMWFlODUyOGI2YmIwZDdhODBhZDBiMzY2ODhlOGQwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKQEAgLTExNSw4ICsxMTUsOCBAQCBzdHJ1
Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAgICAgYXRvbS5wYXR0ZXJuQ2hhcmFjdGVyID0gY2g7
CiAgICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwotICAgICAgICBhdG9t
LnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOwotICAgICAgICBh
dG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOworICAgICAg
ICBhdG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eUNvdW50LnZhbHVlKCk7CisgICAgICAg
IGF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5Q291bnQudmFsdWUoKTsKICAgICAgICAg
aW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOwogCiAgICAgICAgIHN3aXRjaCAocXVhbnRpdHlUeXBl
KSB7CkBAIC0xNTIsOCArMTUyLDggQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgYXRvbS5j
YXNlZENoYXJhY3Rlci5sbyA9IGxvOwogICAgICAgICBhdG9tLmNhc2VkQ2hhcmFjdGVyLmhpID0g
aGk7CiAgICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwotICAgICAgICBh
dG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOwotICAgICAg
ICBhdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOworICAg
ICAgICBhdG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eUNvdW50LnZhbHVlKCk7CisgICAg
ICAgIGF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5Q291bnQudmFsdWUoKTsKICAgICAg
ICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOwogICAgIH0KIApAQCAtMjE0LDE0ICsyMTQsMTQg
QEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICBzdGF0aWMgQnl0ZVRlcm0gQ2hlY2tJbnB1dChDaGVj
a2VkPHVuc2lnbmVkPiBjb3VudCkKICAgICB7CiAgICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZUNo
ZWNrSW5wdXQpOwotICAgICAgICB0ZXJtLmNoZWNrSW5wdXRDb3VudCA9IGNvdW50LnVuc2FmZUdl
dCgpOworICAgICAgICB0ZXJtLmNoZWNrSW5wdXRDb3VudCA9IGNvdW50LnZhbHVlKCk7CiAgICAg
ICAgIHJldHVybiB0ZXJtOwogICAgIH0KIAogICAgIHN0YXRpYyBCeXRlVGVybSBVbmNoZWNrSW5w
dXQoQ2hlY2tlZDx1bnNpZ25lZD4gY291bnQpCiAgICAgewogICAgICAgICBCeXRlVGVybSB0ZXJt
KFR5cGVVbmNoZWNrSW5wdXQpOwotICAgICAgICB0ZXJtLmNoZWNrSW5wdXRDb3VudCA9IGNvdW50
LnVuc2FmZUdldCgpOworICAgICAgICB0ZXJtLmNoZWNrSW5wdXRDb3VudCA9IGNvdW50LnZhbHVl
KCk7CiAgICAgICAgIHJldHVybiB0ZXJtOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAKaW5kZXggM2I1MzY5ZWE4YjIwYTdmYmRkNDkzMmZmMjA2OTc1ODIy
ZjlhNmQ1ZS4uZjQ1ZmQ5YjczYjQzYzNkYjliNDIxODNkNjM3ODk5ODBhMWMzYjFmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTU0MiwxMCArNTQyLDEwIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBhcyBhIHRlbXAgYWRkcmVzcyByZWdpc3Rlci4KICAg
ICAgICAgdW5zaWduZWQgbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9yQ2hhcmFjdGVyU2l6ZSA9IG1f
Y2hhclNpemUgPT0gQ2hhcjggPyAweDdmZmZmZmZmIDogMHgzZmZmZmZmZjsKICAgICAgICAgdW5z
aWduZWQgb2Zmc2V0QWRqdXN0QW1vdW50ID0gMHg0MDAwMDAwMDsKLSAgICAgICAgaWYgKG5lZ2F0
aXZlQ2hhcmFjdGVyT2Zmc2V0LnVuc2FmZUdldCgpID4gbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9y
Q2hhcmFjdGVyU2l6ZSkgeworICAgICAgICBpZiAobmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQudmFs
dWUoKSA+IG1heGltdW1OZWdhdGl2ZU9mZnNldEZvckNoYXJhY3RlclNpemUpIHsKICAgICAgICAg
ICAgIGJhc2UgPSB0ZW1wUmVnOwogICAgICAgICAgICAgbW92ZShpbnB1dCwgYmFzZSk7Ci0gICAg
ICAgICAgICB3aGlsZSAobmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQudW5zYWZlR2V0KCkgPiBtYXhp
bXVtTmVnYXRpdmVPZmZzZXRGb3JDaGFyYWN0ZXJTaXplKSB7CisgICAgICAgICAgICB3aGlsZSAo
bmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQudmFsdWUoKSA+IG1heGltdW1OZWdhdGl2ZU9mZnNldEZv
ckNoYXJhY3RlclNpemUpIHsKICAgICAgICAgICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG9m
ZnNldEFkanVzdEFtb3VudCksIGJhc2UpOwogICAgICAgICAgICAgICAgIGlmIChtX2NoYXJTaXpl
ICE9IENoYXI4KQogICAgICAgICAgICAgICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG9mZnNl
dEFkanVzdEFtb3VudCksIGJhc2UpOwpAQCAtNTUzLDEyICs1NTMsMTIgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBDaGVja2VkPGludDMyX3Q+
IGNoYXJhY3Rlck9mZnNldCgtc3RhdGljX2Nhc3Q8aW50MzJfdD4obmVnYXRpdmVDaGFyYWN0ZXJP
ZmZzZXQudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBjaGFyYWN0ZXJP
ZmZzZXQoLXN0YXRpY19jYXN0PGludDMyX3Q+KG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0LnZhbHVl
KCkpKTsKIAogICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKLSAgICAgICAgICAgIHJl
dHVybiBCYXNlSW5kZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc09uZSwgKGNoYXJhY3Rlck9mZnNl
dCAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihjaGFyKSkpLnVuc2FmZUdldCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBCYXNlSW5kZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc09uZSwgKGNo
YXJhY3Rlck9mZnNldCAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihjaGFyKSkpLnZhbHVl
KCkpOwogCi0gICAgICAgIHJldHVybiBCYXNlSW5kZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc1R3
bywgKGNoYXJhY3Rlck9mZnNldCAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihVQ2hhcikp
KS51bnNhZmVHZXQoKSk7CisgICAgICAgIHJldHVybiBCYXNlSW5kZXgoaW5wdXQsIGluZGV4UmVn
LCBUaW1lc1R3bywgKGNoYXJhY3Rlck9mZnNldCAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVv
ZihVQ2hhcikpKS52YWx1ZSgpKTsKICAgICB9CiAKICNpZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNT
SU9OUwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAg
IEp1bXBMaXN0IG1hdGNoRGVzdDsKICAgICAgICAgICAgIGlmICghdGVybS0+aW5wdXRQb3NpdGlv
bikKLSAgICAgICAgICAgICAgICBtYXRjaERlc3QuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBpbmRl
eCwgSW1tMzIobV9jaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpKSkpOworICAgICAgICAgICAgICAg
IG1hdGNoRGVzdC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIGluZGV4LCBJbW0zMihtX2NoZWNrZWRP
ZmZzZXQudmFsdWUoKSkpKTsKIAogICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uICsgMSwgY2hhcmFjdGVyKTsKICAgICAgICAgICAg
IG1hdGNoQ2hhcmFjdGVyQ2xhc3MoY2hhcmFjdGVyLCBtYXRjaERlc3QsIG1fcGF0dGVybi5uZXds
aW5lQ2hhcmFjdGVyQ2xhc3MoKSk7CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uKQogICAgICAgICAgICAgICAg
IG9wLm1fanVtcHMuYXBwZW5kKGp1bXAoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgb3AubV9qdW1wcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGluZGV4LCBJbW0zMiht
X2NoZWNrZWRPZmZzZXQudW5zYWZlR2V0KCkpKSk7CisgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGluZGV4LCBJbW0zMihtX2NoZWNrZWRPZmZzZXQu
dmFsdWUoKSkpKTsKICAgICAgICAgfQogICAgIH0KICAgICB2b2lkIGJhY2t0cmFja0Fzc2VydGlv
bkJPTChzaXplX3Qgb3BJbmRleCkKQEAgLTEwMzEsNyArMTAzMSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBjaGFyYWN0ZXIgPSByZWdUMDsKIAogICAg
ICAgICAgICAgSnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICAgICAgaWYgKHRlcm0tPmlucHV0
UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpKQorICAgICAgICAgICAgaWYg
KHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpCiAgICAgICAg
ICAgICAgICAgbWF0Y2hEZXN0LmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7CiAKICAgICAgICAgICAg
IHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hh
cmFjdGVyKTsKQEAgLTEwNDAsNyArMTA0MCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAg
ICAgICBtYXRjaERlc3QubGluayh0aGlzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG1fY2hlY2tlZE9mZnNldC51bnNhZmVHZXQoKSkK
KyAgICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG1fY2hlY2tlZE9mZnNldC52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG5vdEF0RW5kT2ZJbnB1
dCgpKTsKICAgICAgICAgICAgIC8vIEVyaywgcmVhbGx5IHNob3VsZCBwb2lzb24gb3V0IHRoZXNl
IGFsdGVybmF0aXZlcyBlYXJseS4gOi0vCiAgICAgICAgICAgICBlbHNlCkBAIC0xMDYwLDcgKzEw
NjAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNoYXJh
Y3RlciA9IHJlZ1QwOwogCi0gICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG1fY2hl
Y2tlZE9mZnNldC51bnNhZmVHZXQoKSkKKyAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9zaXRpb24g
PT0gbV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpCiAgICAgICAgICAgICBuZXh0SXNOb3RXb3JkQ2hh
ci5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwogCiAgICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVj
a2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKTsKQEAgLTEwODUsNyAr
MTA4NSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBKdW1wIGF0QmVnaW47CiAgICAgICAg
IEp1bXBMaXN0IG1hdGNoRGVzdDsKICAgICAgICAgaWYgKCF0ZXJtLT5pbnB1dFBvc2l0aW9uKQot
ICAgICAgICAgICAgYXRCZWdpbiA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleCwgSW1tMzIobV9jaGVj
a2VkT2Zmc2V0LnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICBhdEJlZ2luID0gYnJhbmNoMzIo
RXF1YWwsIGluZGV4LCBJbW0zMihtX2NoZWNrZWRPZmZzZXQudmFsdWUoKSkpOwogICAgICAgICBy
ZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gKyAxLCBj
aGFyYWN0ZXIpOwogCiAgICAgICAgIENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNoYXJhY3RlckNs
YXNzOwpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgbG9hZEZyb21GcmFtZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
QmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpLCBjaGFyYWN0ZXJPclRlbXApOwogICAg
ICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JUZW1wKTsKICAg
ICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0Zy
YW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRl
eCgpKTsKLSAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1t
MzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSksIGNoYXJhY3Rlck9yVGVtcCkp
OworICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0
ZXJtLT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpLCBjaGFyYWN0ZXJPclRlbXApKTsKICAgICAg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBz
aXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7CiAgICAgICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0
ZXJuVGVtcCk7CiAgICAgICAgICAgICAgICAganVtcChvdXRlckxvb3ApOwpAQCAtMTI0OSw3ICsx
MjQ5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIo
MSksIGNoYXJhY3Rlck9yVGVtcCk7CiAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVy
T3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVy
ZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0
eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCi0gICAgICAgICAgICAgICAgbWF0Y2hlcy5h
cHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudW5zYWZl
R2V0KCkpLCBjaGFyYWN0ZXJPclRlbXApKTsKKyAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVu
ZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC52YWx1ZSgpKSwg
Y2hhcmFjdGVyT3JUZW1wKSk7CiAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChz
dWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7CiAgICAgICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBz
aXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKIApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwog
ICAgICAgICAgICAgbG9hZEZyb21GcmFtZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNr
VHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpLCBtYXRjaEFtb3VudCk7
CiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmlu
aXRlKQotICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1
YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCkpLCBtYXRjaEFtb3Vu
dCkpOworICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1
YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudmFsdWUoKSksIG1hdGNoQW1vdW50KSk7
CiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIG1hdGNoQW1vdW50KTsKICAgICAg
ICAgICAgIHN0b3JlVG9GcmFtZShtYXRjaEFtb3VudCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9u
ICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAg
ICAgICAgICBqdW1wKG9wLm1fcmVlbnRyeSk7CkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgbW92ZShpbmRleCwgY291bnRSZWdpc3Rlcik7CiAgICAgICAgIENo
ZWNrZWQ8dW5zaWduZWQ+IHNjYWxlZE1heENvdW50ID0gdGVybS0+cXVhbnRpdHlNYXhDb3VudDsK
ICAgICAgICAgc2NhbGVkTWF4Q291bnQgKj0gVV9JU19CTVAoY2gpID8gMSA6IDI7Ci0gICAgICAg
IHN1YjMyKEltbTMyKHNjYWxlZE1heENvdW50LnVuc2FmZUdldCgpKSwgY291bnRSZWdpc3Rlcik7
CisgICAgICAgIHN1YjMyKEltbTMyKHNjYWxlZE1heENvdW50LnZhbHVlKCkpLCBjb3VudFJlZ2lz
dGVyKTsKIAogICAgICAgICBMYWJlbCBsb29wKHRoaXMpOwogICAgICAgICByZWFkQ2hhcmFjdGVy
KG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3VudCwg
Y2hhcmFjdGVyLCBjb3VudFJlZ2lzdGVyKTsKQEAgLTE2NDIsNyArMTY0Miw3IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgPT0gcXVhbnRp
ZnlJbmZpbml0ZSkKICAgICAgICAgICAgICAgICBqdW1wKGxvb3ApOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0z
Mih0ZXJtLT5xdWFudGl0eU1heENvdW50LnVuc2FmZUdldCgpKSkubGlua1RvKGxvb3AsIHRoaXMp
OworICAgICAgICAgICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0z
Mih0ZXJtLT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpKS5saW5rVG8obG9vcCwgdGhpcyk7CiAK
ICAgICAgICAgICAgIGZhaWx1cmVzLmxpbmsodGhpcyk7CiAgICAgICAgIH0KQEAgLTE2OTgsNyAr
MTY5OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgSnVtcExpc3Qgbm9uR3JlZWR5
RmFpbHVyZXM7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQoYXRFbmRPZklu
cHV0KCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRp
ZnlJbmZpbml0ZSkKLSAgICAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQoYnJh
bmNoMzIoRXF1YWwsIGNvdW50UmVnaXN0ZXIsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5k
KGJyYW5jaDMyKEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENv
dW50LnZhbHVlKCkpKSk7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQoanVt
cElmQ2hhck5vdEVxdWFscyhjaCwgbV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlv
biwgY2hhcmFjdGVyKSk7CiAKICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5k
ZXgpOwpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGlmICht
X2RlY29kZVN1cnJvZ2F0ZVBhaXJzICYmIHRlcm0tPmNoYXJhY3RlckNsYXNzLT5oYXNPbmx5Tm9u
Qk1QQ2hhcmFjdGVycygpICYmICF0ZXJtLT5pbnZlcnQoKSkKICAgICAgICAgICAgIHNjYWxlZE1h
eENvdW50ICo9IDI7CiAjZW5kaWYKLSAgICAgICAgc3ViMzIoSW1tMzIoc2NhbGVkTWF4Q291bnQu
dW5zYWZlR2V0KCkpLCBjb3VudFJlZ2lzdGVyKTsKKyAgICAgICAgc3ViMzIoSW1tMzIoc2NhbGVk
TWF4Q291bnQudmFsdWUoKSksIGNvdW50UmVnaXN0ZXIpOwogCiAgICAgICAgIExhYmVsIGxvb3Ao
dGhpcyk7CiAgICAgICAgIEp1bXBMaXN0IG1hdGNoRGVzdDsKQEAgLTE4ODIsNyArMTg4Miw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIGNvdW50UmVn
aXN0ZXIpOwogCiAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5
SW5maW5pdGUpIHsKLSAgICAgICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3VudFJlZ2lzdGVy
LCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50LnVuc2FmZUdldCgpKSkubGlua1RvKGxvb3As
IHRoaXMpOworICAgICAgICAgICAgYnJhbmNoMzIoTm90RXF1YWwsIGNvdW50UmVnaXN0ZXIsIElt
bTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudmFsdWUoKSkpLmxpbmtUbyhsb29wLCB0aGlzKTsK
ICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChqdW1wKCkpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGp1bXAobG9vcCk7CkBAIC0xOTg2LDcgKzE5ODYsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgbG9hZEZyb21GcmFtZSh0ZXJtLT5mcmFtZUxvY2F0aW9uICsgQmFja1RyYWNr
SW5mb0NoYXJhY3RlckNsYXNzOjptYXRjaEFtb3VudEluZGV4KCksIGNvdW50UmVnaXN0ZXIpOwog
CiAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7Ci0gICAg
ICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgY291bnRSZWdpc3Rl
ciwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSkpKTsKKyAgICAgICAg
bm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJ
bW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpKSk7CiAKICAgICAgICAgSnVtcExp
c3QgbWF0Y2hEZXN0OwogICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CkBAIC0yMzczLDcgKzIzNzMsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAoKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBR
dWFudGlmaWVyRml4ZWRDb3VudCkgJiYgKHRlcm0tPnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGVQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgb3AubV9jaGVja0Fk
anVzdCAtPSBkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICBpZiAo
b3AubV9jaGVja0FkanVzdCkKLSAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQo
anVtcElmTm9BdmFpbGFibGVJbnB1dChvcC5tX2NoZWNrQWRqdXN0LnVuc2FmZUdldCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5w
dXQob3AubV9jaGVja0FkanVzdC52YWx1ZSgpKSk7CiAKICAgICAgICAgICAgICAgICBtX2NoZWNr
ZWRPZmZzZXQgKz0gb3AubV9jaGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTI0MjAsNyArMjQyMCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGlmICgo
dGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50KSAmJiAodGVybS0+dHlw
ZSAhPSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb24pKQogICAgICAgICAg
ICAgICAgICAgICBvcC5tX2NoZWNrQWRqdXN0IC09IGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXpl
OwogICAgICAgICAgICAgICAgIGlmIChvcC5tX2NoZWNrQWRqdXN0KQotICAgICAgICAgICAgICAg
ICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KG9wLm1fY2hlY2tB
ZGp1c3QudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBl
bmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChvcC5tX2NoZWNrQWRqdXN0LnZhbHVlKCkpKTsKIAog
ICAgICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbb3AubV9wcmV2aW91c09wXTsK
ICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gbGFzdE9wLm1fY2hlY2tBZGp1c3Q7
CkBAIC0yNDk0LDcgKzI0OTQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAv
LyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRoZSByZXN1bHRzIGFycmF5
IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCiAgICAgICAgICAgICAgICAg
aWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMp
IHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2Vk
T2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlu
cHV0UG9zaXRpb24pLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFu
dGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnB1dE9mZnNldCArPSB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVt
U2l6ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CkBAIC0yNTI0LDcg
KzI1MjQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBvZmZzZXRzIG9u
bHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRoZSByZXN1bHRzIGFycmF5IGlzCiAgICAgICAg
ICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNh
cHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2VkT2Zmc2V0IC0gdGVy
bS0+aW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGlucHV0T2Zmc2V0ID0gKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24p
LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7
CkBAIC0yNjMxLDcgKzI2MzEsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAv
LyBiZWluZyBhY2Nlc3NlZC4KICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpICYm
IGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5ID0gcmVnVDA7Ci0gICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlu
cHV0UG9zaXRpb24pLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnB1dE9mZnNldCA9IChtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uKS52YWx1
ZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50
aWZpZXJGaXhlZENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0g
dGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewpAQCAtMjY3Myw3ICsyNjczLDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxl
TW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVnaXN0ZXJJRCBpbmRleFRlbXBvcmFyeSA9IHJlZ1QwOwogICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2VkT2Zm
c2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0
UG9zaXRpb24pLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRl
bXBvcmFyeSk7CkBAIC0yNjg3LDcgKzI2ODcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgICAgICAvLyBwYXJlbnRoZXNlcywgbGluayB0aGUganVtcCBmcm9tIGJlZm9yZSB0aGUgc3Vi
cGF0dGVybiB0byBoZXJlLgogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUg
PT0gUXVhbnRpZmllckdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJhbmNoMzIoQmVsb3csIGNvdW50VGVtcG9yYXJ5LCBJbW0zMih0ZXJtLT5xdWFudGl0eU1h
eENvdW50LnVuc2FmZUdldCgpKSkubGlua1RvKGJlZ2luT3AubV9yZWVudHJ5LCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaDMyKEJlbG93LCBjb3VudFRlbXBvcmFyeSwgSW1t
MzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC52YWx1ZSgpKSkubGlua1RvKGJlZ2luT3AubV9yZWVu
dHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAganVtcChiZWdpbk9wLm1fcmVlbnRyeSk7CiAgICAgICAgICAgICAgICAgICAgIApAQCAt
MjcxNSw3ICsyNzE1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgCiAgICAgICAgICAgICAgICAgb3AubV9jaGVja0FkanVzdCA9IG1fY2hlY2tlZE9mZnNldCAt
IHRlcm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgaWYgKG9wLm1fY2hlY2tBZGp1
c3QpCi0gICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKG9wLm1fY2hlY2tBZGp1c3QudW5z
YWZlR2V0KCkpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKG9wLm1f
Y2hlY2tBZGp1c3QudmFsdWUoKSksIGluZGV4KTsKIAogICAgICAgICAgICAgICAgIG1fY2hlY2tl
ZE9mZnNldCAtPSBvcC5tX2NoZWNrQWRqdXN0OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzA1Myw3ICszMDUzLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgaWYgKG9w
Lm1fY2hlY2tBZGp1c3QpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNl
cyB3aGVyZSB3ZSBuZWVkIHRvIGxpbmsgdGhlIGJhY2t0cmFja3MgaGVyZS4KICAgICAgICAgICAg
ICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rKHRoaXMpOwotICAgICAgICAgICAgICAg
ICAgICBzdWIzMihJbW0zMihvcC5tX2NoZWNrQWRqdXN0LnVuc2FmZUdldCgpKSwgaW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihvcC5tX2NoZWNrQWRqdXN0LnZhbHVlKCkp
LCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNMYXN0QWx0ZXJuYXRpdmUpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHRoYXQgaXMgbm90IHRo
ZSBsYXN0IHNob3VsZCBqdW1wIHRvIGl0cyBzdWNjZXNzb3IuCiAgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wKG5leHRPcC5tX3JlZW50cnkpOwpAQCAtMzMzNiw3ICszMzM2LDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1h
eENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9Q
YXJlbnRoZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpLCBjb3VudFRlbXBvcmFyeSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZWVkZWRNYXRjaExpbWl0LmFwcGVuZChicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIGNvdW50VGVtcG9yYXJ5LCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50
LnVuc2FmZUdldCgpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZGVkTWF0
Y2hMaW1pdC5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBjb3VudFRlbXBvcmFyeSwgSW1t
MzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC52YWx1ZSgpKSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2gzMihBYm92ZSwgaW5kZXgs
IGJlZ2luVGVtcG9yYXJ5KS5saW5rVG8oYmVnaW5PcC5tX3JlZW50cnksIHRoaXMpOwpAQCAtMzM2
Niw3ICszMzY2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICBtX2Jh
Y2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9w
Lm1fY2hlY2tBZGp1c3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihvcC5t
X2NoZWNrQWRqdXN0LnVuc2FmZUdldCgpKSwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkMzIoSW1tMzIob3AubV9jaGVja0FkanVzdC52YWx1ZSgpKSwgaW5kZXgpOwogCiAgICAg
ICAgICAgICAgICAgICAgIC8vIEluIGFuIGludmVydGVkIGFzc2VydGlvbiBmYWlsdXJlIHRvIG1h
dGNoIHRoZSBzdWJwYXR0ZXJuCiAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHRyZWF0ZWQgYXMg
YSBzdWNjZXNzZnVsIG1hdGNoIC0ganVtcCB0byB0aGUgZW5kIG9mIHRoZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCmluZGV4IGYwNzc3ZDRhZmVhZGY5MGEzMTI1N2U2MmY2
ZmRhNzJlMGNiMDc2YzAuLjQ2MjlkYzg3NDMzNjI0N2E2ZWY1ZWJkN2ZlZWFhN2Q1ZWFjN2NhZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKQEAgLTEwODMsNyArMTA4
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PiBuID0gY29uc3VtZURpZ2l0KCk7CiAgICAgICAgIHdoaWxlIChwZWVrSXNEaWdpdCgpKQogICAg
ICAgICAgICAgbiA9IG4gKiAxMCArIGNvbnN1bWVEaWdpdCgpOwotICAgICAgICByZXR1cm4gbi5o
YXNPdmVyZmxvd2VkKCkgPyBxdWFudGlmeUluZmluaXRlIDogbi51bnNhZmVHZXQoKTsKKyAgICAg
ICAgcmV0dXJuIG4uaGFzT3ZlcmZsb3dlZCgpID8gcXVhbnRpZnlJbmZpbml0ZSA6IG4udmFsdWUo
KTsKICAgICB9CiAKICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jcHJvZC1hbm5leEIt
TGVnYWN5T2N0YWxFc2NhcGVTZXF1ZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCmluZGV4IDIxZDc1YjE1OWFhN2RlMzk4OTdiNDgzZjE3OTRkZTJjNzM1YWYy
MWYuLjQ1Y2M4ZjYxMWY4YTNmNGI1ZTJiMzA5MDZkYmI0ZWVmNzdlZjdlMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTgwMSwxMSArODAxLDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25CT0w6
CiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MOgogICAgICAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKLSAgICAg
ICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNh
ZmVHZXQoKTsKKyAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbi52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKLSAgICAgICAgICAgICAgICB0
ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAg
ICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi52
YWx1ZSgpOwogICAgICAgICAgICAgICAgIHRlcm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxs
RnJhbWVTaXplOwogICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJT
dGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U7CiAgICAgICAgICAgICAgICAg
YWx0ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0gZmFsc2U7CkBAIC04MTUsNyArODE1LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlcjoKLSAgICAgICAgICAgICAgICB0ZXJtLmlucHV0
UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAg
ICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi52YWx1ZSgpOwog
ICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRD
b3VudCkgewogICAgICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50
Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUg
Kz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3RlcjsKQEAgLTgz
MSw3ICs4MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzczoKLSAgICAgICAgICAgICAg
ICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsK
KyAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlv
bi52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFu
dGlmaWVyRml4ZWRDb3VudCkgewogICAgICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRp
b24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENh
bGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQ2hhcmFjdGVyQ2xh
c3M7CkBAIC04NTgsMjMgKzg1OCwyMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgdGVybS5m
cmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgaWYg
KHRlcm0ucXVhbnRpdHlNYXhDb3VudCA9PSAxICYmICF0ZXJtLnBhcmVudGhlc2VzLmlzQ29weSkg
ewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tT
cGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2U7Ci0gICAgICAgICAgICAgICAgICAg
IGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5j
dGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdl
dCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGVycm9yID0g
c2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3Vy
cmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnZhbHVlKCksIGN1cnJlbnRD
YWxsRnJhbWVTaXplKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgcXVhbnRpdHkgaXMgZml4ZWQsIHRoZW4gcHJlLWNoZWNrIGl0cyBtaW5pbXVtIHNp
emUuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlm
aWVyRml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnB1dFBvc2l0
aW9uICs9IHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7Ci0gICAg
ICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9u
LnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBj
dXJyZW50SW5wdXRQb3NpdGlvbi52YWx1ZSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
dGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhl
c2VzVGVybWluYWw7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlv
bk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNp
emUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6
ZSk7CisgICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHMo
dGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJl
bnRJbnB1dFBvc2l0aW9uLnZhbHVlKCksIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0g
Y3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnZhbHVlKCk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9u
ID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAg
IHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnZhbHVlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9y
QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOwotICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNl
dHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJl
bnRDYWxsRnJhbWVTaXplLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVu
dENhbGxGcmFtZVNpemUpOworICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVu
Y3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJh
bWVTaXplLCBjdXJyZW50SW5wdXRQb3NpdGlvbi52YWx1ZSgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNFcnJvcihlcnJvcikpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQpAQCAtODgzLDkg
Kzg4Myw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246Ci0gICAgICAgICAg
ICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0
KCk7CisgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9z
aXRpb24udmFsdWUoKTsKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJy
ZW50Q2FsbEZyYW1lU2l6ZTsKLSAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rp
b25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVT
aXplICsgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlv
biwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVTaXpl
KTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0u
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplICsgWWFyclN0YWNr
U3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgY3VycmVudElucHV0
UG9zaXRpb24udmFsdWUoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwogICAgICAgICAgICAgICAg
IGlmIChoYXNFcnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkwMyw3ICs5MDMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZTo6T2Zmc2V0VG9vTGFyZ2U7CiAgICAgICAgIH0K
IAotICAgICAgICBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA9IChjdXJyZW50SW5wdXRQb3Np
dGlvbiAtIGluaXRpYWxJbnB1dFBvc2l0aW9uKS51bnNhZmVHZXQoKTsKKyAgICAgICAgYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUgPSAoY3VycmVudElucHV0UG9zaXRpb24gLSBpbml0aWFsSW5w
dXRQb3NpdGlvbikudmFsdWUoKTsKICAgICAgICAgbmV3Q2FsbEZyYW1lU2l6ZSA9IGN1cnJlbnRD
YWxsRnJhbWVTaXplOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQpAQCAtMTI1OSwxMiAr
MTI1OSwxMiBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcihQcmludFN0cmVhbSYg
b3V0KQogewogICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQgJiYg
cXVhbnRpdHlNaW5Db3VudCA9PSAxICYmIHF1YW50aXR5TWF4Q291bnQgPT0gMSkKICAgICAgICAg
cmV0dXJuOwotICAgIG91dC5wcmludCgiIHsiLCBxdWFudGl0eU1pbkNvdW50LnVuc2FmZUdldCgp
KTsKKyAgICBvdXQucHJpbnQoIiB7IiwgcXVhbnRpdHlNaW5Db3VudC52YWx1ZSgpKTsKICAgICBp
ZiAocXVhbnRpdHlNaW5Db3VudCAhPSBxdWFudGl0eU1heENvdW50KSB7CiAgICAgICAgIGlmIChx
dWFudGl0eU1heENvdW50ID09IFVJTlRfTUFYKQogICAgICAgICAgICAgb3V0LnByaW50KCIsLi4u
Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludCgiLCIsIHF1YW50aXR5TWF4
Q291bnQudW5zYWZlR2V0KCkpOworICAgICAgICAgICAgb3V0LnByaW50KCIsIiwgcXVhbnRpdHlN
YXhDb3VudC52YWx1ZSgpKTsKICAgICB9CiAgICAgb3V0LnByaW50KCJ9Iik7CiAgICAgaWYgKHF1
YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGlj
LmgKaW5kZXggNzNhY2RjNzJkNWNiY2M2MWRhN2VjNjIzM2MyYzVjZTc2NDgyOWQyNS4uMmM2MjM5
Y2QxNDJkNDE4MmViNTA2MjZkMjViNzg1Nzc3MTBmMjg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oCkBAIC03MzQsMTYgKzczNCwxNiBAQCBwdWJsaWM6CiAKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxv
d2VkKCkpCisgICAgICAgIGlmIChVTkxJS0VMWSh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpKQogICAg
ICAgICAgICAgdGhpcy0+Y3Jhc2goKTsKICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgfQog
Ci0gICAgLy8gVmFsdWUgYWNjZXNzb3JzLiB1bnNhZmVHZXQoKSB3aWxsIGNyYXNoIGlmIHRoZXJl
J3MgYmVlbiBhbiBvdmVyZmxvdy4KKyAgICAvLyBWYWx1ZSBhY2Nlc3NvcnMuIHZhbHVlKCkgd2ls
bCBjcmFzaCBpZiB0aGVyZSdzIGJlZW4gYW4gb3ZlcmZsb3cuCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSA9IFQ+Ci0gICAgVSB1bnNhZmVHZXQoKSBjb25zdAorICAgIFUgdmFsdWUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgaWYgKFVO
TElLRUxZKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgICAgICB0aGlzLT5jcmFzaCgp
OwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VT4obV92YWx1ZSk7CiAgICAgfQpAQCAtODA5
LDcgKzgwOSw3IEBAIHB1YmxpYzoKICAgICAvLyBFcXVhbGl0eSBjb21wYXJpc29ucwogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPT0oQ2hlY2tlZDxULCBWPiByaHMpCiAg
ICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPT0gcmhzLnVuc2FmZUdldCgpOworICAg
ICAgICByZXR1cm4gdmFsdWUoKSA9PSByaHMudmFsdWUoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgcmhzKQpAQCAtODIxLDcgKzgyMSw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gYm9v
bCBvcGVyYXRvcj09KENoZWNrZWQ8VSwgVj4gcmhzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHVu
c2FmZUdldCgpID09IENoZWNrZWQocmhzLnVuc2FmZUdldCgpKTsKKyAgICAgICAgcmV0dXJuIHZh
bHVlKCkgPT0gQ2hlY2tlZChyaHMudmFsdWUoKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3IhPShVIHJocykKQEAgLTgzMiw0MiArODMyLDQyIEBAIHB1
YmxpYzoKICAgICAvLyBPdGhlciBjb21wYXJpc29ucwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBW
PiBib29sIG9wZXJhdG9yPChDaGVja2VkPFQsIFY+IHJocykgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiB1bnNhZmVHZXQoKSA8IHJocy51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIHZh
bHVlKCkgPCByaHMudmFsdWUoKTsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPChUIHJocykg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA8IHJoczsKKyAgICAgICAg
cmV0dXJuIHZhbHVlKCkgPCByaHM7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+
IGJvb2wgb3BlcmF0b3I8PShDaGVja2VkPFQsIFY+IHJocykgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiB1bnNhZmVHZXQoKSA8PSByaHMudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiB2
YWx1ZSgpIDw9IHJocy52YWx1ZSgpOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I8PShUIHJo
cykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA8PSByaHM7CisgICAg
ICAgIHJldHVybiB2YWx1ZSgpIDw9IHJoczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVj4gYm9vbCBvcGVyYXRvcj4oQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPiByaHMudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVy
biB2YWx1ZSgpID4gcmhzLnZhbHVlKCk7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj4oVCBy
aHMpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPiByaHM7CisgICAg
ICAgIHJldHVybiB2YWx1ZSgpID4gcmhzOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBWPiBib29sIG9wZXJhdG9yPj0oQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPj0gcmhzLnVuc2FmZUdldCgpOworICAgICAgICByZXR1
cm4gdmFsdWUoKSA+PSByaHMudmFsdWUoKTsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPj0o
VCByaHMpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPj0gcmhzOwor
ICAgICAgICByZXR1cm4gdmFsdWUoKSA+PSByaHM7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudEJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYv
Q29uY3VycmVudEJ1ZmZlci5oCmluZGV4IDJjMDI5NmQ1NTk2YTE0OGFmYzY2MTJkMjVmNDY1NDI4
ZGY4NDc0MjYuLjYxZDg4NmU1YjNkZDVlMmU4MTI3OTQ1NGZkNWI4YWUyNGQ4NDA5MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Db25jdXJyZW50QnVmZmVyLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAg
ICAgICBDaGVja2VkPHNpemVfdD4gb2JqZWN0U2l6ZSA9IHNpemVvZihUKTsKICAgICAgICAgb2Jq
ZWN0U2l6ZSAqPSBzaXplOwogICAgICAgICBvYmplY3RTaXplICs9IHN0YXRpY19jYXN0PHNpemVf
dD4oT0JKRUNUX09GRlNFVE9GKEFycmF5LCBkYXRhKSk7Ci0gICAgICAgIEFycmF5KiByZXN1bHQg
PSBzdGF0aWNfY2FzdDxBcnJheSo+KENvbmN1cnJlbnRCdWZmZXJNYWxsb2M6Om1hbGxvYyhvYmpl
Y3RTaXplLnVuc2FmZUdldCgpKSk7CisgICAgICAgIEFycmF5KiByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxBcnJheSo+KENvbmN1cnJlbnRCdWZmZXJNYWxsb2M6Om1hbGxvYyhvYmplY3RTaXplLnZhbHVl
KCkpKTsKICAgICAgICAgcmVzdWx0LT5zaXplID0gc2l6ZTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IGU0ZWI4NDM1ZjE5YTk5OGRkMjdlNmRm
N2U4ZmFiZGVjMTM1ZGUyYjMuLjI3MTM4NDRiZTRlNzdlOGE5YjU5YWNjZjJmOTBkYWRhYjZmY2Rl
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCogZmFzdENh
bGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICBBU1NFUlRf
SVNfV0lUSElOX0xJTUlUKG51bUVsZW1lbnRzICogZWxlbWVudFNpemUpOwogICAgIENoZWNrZWQ8
c2l6ZV90PiBjaGVja2VkU2l6ZSA9IGVsZW1lbnRTaXplOwogICAgIGNoZWNrZWRTaXplICo9IG51
bUVsZW1lbnRzOwotICAgIHZvaWQqIHJlc3VsdCA9IGZhc3RaZXJvZWRNYWxsb2MoY2hlY2tlZFNp
emUudW5zYWZlR2V0KCkpOworICAgIHZvaWQqIHJlc3VsdCA9IGZhc3RaZXJvZWRNYWxsb2MoY2hl
Y2tlZFNpemUudmFsdWUoKSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIENSQVNIKCk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxOCw3ICs2MTgsNyBAQCBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKQog
ICAgIGNoZWNrZWRTaXplICo9IG51bUVsZW1lbnRzOwogICAgIGlmIChjaGVja2VkU2l6ZS5oYXNP
dmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB0cnlGYXN0
WmVyb2VkTWFsbG9jKGNoZWNrZWRTaXplLnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gdHJ5RmFz
dFplcm9lZE1hbGxvYyhjaGVja2VkU2l6ZS52YWx1ZSgpKTsKIH0KIAogVHJ5TWFsbG9jUmV0dXJu
VmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogb2JqZWN0LCBzaXplX3QgbmV3U2l6ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0dpZ2Fj
YWdlLmNwcAppbmRleCBhNjFhZGYyNGQyZjY2NjcxNWQxNjc2ODExMzEzMGQyZDVjNzc5YmQ4Li43
MGY1NzMyNzQ0ODYwYmM0MjMxMjgxNGU0NmQ2NTcyNGEzMTg0Y2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3Bw
CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCogdHJ5TWFsbG9jQXJyYXkoS2luZCBraW5kLCBzaXpl
X3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICBjaGVja2VkU2l6ZSAqPSBu
dW1FbGVtZW50czsKICAgICBpZiAoY2hlY2tlZFNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdHJ5TWFsbG9jKGtpbmQsIGNoZWNrZWRTaXpl
LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gdHJ5TWFsbG9jKGtpbmQsIGNoZWNrZWRTaXplLnZh
bHVlKCkpOwogfQogCiB2b2lkKiBtYWxsb2MoS2luZCBraW5kLCBzaXplX3Qgc2l6ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYvVVJM
SGVscGVycy5jcHAKaW5kZXggOWMxNWU3ZjFmMDkwNGNiMTQ5MDY3NTJiZTdiNzZhNjgwY2ZmNzVl
MS4uZGU0NmQ5OGYxYmEyZDM5MWJmNzc2MzI2MWNjOTk5YzQ2M2Q4OWI2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMSGVs
cGVycy5jcHAKQEAgLTgzNSw3ICs4MzUsNyBAQCBTdHJpbmcgdXNlclZpc2libGVVUkwoY29uc3Qg
Q1N0cmluZyYgdXJsKQogICAgIGJ1ZmZlckxlbmd0aCA9IGJ1ZmZlckxlbmd0aCAqIDMgKyAxOyAv
LyBUaGUgYnVmZmVyIHNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hh
cmFjdGVyLgogICAgIGlmIChidWZmZXJMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICBy
ZXR1cm4geyB9OwotICAgIFZlY3RvcjxjaGFyLCB1cmxCeXRlc0J1ZmZlckxlbmd0aD4gYWZ0ZXIo
YnVmZmVyTGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICBWZWN0b3I8Y2hhciwgdXJsQnl0ZXNCdWZm
ZXJMZW5ndGg+IGFmdGVyKGJ1ZmZlckxlbmd0aC52YWx1ZSgpKTsKIAogICAgIGNoYXIqIHEgPSBh
ZnRlci5kYXRhKCk7CiAgICAgewpAQCAtODc1LDcgKzg3NSw3IEBAIFN0cmluZyB1c2VyVmlzaWJs
ZVVSTChjb25zdCBDU3RyaW5nJiB1cmwpCiAgICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJh
Y2sgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCiAgICAgICAgIC8vIGFzIHdlIGNv
bnZlcnQuCiAgICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAg
ICAgIGNoYXIqIHAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGgudW5zYWZlR2V0KCkgLSBh
ZnRlcmxlbmd0aCAtIDE7CisgICAgICAgIGNoYXIqIHAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJM
ZW5ndGgudmFsdWUoKSAtIGFmdGVybGVuZ3RoIC0gMTsKICAgICAgICAgbWVtbW92ZShwLCBhZnRl
ci5kYXRhKCksIGFmdGVybGVuZ3RoICsgMSk7IC8vIGNvcGllcyB0cmFpbGluZyAnXDAnCiAgICAg
ICAgIGNoYXIqIHEgPSBhZnRlci5kYXRhKCk7CiAgICAgICAgIHdoaWxlICgqcCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBh
cnNlci5jcHAKaW5kZXggYmUxYTdlNjcxMGMwMDMyNjUyZTQ4MzgwOTRlZTBlYzdmMmM4OTk3Yy4u
MTVhNjhiMzMxZmEwMDFmNWY5MTEwYTM1MjYxNDE2YTViMTJjMWRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIu
Y3BwCkBAIC0yMTY1LDcgKzIxNjUsNyBAQCBFeHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJ
UHY0UGllY2VQYXJzaW5nRXJyb3I+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UoQwogICAgICAg
ICB9CiAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7CiAgICAgICAgICAgICBBU1NFUlQo
IXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZl
R2V0KCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKICAgICAgICAgfQogICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CiAgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgpA
QCAtMjIxNyw3ICsyMjE3LDcgQEAgRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBp
ZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlKEMKICAgICAgICAgfQog
ICAgIH0KICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgcmV0dXJuIHZh
bHVlLnVuc2FmZUdldCgpOworICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwogfQogCiBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB1aW50NjRfdCBwb3cyNTYoc2l6ZV90IGV4cG9uZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFy
cmF5LmgKaW5kZXggNTQ0YjhkZmY4MGQyYWZmNzQ2MjEyNTYxN2EzYjllN2E4NTYxZjdlZS4uNWJj
OGQ4YjQxMzkyZTA0ZjUwZDQ5NDI2YjhmMGI5N2U4MzlkNDdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVW5pcXVlQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5o
CkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBVbmlxdWVBcnJheU1ha2VyPHRydWUsIFQ+IHsKICAg
ICAgICAgLy8gRG8gbm90IHVzZSBwbGFjZW1lbnQgbmV3IGxpa2UgYG5ldyAoc3RvcmFnZSkgVFtz
aXplXSgpYC4gYG5ldyBUW3NpemVdKClgIHJlcXVpcmVzCiAgICAgICAgIC8vIGxhcmdlciBzdG9y
YWdlIHRoYW4gdGhlIGBzaXplb2YoVCkgKiBzaXplYCBzdG9yYWdlIHNpbmNlIGl0IHdhbnQgdG8g
c3RvcmUgYHNpemVgCiAgICAgICAgIC8vIHRvIHNvbWV3aGVyZS4KLSAgICAgICAgVCogc3RvcmFn
ZSA9IHN0YXRpY19jYXN0PFQqPihVbmlxdWVBcnJheU1hbGxvYzo6bWFsbG9jKChDaGVja2VkPHNp
emVfdD4oc2l6ZW9mKFQpKSAqIHNpemUpLnVuc2FmZUdldCgpKSk7CisgICAgICAgIFQqIHN0b3Jh
Z2UgPSBzdGF0aWNfY2FzdDxUKj4oVW5pcXVlQXJyYXlNYWxsb2M6Om1hbGxvYygoQ2hlY2tlZDxz
aXplX3Q+KHNpemVvZihUKSkgKiBzaXplKS52YWx1ZSgpKSk7CiAgICAgICAgIFZlY3RvclR5cGVP
cGVyYXRpb25zPFQ+Ojppbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBzaXplKTsKICAgICAg
ICAgcmV0dXJuIFJlc3VsdFR5cGUoc3RvcmFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5tbQppbmRleCA0NWQyYjRkYzRiOGE4ZGZmMmE1ZjE5ZTg2YmYwODEyYmQwNDQ2MWI0
Li45YzgyZjhmMTQ4N2I0ODU1YmM4Y2ZhZTcyNzZjMzZmMWUyYTY0ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBOU0RhdGEgKmRh
dGFXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgaWYgKG1hbGxvY0xl
bmd0aC5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgY2hh
ciogb3V0Qnl0ZXMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhtYWxsb2NMZW5ndGgudW5z
YWZlR2V0KCkpKTsKKyAgICBjaGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFs
bG9jKG1hbGxvY0xlbmd0aC52YWx1ZSgpKSk7CiAgICAgY2hhciogcCA9IG91dEJ5dGVzOwogICAg
IGludCBvdXRMZW5ndGggPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5MZW5ndGg7IGkr
KykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5jcHAKaW5kZXggM2FmYjU0
YTQxY2I1YjhkZTExMzliMDNkYjMxMzY0M2MyNDMyMGQ5Mi4uZjM5Y2IzZmZkYTkwMTZkYmE4ZmFm
NWFlNjJkZTM0OGMzODBjZDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9Tb2Nr
ZXRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rp
b24uY3BwCkBAIC0xMjQsMjMgKzEyNCwyMyBAQCBib29sIFNvY2tldENvbm5lY3Rpb246OnJlYWRN
ZXNzYWdlKCkKICAgICBtZW1jcHkoJmZsYWdzLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKE1lc3NhZ2VG
bGFncykpOwogICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihNZXNzYWdlRmxhZ3MpOwogICAgIGF1
dG8gbWVzc2FnZVNpemUgPSBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKE1lc3NhZ2VGbGFncykg
KyBib2R5U2l6ZTsKLSAgICBpZiAobV9yZWFkQnVmZmVyLnNpemUoKSA8IG1lc3NhZ2VTaXplLnVu
c2FmZUdldCgpKQorICAgIGlmIChtX3JlYWRCdWZmZXIuc2l6ZSgpIDwgbWVzc2FnZVNpemUudmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2hlY2tlZDxzaXplX3Q+IG1lc3Nh
Z2VOYW1lTGVuZ3RoID0gc3RybGVuKG1lc3NhZ2VEYXRhKTsKICAgICBtZXNzYWdlTmFtZUxlbmd0
aCsrOwotICAgIGlmIChtX3JlYWRCdWZmZXIuc2l6ZSgpIDwgbWVzc2FnZU5hbWVMZW5ndGgudW5z
YWZlR2V0KCkpIHsKKyAgICBpZiAobV9yZWFkQnVmZmVyLnNpemUoKSA8IG1lc3NhZ2VOYW1lTGVu
Z3RoLnZhbHVlKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBhdXRvIGl0ID0gbV9tZXNzYWdlSGFuZGxl
cnMuZmluZChtZXNzYWdlRGF0YSk7CiAgICAgaWYgKGl0ICE9IG1fbWVzc2FnZUhhbmRsZXJzLmVu
ZCgpKSB7Ci0gICAgICAgIG1lc3NhZ2VEYXRhICs9IG1lc3NhZ2VOYW1lTGVuZ3RoLnVuc2FmZUdl
dCgpOworICAgICAgICBtZXNzYWdlRGF0YSArPSBtZXNzYWdlTmFtZUxlbmd0aC52YWx1ZSgpOwog
ICAgICAgICBHUmVmUHRyPEdWYXJpYW50PiBwYXJhbWV0ZXJzOwogICAgICAgICBpZiAoIWl0LT52
YWx1ZS5maXJzdC5pc051bGwoKSkgewogICAgICAgICAgICAgR1VuaXF1ZVB0cjxHVmFyaWFudFR5
cGU+IHZhcmlhbnRUeXBlKGdfdmFyaWFudF90eXBlX25ldyhpdC0+dmFsdWUuZmlyc3QuZGF0YSgp
KSk7Ci0gICAgICAgICAgICBzaXplX3QgcGFyYW1ldGVyc1NpemUgPSBib2R5U2l6ZS51bnNhZmVH
ZXQoKSAtIG1lc3NhZ2VOYW1lTGVuZ3RoLnVuc2FmZUdldCgpOworICAgICAgICAgICAgc2l6ZV90
IHBhcmFtZXRlcnNTaXplID0gYm9keVNpemUudmFsdWUoKSAtIG1lc3NhZ2VOYW1lTGVuZ3RoLnZh
bHVlKCk7CiAgICAgICAgICAgICAvLyBnX3ZhcmlhbnRfbmV3X2Zyb21fZGF0YSgpIHJlcXVpcmVz
IHRoZSBtZW1vcnkgdG8gYmUgcHJvcGVybHkgYWxpZ25lZCBmb3IgdGhlIHR5cGUgYmVpbmcgbG9h
ZGVkLAogICAgICAgICAgICAgLy8gYnV0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIGtub3cgdGhlIGFs
aWdubWVudCBiZWNhdXNlIGdfdmFyaWFudF90eXBlX2luZm9fcXVlcnkoKSBpcyBub3QgcHVibGlj
IEFQSS4KICAgICAgICAgICAgIC8vIFNpbmNlIEdMaWIgMi42MCBnX3ZhcmlhbnRfbmV3X2Zyb21f
ZGF0YSgpIGFscmVhZHkgY2hlY2tzIHRoZSBhbGlnbm1lbnQgYW5kIHJlYWxsb2NhdGVzIHRoZSBi
dWZmZXIKQEAgLTE2Myw5ICsxNjMsOSBAQCBib29sIFNvY2tldENvbm5lY3Rpb246OnJlYWRNZXNz
YWdlKCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobV9yZWFk
QnVmZmVyLnNpemUoKSA+IG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpKSB7Ci0gICAgICAgIHN0ZDo6
bWVtbW92ZShtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuZGF0YSgpICsgbWVzc2Fn
ZVNpemUudW5zYWZlR2V0KCksIG1fcmVhZEJ1ZmZlci5zaXplKCkgLSBtZXNzYWdlU2l6ZS51bnNh
ZmVHZXQoKSk7Ci0gICAgICAgIG1fcmVhZEJ1ZmZlci5zaHJpbmsobV9yZWFkQnVmZmVyLnNpemUo
KSAtIG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpKTsKKyAgICBpZiAobV9yZWFkQnVmZmVyLnNpemUo
KSA+IG1lc3NhZ2VTaXplLnZhbHVlKCkpIHsKKyAgICAgICAgc3RkOjptZW1tb3ZlKG1fcmVhZEJ1
ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5kYXRhKCkgKyBtZXNzYWdlU2l6ZS52YWx1ZSgpLCBt
X3JlYWRCdWZmZXIuc2l6ZSgpIC0gbWVzc2FnZVNpemUudmFsdWUoKSk7CisgICAgICAgIG1fcmVh
ZEJ1ZmZlci5zaHJpbmsobV9yZWFkQnVmZmVyLnNpemUoKSAtIG1lc3NhZ2VTaXplLnZhbHVlKCkp
OwogICAgIH0gZWxzZQogICAgICAgICBtX3JlYWRCdWZmZXIuc2hyaW5rKDApOwogCkBAIC0xOTEs
MTAgKzE5MSwxMCBAQCB2b2lkIFNvY2tldENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKGNvbnN0IGNo
YXIqIG1lc3NhZ2VOYW1lLCBHVmFyaWFudCogcGFyYW1ldGVycwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIHNpemVfdCBwcmV2aW91c0J1ZmZlclNpemUgPSBtX3dyaXRlQnVmZmVyLnNpemUo
KTsKLSAgICBtX3dyaXRlQnVmZmVyLmdyb3cocHJldmlvdXNCdWZmZXJTaXplICsgc2l6ZW9mKHVp
bnQzMl90KSArIHNpemVvZihNZXNzYWdlRmxhZ3MpICsgYm9keVNpemUudW5zYWZlR2V0KCkpOwor
ICAgIG1fd3JpdGVCdWZmZXIuZ3JvdyhwcmV2aW91c0J1ZmZlclNpemUgKyBzaXplb2YodWludDMy
X3QpICsgc2l6ZW9mKE1lc3NhZ2VGbGFncykgKyBib2R5U2l6ZS52YWx1ZSgpKTsKIAogICAgIGF1
dG8qIG1lc3NhZ2VEYXRhID0gbV93cml0ZUJ1ZmZlci5kYXRhKCkgKyBwcmV2aW91c0J1ZmZlclNp
emU7Ci0gICAgdWludDMyX3QgYm9keVNpemVIZWFkZXIgPSBodG9ubChib2R5U2l6ZS51bnNhZmVH
ZXQoKSk7CisgICAgdWludDMyX3QgYm9keVNpemVIZWFkZXIgPSBodG9ubChib2R5U2l6ZS52YWx1
ZSgpKTsKICAgICBtZW1jcHkobWVzc2FnZURhdGEsICZib2R5U2l6ZUhlYWRlciwgc2l6ZW9mKHVp
bnQzMl90KSk7CiAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKHVpbnQzMl90KTsKICAgICBNZXNz
YWdlRmxhZ3MgZmxhZ3MgPSAwOwpAQCAtMjAzLDggKzIwMyw4IEBAIHZvaWQgU29ja2V0Q29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UoY29uc3QgY2hhciogbWVzc2FnZU5hbWUsIEdWYXJpYW50KiBwYXJh
bWV0ZXJzCiAjZW5kaWYKICAgICBtZW1jcHkobWVzc2FnZURhdGEsICZmbGFncywgc2l6ZW9mKE1l
c3NhZ2VGbGFncykpOwogICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihNZXNzYWdlRmxhZ3MpOwot
ICAgIG1lbWNweShtZXNzYWdlRGF0YSwgbWVzc2FnZU5hbWUsIG1lc3NhZ2VOYW1lTGVuZ3RoLnVu
c2FmZUdldCgpKTsKLSAgICBtZXNzYWdlRGF0YSArPSBtZXNzYWdlTmFtZUxlbmd0aC51bnNhZmVH
ZXQoKTsKKyAgICBtZW1jcHkobWVzc2FnZURhdGEsIG1lc3NhZ2VOYW1lLCBtZXNzYWdlTmFtZUxl
bmd0aC52YWx1ZSgpKTsKKyAgICBtZXNzYWdlRGF0YSArPSBtZXNzYWdlTmFtZUxlbmd0aC52YWx1
ZSgpOwogICAgIGlmIChwYXJhbWV0ZXJzKQogICAgICAgICBtZW1jcHkobWVzc2FnZURhdGEsIGdf
dmFyaWFudF9nZXRfZGF0YShwYXJhbWV0ZXJzKSwgcGFyYW1ldGVyc1NpemUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9DU3RyaW5nLmNwcAppbmRleCBiNThkOWVhNTQ5YzA3YWMyNjI3MDJkZDdmYzEyNGI4MjIxN2Zj
NGQ0Li5iOWIzNDhmODliNzExNjNkZThjNDZkOWQyM2Y3YTlhMzFjN2IwYzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQ1N0cmluZy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hF
QVBfSURFTlRJRklFUihDU3RyaW5nQnVmZmVyKTsKIFJlZjxDU3RyaW5nQnVmZmVyPiBDU3RyaW5n
QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgLy8gVGhl
ICsxIGlzIGZvciB0aGUgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIuCi0gICAgYXV0byBzaXpl
ID0gKENoZWNrZWQ8c2l6ZV90PihzaXplb2YoQ1N0cmluZ0J1ZmZlcikpICsgbGVuZ3RoICsgMVUp
LnVuc2FmZUdldCgpOworICAgIGF1dG8gc2l6ZSA9IChDaGVja2VkPHNpemVfdD4oc2l6ZW9mKENT
dHJpbmdCdWZmZXIpKSArIGxlbmd0aCArIDFVKS52YWx1ZSgpOwogICAgIGF1dG8qIHN0cmluZ0J1
ZmZlciA9IHN0YXRpY19jYXN0PENTdHJpbmdCdWZmZXIqPihDU3RyaW5nQnVmZmVyTWFsbG9jOjpt
YWxsb2Moc2l6ZSkpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdC
dWZmZXIpIENTdHJpbmdCdWZmZXIobGVuZ3RoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWZm
ZXIuaAppbmRleCBmY2YzOTI0NDFiZmFmMjU5MTQ5M2M0YTk3NTdjMjZhNmY4ZGE2NWZkLi40NTM4
N2Q4MGFiZGQ4YzBlYTk0OGU1YzYwOTg4ZDliM2I0NTEzYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQnVmZmVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3RyaW5nQnVmZmVyIHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBTdHJpbmdCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogICAgICAgICA6
IG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBtX2RhdGEobV9sZW5ndGggPyBzdGF0aWNfY2Fz
dDxDaGFyVHlwZSo+KFN0cmluZ0J1ZmZlck1hbGxvYzo6bWFsbG9jKChDaGVja2VkPHNpemVfdD4o
bV9sZW5ndGgpICogc2l6ZW9mKENoYXJUeXBlKSkudW5zYWZlR2V0KCkpKSA6IG51bGxwdHIpCisg
ICAgICAgICwgbV9kYXRhKG1fbGVuZ3RoID8gc3RhdGljX2Nhc3Q8Q2hhclR5cGUqPihTdHJpbmdC
dWZmZXJNYWxsb2M6Om1hbGxvYygoQ2hlY2tlZDxzaXplX3Q+KG1fbGVuZ3RoKSAqIHNpemVvZihD
aGFyVHlwZSkpLnZhbHVlKCkpKSA6IG51bGxwdHIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcAppbmRleCA4M2VkMzhiMTk4MTk0YTA0Njky
ZWJlMWE2MjhiZTgzZjM3MzFhYjRmLi5kNjNlYzlmMTFhMjdjZGI1OGY2N2NiOGE2NmIxN2E1MjFk
MGI5YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09O
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kUXVvdGVkSlNPTlN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIG1heGltdW0g
bGVuZ3RoIGJlZm9yZSBjYWxsaW5nIHJvdW5kVXBQb3dlck9mVHdvIGJlY2F1c2UgdGhhdCBmdW5j
dGlvbiByZXR1cm5zIDAgZm9yIHZhbHVlcyBpbiB0aGUgcmFuZ2UgWzJeMzEsIDJeMzItMl0uCiAg
ICAgLy8gRklYTUU6IEluc3RlYWQsIHJvdW5kVXBUb1Bvd2VyT2ZUd28gc2hvdWxkIGJlIGZpeGVk
IHRvIGRvIHNvbWV0aGluZyBtb3JlIHVzZWZ1bCBpbiB0aG9zZSBjYXNlcywgcGVyaGFwcyB1c2lu
ZyBjaGVja2VkIG9yIHNhdHVyYXRlZCBhcml0aG1ldGljLgogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwODYKLSAgICBhdXRvIGFsbG9jYXRpb25TaXpl
ID0gbWF4aW11bUNhcGFjaXR5UmVxdWlyZWQudW5zYWZlR2V0KCk7CisgICAgYXV0byBhbGxvY2F0
aW9uU2l6ZSA9IG1heGltdW1DYXBhY2l0eVJlcXVpcmVkLnZhbHVlKCk7CiAgICAgaWYgKGFsbG9j
YXRpb25TaXplID4gU3RyaW5nOjpNYXhMZW5ndGgpIHsKICAgICAgICAgZGlkT3ZlcmZsb3coKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCmlu
ZGV4IDJlMzhlZjc3ODk5YTNjM2ViYWZlYjUxZGE5NDA2Y2ZhYmRkZjczNzEuLjgzMGMxNTlmYmE2
NjI0MzQwYmI4MjI0MGE5Y2ViNjFkODRmMDVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgKQEAgLTQzNCw3ICs0MzQsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmluZ0Zy
b21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlciBhZGFwdGVyLCBTdHJpbmdUeXBlQWRhcHRlcnMg
LgogICAgIGlmIChzdW0uaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdW0udW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gc3VtLnZhbHVlKCk7CiAgICAgQVNTRVJUKGxlbmd0aCA8PSBTdHJpbmc6Ok1heExl
bmd0aCk7CiAgICAgaWYgKGFyZThCaXQoYWRhcHRlciwgYWRhcHRlcnMuLi4pKSB7CiAgICAgICAg
IExDaGFyKiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAyYTVkYWQyNzNi
Y2IyMzJlYWM4YjEwYmQ1OTMwYTU1YWY1ZWNmZjAuLjRkZTA2ZWY4YmExNjFkMmU0NTBmZjEzMmVl
YzU5ZGViYTQwZTE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC0xMTYxLDcgKzEx
NjEsNyBAQCBpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcpCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6YWxsb2NhdGlv
blNpemUoQ2hlY2tlZDxzaXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCiB7Ci0gICAgcmV0dXJuICh0
YWlsT2Zmc2V0PFQ+KCkgKyB0YWlsRWxlbWVudENvdW50ICogc2l6ZW9mKFQpKS51bnNhZmVHZXQo
KTsKKyAgICByZXR1cm4gKHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXpl
b2YoVCkpLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCmluZGV4
IGUxOWFmZWRmNWNhYmFjNjRjNmUwMDUzMTgyMDY4OTcwZGM3Mjk3ZTkuLjM3OGZmMTU2MGE1OTM1
YmI5M2Y3Y2UyNmExM2MwOGU1Y2I0ZjkwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCkBAIC05Myw3ICs5Myw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25h
bDxJbnRlZ3JhbFR5CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAot
ICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPiBzdGQ6Om9wdGlvbmFsPEludGVn
cmFsVHlwZT4gcGFyc2VJbnRlZ2VyKFN0cmluZ1ZpZXcgc3RyaW5nLCB1aW50OF90IGJhc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCA1YTUwZmZkMTNmNTA5Y2ViYzI1YzllNmQyYWVjMjMwNzliZmFkMWJhLi4xMzM5
YjE4YTYyMmQzYjBkYTViZmUyZmM0YWQzZjQxYjE1N2I5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM0MTks
NyArMzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChsZW5ndGggJiYgKEludFNpemUo
d2lkdGgsIGhlaWdodCkuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgIT0gbGVuZ3RoKSB7CisgICAg
ICAgICAgICBpZiAobGVuZ3RoICYmIChJbnRTaXplKHdpZHRoLCBoZWlnaHQpLmFyZWEoKSAqIDQp
LnZhbHVlKCkgIT0gbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCmluZGV4IDMwZmUwN2RlNTU4ZWFi
Y2UzMzY5NjM1MDEwNTQ5MjViZDcyNGYyZjIuLjA2Mzg3NGIwZmQxZTM0NDg4NTFmZDZlMjU3ZTA1
MTlmY2Y5YjRiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0
cmVhbUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVh
bUVuY29kZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBUZXh0RW5j
b2RlclN0cmVhbUVuY29kZXI6OmVuY29kZShjb25zdCBTdHJpbmcmIGlucHV0KQogICAgIGlmICgh
dmlldy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8dWlu
dDhfdD4gYnl0ZXMoV1RGOjpjaGVja2VkUHJvZHVjdDxzaXplX3Q+KHZpZXcubGVuZ3RoKCkgKyAx
LCAzKS51bnNhZmVHZXQoKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzKFdURjo6Y2hlY2tl
ZFByb2R1Y3Q8c2l6ZV90Pih2aWV3Lmxlbmd0aCgpICsgMSwgMykudmFsdWUoKSk7CiAgICAgc2l6
ZV90IGJ5dGVzV3JpdHRlbiA9IDA7CiAKICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8
IHZpZXcubGVuZ3RoKCk7IGNwdHIrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4
IDhhZTQ4OTE1NjNlYTc3ZTYwZDEzZTU0OTFkYmQ1NTA3MDlhZjE5MTMuLmQ2NjkwNmY0ZDdhZmFi
YmY1YTY3MzdkOWRiNWU2ZWZiN2MzOGEyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
QEAgLTQxNSw3ICs0MTUsNyBAQCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VS
ZXN1bHRzKCkKICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJr
dXApCiAgICAgICAgIGxlbmd0aCArPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgudW5zYWZlR2V0KCkp
OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoLnZhbHVlKCkpOwogICAgIGZvciAo
YXV0byYgc3RyaW5nIDogbWFrZVJldmVyc2VkUmFuZ2UobV9yZXZlcnNlZFByZWNlZGluZ01hcmt1
cCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nKTsKICAgICByZXN1bHQuYXBwZW5kKHRh
a2VNYXJrdXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCAwNmM4
NDMyMWJiMjkxZmIxNzg2MjVmM2Q3ODM0MzhlZTg4ODQ2ZjkzLi5lYjEzMTk4YzNiOGE4NWYzZGVk
M2UxNjc2NzhhZmJjMjlkZTUyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBGb3JtQ29udHJvbFN0YXRlIEZpbGVJbnB1dFR5cGU6OnNh
dmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QKICAgICBhdXRvIGxlbmd0aCA9IENoZWNrZWQ8c2l6
ZV90PihtX2ZpbGVMaXN0LT5maWxlcygpLnNpemUoKSkgKiBDaGVja2VkPHNpemVfdD4oMik7CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBzdGF0ZVZlY3RvcjsKLSAgICBzdGF0ZVZlY3Rvci5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGxlbmd0aC51bnNhZmVHZXQoKSk7CisgICAgc3RhdGVWZWN0b3IucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgudmFsdWUoKSk7CiAgICAgZm9yIChhdXRvJiBmaWxl
IDogbV9maWxlTGlzdC0+ZmlsZXMoKSkgewogICAgICAgICBzdGF0ZVZlY3Rvci51bmNoZWNrZWRB
cHBlbmQoZmlsZS0+cGF0aCgpKTsKICAgICAgICAgc3RhdGVWZWN0b3IudW5jaGVja2VkQXBwZW5k
KGZpbGUtPm5hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKaW5kZXggOTE2ZGZiMGYy
YjhmZTI5ZTVmM2ZjMjgxNTYzOGM2NDAxYjU3MTRkNi4uNzBiMDY4N2I5ODVhZTEyYzUzMGRmMDBh
MWFhMTc0ODFlMGJlZTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgIGF1dG8gZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CiAgICAg
aWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgYXV0byBieXRlQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZChkYXRhU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBieXRlQXJyYXkgPSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS52YWx1ZSgpKTsKICAg
ICBpZiAoIWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpLCBQ
cmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQikpOwpAQCAtNzcsNyArNzcsNyBAQCBSZWZQdHI8SW1h
Z2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplKQogUmVmUHRyPElt
YWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4
Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKIHsKICAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNpemUpOwotICAgIGlm
IChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgZGF0YVNpemUudW5zYWZlR2V0KCkgIT0gYnl0
ZUFycmF5LT5sZW5ndGgoKSkKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRh
dGFTaXplLnZhbHVlKCkgIT0gYnl0ZUFycmF5LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgV1RGTW92
ZShieXRlQXJyYXkpLCBjb2xvclNwYWNlKSk7CkBAIC05MCw3ICs5MCw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
cm93cywgdW5zaWduCiAgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIg
b2YgdGhpcyBzaXplIl9zIH07CiAKLSAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKKyAgICBh
dXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KGRhdGFTaXplLnZhbHVlKCkpOwogICAgIGlmICghYnl0ZUFycmF5KSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFsIiBvdXQgb2YgbWVtb3J5IGVycm9yIHdp
dGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24gaXQ/CiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9yeSJfcyB9OwpAQCAtMTEwLDcgKzExMCw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25l
ZCBzdywgdW5zaWduZWQgc2gsIHN0ZDo6b3B0CiAgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5ub3QgYWxs
b2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplIl9zIH07CiAKLSAgICBhdXRvIGJ5dGVBcnJheSA9
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2Fm
ZUdldCgpKTsKKyAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnZhbHVlKCkpOwogICAgIGlmICghYnl0ZUFycmF5KSB7
CiAgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFsIiBvdXQgb2Yg
bWVtb3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24gaXQ/CiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9yeSJfcyB9OwpA
QCAtMTM3LDcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6
OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5CiAKICAgICBJbnRTaXpl
IHNpemUoc3csIGhlaWdodCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShz
aXplKTsKLSAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2Fm
ZUdldCgpICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJm
bG93ZWQoKSB8fCBkYXRhU2l6ZS52YWx1ZSgpICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yIH07CiAKICAgICBhdXRvIGNvbG9yU3Bh
Y2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA3YTI3NWQ3YzMxNTc1YmZmODA5OGMyZDliMjZl
ZDhlYWYzNmVmYTk4Li41MzE3ZDkxODcyZDc4OGUxYjI0M2FkZDVkYTc2ZTA2YTY5YzE4MDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTk5Niw3
ICs5OTYsNyBAQCBzdGF0aWMgYm9vbCBpc0VsZW1lbnRSZWN0TW9zdGx5SW5NYWluRnJhbWUoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKIAogICAgIGVsZW1lbnRSZWN0SW5NYWluRnJh
bWUuaW50ZXJzZWN0KG1haW5GcmFtZVJlY3RBZGp1c3RlZEZvclNjcm9sbFBvc2l0aW9uKTsKIAot
ICAgIHJldHVybiBlbGVtZW50UmVjdEluTWFpbkZyYW1lLmFyZWEoKS51bnNhZmVHZXQoKSA+IHRv
dGFsRWxlbWVudEFyZWEudW5zYWZlR2V0KCkgLyAyOworICAgIHJldHVybiBlbGVtZW50UmVjdElu
TWFpbkZyYW1lLmFyZWEoKS52YWx1ZSgpID4gdG90YWxFbGVtZW50QXJlYS52YWx1ZSgpIC8gMjsK
IH0KIAogc3RhdGljIGJvb2wgaXNFbGVtZW50TGFyZ2VSZWxhdGl2ZVRvTWFpbkZyYW1lKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDJiMWIwZjFlZWNiNTE1
M2VlYjUyOWJjNzk0OWNhYTNhM2E4NTcwNzAuLjgyYjY0OWI4NTY3YzJkYzlkZjQ0ODAxYTE5YjJh
MTAyZGVmNzc5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MDksNyArNTA5LDcgQEAgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6c2xpY2VBcnJheUJ1ZmZlclZpZXco
Y29uc3QgY2hhcioKICAgICBDaGVja2VkPEdDR0x1aW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tl
ZFNyY09mZnNldChzcmNPZmZzZXQpOwogICAgIENoZWNrZWQ8R0NHTHVpbnQsIFJlY29yZE92ZXJm
bG93PiBjaGVja2VkQnl0ZVNyY09mZnNldCA9IGNoZWNrZWRTcmNPZmZzZXQgKiBjaGVja2VkRWxl
bWVudFNpemU7CiAgICAgQ2hlY2tlZDxHQ0dMdWludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRM
ZW5ndGgobGVuZ3RoKTsKLSAgICBpZiAoIWNoZWNrZWRMZW5ndGgudW5zYWZlR2V0KCkpIHsKKyAg
ICBpZiAoIWNoZWNrZWRMZW5ndGgudmFsdWUoKSkgewogICAgICAgICAvLyBEZWZhdWx0IHRvIHRo
ZSByZW1haW5kZXIgb2YgdGhlIGJ1ZmZlci4KICAgICAgICAgY2hlY2tlZExlbmd0aCA9IGRhdGEu
Ynl0ZUxlbmd0aCgpOwogICAgICAgICBjaGVja2VkTGVuZ3RoIC89IGVsZW1lbnRTaXplOwpAQCAt
NTE5LDEzICs1MTksMTMgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6c2xpY2VBcnJheUJ1ZmZlclZpZXcoY29uc3QgY2hhcioKIAogICAgIGlmIChjaGVj
a2VkTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSB8fCBjaGVja2VkQnl0ZVNyY09mZnNldC5oYXNPdmVy
Zmxvd2VkKCkKICAgICAgICAgfHwgY2hlY2tlZEJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgpCi0g
ICAgICAgIHx8IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpID4gZGF0YS5ieXRlTGVu
Z3RoKCkKLSAgICAgICAgfHwgY2hlY2tlZEJ5dGVMZW5ndGgudW5zYWZlR2V0KCkgPiBkYXRhLmJ5
dGVMZW5ndGgoKSAtIGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpKSB7CisgICAgICAg
IHx8IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnZhbHVlKCkgPiBkYXRhLmJ5dGVMZW5ndGgoKQorICAg
ICAgICB8fCBjaGVja2VkQnl0ZUxlbmd0aC52YWx1ZSgpID4gZGF0YS5ieXRlTGVuZ3RoKCkgLSBj
aGVja2VkQnl0ZVNyY09mZnNldC52YWx1ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJzcmNPZmZz
ZXQgb3IgbGVuZ3RoIGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgcmV0dXJuIGFycmF5QnVmZmVyVmlld1NsaWNlRmFjdG9yeShmdW5jdGlv
bk5hbWUsIGRhdGEsIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5z
YWZlR2V0KCksIGNoZWNrZWRMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIHJldHVybiBhcnJheUJ1
ZmZlclZpZXdTbGljZUZhY3RvcnkoZnVuY3Rpb25OYW1lLCBkYXRhLCBkYXRhLmJ5dGVPZmZzZXQo
KSArIGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnZhbHVlKCksIGNoZWNrZWRMZW5ndGgudmFsdWUoKSk7
CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9yZWkoR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQgcGFyYW0pCkBAIC02MTEsMTQgKzYxMSwxNCBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdD
R0xlbnVtIHdyaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF3cml0ZUJ1ZmZl
ci0+YXNzb2NpYXRlQ29weUJ1ZmZlclN1YkRhdGEoKnJlYWRCdWZmZXIsIGNoZWNrZWRSZWFkT2Zm
c2V0LnVuc2FmZUdldCgpLCBjaGVja2VkV3JpdGVPZmZzZXQudW5zYWZlR2V0KCksIGNoZWNrZWRT
aXplLnVuc2FmZUdldCgpKSkgeworICAgIGlmICghd3JpdGVCdWZmZXItPmFzc29jaWF0ZUNvcHlC
dWZmZXJTdWJEYXRhKCpyZWFkQnVmZmVyLCBjaGVja2VkUmVhZE9mZnNldC52YWx1ZSgpLCBjaGVj
a2VkV3JpdGVPZmZzZXQudmFsdWUoKSwgY2hlY2tlZFNpemUudmFsdWUoKSkpIHsKICAgICAgICAg
dGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUs
ICJjb3B5QnVmZmVyU3ViRGF0YSIsICJvZmZzZXQgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fY29udGV4dC0+Y29weUJ1ZmZlclN1
YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIGNoZWNrZWRSZWFkT2Zmc2V0LnVuc2FmZUdl
dCgpLCBjaGVja2VkV3JpdGVPZmZzZXQudW5zYWZlR2V0KCksIGNoZWNrZWRTaXplLnVuc2FmZUdl
dCgpKTsKKyAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRl
VGFyZ2V0LCBjaGVja2VkUmVhZE9mZnNldC52YWx1ZSgpLCBjaGVja2VkV3JpdGVPZmZzZXQudmFs
dWUoKSwgY2hlY2tlZFNpemUudmFsdWUoKSk7CiAjZW5kaWYKICAgICBpZiAobV9jb250ZXh0LT5t
b3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgYnVmZmVy
U3ViRGF0YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUg
dGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRvZXMuCkBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9u
ZyBsb25nIHNyY0J5dGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjaGVja2Vk
RGVzdGluYXRpb25FbmQudW5zYWZlR2V0KCkgPiBkc3REYXRhTGVuZ3RoKSB7CisgICAgaWYgKGNo
ZWNrZWREZXN0aW5hdGlvbkVuZC52YWx1ZSgpID4gZHN0RGF0YUxlbmd0aCkgewogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldEJ1
ZmZlclN1YkRhdGEiLCAiZW5kIG9mIHdyaXR0ZW4gZGVzdGluYXRpb24gaXMgcGFzdCB0aGUgZW5k
IG9mIHRoZSBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY4MCw3ICs2ODAs
NyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBsb25nIGxvbmcgc3JjQnl0ZQogICAgIENoZWNrZWQ8R0NHTGludHB0ciwgUmVj
b3JkT3ZlcmZsb3c+IGNoZWNrZWRDb3B5TGVuZ3RoUHRyKGNvcHlMZW5ndGgpOwogICAgIENoZWNr
ZWQ8R0NHTGludHB0ciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRFbGVtZW50U2l6ZShlbGVtZW50
U2l6ZSk7CiAgICAgYXV0byBjaGVja2VkU291cmNlRW5kID0gY2hlY2tlZFNyY0J5dGVPZmZzZXQg
KyBjaGVja2VkQ29weUxlbmd0aFB0ciAqIGNoZWNrZWRFbGVtZW50U2l6ZTsKLSAgICBpZiAoY2hl
Y2tlZFNvdXJjZUVuZC5oYXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tlZFNvdXJjZUVuZC51bnNhZmVH
ZXQoKSA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7CisgICAgaWYgKGNoZWNrZWRTb3VyY2VFbmQu
aGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRTb3VyY2VFbmQudmFsdWUoKSA+IGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJl
YWQgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0zNDQ0LDE0ICszNDQ0LDE0IEBAIHN0ZDo6b3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgVD4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIo
Y29uCiAgICAgfQogICAgIHN3aXRjaCAoYnVmZmVyKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1I6Ci0gICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8IDQpIHsK
KyAgICAgICAgaWYgKGNoZWNrZWRTaXplLnZhbHVlKCkgPCA0KSB7CiAgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25O
YW1lLCAiaW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7CiAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW4odmFsdWVzLmRh
dGEoKSArIHNyY09mZnNldCwgNCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEg6
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTDoKLSAgICAgICAgaWYgKGNoZWNr
ZWRTaXplLnVuc2FmZUdldCgpIDwgMSkgeworICAgICAgICBpZiAoY2hlY2tlZFNpemUudmFsdWUo
KSA8IDEpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNP
ZmZzZXQiKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAppbmRleCAzZTMyZjE1MTY2NWNiZmE4NDBj
NWY1ZDIzMWU4OWI4NWU2ZDA0MThhLi5lMzI4NWZlZmQxYTMyZmVmYmQ0MTU2OWVlMzk4ZmI2YzZm
MWQ2MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCkBA
IC0xMzUsNyArMTM1LDcgQEAgYm9vbCBXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyU3ViRGF0
YUltcGwoR0NHTGludHB0ciBvZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEKICAgICAgICAgQ2hlY2tl
ZDxHQ0dMaW50cHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZEJ1ZmZlck9mZnNldChvZmZzZXQp
OwogICAgICAgICBDaGVja2VkPEdDR0xzaXplaXB0ciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRE
YXRhTGVuZ3RoKGJ5dGVMZW5ndGgpOwogICAgICAgICBDaGVja2VkPEdDR0xpbnRwdHIsIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkQnVmZmVyTWF4ID0gY2hlY2tlZEJ1ZmZlck9mZnNldCArIGNoZWNr
ZWREYXRhTGVuZ3RoOwotICAgICAgICBpZiAoY2hlY2tlZEJ1ZmZlck1heC5oYXNPdmVyZmxvd2Vk
KCkgfHwgb2Zmc2V0ID4gbV9ieXRlTGVuZ3RoIHx8IGNoZWNrZWRCdWZmZXJNYXgudW5zYWZlR2V0
KCkgPiBtX2J5dGVMZW5ndGgpCisgICAgICAgIGlmIChjaGVja2VkQnVmZmVyTWF4Lmhhc092ZXJm
bG93ZWQoKSB8fCBvZmZzZXQgPiBtX2J5dGVMZW5ndGggfHwgY2hlY2tlZEJ1ZmZlck1heC52YWx1
ZSgpID4gbV9ieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTg5LDEyICsxODksMTIgQEAgYm9vbCBXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQ29weUJ1ZmZl
clN1YkRhdGEoY29uc3QgV2ViR0xCdWZmZXImIHJlYWRCdWZmZXIsIEdDR0wKICAgICAgICAgQ2hl
Y2tlZDxHQ0dMaW50cHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFJlYWRCdWZmZXJPZmZzZXQo
cmVhZE9mZnNldCk7CiAgICAgICAgIENoZWNrZWQ8R0NHTHNpemVpcHRyLCBSZWNvcmRPdmVyZmxv
dz4gY2hlY2tlZERhdGFMZW5ndGgoc2l6ZSk7CiAgICAgICAgIENoZWNrZWQ8R0NHTGludHB0ciwg
UmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRSZWFkQnVmZmVyTWF4ID0gY2hlY2tlZFJlYWRCdWZmZXJP
ZmZzZXQgKyBjaGVja2VkRGF0YUxlbmd0aDsKLSAgICAgICAgaWYgKGNoZWNrZWRSZWFkQnVmZmVy
TWF4Lmhhc092ZXJmbG93ZWQoKSB8fCByZWFkT2Zmc2V0ID4gcmVhZEJ1ZmZlci5ieXRlTGVuZ3Ro
KCkgfHwgY2hlY2tlZFJlYWRCdWZmZXJNYXgudW5zYWZlR2V0KCkgPiByZWFkQnVmZmVyLmJ5dGVM
ZW5ndGgoKSkKKyAgICAgICAgaWYgKGNoZWNrZWRSZWFkQnVmZmVyTWF4Lmhhc092ZXJmbG93ZWQo
KSB8fCByZWFkT2Zmc2V0ID4gcmVhZEJ1ZmZlci5ieXRlTGVuZ3RoKCkgfHwgY2hlY2tlZFJlYWRC
dWZmZXJNYXgudmFsdWUoKSA+IHJlYWRCdWZmZXIuYnl0ZUxlbmd0aCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIENoZWNrZWQ8R0NHTGludHB0ciwgUmVjb3JkT3ZlcmZs
b3c+IGNoZWNrZWRXcml0ZUJ1ZmZlck9mZnNldCh3cml0ZU9mZnNldCk7CiAgICAgICAgIENoZWNr
ZWQ8R0NHTGludHB0ciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRXcml0ZUJ1ZmZlck1heCA9IGNo
ZWNrZWRXcml0ZUJ1ZmZlck9mZnNldCArIGNoZWNrZWREYXRhTGVuZ3RoOwotICAgICAgICBpZiAo
Y2hlY2tlZFdyaXRlQnVmZmVyTWF4Lmhhc092ZXJmbG93ZWQoKSB8fCB3cml0ZU9mZnNldCA+IG1f
Ynl0ZUxlbmd0aCB8fCBjaGVja2VkV3JpdGVCdWZmZXJNYXgudW5zYWZlR2V0KCkgPiBtX2J5dGVM
ZW5ndGgpCisgICAgICAgIGlmIChjaGVja2VkV3JpdGVCdWZmZXJNYXguaGFzT3ZlcmZsb3dlZCgp
IHx8IHdyaXRlT2Zmc2V0ID4gbV9ieXRlTGVuZ3RoIHx8IGNoZWNrZWRXcml0ZUJ1ZmZlck1heC52
YWx1ZSgpID4gbV9ieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAppbmRleCBjZGU3ZTgwYzJkNjhiOThhODRjZjNjMWEzZmQ4YTE3ZDc4
MDQ4ZDQxLi45NDdkMDdiYTQxYTMwNmFkNDY5NjcxNGQwNTBiNDJkYmEzZDU5MGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcApAQCAtNTA3LDggKzUwNyw4IEBAIHN0YXRpYyBib29sIGNsaXAyRChHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LAogICAgIENo
ZWNrZWQ8R0NHTGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRJbnB1dFJpZ2h0ID0gQ2hlY2tl
ZDxHQ0dMaW50Pih4KSArIENoZWNrZWQ8R0NHTHNpemVpPih3aWR0aCk7CiAgICAgQ2hlY2tlZDxH
Q0dMaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZElucHV0Qm90dG9tID0gQ2hlY2tlZDxHQ0dM
aW50Pih5KSArIENoZWNrZWQ8R0NHTHNpemVpPihoZWlnaHQpOwogICAgIGlmICghY2hlY2tlZElu
cHV0UmlnaHQuaGFzT3ZlcmZsb3dlZCgpICYmICFjaGVja2VkSW5wdXRCb3R0b20uaGFzT3ZlcmZs
b3dlZCgpKSB7Ci0gICAgICAgIHJpZ2h0ID0gc3RkOjptaW4oY2hlY2tlZElucHV0UmlnaHQudW5z
YWZlR2V0KCksIHNvdXJjZVdpZHRoKTsKLSAgICAgICAgYm90dG9tID0gc3RkOjptaW4oY2hlY2tl
ZElucHV0Qm90dG9tLnVuc2FmZUdldCgpLCBzb3VyY2VIZWlnaHQpOworICAgICAgICByaWdodCA9
IHN0ZDo6bWluKGNoZWNrZWRJbnB1dFJpZ2h0LnZhbHVlKCksIHNvdXJjZVdpZHRoKTsKKyAgICAg
ICAgYm90dG9tID0gc3RkOjptaW4oY2hlY2tlZElucHV0Qm90dG9tLnZhbHVlKCksIHNvdXJjZUhl
aWdodCk7CiAgICAgfQogCiAgICAgaWYgKGxlZnQgPj0gcmlnaHQgfHwgdG9wID49IGJvdHRvbSkg
ewpAQCAtMjQ2MCwxMiArMjQ2MCwxMiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZhbGlkYXRlRHJhd0FycmF5cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogICAgIC8v
IEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlLgogICAgIENoZWNrZWQ8R0NH
TGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTdW0gPSBDaGVja2VkPEdDR0xpbnQsIFJlY29y
ZE92ZXJmbG93PihmaXJzdCkgKyBDaGVja2VkPEdDR0xpbnQsIFJlY29yZE92ZXJmbG93Pihjb3Vu
dCk7CiAgICAgQ2hlY2tlZDxHQ0dMaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFByaW1pdGl2
ZUNvdW50KHByaW1pdGl2ZUNvdW50KTsKLSAgICBpZiAoY2hlY2tlZFN1bS5oYXNPdmVyZmxvd2Vk
KCkgfHwgY2hlY2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93ZWQoKSB8fCAhdmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJ1dGVzKGNoZWNrZWRTdW0udW5zYWZlR2V0KCksIGNoZWNrZWRQcmltaXRpdmVD
b3VudC51bnNhZmVHZXQoKSkpIHsKKyAgICBpZiAoY2hlY2tlZFN1bS5oYXNPdmVyZmxvd2VkKCkg
fHwgY2hlY2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93ZWQoKSB8fCAhdmFsaWRhdGVWZXJ0
ZXhBdHRyaWJ1dGVzKGNoZWNrZWRTdW0udmFsdWUoKSwgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnZh
bHVlKCkpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9m
IGJvdW5kcyBhcnJheXMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNpZiAhVVNF
KEFOR0xFKQotICAgIGlmICghdmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKGNoZWNrZWRT
dW0udW5zYWZlR2V0KCkgLSAxKSkgeworICAgIGlmICghdmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhB
dHRyaWIwKGNoZWNrZWRTdW0udmFsdWUoKSAtIDEpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAi
YXR0ZW1wdCB0byBhY2Nlc3Mgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzaW11bGF0ZWQgdmVy
dGV4QXR0cmliMCBhcnJheSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjUz
Nyw4ICsyNTM3LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURy
YXdFbGVtZW50cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEcKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKLSAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2
ZSh0eXBlLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVt
ZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgewotICAgICAgICBpZiAo
IXZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UoY2hlY2tlZENvdW50LnVuc2FmZUdldCgpLCB0eXBl
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBudW1FbGVtZW50cykgfHwgIXZhbGlk
YXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVu
c2FmZUdldCgpKSkgeworICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKHR5
cGUsIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51bUVsZW1lbnRz
LCBjaGVja2VkUHJpbWl0aXZlQ291bnQudmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0
ZUluZGV4QXJyYXlQcmVjaXNlKGNoZWNrZWRDb3VudC52YWx1ZSgpLCB0eXBlLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0
cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnZhbHVlKCkpKSB7CiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9P
UEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMg
YXJyYXlzIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTUzMjcs
NyArNTMyNyw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFRlCiAgICAgdG90YWwgKj0gSlNDOjpl
bGVtZW50U2l6ZShwaXhlbHMtPmdldFR5cGUoKSk7CiAgICAgdG90YWwgKz0gdG90YWxCeXRlc1Jl
cXVpcmVkOwogICAgIHRvdGFsICs9IHNraXBCeXRlczsKLSAgICBpZiAodG90YWwuaGFzT3ZlcmZs
b3dlZCgpIHx8IHBpeGVscy0+Ynl0ZUxlbmd0aCgpIDwgdG90YWwudW5zYWZlR2V0KCkpIHsKKyAg
ICBpZiAodG90YWwuaGFzT3ZlcmZsb3dlZCgpIHx8IHBpeGVscy0+Ynl0ZUxlbmd0aCgpIDwgdG90
YWwudmFsdWUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIkFycmF5QnVmZmVyVmlldyBub3Qg
YmlnIGVub3VnaCBmb3IgcmVxdWVzdCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtNjgxOSw3ICs2ODE5LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5j
dGlvbk5hbWUsICJ0b28gbGFyZ2UgZGltZW5zaW9ucyIpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9Ci0gICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1
aXJlZC51bnNhZmVHZXQoKTsKKyAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1Jl
cXVpcmVkLnZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKQEAgLTY4MzMsNyArNjgzMyw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29u
c3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAidG9vIGxhcmdlIGRpbWVuc2lv
bnMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBieXRl
c1JlcXVpcmVkID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQudW5zYWZlR2V0KCk7CisgICAgICAgIGJ5
dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1aXJlZC52YWx1ZSgpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VY
VDoKQEAgLTc0MTIsNyArNzQxMiw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnRlCiAKICAgICBD
aGVja2VkPEdDR0xzaXplaXB0ciwgUmVjb3JkT3ZlcmZsb3c+IGJ1ZmZlckRhdGFTaXplKGJ1ZmZl
clNpemUudmFsdWUoKSk7CiAgICAgYnVmZmVyRGF0YVNpemUgKj0gQ2hlY2tlZDxHQ0dMc2l6ZWlw
dHI+KHNpemVvZihHQ0dMZmxvYXQpKTsKLSAgICByZXR1cm4gIWJ1ZmZlckRhdGFTaXplLmhhc092
ZXJmbG93ZWQoKSAmJiBidWZmZXJEYXRhU2l6ZS51bnNhZmVHZXQoKSA+IDA7CisgICAgcmV0dXJu
ICFidWZmZXJEYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgJiYgYnVmZmVyRGF0YVNpemUudmFsdWUo
KSA+IDA7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApp
bmRleCA5MmMxNTYyZGUyNDU5YmNkOWNhMDVmMTc3MzBiOGViMmRlNjFiMjMwLi4yZGNiMDMyYTgz
ODI1ODJlM2IzYTI4NWU0NGQ4MjUxMDc1MDVhZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC04NTEsNyAr
ODUxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1heFlBY2Nlc3NlZC51bnNhZmVHZXQoKSA+IGlt
YWdlSGVpZ2h0KSB7CisgICAgICAgICAgICBpZiAobWF4WUFjY2Vzc2VkLnZhbHVlKCkgPiBpbWFn
ZUhlaWdodCkgewogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLAogICAgICAgICAgICAgICAg
ICAgICAiTm90IGVub3VnaCBkYXRhIHN1cHBsaWVkIHRvIHVwbG9hZCB0byBhIDNEIHRleHR1cmUg
d2l0aCBkZXB0aCA+IDEiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTQ2
LDcgKzExNDYsNyBAQCBpbmxpbmUgc3RkOjpvcHRpb25hbDxUPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjaGVja2VkQWRkQW5kTXVsdGlwbHkoVCB2YWx1ZQogICAgIGlmIChjaGVja2VkUmVz
dWx0Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiBjaGVja2VkUmVzdWx0LnVuc2FmZUdldCgpOworICAgIHJldHVybiBjaGVja2VkUmVz
dWx0LnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCBiNjkxMjdmZDFiNjRjMmI0MTJkZDIzYThkYzI4ODRiNGI2MzNhMDc4Li4zZDE2
ODIyMmRmZGNlNTc1MjE1MmVmYzgxMjhjYWUwMjA3YzY3YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTk5NSw3ICs5OTUsNyBAQCBpbmxpbmUgdm9pZCBGcmFtZVZpZXc6OmluY3JlbWVu
dFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYg
KFVOTElLRUxZKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgbV92aXN1YWxseU5vbkVt
cHR5UGl4ZWxDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUobV92aXN1YWxseU5v
bkVtcHR5UGl4ZWxDb3VudCk+OjptYXgoKTsKICAgICBlbHNlCi0gICAgICAgIG1fdmlzdWFsbHlO
b25FbXB0eVBpeGVsQ291bnQgPSBhcmVhLnVuc2FmZUdldCgpOworICAgICAgICBtX3Zpc3VhbGx5
Tm9uRW1wdHlQaXhlbENvdW50ID0gYXJlYS52YWx1ZSgpOwogfQogCiBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRnJhbWVWaWV3Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9IaXN0b3J5LmNwcAppbmRleCAzOGZkN2IyOWI1M2VhYjQ4NGUzMDk2M2I1MWM4YWU1MjVjNWQ3
YTM4Li41MDJmOWZiOWQ3MDg5MGU3NWVkMGMyZDAxYjQ5OGEzMjY0YzFmNWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSGlzdG9yeS5jcHAKQEAgLTI1Myw5ICsyNTMsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0
b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0
YQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUXVvdGFFeGNlZWRlZEVycm9yLCAiQXR0ZW1w
dCB0byBzdG9yZSBtb3JlIGRhdGEgdGhhbiBhbGxvd2VkIHVzaW5nIGhpc3RvcnkucHVzaFN0YXRl
KCkiX3MgfTsKICAgICB9CiAKLSAgICBtX21vc3RSZWNlbnRTdGF0ZU9iamVjdFVzYWdlID0gcGF5
bG9hZFNpemUudW5zYWZlR2V0KCk7CisgICAgbV9tb3N0UmVjZW50U3RhdGVPYmplY3RVc2FnZSA9
IHBheWxvYWRTaXplLnZhbHVlKCk7CiAKLSAgICBtYWluSGlzdG9yeS5tX3RvdGFsU3RhdGVPYmpl
Y3RVc2FnZSA9IG5ld1RvdGFsVXNhZ2UudW5zYWZlR2V0KCk7CisgICAgbWFpbkhpc3RvcnkubV90
b3RhbFN0YXRlT2JqZWN0VXNhZ2UgPSBuZXdUb3RhbFVzYWdlLnZhbHVlKCk7CiAgICAgKyttYWlu
SGlzdG9yeS5tX2N1cnJlbnRTdGF0ZU9iamVjdFRpbWVTcGFuT2JqZWN0c0FkZGVkOwogCiAgICAg
aWYgKCF1cmxTdHJpbmcuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9BcnJheS5oCmluZGV4IGIwNzM0ZGQ2MWI4YzQxNzIxYzllOTRjODdkODc2MWI0YjFmMTM3
ZmEuLjJhNzNlYjgwYmQzOTUzZGI1MTc0ZmRiY2U1MzI4MTRjMmY0MDRjYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmgKQEAgLTYyLDEwICs2MiwxMCBAQCBw
dWJsaWM6CiAKICAgICAgICAgZmFzdEFsaWduZWRGcmVlKG1fYWxsb2NhdGlvbik7CiAKLSAgICAg
ICAgbV9hbGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RBbGlnbmVkTWFsbG9jKGFsaWdu
bWVudCwgaW5pdGlhbFNpemUudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgbV9hbGxvY2F0aW9uID0g
c3RhdGljX2Nhc3Q8VCo+KGZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVudCwgaW5pdGlhbFNpemUu
dmFsdWUoKSkpOwogICAgICAgICBpZiAoIW1fYWxsb2NhdGlvbikKICAgICAgICAgICAgIENSQVNI
KCk7Ci0gICAgICAgIG1fc2l6ZSA9IG4udW5zYWZlR2V0KCk7CisgICAgICAgIG1fc2l6ZSA9IG4u
dmFsdWUoKTsKICAgICAgICAgemVybygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3Bw
CmluZGV4IGQ3NzlhOGZkMzNkNzc4MjM0NzMyMTg2ZGEyYWE1ZWRjY2UyMzE3ZWMuLjRjODE2OWEx
NzBkOTU3NWQzNDc4ZGM5ZDlkNzgxYjVjNjhkYmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgQXVkaW9CdWZmZXJMaXN0KiB0cnlDcmVhdGVBdWRpb0J1ZmZl
ckxpc3Qoc2l6ZV90IG51bWJlck9mQnVmZmVycykKICAgICBpZiAoYnVmZmVyTGlzdFNpemUuaGFz
T3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gYWxsb2Nh
dGVkID0gdHJ5RmFzdENhbGxvYygxLCBidWZmZXJMaXN0U2l6ZS51bnNhZmVHZXQoKSk7CisgICAg
YXV0byBhbGxvY2F0ZWQgPSB0cnlGYXN0Q2FsbG9jKDEsIGJ1ZmZlckxpc3RTaXplLnZhbHVlKCkp
OwogICAgIEF1ZGlvQnVmZmVyTGlzdCogYnVmZmVyTGlzdDsKICAgICBpZiAoIWFsbG9jYXRlZC5n
ZXRWYWx1ZShidWZmZXJMaXN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAppbmRl
eCBhNTgxY2Y2NTU2Zjk5NzU2ODdjYzUwNTFkYWVmOTNlMmMzMmI4OWI5Li5jN2U0MGVhZWFkYjAy
YzZiMjUzNzU0ZjA5YTMzODliYWViZDAwNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
VW5pcXVlUmVmPENBUmluZ0J1ZmZlcj4gQ0FSaW5nQnVmZmVyOjphZG9wdFN0b3JhZ2UoVW5pcXVl
UmVmPENBUmluZ0J1ZmZlclN0b3JhZ2UKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoTWVkaWEs
ICJDQVJpbmdCdWZmZXI6OmFkb3B0U3RvcmFnZTogT3ZlcmZsb3dlZCB3aGVuIHRyeWluZyB0byBj
b21wdXRlIHRoZSBzdG9yYWdlIHNpemUiKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8
Q0FSaW5nQnVmZmVyPigpOwogICAgIH0KLSAgICBpZiAoc3RvcmFnZS0+c2l6ZSgpIDwgZXhwZWN0
ZWRTdG9yYWdlU2l6ZS51bnNhZmVHZXQoKSkgeworICAgIGlmIChzdG9yYWdlLT5zaXplKCkgPCBl
eHBlY3RlZFN0b3JhZ2VTaXplLnZhbHVlKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQo
TWVkaWEsICJDQVJpbmdCdWZmZXI6OmFkb3B0U3RvcmFnZTogU3RvcmFnZSBzaXplIGlzIGluc3Vm
ZmljaWVudCBmb3IgZm9ybWF0IGFuZCBmcmFtZUNvdW50Iik7CiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPENBUmluZ0J1ZmZlcj4oKTsKICAgICB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQg
Q0FSaW5nQnVmZmVyOjppbml0aWFsaXplQWZ0ZXJBbGxvY2F0aW9uKGNvbnN0IENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZm9yCiAgICAgbV9ieXRlc1BlckZyYW1lID0gZm9ybWF0LmJ5dGVzUGVy
RnJhbWUoKTsKICAgICBtX2ZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgIG1fZnJhbWVDb3Vu
dE1hc2sgPSBmcmFtZUNvdW50IC0gMTsKLSAgICBtX2NhcGFjaXR5Qnl0ZXMgPSBjb21wdXRlQ2Fw
YWNpdHlCeXRlcyhmb3JtYXQsIGZyYW1lQ291bnQpLnVuc2FmZUdldCgpOworICAgIG1fY2FwYWNp
dHlCeXRlcyA9IGNvbXB1dGVDYXBhY2l0eUJ5dGVzKGZvcm1hdCwgZnJhbWVDb3VudCkudmFsdWUo
KTsKIAogICAgIG1fcG9pbnRlcnMucmVzaXplKG1fY2hhbm5lbENvdW50KTsKICAgICBCeXRlKiBj
aGFubmVsRGF0YSA9IHN0YXRpY19jYXN0PEJ5dGUqPihtX2J1ZmZlcnMtPmRhdGEoKSk7CkBAIC0x
MjMsOCArMTIzLDggQEAgYm9vbCBDQVJpbmdCdWZmZXI6OmFsbG9jYXRlKGNvbnN0IENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgZnJhbWUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGlmIChVTkxJS0VMWSghbV9idWZmZXJzLT5hbGxvY2F0ZShzaXpl
Rm9yQnVmZmVycy51bnNhZmVHZXQoKSwgZm9ybWF0LCBmcmFtZUNvdW50KSkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRkFVTFQoTWVkaWEsICJDQVJpbmdCdWZmZXI6OmFsbG9jYXRlOiBGYWlsZWQg
dG8gYWxsb2NhdGUgYnVmZmVyIG9mIHRoZSByZXF1ZXN0ZWQgc2l6ZTogJWx1Iiwgc2l6ZUZvckJ1
ZmZlcnMudW5zYWZlR2V0KCkpOworICAgIGlmIChVTkxJS0VMWSghbV9idWZmZXJzLT5hbGxvY2F0
ZShzaXplRm9yQnVmZmVycy52YWx1ZSgpLCBmb3JtYXQsIGZyYW1lQ291bnQpKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChNZWRpYSwgIkNBUmluZ0J1ZmZlcjo6YWxsb2NhdGU6IEZhaWxl
ZCB0byBhbGxvY2F0ZSBidWZmZXIgb2YgdGhlIHJlcXVlc3RlZCBzaXplOiAlbHUiLCBzaXplRm9y
QnVmZmVycy52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5jcHAKaW5kZXggODQ4NTY3M2FmYTUzNTdhYjNmNGE0Nzc1N2I1MDAwOWE4YzFkYzNk
Zi4uODU4YWNiNGRjZGI1ZTk5OTk4ZjU0ZjkyOTNjNzRlZTkwZmNkZDE2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZl
ckxpc3QuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdlYkF1ZGlvQnVmZmVyTGlzdDo6V2ViQXVkaW9C
dWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0KQogCiAgICAg
Q2hlY2tlZFNpemUgYnVmZmVyTGlzdFNpemUgPSBvZmZzZXRvZihBdWRpb0J1ZmZlckxpc3QsIG1C
dWZmZXJzKTsKICAgICBidWZmZXJMaXN0U2l6ZSArPSAoc2l6ZW9mKEF1ZGlvQnVmZmVyKSAqIHN0
ZDo6bWF4KDFVLCBidWZmZXJDb3VudCkpOwotICAgIG1fbGlzdEJ1ZmZlclNpemUgPSBidWZmZXJM
aXN0U2l6ZS51bnNhZmVHZXQoKTsKKyAgICBtX2xpc3RCdWZmZXJTaXplID0gYnVmZmVyTGlzdFNp
emUudmFsdWUoKTsKICAgICBtX2Nhbm9uaWNhbExpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9C
dWZmZXJMaXN0PihzdGF0aWNfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAo
bV9saXN0QnVmZmVyU2l6ZSkpKTsKICAgICBtZW1zZXQobV9jYW5vbmljYWxMaXN0LmdldCgpLCAw
LCBtX2xpc3RCdWZmZXJTaXplKTsKICAgICBtX2Nhbm9uaWNhbExpc3QtPm1OdW1iZXJCdWZmZXJz
ID0gYnVmZmVyQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb3JtYXRDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zvcm1hdENvbnZlcnRlci5oCmluZGV4IDAyYzgwYjUxNjk1Y2QwMjcxMDk3YTljMzlkYjFmZTlh
M2FlODgwOGUuLmUxYWY4YjQ0MmQ5YjYyNGIyYzc5YmNhZmMyMDkwNTY3NjNiMWZkNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5o
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IE1heE51bWJlck9mQ29tcG9uZW50cyA9IDQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5
dGVzUGVyQ29tcG9uZW50ICA9IDQ7Ci0gICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNE
YXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KChDaGVja2VkPHNpemVfdD4obV9zcmNTdWJS
ZWN0YW5nbGUud2lkdGgoKSkgKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1BlckNv
bXBvbmVudCkudW5zYWZlR2V0KCkpOworICAgICAgICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3Jj
RGF0YSA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PigoQ2hlY2tlZDxzaXplX3Q+KG1fc3JjU3Vi
UmVjdGFuZ2xlLndpZHRoKCkpICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4Qnl0ZXNQZXJD
b21wb25lbnQpLnZhbHVlKCkpOwogCiAgICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50ZXJtZWRp
YXRlU3JjRGF0YS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGYyYzRjMTBhZTM5Yzdl
MzYyMWRhOGI4N2M2MjliZmZiOGJiZjJjYTAuLjNhOTI4NTgwNzc2YzI2MzM0ZWU5YmVhZDUzNzEz
YzMwN2ViNmU0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTY4MSwxOSArNjgxLDE5IEBAIEdDR0xlbnVt
IEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5CiAgICAgICAgIHRtcCAqPSBieXRlc1Blckdyb3VwOwogICAgICAgICBp
ZiAodG1wLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9WQUxVRTsKLSAgICAgICAgbGFzdFJvd1NpemUgPSB0bXAudW5zYWZlR2V0
KCk7CisgICAgICAgIGxhc3RSb3dTaXplID0gdG1wLnZhbHVlKCk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGxhc3RSb3dTaXplID0gY2hlY2tlZFZhbHVlLnVuc2FmZUdldCgpOworICAgICAgICBsYXN0
Um93U2l6ZSA9IGNoZWNrZWRWYWx1ZS52YWx1ZSgpOwogCiAgICAgdW5zaWduZWQgcGFkZGluZyA9
IDA7Ci0gICAgdW5zaWduZWQgcmVzaWR1YWwgPSBjaGVja2VkVmFsdWUudW5zYWZlR2V0KCkgJSBw
YXJhbXMuYWxpZ25tZW50OworICAgIHVuc2lnbmVkIHJlc2lkdWFsID0gY2hlY2tlZFZhbHVlLnZh
bHVlKCkgJSBwYXJhbXMuYWxpZ25tZW50OwogICAgIGlmIChyZXNpZHVhbCkgewogICAgICAgICBw
YWRkaW5nID0gcGFyYW1zLmFsaWdubWVudCAtIHJlc2lkdWFsOwogICAgICAgICBjaGVja2VkVmFs
dWUgKz0gcGFkZGluZzsKICAgICB9CiAgICAgaWYgKGNoZWNrZWRWYWx1ZS5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRTsKLSAg
ICB1bnNpZ25lZCBwYWRkZWRSb3dTaXplID0gY2hlY2tlZFZhbHVlLnVuc2FmZUdldCgpOworICAg
IHVuc2lnbmVkIHBhZGRlZFJvd1NpemUgPSBjaGVja2VkVmFsdWUudmFsdWUoKTsKIAogICAgIENo
ZWNrZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiByb3dzID0gaW1hZ2VIZWlnaHQ7CiAgICAg
cm93cyAqPSAoZGVwdGggLSAxKTsKQEAgLTcwNiw3ICs3MDYsNyBAQCBHQ0dMZW51bSBHcmFwaGlj
c0NvbnRleHRHTDo6Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eQogICAgIGNoZWNrZWRWYWx1ZSArPSBsYXN0Um93U2l6ZTsKICAgICBpZiAoY2hlY2tl
ZFZhbHVlLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFOwotICAgICppbWFnZVNpemVJbkJ5dGVzID0gY2hlY2tlZFZhbHVlLnVu
c2FmZUdldCgpOworICAgICppbWFnZVNpemVJbkJ5dGVzID0gY2hlY2tlZFZhbHVlLnZhbHVlKCk7
CiAgICAgaWYgKHBhZGRpbmdJbkJ5dGVzKQogICAgICAgICAqcGFkZGluZ0luQnl0ZXMgPSBwYWRk
aW5nOwogCkBAIC03MTcsMjggKzcxNywyOCBAQCBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6
Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eQogICAg
ICAgICB0bXAgKj0gcGFyYW1zLnNraXBJbWFnZXM7CiAgICAgICAgIGlmICh0bXAuaGFzT3ZlcmZs
b3dlZCgpKQogICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZB
TFVFOwotICAgICAgICBza2lwU2l6ZSArPSB0bXAudW5zYWZlR2V0KCk7CisgICAgICAgIHNraXBT
aXplICs9IHRtcC52YWx1ZSgpOwogICAgIH0KICAgICBpZiAocGFyYW1zLnNraXBSb3dzID4gMCkg
ewogICAgICAgICBDaGVja2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdG1wID0gcGFkZGVk
Um93U2l6ZTsKICAgICAgICAgdG1wICo9IHBhcmFtcy5za2lwUm93czsKICAgICAgICAgaWYgKHRt
cC5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfVkFMVUU7Ci0gICAgICAgIHNraXBTaXplICs9IHRtcC51bnNhZmVHZXQoKTsKKyAg
ICAgICAgc2tpcFNpemUgKz0gdG1wLnZhbHVlKCk7CiAgICAgfQogICAgIGlmIChwYXJhbXMuc2tp
cFBpeGVscyA+IDApIHsKICAgICAgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+
IHRtcCA9IGJ5dGVzUGVyR3JvdXA7CiAgICAgICAgIHRtcCAqPSBwYXJhbXMuc2tpcFBpeGVsczsK
ICAgICAgICAgaWYgKHRtcC5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUU7Ci0gICAgICAgIHNraXBTaXplICs9IHRtcC51
bnNhZmVHZXQoKTsKKyAgICAgICAgc2tpcFNpemUgKz0gdG1wLnZhbHVlKCk7CiAgICAgfQogICAg
IGlmIChza2lwU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9WQUxVRTsKICAgICBpZiAoc2tpcFNpemVJbkJ5dGVzKQotICAgICAg
ICAqc2tpcFNpemVJbkJ5dGVzID0gc2tpcFNpemUudW5zYWZlR2V0KCk7CisgICAgICAgICpza2lw
U2l6ZUluQnl0ZXMgPSBza2lwU2l6ZS52YWx1ZSgpOwogCi0gICAgY2hlY2tlZFZhbHVlICs9IHNr
aXBTaXplLnVuc2FmZUdldCgpOworICAgIGNoZWNrZWRWYWx1ZSArPSBza2lwU2l6ZS52YWx1ZSgp
OwogICAgIGlmIChjaGVja2VkVmFsdWUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUU7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dEdMOjpOT19FUlJPUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDBjNDQxMzI1MGU4ZGU2OTQzNzljZmYwZGVk
MGRkYzkyN2ZlYjM5OGMuLmE0YmQ0NGU0MDBhNzI3ZTBmODE3MGZkYzdhM2FiNjU3YmE2MmJkNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBzaXplLmFyZWEoKS51bnNhZmVHZXQoKSAqIHNpemVvZih1aW50MzJfdCk7Cisg
ICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkudmFsdWUoKSAqIHNpemVvZih1
aW50MzJfdCk7CiAKICAgICAgICAgaWYgKCFidWZmZXIudHJ5UmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZl
clNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYsNyArODYsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG1lbXNldChtX3BpeGVsc1B0
ciwgMCwgKG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSk7Cisg
ICAgICAgIG1lbXNldChtX3BpeGVsc1B0ciwgMCwgKG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YodWlu
dDMyX3QpKS52YWx1ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggYTYyYjNjN2JkNjMwZGI5OGJjMmFjY2E3Yjdh
ZDQ1YWNhMDkxNmEwMS4uMjM3MTk0MGFmZjFhZDdkZTRiM2ViOWM0ZWVkN2RmMmIzZDg4MGUwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHNpemVfdCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIHVuc2ln
CiB7CiAgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpOwogICAgIENoZWNrZWRTaXpl
IG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXpl
LmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93OwotICAgIHJldHVybiBudW1CeXRlcy51bnNhZmVHZXQo
KTsKKyAgICByZXR1cm4gbnVtQnl0ZXMudmFsdWUoKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5k
OjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCAzZjJiMWZj
MDk5YTU4ZDU2NGUyMDUzZWVhMzM5YjU3MTAwY2YzMDEwLi45ODQzYWFjNDBlYjRjMTc4YjZmYjA5
NDE2M2ZiNjg4NTdhZjVkMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VGcmFtZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29t
cGxldGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVz
OjpDb21wbGV0ZTsgfQogCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQg
ZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc05hdGl2ZUltYWdlKCkgPyAoc2l6ZSgpLmFy
ZWEoKSAqIHNpemVvZih1aW50MzJfdCkpLnVuc2FmZUdldCgpIDogMDsgfQorICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNOYXRpdmVJbWFnZSgpID8gKHNpemUoKS5h
cmVhKCkgKiBzaXplb2YodWludDMyX3QpKS52YWx1ZSgpIDogMDsgfQogICAgIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2FtcGxpbmdMZXZl
bDsgfQogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmF0aXZlSW1hZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0NWU0YjNiZjBjYzIxZWFjMmNkMzQzZTA2ZGVhNTVi
NTAxN2UwYjUxLi5iOTMzODczZTM1YzE5YzYzNjc1ZjMyODg3NGY3ZWM3ZmRiNTI4MjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBA
IC02MzEsNyArNjMxLDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwoKQogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpGaXJzdDsKIAogICAgIGZvciAoOyBsZXZlbCA8IFN1YnNhbXBsaW5nTGV2ZWw6Okxh
c3Q7ICsrbGV2ZWwpIHsKLSAgICAgICAgaWYgKGZyYW1lU2l6ZUF0SW5kZXgoMCwgbGV2ZWwpLmFy
ZWEoKS51bnNhZmVHZXQoKSA8IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKKyAg
ICAgICAgaWYgKGZyYW1lU2l6ZUF0SW5kZXgoMCwgbGV2ZWwpLmFyZWEoKS52YWx1ZSgpIDwgbWF4
aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5j
cHAKaW5kZXggOTU1ODA3ZmQzYTAwMWM2MjJlMmZiOGNjMGI0OTRlZGE4OTRmZjAyYi4uODUzNDk1
NTE2ZWRhMzU5MzI5MDc2YTQyNmY3NWZkYzY2OTRhNDBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNTksNyArNTksNyBAQCBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZm
ZXJTaXplKGNvbnN0IFBpeGVsQnVmZgogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxC
dWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3Jt
YXQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKQogewogICAg
IEFTU0VSVChzdXBwb3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKLSAgICBB
U1NFUlQoY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKS51bnNhZmVHZXQoKSA9PSBkYXRh
Qnl0ZUxlbmd0aCk7CisgICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSku
dmFsdWUoKSA9PSBkYXRhQnl0ZUxlbmd0aCk7CiAKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50
OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhQnl0ZUxlbmd0aCk7CiAg
ICAgaWYgKCFwaXhlbEFycmF5KQpAQCAtNzQsNyArNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBm
b3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6
ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOworICAgIGF1dG8g
cGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1
ZmZlclNpemUudmFsdWUoKSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJl
bGVhc2VOb25OdWxsKCkgfSB9OwpAQCAtODcsOSArODcsOSBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBm
b3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6
ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJTaXplLnVuc2FmZUdldCgpICE9IGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpCisgICAgaWYgKGJ1ZmZlclNpemUudmFsdWUoKSAhPSBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1
dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIDAsIGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOworICAgIGF1dG8gcGl4ZWxBcnJh
eSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAs
IGJ1ZmZlclNpemUudmFsdWUoKSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5
LnJlbGVhc2VOb25OdWxsKCkgfSB9OwpAQCAtMTAwLDcgKzEwMCw3IEBAIFBpeGVsQnVmZmVyOjpQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXpl
JiBzaXplLCBSCiAgICAgLCBtX3NpemUgeyBzaXplIH0KICAgICAsIG1fZGF0YSB7IFdURk1vdmUo
ZGF0YSkgfQogewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
KG1fc2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKChtX3NpemUuYXJlYSgp
ICogNCkudmFsdWUoKSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKIH0KIAogUGl4ZWxCdWZmZXI6OlBp
eGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUm
IHNpemUsIEpTQzo6VWludDhDbGFtcGVkQXJyYXkmIGRhdGEpCkBAIC0xMDgsNyArMTA4LDcgQEAg
UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQs
IGNvbnN0IEludFNpemUmIHNpemUsIEoKICAgICAsIG1fc2l6ZSB7IHNpemUgfQogICAgICwgbV9k
YXRhIHsgZGF0YSB9CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTigobV9zaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkp
OworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5h
cmVhKCkgKiA0KS52YWx1ZSgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCiBQaXhlbEJ1ZmZl
cjo6flBpeGVsQnVmZmVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKaW5kZXggMTJjYTNjOGM3MmQ5Mzc0NjQ1ZGI1MWMwYzAw
YThkNGI5ZTg2MmRkYy4uZDg1OWNkMGFkNmRiOGQzNWQ3NDIzYTEzYzJjZmNkZTg4OWJiMWI0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCkBA
IC03OCw3ICs3OCw3IEBAIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQaXhlbEJ1ZmZlciYpCiAKIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewotICAgIEFTU0VSVChtX2RhdGEtPmJ5dGVMZW5ndGgoKSA9PSAobV9zaXplLmFyZWEoKS51
bnNhZmVHZXQoKSAqIDQpKTsKKyAgICBBU1NFUlQobV9kYXRhLT5ieXRlTGVuZ3RoKCkgPT0gKG1f
c2l6ZS5hcmVhKCkudmFsdWUoKSAqIDQpKTsKIAogICAgIGVuY29kZXIgPDwgbV9mb3JtYXQ7CiAg
ICAgZW5jb2RlciA8PCBtX3NpemU7CkBAIC0xMDUsNyArMTA1LDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShE
ZWNvZGVyJgogICAgIGlmIChjb21wdXRlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0
ZWRCdWZmZXJTaXplLnVuc2FmZUdldCgpOworICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVk
QnVmZmVyU2l6ZS52YWx1ZSgpOwogICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xh
cmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQppbmRleCAzMGVlYWFhMzU3NGQ1Y2Y1NzUzMjU2OTZhNWFkZTk4NmQ4OWJmYzRkLi5k
M2I5MGRmNTYzMTc0ZjIwYjc4YTg2YjMwNTAxODJhM2IyZjkxMTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU1Niw3ICs1NTYsNyBAQCB1
bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgICAgICByZXR1cm4gMDsKIAogICAgIEludFNpemUg
ZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0g
ICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJu
IChmcmFtZVNpemUuYXJlYSgpICogNCkudmFsdWUoKTsKIH0KIAogUGxhdGZvcm1JbWFnZVB0ciBJ
bWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggMWNhOGVmZWVkMGJmODQzOWQ3
M2U2NDQ3NWEyOTkzNWFhNGFjMDA3OS4uODE5MmRiMGRmOTRjOTc2NTEzYWY0YWM5MzkxNGFlNzUw
YzhjMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5t
bQpAQCAtNDcxLDcgKzQ3MSw3IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5n
ZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2UoKSBjb25zdAogCiB2b2lkIE1lZGlhU2Ft
cGxlQVZGT2JqQzo6c2V0Qnl0ZVJhbmdlT2Zmc2V0KHNpemVfdCBieXRlT2Zmc2V0KQogewotICAg
IGludDY0X3QgY2hlY2tlZE9mZnNldCA9IENoZWNrZWRJbnQ2NChieXRlT2Zmc2V0KS51bnNhZmVH
ZXQoKTsKKyAgICBpbnQ2NF90IGNoZWNrZWRPZmZzZXQgPSBDaGVja2VkSW50NjQoYnl0ZU9mZnNl
dCkudmFsdWUoKTsKICAgICBhdXRvIG9mZnNldE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmNoZWNrZWRPZmZz
ZXQpKTsKICAgICBQQUw6OkNNU2V0QXR0YWNobWVudChtX3NhbXBsZS5nZXQoKSwgYnl0ZVJhbmdl
T2Zmc2V0QXR0YWNobWVudEtleSgpLCBvZmZzZXROdW1iZXIuZ2V0KCksIGtDTUF0dGFjaG1lbnRN
b2RlX1Nob3VsZFByb3BhZ2F0ZSk7CiB9CkBAIC00OTMsNyArNDkzLDcgQEAgc3RkOjpvcHRpb25h
bDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmJ5dGVSYW5nZUZv
ckF0dGFjaG1lbnQKIAogICAgIHNpemVfdCBzaW5nbGVTaXplRW50cnkgPSAwOwogICAgIFBBTDo6
Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXkobV9zYW1wbGUuZ2V0KCksIDEsICZzaW5n
bGVTaXplRW50cnksIG51bGxwdHIpOwotICAgIHJldHVybiB7IHsgQ2hlY2tlZFNpemUoYnl0ZU9m
ZnNldCkudW5zYWZlR2V0KCksIHNpbmdsZVNpemVFbnRyeSB9IH07CisgICAgcmV0dXJuIHsgeyBD
aGVja2VkU2l6ZShieXRlT2Zmc2V0KS52YWx1ZSgpLCBzaW5nbGVTaXplRW50cnkgfSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAppbmRleCBmZmExYzU4NTQxMTVjNjk1YmFkYTMwY2FmYWM2N2MyYjUw
N2RmMmQ3Li4zZjYzMjU3NWI4YTQ4MzZiM2MzNTZiYjVkMmExNDFlOGRhZGEwYzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKQEAgLTIzNTEsOCArMjM1MSw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRh
dGVCYWNrZHJvcEZpbHRlcnMoQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlKQogICAgICAgICAgICAg
Q2hlY2tlZFVuc2lnbmVkIGJhY2tkcm9wRmlsdGVyQXJlYSA9IENoZWNrZWRVbnNpZ25lZChiYWNr
ZHJvcEZpbHRlclJlY3Qud2lkdGgoKSkgKiBDaGVja2VkVW5zaWduZWQoYmFja2Ryb3BGaWx0ZXJS
ZWN0LmhlaWdodCgpKTsKICAgICAgICAgICAgIGlmICghYmFja2Ryb3BGaWx0ZXJBcmVhLmhhc092
ZXJmbG93ZWQoKSkgewogICAgICAgICAgICAgICAgIENoZWNrZWRVbnNpZ25lZCBuZXdUb3RhbEJh
Y2tkcm9wRmlsdGVyQXJlYSA9IENoZWNrZWRVbnNpZ25lZChjb21taXRTdGF0ZS50b3RhbEJhY2tk
cm9wRmlsdGVyQXJlYSkgKyBiYWNrZHJvcEZpbHRlckFyZWE7Ci0gICAgICAgICAgICAgICAgaWYg
KCFuZXdUb3RhbEJhY2tkcm9wRmlsdGVyQXJlYS5oYXNPdmVyZmxvd2VkKCkgJiYgbmV3VG90YWxC
YWNrZHJvcEZpbHRlckFyZWEudW5zYWZlR2V0KCkgPD0gY01heFRvdGFsQmFja2Ryb3BGaWx0ZXJB
cmVhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1pdFN0YXRlLnRvdGFsQmFja2Ryb3BGaWx0
ZXJBcmVhID0gbmV3VG90YWxCYWNrZHJvcEZpbHRlckFyZWEudW5zYWZlR2V0KCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFuZXdUb3RhbEJhY2tkcm9wRmlsdGVyQXJlYS5oYXNPdmVyZmxvd2VkKCkg
JiYgbmV3VG90YWxCYWNrZHJvcEZpbHRlckFyZWEudmFsdWUoKSA8PSBjTWF4VG90YWxCYWNrZHJv
cEZpbHRlckFyZWEpIHsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0U3RhdGUudG90YWxCYWNr
ZHJvcEZpbHRlckFyZWEgPSBuZXdUb3RhbEJhY2tkcm9wRmlsdGVyQXJlYS52YWx1ZSgpOwogICAg
ICAgICAgICAgICAgICAgICBjYW5IYXZlQmFja2Ryb3BGaWx0ZXJzID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvTGF5ZXJQb29sLmNwcAppbmRleCBjMjJkM2Q3ZmM4N2NlZmRmNDAwNTUyZjBl
NGNhY2RiMmU3MGIzNTc3Li4wNWY0YTMxMzE0NmZkOGVhOWNlMmFhN2ZhOTBiMzJkNGFlZjE5Njkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllclBv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9v
bC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSGFzaFNldDxMYXllclBvb2wqPiYgTGF5ZXJQb29sOjph
bGxMYXllclBvb2xzKCkKIAogdW5zaWduZWQgTGF5ZXJQb29sOjpiYWNraW5nU3RvcmVCeXRlc0Zv
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gKHNpemUuYXJlYSgpICog
NCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChzaXplLmFyZWEoKSAqIDQpLnZhbHVlKCk7CiB9
CiAKIExheWVyUG9vbDo6TGF5ZXJMaXN0JiBMYXllclBvb2w6Omxpc3RPZkxheWVyc1dpdGhTaXpl
KGNvbnN0IEludFNpemUmIHNpemUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAKaW5kZXggY2QxZDZjMGVhNWQyZTIzMDUwZmNiNDAxYTQ1Y2VjYTg1YWJmY2Q3Zi4u
NDAxYzNiMTllNjE5M2Y2MTBmMGJlMmNiYWNmYTg5YzJmOGJkMTQ4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAKQEAgLTQ4OSw3ICs0ODksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAg
IC8vIGJ1dCBpdCB3b3VsZCBwcmVtdWx0aXBseSB0aGUgYWxwaGEgY2hhbm5lbCBhcyBhIHNpZGUg
ZWZmZWN0LgogICAgIC8vIFByZWZlciB0byBtYW5udWFsbHkgQ29udmVydCAxNmJpdCBwZXItY29t
cG9uZW50IGZvcm1hdHMgdG8gUkdCQTggZm9ybWF0cyBpbnN0ZWFkLgogICAgIGlmIChiaXRzUGVy
Q29tcG9uZW50ID09IDE2KSB7Ci0gICAgICAgIG1fZm9ybWFsaXplZFJHQkE4RGF0YSA9IG1ha2VV
bmlxdWVBcnJheTx1aW50OF90PigoQ2hlY2tlZDxzaXplX3Q+KG1faW1hZ2VXaWR0aCkgKiBtX2lt
YWdlSGVpZ2h0ICogNFUpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgbV9mb3JtYWxpemVkUkdCQThE
YXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KChDaGVja2VkPHNpemVfdD4obV9pbWFnZVdp
ZHRoKSAqIG1faW1hZ2VIZWlnaHQgKiA0VSkudmFsdWUoKSk7CiAgICAgICAgIGNvbnN0IHVpbnQx
Nl90KiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4obV9pbWFnZVBp
eGVsRGF0YSk7CiAgICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uID0gbV9mb3JtYWxpemVkUkdC
QThEYXRhLmdldCgpOwogICAgICAgICBjb25zdCBwdHJkaWZmX3Qgc3JjU3RyaWRlSW5FbGVtZW50
cyA9IGJ5dGVzUGVyUm93IC8gc2l6ZW9mKHVpbnQxNl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cAppbmRleCBjMTJiMmY4MGMwYjMyMjhjODYxNWYzYjg4N2FhMWU4ZWZhMDVhMjY5Li44YWQwNzJh
ODU0NjRkOWViMWI4NzUwMDNhNjk0ZTU2MzZlZTBlYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxj
dWxhdGVCeXRlc1BlclJvdyhjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSkKIHsKICAgICBBU1NF
UlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3Jk
T3ZlcmZsb3c+IGJ5dGVzUGVyUm93ID0gKENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PihiYWNrZW5kU2l6ZS53aWR0aCgpKSAqIDQpOwotICAgIHJldHVybiBieXRlc1BlclJvdy51bnNh
ZmVHZXQoKTsKKyAgICByZXR1cm4gYnl0ZXNQZXJSb3cudmFsdWUoKTsKIH0KIAogUmV0YWluUHRy
PENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBiOGFlMmY3
ZmM0Yjc1MjQ0MzdlYTYzZmFkNGRmOGE0N2ZjM2JmOGVlLi40NjNlNTUwNWQyNTUzM2I5YzQ0ZTJj
YjY4ZmQ0MzdlZDdlYzFmMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC01MTQsNyArNTE0LDcgQEAgYm9v
bCBJbWFnZURlY29kZXJDRzo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dAogdW5zaWduZWQgSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewogICAgIEludFNp
emUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7
Ci0gICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0
dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudmFsdWUoKTsKIH0KIAogUGxhdGZvcm1JbWFnZVB0
ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
ZGVjb2RpbmdPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggZGI1OTMxMmI4
ZWZhOTM0N2YwODdjOGQ4YTI2NmFjMTVhNTk0ZmU5Yi4uOWQwMzIwZGU4YjEwOGRhZjVjMDBhNzFm
ZTJmN2U5Njk1YTU5YTg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC05Niw3ICs5
Niw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBv
c2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWluCiAgICAgICAgIFsmXShjb25zdCBSZXRhaW5Q
dHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYgYnl0ZVNvdXJjZSkgLT4gc2l6ZV90CiAgICAgICAg
IHsKICAgICAgICAgICAgIHNpemVfdCBzaXplUmVhZCA9IDA7Ci0gICAgICAgICAgICBpZiAoTVRQ
bHVnaW5CeXRlU291cmNlUmVhZChieXRlU291cmNlLmdldCgpLCBzaXplVG9SZWFkLCBDaGVja2Vk
SW50NjQocG9zaXRpb24pLnVuc2FmZUdldCgpLCBkZXN0aW5hdGlvbiwgJnNpemVSZWFkKSAhPSBu
b0VycikKKyAgICAgICAgICAgIGlmIChNVFBsdWdpbkJ5dGVTb3VyY2VSZWFkKGJ5dGVTb3VyY2Uu
Z2V0KCksIHNpemVUb1JlYWQsIENoZWNrZWRJbnQ2NChwb3NpdGlvbikudmFsdWUoKSwgZGVzdGlu
YXRpb24sICZzaXplUmVhZCkgIT0gbm9FcnIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICByZXR1cm4gc2l6ZVJlYWQ7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cAppbmRleCA3NTg4ZGNkYWRjYzlhYTFlMmJhYzRiOWU4YTI1NTA0MzE3YzU5YzJmLi45Yzg0YmFm
YWZjYmE1NGZkNTkwZjYwNGY5MDY4NThjOGI2MTkzZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAK
QEAgLTEwMCw3ICsxMDAsNyBAQCBpbmxpbmUgdm9pZCBsdW1pbmFuY2UoZmxvYXQmIHJlZCwgZmxv
YXQmIGdyZWVuLCBmbG9hdCYgYmx1ZSwgZmxvYXQmIGFscGhhKQogdGVtcGxhdGU8Q29sb3JNYXRy
aXhUeXBlIGZpbHRlclR5cGU+CiBib29sIGVmZmVjdEFwcGx5QWNjZWxlcmF0ZWQoVWludDhDbGFt
cGVkQXJyYXkmIHBpeGVsQXJyYXksIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcywgZmxvYXQg
Y29tcG9uZW50c1s5XSwgSW50U2l6ZSBidWZmZXJTaXplKQogewotICAgIEFTU0VSVChwaXhlbEFy
cmF5Lmxlbmd0aCgpID09IGJ1ZmZlclNpemUuYXJlYSgpLnVuc2FmZUdldCgpICogNCk7CisgICAg
QVNTRVJUKHBpeGVsQXJyYXkubGVuZ3RoKCkgPT0gYnVmZmVyU2l6ZS5hcmVhKCkudmFsdWUoKSAq
IDQpOwogICAgIAogICAgIGlmIChmaWx0ZXJUeXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRS
SVgpIHsKICAgICAgICAgLy8gdkltYWdlTWF0cml4TXVsdGlwbHlfQVJHQjg4ODggdGFrZXMgYSA0
eDQgbWF0cml4LCBpZiBhbnkgdmFsdWUgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSBGRUNvbG9y
TWF0cml4IDV4NCBtYXRyaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggYTgwZTAxNDU0ZGIw
ZGM2ZjE0NDgwNDJiMDAxYTkxMzNjNTc5ZThjYi4uNGVkZDNmZGYzNDUyZTRiNzgwODBlMTY5NzU1
OWYzMGYzYjdiOTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTU0MSw3ICs1NDEsNyBA
QCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgSW50
U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsKICAgICBwYWludFNp
emUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byB0bXBJbWFnZURhdGEg
PSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgocGFpbnRTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUuYXJlYSgpICogNCku
dmFsdWUoKSk7CiAgICAgaWYgKCF0bXBJbWFnZURhdGEpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwCmluZGV4IDE1ZTE5Yjg4MTg4MWJmMWQ5ZGIzZGFmMGFjODU3N2ZhMGQzMzVl
MzQuLjYyNmJhODY3ODJhYTU0ZDVmODU2OTZkMDk3MGEwMjg5NzUzOTllODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVs
ZW5jZS5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICBpbnQgaGVpZ2h0ID0gcmVzdWx0U2l6ZS5oZWlnaHQoKTsKIAog
ICAgIHVuc2lnbmVkIG1heE51bVRocmVhZHMgPSBoZWlnaHQgLyA4OwotICAgIHVuc2lnbmVkIG9w
dGltYWxUaHJlYWROdW1iZXIgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oYXJlYS51bnNhZmVHZXQoKSAv
IHNfbWluaW1hbFJlY3REaW1lbnNpb24sIG1heE51bVRocmVhZHMpOworICAgIHVuc2lnbmVkIG9w
dGltYWxUaHJlYWROdW1iZXIgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oYXJlYS52YWx1ZSgpIC8gc19t
aW5pbWFsUmVjdERpbWVuc2lvbiwgbWF4TnVtVGhyZWFkcyk7CiAgICAgaWYgKG9wdGltYWxUaHJl
YWROdW1iZXIgPiAxKSB7CiAgICAgICAgIFdURjo6UGFyYWxsZWxKb2JzPEZpbGxSZWdpb25QYXJh
bWV0ZXJzPiBwYXJhbGxlbEpvYnMoJldlYkNvcmU6OkZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbldv
cmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBmZDc3
NGNhOTNhZjYxMTQ0MzIzZDY2NDE5Mzc3MzQ0M2YxZDBhMTk2Li4yYjMzZDY0Y2NjNGU4MmQyZWQz
MjlmODljZmJkZGZkMzRlZGMxYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yOTMsNyArMjkz
LDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGll
ZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogICAgIGF1dG8gY2hlY2tlZEFyZWEgPSBzY2Fs
ZWRTaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiA0OwogICAgIGlmIChjaGVja2VkQXJlYS5o
YXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcGl4ZWxB
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGNoZWNrZWRB
cmVhLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChjaGVja2VkQXJlYS52YWx1ZSgpKTsKICAgICBpZiAo
IXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvcHlVbm11bHRpcGxp
ZWRSZXN1bHQoKnBpeGVsQXJyYXksIHJlY3QsIGNvbG9yU3BhY2UpOwpAQCAtMzA4LDcgKzMwOCw3
IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVk
UmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsCiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxl
ZFNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhh
c092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEFy
cmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoY2hlY2tlZEFy
ZWEudW5zYWZlR2V0KCkpOworICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGNoZWNrZWRBcmVhLnZhbHVlKCkpOwogICAgIGlmICgh
cGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29weVByZW11bHRpcGxp
ZWRSZXN1bHQoKnBpeGVsQXJyYXksIHJlY3QsIGNvbG9yU3BhY2UpOwpAQCAtMzg0LDcgKzM4NCw3
IEBAIHN0YXRpYyB2b2lkIGNvcHlQcmVtdWx0aXBseWluZ0FscGhhKGNvbnN0IFVpbnQ4Q2xhbXBl
ZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlCiAgICAgdkltYWdlUHJlbXVsdGlwbHlEYXRhX1JH
QkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncyk7CiAjZWxzZQogICAgIGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZUNvbXBvbmVudCA9IHNvdXJjZS5kYXRhKCk7Ci0gICAgY29uc3QgdWludDhf
dCogZW5kID0gc291cmNlQ29tcG9uZW50ICsgKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVH
ZXQoKTsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBzb3VyY2VDb21wb25lbnQgKyAoaW5wdXRT
aXplLmFyZWEoKSAqIDQpLnZhbHVlKCk7CiAgICAgdWludDhfdCogZGVzdGluYXRpb25Db21wb25l
bnQgPSBkZXN0aW5hdGlvbi5kYXRhKCk7CiAKICAgICB3aGlsZSAoc291cmNlQ29tcG9uZW50IDwg
ZW5kKSB7CkBAIC00MTksNyArNDE5LDcgQEAgc3RhdGljIHZvaWQgY29weVVucHJlbXVsdGlwbHlp
bmdBbHBoYShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW0KICAgICB2
SW1hZ2VVbnByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5vRmxh
Z3MpOwogI2Vsc2UKICAgICBjb25zdCB1aW50OF90KiBzb3VyY2VDb21wb25lbnQgPSBzb3VyY2Uu
ZGF0YSgpOwotICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHNvdXJjZUNvbXBvbmVudCArIChpbnB1
dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgY29uc3QgdWludDhfdCogZW5kID0g
c291cmNlQ29tcG9uZW50ICsgKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS52YWx1ZSgpOwogICAgIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gZGVzdGluYXRpb24uZGF0YSgpOwogICAgIHdo
aWxlIChzb3VyY2VDb21wb25lbnQgPCBlbmQpIHsKICAgICAgICAgaW50IGFscGhhID0gc291cmNl
Q29tcG9uZW50WzNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFs
Lm1tCmluZGV4IDYzMTQ3NGNhNzk5ODc4N2QwMDUyZjcxNjZiZDc1Y2E5NzQwYWRjOTQuLjg2ZTM0
OGMyMTBmZTAxY2NmZTAyYjYwNTZiOTBlODZhODM1ZTdkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JN
ZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KQEAgLTc0LDcgKzc0LDcgQEAgc3RkOjpvcHRp
b25hbDxHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gR1BVQmlu
ZEdyb3VwQWxsb2NhdG8KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBhdXRvIG5l
d09mZnNldCA9IGNoZWNrZWRPZmZzZXQudW5zYWZlR2V0KCk7CisgICAgYXV0byBuZXdPZmZzZXQg
PSBjaGVja2VkT2Zmc2V0LnZhbHVlKCk7CiAKICAgICBpZiAobV9hcmd1bWVudEJ1ZmZlciAmJiBu
ZXdPZmZzZXQgPiBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxlbmd0aCkgewogICAgICAgICBpZiAo
IXJlYWxsb2NhdGUobmV3T2Zmc2V0KSkKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIEdQVUJpbmRH
cm91cEFsbG9jYXRvcjo6cmVhbGxvY2F0ZShOU1VJbnRlZ2VyIG5ld09mZnNldCkKIAogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgbmV3QnVmZmVyID0gW21fYXJndW1lbnRC
dWZmZXIuZ2V0KCkuZGV2aWNlIG5ld0J1ZmZlcldpdGhMZW5ndGg6bmV3TGVuZ3RoLnVuc2FmZUdl
dCgpIG9wdGlvbnM6MF07CisgICAgbmV3QnVmZmVyID0gW21fYXJndW1lbnRCdWZmZXIuZ2V0KCku
ZGV2aWNlIG5ld0J1ZmZlcldpdGhMZW5ndGg6bmV3TGVuZ3RoLnZhbHVlKCkgb3B0aW9uczowXTsK
ICAgICBtZW1jcHkobmV3QnVmZmVyLmNvbnRlbnRzLCBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmNv
bnRlbnRzLCBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxlbmd0aCk7CiAKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQppbmRl
eCAzNDJlZmRkMGJkZDAzNjEzOGZlOTNlYjY4OWNhOWZiN2QwMjNlZWRjLi5iMGE4NzA3ZmRiYzI4
OGVjODlhZWQ3OTQzYTI0YThlYzhmZTI1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVm
ZmVyTWV0YWwubW0KQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNv
cHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIHNyYywgdWludDY0X3Qgc3JjT2Zmcwog
ICAgIGF1dG8gc3JjTGVuZ3RoID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBzcmNPZmZz
ZXQpOwogICAgIGF1dG8gZHN0TGVuZ3RoID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBk
c3RPZmZzZXQpOwogICAgIGlmIChzcmNMZW5ndGguaGFzT3ZlcmZsb3dlZCgpIHx8IGRzdExlbmd0
aC5oYXNPdmVyZmxvd2VkKCkKLSAgICAgICAgfHwgc3JjTGVuZ3RoLnVuc2FmZUdldCgpID4gc3Jj
LT5ieXRlTGVuZ3RoKCkgfHwgZHN0TGVuZ3RoLnVuc2FmZUdldCgpID4gZHN0LT5ieXRlTGVuZ3Ro
KCkpIHsKKyAgICAgICAgfHwgc3JjTGVuZ3RoLnZhbHVlKCkgPiBzcmMtPmJ5dGVMZW5ndGgoKSB8
fCBkc3RMZW5ndGgudmFsdWUoKSA+IGRzdC0+Ynl0ZUxlbmd0aCgpKSB7CiAgICAgICAgIExPRyhX
ZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBv
ZmZzZXQgb3IgY29weSBzaXplISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBh
c3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQppbmRleCBhYzY4OGRhZWEzZWZkOWIz
MDA1MzRkNWFlYjYyYThhYzQyMGEwYzg4Li45YzM1NWUyM2ExODA5NzEwNzdkMWZhMWJjZDE1OWNk
OGZiYmI5NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5t
bQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRl
eGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291CiAgICAgICAgIGlu
ZGV4Q291bnQ6aW5kZXhDb3VudAogICAgICAgICBpbmRleFR5cGU6bXRsSW5kZXhUeXBlRm9yR1BV
SW5kZXhGb3JtYXQoKm1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0KCkpCiAgICAgICAgIGluZGV4QnVm
ZmVyOm1faW5kZXhCdWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAgaW5kZXhCdWZmZXJP
ZmZzZXQ6dG90YWxPZmZzZXQudW5zYWZlR2V0KCkKKyAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQ6
dG90YWxPZmZzZXQudmFsdWUoKQogICAgICAgICBpbnN0YW5jZUNvdW50Omluc3RhbmNlQ291bnQK
ICAgICAgICAgYmFzZVZlcnRleDpiYXNlVmVydGV4CiAgICAgICAgIGJhc2VJbnN0YW5jZTpmaXJz
dEluc3RhbmNlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
ZWQxMzVhMjczZTE2MDA5ZTU3OTJkMjFmYjliNWViZTllOGU0Yzc5ZS4uZjg5ZGY0NWY2MTFmYjJh
ODQ3YWM5OGQ2MjUxYWJlNzdlYTg3OTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbAog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgcmV0dXJuIChmcmFtZVNpemUuYXJl
YSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCku
dmFsdWUoKTsKIH0KIAogUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwCmluZGV4IGM3OTE1ZmI1NWRl
MzNmNjZjYmZhYTkyMTM2MGIxOTk1NjQyZDljYzQuLjZlZWYxMGU0NGE3ZGUxOGZmMjI3YTJkNjI1
NzUyNTcxMGFmNTI0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBC
dWZmZXI6OkJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykK
ICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiB7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNpemUuYXJl
YSgpICogNDsKLSAgICBtX2RhdGEgPSBNYWxsb2NQdHI8dW5zaWduZWQgY2hhcj46OnRyeVplcm9l
ZE1hbGxvYyhjaGVja2VkQXJlYS51bnNhZmVHZXQoKSk7CisgICAgbV9kYXRhID0gTWFsbG9jUHRy
PHVuc2lnbmVkIGNoYXI+Ojp0cnlaZXJvZWRNYWxsb2MoY2hlY2tlZEFyZWEudmFsdWUoKSk7CiB9
CiAKIEJ1ZmZlcjo6fkJ1ZmZlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwCmluZGV4
IDMyNGFkOWE3NDBjMWNmODNlZjk3MWVkM2JiY2MzZDFiNGRkYmNkNDkuLjE5ZDVlNTZkODIzYjFj
MDE2Yjg0MDQ1ODkxY2QyZDg0ZjM4YmRiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmNwcApAQCAtMTMx
LDcgKzEzMSw3IEBAIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJlY3QyREltYWdlU3VyZmFj
ZVdpdGhEYXRhKHZvaWQqIGRhdGEsIGNvbnN0IEludFNpemUmCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQ09NUHRyPElXSUNCaXRtYXA+IHN1cmZhY2U7Ci0gICAgSFJFU1VMVCBociA9
IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVCaXRt
YXBGcm9tTWVtb3J5KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgd2ljQml0bWFwRm9ybWF0
KCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8VUlOVD4obnVtQnl0ZXMudW5zYWZlR2V0KCkpLCByZWlu
dGVycHJldF9jYXN0PEJZVEUqPihkYXRhKSwgJnN1cmZhY2UpOworICAgIEhSRVNVTFQgaHIgPSBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRlQml0bWFw
RnJvbU1lbW9yeShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIHdpY0JpdG1hcEZvcm1hdCgp
LCBzdHJpZGUsIHN0YXRpY19jYXN0PFVJTlQ+KG51bUJ5dGVzLnZhbHVlKCkpLCByZWludGVycHJl
dF9jYXN0PEJZVEUqPihkYXRhKSwgJnN1cmZhY2UpOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQuY3BwCmluZGV4IGZhMjA4N2VlMjExZTM5ZDYzMzgyZGVmODM3ZGEwZmJjNDZhMDY3YzMuLjFm
M2U3M2FiODFkMDZiZDg0MDliYzM3ZTM3ZGQ1MTgzZDk1OTE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5k
ZXJUYXJnZXQqCiAKICAgICBDT01QdHI8SUQyRDFCaXRtYXAxPiBzb3VyY2VDUFVCaXRtYXA7CiAg
ICAgRDJEMV9CSVRNQVBfUFJPUEVSVElFUzEgYml0bWFwUHJvcGVydGllcyA9IEQyRDE6OkJpdG1h
cFByb3BlcnRpZXMxKEQyRDFfQklUTUFQX09QVElPTlNfQ1BVX1JFQUQgfCBEMkQxX0JJVE1BUF9P
UFRJT05TX0NBTk5PVF9EUkFXLCBEaXJlY3QyRDo6cGl4ZWxGb3JtYXQoKSk7Ci0gICAgSFJFU1VM
VCBociA9IHNvdXJjZURldmljZUNvbnRleHQtPkNyZWF0ZUJpdG1hcChtX2JpdG1hcC0+R2V0UGl4
ZWxTaXplKCksIG51bGxwdHIsIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBiaXRtYXBQcm9wZXJ0
aWVzLCAmc291cmNlQ1BVQml0bWFwKTsKKyAgICBIUkVTVUxUIGhyID0gc291cmNlRGV2aWNlQ29u
dGV4dC0+Q3JlYXRlQml0bWFwKG1fYml0bWFwLT5HZXRQaXhlbFNpemUoKSwgbnVsbHB0ciwgYnl0
ZXNQZXJSb3cudmFsdWUoKSwgYml0bWFwUHJvcGVydGllcywgJnNvdXJjZUNQVUJpdG1hcCk7CiAg
ICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAKaW5kZXggOWMxMGE0NjRhM2E5MzA5ZTdiNTRjYWUyOGE3YmM1Njc3
NWRlNzkyNC4uMjQzYjVkNWRjNmU3MTNlNTUxMTRiMWI5ZGI2YWY1MDI5ZGU4ODRiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgdW5zaWduZWQgSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQ6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8gZnJhbWVTaXplID0gZnJhbWVT
aXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgcmV0dXJuIChmcmFtZVNp
emUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgp
ICogNCkudmFsdWUoKTsKIH0KIAogdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0VGFyZ2V0
Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuY3BwCmluZGV4IGRkYjExNDM5NDc0NDBkNzE3ZTgzM2NiZDNjN2Q2ZGMyMWEyMDNi
ZWEuLjZkNDVlZWMyODVmYjBlNzIyOTcyNTI4NTRjNGEzZDE3NjkyZTY0NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB1bnNpZ25lZCBTY2FsYWJs
ZUltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsKQogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAg
ICAgICByZXR1cm4gMDsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBkaW1lbnNpb24gb2YgdGhlIHJl
cXVlc3RlZCBmcmFtZS4KLSAgICByZXR1cm4gKG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMy
X3QpKS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gKG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YodWlu
dDMyX3QpKS52YWx1ZSgpOwogfQogCiBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAw
MC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNWEzMGExZjVmMDQ2MjRjYWE2NjRlZjlk
MjYwNDg5MTI0YzI3NTY3YS4uYmVjZjY0NTAyNzdlZWI3NGIwOWRlNTJlZTE4MmZmNmUxMWVkMjc2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
ZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NjAsMTIgKzYwLDEyIEBAIHN0YXRpYyB2b2lkIHN5Y2NUb1JHQihpbnQgb2Zmc2V0LCBpbnQgdXBi
LCBpbnQgeSwgaW50IGNiLCBpbnQgY3IsIGludCogciwgaW50KiBnCiBzdGF0aWMgdm9pZCBzeWNj
NDQ0VG9SR0Iob3BqX2ltYWdlX3QqIGltZykKIHsKICAgICBDaGVja2VkPGludD4gdXBiID0gc3Rh
dGljX2Nhc3Q8aW50PihpbWctPmNvbXBzWzBdLnByZWMpOwotICAgIGludCBvZmZzZXQgPSAxIDw8
ICh1cGIudW5zYWZlR2V0KCkgLSAxKTsKLSAgICB1cGIgPSAoMSA8PCB1cGIudW5zYWZlR2V0KCkp
IC0gMTsKKyAgICBpbnQgb2Zmc2V0ID0gMSA8PCAodXBiLnZhbHVlKCkgLSAxKTsKKyAgICB1cGIg
PSAoMSA8PCB1cGIudmFsdWUoKSkgLSAxOwogCiAgICAgQ2hlY2tlZDxzaXplX3Q+IG1heHcgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGltZy0+Y29tcHNbMF0udyk7CiAgICAgQ2hlY2tlZDxzaXplX3Q+
IG1heGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGltZy0+Y29tcHNbMF0uaCk7Ci0gICAgc2l6ZV90
IG1heCA9IChtYXh3ICogbWF4aCkudW5zYWZlR2V0KCk7CisgICAgc2l6ZV90IG1heCA9IChtYXh3
ICogbWF4aCkudmFsdWUoKTsKIAogICAgIGNvbnN0IGludCogeSA9IGltZy0+Y29tcHNbMF0uZGF0
YTsKICAgICBjb25zdCBpbnQqIGNiID0gaW1nLT5jb21wc1sxXS5kYXRhOwpAQCAtODYsNyArODYs
NyBAQCBzdGF0aWMgdm9pZCBzeWNjNDQ0VG9SR0Iob3BqX2ltYWdlX3QqIGltZykKICAgICB9CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heDsgKytpKSB7Ci0gICAgICAgIHN5Y2NUb1JH
QihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKKyAgICAg
ICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2IsICpjciwgciwgZywgYik7
CiAgICAgICAgICsreTsKICAgICAgICAgKytjYjsKICAgICAgICAgKytjcjsKQEAgLTEwNywxMiAr
MTA3LDEyIEBAIHN0YXRpYyB2b2lkIHN5Y2M0NDRUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogc3Rh
dGljIHZvaWQgc3ljYzQyMlRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiB7CiAgICAgQ2hlY2tlZDxp
bnQ+IHVwYiA9IHN0YXRpY19jYXN0PGludD4oaW1nLT5jb21wc1swXS5wcmVjKTsKLSAgICBpbnQg
b2Zmc2V0ID0gMSA8PCAodXBiLnVuc2FmZUdldCgpIC0gMSk7Ci0gICAgdXBiID0gKDEgPDwgdXBi
LnVuc2FmZUdldCgpKSAtIDE7CisgICAgaW50IG9mZnNldCA9IDEgPDwgKHVwYi52YWx1ZSgpIC0g
MSk7CisgICAgdXBiID0gKDEgPDwgdXBiLnZhbHVlKCkpIC0gMTsKIAogICAgIENoZWNrZWQ8c2l6
ZV90PiBtYXh3ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWctPmNvbXBzWzBdLncpOwogICAgIENo
ZWNrZWQ8c2l6ZV90PiBtYXhoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWctPmNvbXBzWzBdLmgp
OwotICAgIHNpemVfdCBtYXggPSAobWF4dyAqIG1heGgpLnVuc2FmZUdldCgpOworICAgIHNpemVf
dCBtYXggPSAobWF4dyAqIG1heGgpLnZhbHVlKCk7CiAKICAgICBjb25zdCBpbnQqIHkgPSBpbWct
PmNvbXBzWzBdLmRhdGE7CiAgICAgY29uc3QgaW50KiBjYiA9IGltZy0+Y29tcHNbMV0uZGF0YTsK
QEAgLTEzNCwxMyArMTM0LDEzIEBAIHN0YXRpYyB2b2lkIHN5Y2M0MjJUb1JHQihvcGpfaW1hZ2Vf
dCogaW1nKQogCiAgICAgLy8gaWYgaW1nLT54MCBpcyBvZGQsIHRoZW4gZmlyc3QgY29sdW1uIHNo
YWxsIHVzZSBDYi9DciA9IDAuCiAgICAgc2l6ZV90IG9mZnggPSBpbWctPngwICYgMVU7Ci0gICAg
c2l6ZV90IGxvb3BtYXh3ID0gbWF4dy51bnNhZmVHZXQoKSAtIG9mZng7CisgICAgc2l6ZV90IGxv
b3BtYXh3ID0gbWF4dy52YWx1ZSgpIC0gb2ZmeDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWF4aC51bnNhZmVHZXQoKTsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXhoLnZhbHVlKCk7ICsraSkgewogICAgICAgICBzaXplX3QgajsKIAogICAgICAgICBpZiAob2Zm
eCA+IDApIHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwg
KnksIDAsIDAsIHIsIGcsIGIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZh
bHVlKCksICp5LCAwLCAwLCByLCBnLCBiKTsKICAgICAgICAgICAgICsreTsKICAgICAgICAgICAg
ICsrcjsKICAgICAgICAgICAgICsrZzsKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIHN0YXRpYyB2b2lk
IHN5Y2M0MjJUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogICAgICAgICB9CiAKICAgICAgICAgZm9y
IChqID0gMDsgaiA8IChsb29wbWF4dyAmIH5zdGF0aWNfY2FzdDxzaXplX3Q+KDFVKSk7IGogKz0g
MlUpIHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKnks
ICpjYiwgKmNyLCByLCBnLCBiKTsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52
YWx1ZSgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOwogICAgICAgICAgICAgKyt5OwogICAgICAg
ICAgICAgKytyOwogICAgICAgICAgICAgKytnOwogICAgICAgICAgICAgKytiOwotICAgICAgICAg
ICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcs
IGIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2Is
ICpjciwgciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAgICAgICAgICArK3I7CiAgICAg
ICAgICAgICArK2c7CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgc3ljYzQyMlRvUkdC
KG9wal9pbWFnZV90KiBpbWcpCiAgICAgICAgICAgICArK2NyOwogICAgICAgICB9CiAgICAgICAg
IGlmIChqIDwgbG9vcG1heHcpIHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51
bnNhZmVHZXQoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKKyAgICAgICAgICAgIHN5Y2NUb1JH
QihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOwogICAgICAgICAg
ICAgKyt5OwogICAgICAgICAgICAgKytyOwogICAgICAgICAgICAgKytnOwpAQCAtMTg5LDEyICsx
ODksMTIgQEAgc3RhdGljIHZvaWQgc3ljYzQyMlRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiBzdGF0
aWMgdm9pZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKIHsKICAgICBDaGVja2VkPGlu
dD4gdXBiID0gc3RhdGljX2Nhc3Q8aW50PihpbWctPmNvbXBzWzBdLnByZWMpOwotICAgIGludCBv
ZmZzZXQgPSAxIDw8ICh1cGIudW5zYWZlR2V0KCkgLSAxKTsKLSAgICB1cGIgPSAoMSA8PCB1cGIu
dW5zYWZlR2V0KCkpIC0gMTsKKyAgICBpbnQgb2Zmc2V0ID0gMSA8PCAodXBiLnZhbHVlKCkgLSAx
KTsKKyAgICB1cGIgPSAoMSA8PCB1cGIudmFsdWUoKSkgLSAxOwogCiAgICAgQ2hlY2tlZDxzaXpl
X3Q+IG1heHcgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGltZy0+Y29tcHNbMF0udyk7CiAgICAgQ2hl
Y2tlZDxzaXplX3Q+IG1heGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGltZy0+Y29tcHNbMF0uaCk7
Ci0gICAgc2l6ZV90IG1heCA9IChtYXh3ICogbWF4aCkudW5zYWZlR2V0KCk7CisgICAgc2l6ZV90
IG1heCA9IChtYXh3ICogbWF4aCkudmFsdWUoKTsKIAogICAgIGNvbnN0IGludCogeSA9IGltZy0+
Y29tcHNbMF0uZGF0YTsKICAgICBjb25zdCBpbnQqIGNiID0gaW1nLT5jb21wc1sxXS5kYXRhOwpA
QCAtMjE2LDE1ICsyMTYsMTUgQEAgc3RhdGljIHZvaWQgc3ljYzQyMFRvUkdCKG9wal9pbWFnZV90
KiBpbWcpCiAKICAgICAvLyBpZiBpbWctPngwIGlzIG9kZCwgdGhlbiBmaXJzdCBjb2x1bW4gc2hh
bGwgdXNlIENiL0NyID0gMC4KICAgICBzaXplX3Qgb2ZmeCA9IGltZy0+eDAgJiAxVTsKLSAgICBz
aXplX3QgbG9vcG1heHcgPSBtYXh3LnVuc2FmZUdldCgpIC0gb2ZmeDsKKyAgICBzaXplX3QgbG9v
cG1heHcgPSBtYXh3LnZhbHVlKCkgLSBvZmZ4OwogICAgIC8vIGlmIGltZy0+eTAgaXMgb2RkLCB0
aGVuIGZpcnN0IGxpbmUgc2hhbGwgdXNlIENiL0NyID0gMC4KICAgICBzaXplX3Qgb2ZmeSA9IGlt
Zy0+eTAgJiAxVTsKLSAgICBzaXplX3QgbG9vcG1heGggPSBtYXhoLnVuc2FmZUdldCgpIC0gb2Zm
eTsKKyAgICBzaXplX3QgbG9vcG1heGggPSBtYXhoLnZhbHVlKCkgLSBvZmZ5OwogCiAgICAgaWYg
KG9mZnkgPiAwKSB7CiAgICAgICAgIHNpemVfdCBqOwotICAgICAgICBmb3IgKGogPSAwOyBqIDwg
bWF4dy51bnNhZmVHZXQoKTsgKytqKSB7Ci0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1
cGIudW5zYWZlR2V0KCksICp5LCAwLCAwLCByLCBnLCBiKTsKKyAgICAgICAgZm9yIChqID0gMDsg
aiA8IG1heHcudmFsdWUoKTsgKytqKSB7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1
cGIudmFsdWUoKSwgKnksIDAsIDAsIHIsIGcsIGIpOwogICAgICAgICAgICAgKyt5OwogICAgICAg
ICAgICAgKytyOwogICAgICAgICAgICAgKytnOwpAQCAtMjM0LDE4ICsyMzQsMTggQEAgc3RhdGlj
IHZvaWQgc3ljYzQyMFRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiAKICAgICBzaXplX3QgaTsKICAg
ICBmb3IgKGkgPSAwOyBpIDwgKGxvb3BtYXhoICYgfnN0YXRpY19jYXN0PHNpemVfdD4oMVUpKTsg
aSArPSAyVSkgewotICAgICAgICBjb25zdCBpbnQqIG55ID0geSArIG1heHcudW5zYWZlR2V0KCk7
Ci0gICAgICAgIGludCogbnIgPSByICsgbWF4dy51bnNhZmVHZXQoKTsKLSAgICAgICAgaW50KiBu
ZyA9IGcgKyBtYXh3LnVuc2FmZUdldCgpOwotICAgICAgICBpbnQqIG5iID0gYiArIG1heHcudW5z
YWZlR2V0KCk7CisgICAgICAgIGNvbnN0IGludCogbnkgPSB5ICsgbWF4dy52YWx1ZSgpOworICAg
ICAgICBpbnQqIG5yID0gciArIG1heHcudmFsdWUoKTsKKyAgICAgICAgaW50KiBuZyA9IGcgKyBt
YXh3LnZhbHVlKCk7CisgICAgICAgIGludCogbmIgPSBiICsgbWF4dy52YWx1ZSgpOwogCiAgICAg
ICAgIGlmIChvZmZ4ID4gMCkgewotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVu
c2FmZUdldCgpLCAqeSwgMCwgMCwgciwgZywgYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zm
c2V0LCB1cGIudmFsdWUoKSwgKnksIDAsIDAsIHIsIGcsIGIpOwogICAgICAgICAgICAgKyt5Owog
ICAgICAgICAgICAgKytyOwogICAgICAgICAgICAgKytnOwogICAgICAgICAgICAgKytiOwotICAg
ICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqbnksICpjYiwgKmNy
LCBuciwgbmcsIG5iKTsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgp
LCAqbnksICpjYiwgKmNyLCBuciwgbmcsIG5iKTsKICAgICAgICAgICAgICsrbnk7CiAgICAgICAg
ICAgICArK25yOwogICAgICAgICAgICAgKytuZzsKQEAgLTI1NCwyMyArMjU0LDIzIEBAIHN0YXRp
YyB2b2lkIHN5Y2M0MjBUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogCiAgICAgICAgIHNpemVfdCBq
OwogICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGxvb3BtYXh3ICYgfnN0YXRpY19jYXN0PHNpemVf
dD4oMVUpKTsgaiArPSAyVSkgewotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVu
c2FmZUdldCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAgICAgICAgc3ljY1RvUkdC
KG9mZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2IsICpjciwgciwgZywgYik7CiAgICAgICAgICAg
ICArK3k7CiAgICAgICAgICAgICArK3I7CiAgICAgICAgICAgICArK2c7CiAgICAgICAgICAgICAr
K2I7Ci0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0KCksICp5LCAq
Y2IsICpjciwgciwgZywgYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFs
dWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKICAgICAgICAgICAgICsreTsKICAgICAgICAg
ICAgICsrcjsKICAgICAgICAgICAgICsrZzsKICAgICAgICAgICAgICsrYjsKIAotICAgICAgICAg
ICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqbnksICpjYiwgKmNyLCBuciwg
bmcsIG5iKTsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqbnks
ICpjYiwgKmNyLCBuciwgbmcsIG5iKTsKICAgICAgICAgICAgICsrbnk7CiAgICAgICAgICAgICAr
K25yOwogICAgICAgICAgICAgKytuZzsKICAgICAgICAgICAgICsrbmI7Ci0gICAgICAgICAgICBz
eWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0KCksICpueSwgKmNiLCAqY3IsIG5yLCBuZywg
bmIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICpueSwgKmNi
LCAqY3IsIG5yLCBuZywgbmIpOwogICAgICAgICAgICAgKytueTsKICAgICAgICAgICAgICsrbnI7
CiAgICAgICAgICAgICArK25nOwpAQCAtMjc5LDEzICsyNzksMTMgQEAgc3RhdGljIHZvaWQgc3lj
YzQyMFRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiAgICAgICAgICAgICArK2NyOwogICAgICAgICB9
CiAgICAgICAgIGlmIChqIDwgbG9vcG1heHcpIHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZz
ZXQsIHVwYi51bnNhZmVHZXQoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKKyAgICAgICAgICAg
IHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOwog
ICAgICAgICAgICAgKyt5OwogICAgICAgICAgICAgKytyOwogICAgICAgICAgICAgKytnOwogICAg
ICAgICAgICAgKytiOwogCi0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZl
R2V0KCksICpueSwgKmNiLCAqY3IsIG5yLCBuZywgbmIpOworICAgICAgICAgICAgc3ljY1RvUkdC
KG9mZnNldCwgdXBiLnZhbHVlKCksICpueSwgKmNiLCAqY3IsIG5yLCBuZywgbmIpOwogICAgICAg
ICAgICAgKytueTsKICAgICAgICAgICAgICsrbnI7CiAgICAgICAgICAgICArK25nOwpAQCAtMjkz
LDIyICsyOTMsMjIgQEAgc3RhdGljIHZvaWQgc3ljYzQyMFRvUkdCKG9wal9pbWFnZV90KiBpbWcp
CiAgICAgICAgICAgICArK2NiOwogICAgICAgICAgICAgKytjcjsKICAgICAgICAgfQotICAgICAg
ICB5ICs9IG1heHcudW5zYWZlR2V0KCk7Ci0gICAgICAgIHIgKz0gbWF4dy51bnNhZmVHZXQoKTsK
LSAgICAgICAgZyArPSBtYXh3LnVuc2FmZUdldCgpOwotICAgICAgICBiICs9IG1heHcudW5zYWZl
R2V0KCk7CisgICAgICAgIHkgKz0gbWF4dy52YWx1ZSgpOworICAgICAgICByICs9IG1heHcudmFs
dWUoKTsKKyAgICAgICAgZyArPSBtYXh3LnZhbHVlKCk7CisgICAgICAgIGIgKz0gbWF4dy52YWx1
ZSgpOwogICAgIH0KICAgICBpZiAoaSA8IGxvb3BtYXhoKSB7CiAgICAgICAgIHNpemVfdCBqOwot
ICAgICAgICBmb3IgKGogPSAwOyBqIDwgKG1heHcudW5zYWZlR2V0KCkgJiB+c3RhdGljX2Nhc3Q8
c2l6ZV90PigxVSkpOyBqICs9IDJVKSB7Ci0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1
cGIudW5zYWZlR2V0KCksICp5LCAqY2IsICpjciwgciwgZywgYik7CisgICAgICAgIGZvciAoaiA9
IDA7IGogPCAobWF4dy52YWx1ZSgpICYgfnN0YXRpY19jYXN0PHNpemVfdD4oMVUpKTsgaiArPSAy
VSkgeworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2Is
ICpjciwgciwgZywgYik7CiAKICAgICAgICAgICAgICsreTsKICAgICAgICAgICAgICsrcjsKICAg
ICAgICAgICAgICsrZzsKICAgICAgICAgICAgICsrYjsKIAotICAgICAgICAgICAgc3ljY1RvUkdC
KG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAg
ICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2IsICpjciwgciwgZywg
Yik7CiAKICAgICAgICAgICAgICsreTsKICAgICAgICAgICAgICsrcjsKQEAgLTMxNyw4ICszMTcs
OCBAQCBzdGF0aWMgdm9pZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKICAgICAgICAg
ICAgICsrY2I7CiAgICAgICAgICAgICArK2NyOwogICAgICAgICB9Ci0gICAgICAgIGlmIChqIDwg
bWF4dy51bnNhZmVHZXQoKSkKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNh
ZmVHZXQoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKKyAgICAgICAgaWYgKGogPCBtYXh3LnZh
bHVlKCkpCisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksICpj
YiwgKmNyLCByLCBnLCBiKTsKICAgICB9CiAKICAgICBvcGpfaW1hZ2VfZGF0YV9mcmVlKGltZy0+
Y29tcHNbMF0uZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUxheWVyUG9vbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlTGF5ZXJQb29sLm1tCmluZGV4IDJmNDUyNTZmNDgwMzkwMmJjODFkMmU5OWM3Y2Q4NGE3
MjhkM2EyMTYuLmIzMDgxZjlkNmE1ZTY3NzA4MDkxNzMwNmY5MmYyZjkwY2M4N2NjMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1t
CkBAIC01Myw3ICs1Myw3IEBAIExlZ2FjeVRpbGVMYXllclBvb2wqIExlZ2FjeVRpbGVMYXllclBv
b2w6OnNoYXJlZFBvb2woKQogCiB1bnNpZ25lZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpieXRlc0Jh
Y2tpbmdMYXllcldpdGhQaXhlbFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1
cm4gKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChzaXplLmFyZWEo
KSAqIDQpLnZhbHVlKCk7CiB9CiAKIExlZ2FjeVRpbGVMYXllclBvb2w6OkxheWVyTGlzdCYgTGVn
YWN5VGlsZUxheWVyUG9vbDo6bGlzdE9mTGF5ZXJzV2l0aFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCBjMWMwZDc1NGM0OGRlMzAxODBkOTc5NDM3YTk3
MGUwNWJjZmU1MGU4Li5kODg5ZTAzMGZjOTMzYjJkNTNlNTNiMzE4N2ExNGZhYTYwOGQ5MTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApA
QCAtMTQ1LDcgKzE0NSw3IEBAIFN0cmluZyBUZXh0Q29kZWNVVEYxNjo6ZGVjb2RlKGNvbnN0IGNo
YXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sCiAKIFZlY3Rvcjx1aW50
OF90PiBUZXh0Q29kZWNVVEYxNjo6ZW5jb2RlKFN0cmluZ1ZpZXcgc3RyaW5nLCBVbmVuY29kYWJs
ZUhhbmRsaW5nKSBjb25zdAogewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoV1RGOjpjaGVj
a2VkUHJvZHVjdDxzaXplX3Q+KHN0cmluZy5sZW5ndGgoKSwgMikudW5zYWZlR2V0KCkpOworICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQoV1RGOjpjaGVja2VkUHJvZHVjdDxzaXplX3Q+KHN0cmlu
Zy5sZW5ndGgoKSwgMikudmFsdWUoKSk7CiAgICAgYXV0byogYnl0ZXMgPSByZXN1bHQuZGF0YSgp
OwogCiAgICAgaWYgKG1fbGl0dGxlRW5kaWFuKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCA1MWRmNjljNDUwYzg1YmRiMjgyOWMzZTFk
Y2E5ODVjMWRkODQzNTY5Li5jMWRkNzZkMGUzNTBjY2M5M2NiN2RlMzg5NjczNzdjM2RhM2U0YmNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAK
QEAgLTQ0OCw3ICs0NDgsNyBAQCBWZWN0b3I8dWludDhfdD4gVGV4dENvZGVjVVRGODo6ZW5jb2Rl
VVRGOChTdHJpbmdWaWV3IHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZwogICAgIC8vIFRoZSBt
YXhpbXVtIG51bWJlciBvZiBVVEYtOCBieXRlcyBuZWVkZWQgcGVyIFVURi0xNiBjb2RlIHVuaXQg
aXMgMy4KICAgICAvLyBCTVAgY2hhcmFjdGVycyB0YWtlIG9ubHkgb25lIFVURi0xNiBjb2RlIHVu
aXQgYW5kIGNhbiB0YWtlIHVwIHRvIDMgYnl0ZXMgKDN4KS4KICAgICAvLyBOb24tQk1QIGNoYXJh
Y3RlcnMgdGFrZSB0d28gVVRGLTE2IGNvZGUgdW5pdHMgYW5kIGNhbiB0YWtlIHVwIHRvIDQgYnl0
ZXMgKDJ4KS4KLSAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMoV1RGOjpjaGVja2VkUHJvZHVjdDxz
aXplX3Q+KHN0cmluZy5sZW5ndGgoKSwgMykudW5zYWZlR2V0KCkpOworICAgIFZlY3Rvcjx1aW50
OF90PiBieXRlcyhXVEY6OmNoZWNrZWRQcm9kdWN0PHNpemVfdD4oc3RyaW5nLmxlbmd0aCgpLCAz
KS52YWx1ZSgpKTsKICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gMDsKICAgICBmb3IgKGF1dG8g
Y2hhcmFjdGVyIDogc3RyaW5nLmNvZGVQb2ludHMoKSkKICAgICAgICAgVThfQVBQRU5EX1VOU0FG
RShieXRlcy5kYXRhKCksIGJ5dGVzV3JpdHRlbiwgY2hhcmFjdGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYzAzNmQ4
NTgzYjMzYmNkNzk1NjIwMjM1MWUzNGU5MWQ3ZjAxN2VmNy4uMWJlYjk2NTk2MzgyODFjNGNjZmNl
NmM4ODY0OWUxZWJlZWNmZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTMwNjcsNyArMzA2Nyw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFzKFJlbmRlckxh
eWVyTW9kZWxPYmplY3QmCiAjaWYgIVVTRShDT01QT1NJVElOR19GT1JfU01BTExfQ0FOVkFTRVMp
CiAgICAgYXV0byogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVy
LmVsZW1lbnQoKSk7CiAgICAgYXV0byBjYW52YXNBcmVhID0gY2FudmFzLT5zaXplKCkuYXJlYTxS
ZWNvcmRPdmVyZmxvdz4oKTsKLSAgICBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3JjZUNvbXBvc2l0
aW5nID0gIWNhbnZhc0FyZWEuaGFzT3ZlcmZsb3dlZCgpICYmIGNhbnZhc0FyZWEudW5zYWZlR2V0
KCkgPj0gY2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nOworICAgIGlzQ2Fu
dmFzTGFyZ2VFbm91Z2hUb0ZvcmNlQ29tcG9zaXRpbmcgPSAhY2FudmFzQXJlYS5oYXNPdmVyZmxv
d2VkKCkgJiYgY2FudmFzQXJlYS52YWx1ZSgpID49IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJp
bmdDb21wb3NpdGluZzsKICNlbmRpZgogCiAgICAgQ2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneSBj
b21wb3NpdGluZ1N0cmF0ZWd5ID0gY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDc1OWY0NmEy
YjJlNzc5OTI4NmMyNWIzOTE4YmUyMzJmZjM4ZmU2ZWEuLmFhOTdmYzkxZGUxNDY5N2VhNjBiNjgy
YzZhMDljYTZhZDc4Yjg2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6
Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBp
bnQgbWluQnVmZmVyWSA9IHN0ZDo6bWF4KDAsIG1hcmdpblJlY3QueSgpIC0gaW1hZ2VSZWN0Lnko
KSk7CiAgICAgaW50IG1heEJ1ZmZlclkgPSBzdGQ6Om1pbihpbWFnZVJlY3QuaGVpZ2h0KCksIG1h
cmdpblJlY3QubWF4WSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKLSAgICBpZiAoKGltYWdlUmVjdC5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKSA9PSBwaXhlbEFycmF5TGVuZ3RoKSB7CisgICAgaWYgKChp
bWFnZVJlY3QuYXJlYSgpICogNCkudmFsdWUoKSA9PSBwaXhlbEFycmF5TGVuZ3RoKSB7CiAgICAg
ICAgIGZvciAoaW50IHkgPSBtaW5CdWZmZXJZOyB5IDwgbWF4QnVmZmVyWTsgKyt5KSB7CiAgICAg
ICAgICAgICBpbnQgc3RhcnRYID0gLTE7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IGltYWdlUmVjdC53aWR0aCgpOyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKaW5kZXggMzA0NWM0NDg1NzhlZTNjYzNlZWJhYjI1
ZWNmNmYzZDBmZTBlZjU4Yi4uMmFkZDJiNmY4ZWE2ZmNlM2ZiMjBkZDNjOGI1ZmUyOGNiNWI0M2Yz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCkBAIC0xMDIsMTEgKzEwMiwx
MSBAQCB2b2lkIFN0b3JhZ2VNYXA6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUsIFN0cmluZyYgb2xkVmFsdQogICAgIG5ld1NpemUgKz0gdmFsdWUuc2l6ZUlu
Qnl0ZXMoKTsKICAgICBpZiAob2xkVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIG5ld1NpemUgKz0g
a2V5LnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKG1fcXVvdGFTaXplICE9IG5vUXVvdGEgJiYgKG5l
d1NpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IG5ld1NpemUudW5zYWZlR2V0KCkgPiBtX3F1b3RhU2l6
ZSkpIHsKKyAgICBpZiAobV9xdW90YVNpemUgIT0gbm9RdW90YSAmJiAobmV3U2l6ZS5oYXNPdmVy
Zmxvd2VkKCkgfHwgbmV3U2l6ZS52YWx1ZSgpID4gbV9xdW90YVNpemUpKSB7CiAgICAgICAgIHF1
b3RhRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2ltcGwt
PmN1cnJlbnRTaXplID0gbmV3U2l6ZS51bnNhZmVHZXQoKTsKKyAgICBtX2ltcGwtPmN1cnJlbnRT
aXplID0gbmV3U2l6ZS52YWx1ZSgpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OkFk
ZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2ltcGwtPm1hcC5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgaWYg
KCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dExpYnhzbHQuY3BwCmluZGV4IGFjZDVhYTcyNjE0NjVkZWU1M2ZkMGIyYzQ4MmVmZDA0ZGQwNmQx
NDguLmY4NzcyNmExN2ZlNmEyNzkzMmZiN2QzNjE2NWFkMDBhOTM2ZTQ0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMTQ1LDEwICsxNDUsMTAg
QEAgYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICBjb25zdCBjaGFyKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1
cGNvbnZlcnRlZENoYXJhY3RlcnMuZ2V0KCkpOwogICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PiB1bnNpZ25lZFNpemUgPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWRT
aXplICo9IHNpemVvZihVQ2hhcik7Ci0gICAgaWYgKHVuc2lnbmVkU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkgfHwgdW5zaWduZWRTaXplLnVuc2FmZUdldCgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQorICAgIGlmICh1bnNpZ25lZFNpemUuaGFz
T3ZlcmZsb3dlZCgpIHx8IHVuc2lnbmVkU2l6ZS52YWx1ZSgpID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpbnQgc2l6ZSA9IHN0YXRpY19jYXN0PGludD4odW5zaWduZWRTaXplLnVuc2Fm
ZUdldCgpKTsKKyAgICBpbnQgc2l6ZSA9IHN0YXRpY19jYXN0PGludD4odW5zaWduZWRTaXplLnZh
bHVlKCkpOwogICAgIHhtbFBhcnNlckN0eHRQdHIgY3R4dCA9IHhtbENyZWF0ZU1lbW9yeVBhcnNl
ckN0eHQoYnVmZmVyLCBzaXplKTsKICAgICBpZiAoIWN0eHQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGM3
NjliZjg2ODI5M2ZmYzkyNThjYWI2MjA5ZWIxY2ZkODY5NWYwMmUuLjU3ZWU1ZGVkMjRiZGEyNzVl
NTg2YmRmNjEzMmE1MjQ1NWFiYWNjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiog
eHNsdFBhcmFtQXJyYXlGcm9tUGFyYW1ldGVyTWFwKFhTTFRQcm9jZXNzb3I6OlBhcmFtZXRlck1h
cCYKICAgICBpZiAocGFyYW1ldGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgYXV0byBzaXplID0gKCgoQ2hlY2tlZDxzaXplX3Q+KHBhcmFtZXRlcnMuc2l6ZSgpKSAqIDJV
KSArIDFVKSAqIHNpemVvZihjaGFyKikpLnVuc2FmZUdldCgpOworICAgIGF1dG8gc2l6ZSA9ICgo
KENoZWNrZWQ8c2l6ZV90PihwYXJhbWV0ZXJzLnNpemUoKSkgKiAyVSkgKyAxVSkgKiBzaXplb2Yo
Y2hhciopKS52YWx1ZSgpOwogICAgIGF1dG8qKiBwYXJhbWV0ZXJBcnJheSA9IHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqKj4oZmFzdE1hbGxvYyhzaXplKSk7CiAKICAgICBzaXplX3QgaW5kZXggPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVu
Y2VQYXJzZXJJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJl
ZmVyZW5jZVBhcnNlcklubGluZXMuaAppbmRleCAzMDhhZDU2ZDI0NGE3MGI2OWM4YmUyNWE5NjJh
ODAzMzgzODg3MzNlLi5mNzQ5MGY2YzU2YzM2MDljMTFkNTBkYjUxZTA5MzY1YTE2NjY4MmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBh
cnNlcklubGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJl
ZmVyZW5jZVBhcnNlcklubGluZXMuaApAQCAtMTA5LDExICsxMDksMTEgQEAgYm9vbCBjb25zdW1l
Q2hhcmFjdGVyUmVmZXJlbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBTdHJpbmdCdWlsZGVy
JiBkZWNvZGVkQ2gKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0g
JzsnKSB7CiAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwot
ICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kQ2hhcmFjdGVyKFBhcnNlckZ1
bmN0aW9uczo6bGVnYWxFbnRpdHlGb3IocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSA/IDAgOiByZXN1
bHQudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVu
ZENoYXJhY3RlcihQYXJzZXJGdW5jdGlvbnM6OmxlZ2FsRW50aXR5Rm9yKHJlc3VsdC5oYXNPdmVy
Zmxvd2VkKCkgPyAwIDogcmVzdWx0LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChQYXJzZXJGdW5jdGlvbnM6OmFj
Y2VwdE1hbGZvcm1lZCgpKSB7Ci0gICAgICAgICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBl
bmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihyZXN1bHQuaGFzT3Zl
cmZsb3dlZCgpID8gMCA6IHJlc3VsdC51bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAgIGRl
Y29kZWRDaGFyYWN0ZXIuYXBwZW5kQ2hhcmFjdGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRp
dHlGb3IocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSA/IDAgOiByZXN1bHQudmFsdWUoKSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdW5j
b25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CkBAIC0xMjcsMTEg
KzEyNywxMSBAQCBib29sIGNvbnN1bWVDaGFyYWN0ZXJSZWZlcmVuY2UoU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UsIFN0cmluZ0J1aWxkZXImIGRlY29kZWRDaAogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSAnOycpIHsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2
YW5jZVBhc3ROb25OZXdsaW5lKCk7Ci0gICAgICAgICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5h
cHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihyZXN1bHQuaGFz
T3ZlcmZsb3dlZCgpID8gMCA6IHJlc3VsdC51bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAg
IGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kQ2hhcmFjdGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxF
bnRpdHlGb3IocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSA/IDAgOiByZXN1bHQudmFsdWUoKSkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKFBhcnNlckZ1bmN0aW9uczo6YWNjZXB0TWFsZm9ybWVkKCkpIHsKLSAgICAgICAgICAgICAg
ICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZENoYXJhY3RlcihQYXJzZXJGdW5jdGlvbnM6OmxlZ2Fs
RW50aXR5Rm9yKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkgPyAwIDogcmVzdWx0LnVuc2FmZUdldCgp
KSk7CisgICAgICAgICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFy
c2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpID8gMCA6
IHJlc3VsdC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRD
aGFyYWN0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBjYjUwMTE2N2I0ZGQ1NzJj
NGM1YzI5ODEzODJmMTI2Y2IyOTc4ZmU3Li40OTRhOWE4ZTQ3MWJkYzhkNWEwMWFmYzEyN2Q1NmMy
YWNiMTBlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgY2hlY2tlZE9mZnNldCArPSByZXN1bHQu
bnVtYmVyT2ZCeXRlc1JlYWQ7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFM
VUUoIWNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpLCBudWxscHRyLCAiT3ZlcmZsb3dlZCB3
aGVuIGFkdmFuY2luZyBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBvZmZzZXQiKTsKIAotICAg
ICAgICBvZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpOworICAgICAgICBvZmZzZXQg
PSBjaGVja2VkT2Zmc2V0LnZhbHVlKCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRV
Uk5fVkFMVUUob2Zmc2V0IDw9IGhhbmRsZS5zaGFyZWRNZW1vcnkoKS5zaXplKCksIG51bGxwdHIs
ICJPdXQtb2YtYm91bmRzIG9mZnNldCBpbnRvIHNoYXJlZCBkaXNwbGF5IGxpc3QgaGFuZGxlIik7
CiAKICAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6
U3RvcFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNTE4N2JiYjU1MjkyZjE3MDliNzRiZjI3ZjM0
ZTdmOTQ2ZWVjOTljOC4uOTkzYWE1ZDJlYTYwYmE3Zjg4ZmMxNTgyNzZiODM1ODE3NDc5NTQwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yMzAsMTEgKzIzMCwxMSBAQCB2
b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBTdHJpbgogICAgICAgICBuZXdEYXRhYmFzZVNpemUgKz0gdmFsdWUu
c2l6ZUluQnl0ZXMoKTsKICAgICAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICAg
ICAgbmV3RGF0YWJhc2VTaXplICs9IGtleS5zaXplSW5CeXRlcygpOwotICAgICAgICBpZiAobmV3
RGF0YWJhc2VTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBuZXdEYXRhYmFzZVNpemUudW5zYWZlR2V0
KCkgPiBtX3F1b3RhSW5CeXRlcykgeworICAgICAgICBpZiAobmV3RGF0YWJhc2VTaXplLmhhc092
ZXJmbG93ZWQoKSB8fCBuZXdEYXRhYmFzZVNpemUudmFsdWUoKSA+IG1fcXVvdGFJbkJ5dGVzKSB7
CiAgICAgICAgICAgICBxdW90YUV4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgbV9kYXRhYmFzZVNpemUgPSBuZXdEYXRhYmFzZVNpemUudW5z
YWZlR2V0KCk7CisgICAgICAgIG1fZGF0YWJhc2VTaXplID0gbmV3RGF0YWJhc2VTaXplLnZhbHVl
KCk7CiAgICAgfQogCiAgICAgYXV0byBpbnNlcnRTdGF0ZW1lbnQgPSBzY29wZWRTdGF0ZW1lbnQo
bV9pbnNlcnRTdGF0ZW1lbnQsICJJTlNFUlQgSU5UTyBJdGVtVGFibGUgVkFMVUVTICg/LCA/KSJf
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDY0MDE2YjBjZTIwOTA4OWE5ODFi
Y2UyMjQ5Nzc4ZjgyYWQ2NDhjODMuLjFlMjYzNTVhZDYyNmJkZWIyZGNmYTdkNDBlMTZkMWZlMzQ2
N2JiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAg
dm9pZCBDYWNoZTo6cHV0KFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmll
cnNDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9j
YWNoZXMucmVxdWVzdFNwYWNlKHNwYWNlUmVxdWlyZWQudW5zYWZlR2V0KCksIFtjYWNoZXMgPSBt
YWtlUmVmKG1fY2FjaGVzKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgcmVjb3JkcyA9IFdU
Rk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9u
YWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2NhY2hl
cy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZC52YWx1ZSgpLCBbY2FjaGVzID0gbWFrZVJlZiht
X2NhY2hlcyksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHJlY29yZHMgPSBXVEZNb3ZlKHJl
Y29yZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPERPTUNh
Y2hlRW5naW5lOjpFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikg
ewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmgKaW5kZXggY2UwOGYxYmJlMTRmNjEwYzQzZWQ0ZmVhMDE4ODZkMzY1ZTIzYjA0OC4u
ZjZhN2Q1ZDYxOThkMjEzMzA5MWY5NTdlMmNlMTIwMjZkODc1MjdkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC05Niw3ICs5Niw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFy
cmF5UmVmZXJlbmNlRHluYW1pCiAgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVy
Zmxvd2VkKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBj
b25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShk
YXRhU2l6ZS51bnNhZmVHZXQoKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLnZhbHVl
KCksIGFsaWdub2YoVCkpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bQppbmRleCAxMmQ4NjMyYTk2ZTMzN2RlNWQ1MzUyYjEzMTJhNzgzOWJhYjYwZjQyLi5kM2IxYTM2
YTVhM2Q1ZmI2YzJhZWQxNGM3ODNjMTFjNjM1YmQzMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0zMDksNyArMzA5
LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJlZjxFbmNv
ZGVyPiYmIGVuY29kZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
c2l6ZV90IHNhZmVNZXNzYWdlU2l6ZSA9IG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpOworICAgIHNp
emVfdCBzYWZlTWVzc2FnZVNpemUgPSBtZXNzYWdlU2l6ZS52YWx1ZSgpOwogICAgIGF1dG8gbWVz
c2FnZSA9IE1hY2hNZXNzYWdlOjpjcmVhdGUoZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSwgc2FmZU1l
c3NhZ2VTaXplKTsKICAgICBpZiAoIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQyMyw3ICs0MjMsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1l
c3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUo
Ym9keSwgYm9keVNpemUudW5zYWZlR2V0KCksIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7
IH0pOworICAgICAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKGJvZHksIGJvZHlTaXplLnZhbHVl
KCksIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOwogICAgIH0KIAogICAgIG1hY2hf
bXNnX2JvZHlfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9tc2dfYm9keV90Kj4oaGVh
ZGVyICsgMSk7CkBAIC00NzYsNyArNDc2LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRl
KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUudW5zYWZlR2V0KCksIG51bGxwdHIsIFdURk1v
dmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5
LCBtZXNzYWdlQm9keVNpemUudmFsdWUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykp
OwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91bGQgYWx3YXlzIGluY2x1ZGUg
dGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCmluZGV4IGNhMGNkNzdiYzVmOGIwNDQzN2JjNTE0N2Uw
Y2ZlODUxMTA2N2E0NDcuLjI0N2E0ZWYwZDgwMDk2OTI1NTkyNGM1ZWUxNmFiYmUyMjQ1OTdiYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBNYWNoTWVz
c2FnZTo6Y3JlYXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXplX3QKICAgICBhdXRvIGJ1
ZmZlclNpemUgPSBDaGVja2VkU2l6ZShzaXplb2YoTWFjaE1lc3NhZ2UpKSArIHNpemU7CiAgICAg
aWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB2b2lkKiBtZW1vcnkgPSBXVEY6OmZhc3RaZXJvZWRNYWxsb2MoYnVmZmVyU2l6ZS51bnNh
ZmVHZXQoKSk7CisgICAgdm9pZCogbWVtb3J5ID0gV1RGOjpmYXN0WmVyb2VkTWFsbG9jKGJ1ZmZl
clNpemUudmFsdWUoKSk7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4g
eyBuZXcgKE5vdE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBtZXNzYWdlTmFtZSwgc2l6ZSB9
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCmluZGV4IGY2
YTVjNzU2ZTJmMjdmY2EwNTE0OGY2NmM2MWFiZDc0NGU2OGEwMTEuLmE5NTkyNzgxMDZjNDY0MzE1
Mjc3NTZjNjUyOWU5MWQ1OTQ4NDVmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmNwcApAQCAtNDMsNyArNDMsNyBAQCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6SGFu
ZGxlKCkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5k
bGUoV1RGTW92ZShtX2hhbmRsZSksIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJh
dGlvbikudW5zYWZlR2V0KCkpOworICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRs
ZShXVEZNb3ZlKG1faGFuZGxlKSwgbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgbV9jb25maWd1cmF0
aW9uKS52YWx1ZSgpKTsKICAgICBlbmNvZGVyIDw8IGlwY0hhbmRsZTsKICAgICBlbmNvZGVyIDw8
IG1fc2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fY29uZmlndXJhdGlvbjsKQEAgLTExNyw3ICsxMTcs
NyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHZvaWQqIGRhdGEgPSAwOwotICAgIGRhdGEgPSBTaGFyZWFibGVCaXRtYXBNYWxsb2M6OnRy
eU1hbGxvYyhudW1CeXRlcy51bnNhZmVHZXQoKSk7CisgICAgZGF0YSA9IFNoYXJlYWJsZUJpdG1h
cE1hbGxvYzo6dHJ5TWFsbG9jKG51bUJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVC
aXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgZGF0YSkpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNv
bnN0IEludFNpemUmIHNpemUsIENvCiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsK
KyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKG51bUJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZp
Z3VyYXRpCiAgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25maWd1
cmF0aW9uKTsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBudW1CeXRlcy51bnNh
ZmVHZXQoKSkgeworICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IG51bUJ5dGVzLnZhbHVl
KCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggZTYz
OGU4NjgxMWQ0NzlmZjdlNzk5NGUzMzk0ZTZhZDU0MzRhNmM3NC4uOTk2Mjg1MmE5NzM4OGEzODk1
ZDQ0M2QyZmE4NmMxOWEwZWEwNmZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKQEAgLTE2MiwxMCArMTYyLDEwIEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB2b2lk
KiBkYXRhKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4g
Y2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pLnVuc2FmZUdldCgp
OyB9CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlQnl0
ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pLnZhbHVlKCk7IH0KICAgICAKIHByaXZh
dGU6Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JT
aXplKG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKS51bnNhZmVHZXQoKTsgfQorICAgIHNpemVfdCBz
aXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29u
ZmlndXJhdGlvbikudmFsdWUoKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAg
ICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYTQ3M2FiZjA5OGM1NmExNGZmZTVjODJkMjk2NDgw
Nzg0MmUwMTc0MS4uODA5MDFmYWNjMTYzYWU5OTcyMzY2OTQyZGIzM2YxYWZmYzk2NjUzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gU2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0
ZShSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBTaGFyZWFibGVSZXNvdXJjZSBmcm9tIFNoYXJlZE1lbW9yeSBkdWUgdG8gb3Zl
cmZsb3cuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBpZiAodG90YWxT
aXplLnVuc2FmZUdldCgpID4gc2hhcmVkTWVtb3J5LT5zaXplKCkpIHsKKyAgICBpZiAodG90YWxT
aXplLnZhbHVlKCkgPiBzaGFyZWRNZW1vcnktPnNpemUoKSkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgU2hhcmVhYmxlUmVzb3VyY2UgZnJvbSBTaGFyZWRNZW1vcnkgZHVl
IHRvIG1pc21hdGNoZWQgYnVmZmVyIHNpemUuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApp
bmRleCAxZDA2ZjQ2YzJmMzQ2YjkxYzQ4MTcyYTEyNmU3Njk5ZjllYjQxNGRhLi4yMTJjZjViMDhk
Y2NiYjFkYWM2MGFhNmQ5ZTU3Yjk0ZTNlZTJlMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC03Niw3ICs3Niw3IEBAIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVy
Um93KFdlYkNvcmU6CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgaWYgKGJ5dGVzUGVyUm93Lmhh
c092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIGJ5dGVzUGVyUm93OwotICAgIHJldHVybiBJ
T1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZhY2VCeXRlc1BlclJvdywgYnl0ZXNQZXJSb3cu
dW5zYWZlR2V0KCkpOworICAgIHJldHVybiBJT1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZh
Y2VCeXRlc1BlclJvdywgYnl0ZXNQZXJSb3cudmFsdWUoKSk7CiAjZWxzZQogICAgIHJldHVybiBi
eXRlc1BlclJvdzsKICNlbmRpZgpAQCAtOTcsNyArOTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAg
ICAgaWYgKGJ5dGVzUGVyUm93Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGVXaXRoRGF0YShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQudW5zYWZlR2V0KCksIGJ5dGVzUGVyUm93
LnVuc2FmZUdldCgpLCBjb2xvclNwYWNlKG1fY29uZmlndXJhdGlvbiksIGJpdG1hcEluZm8obV9j
b25maWd1cmF0aW9uKSwgcmVsZWFzZUJpdG1hcENvbnRleHREYXRhLCB0aGlzKSk7CisgICAgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlV2l0aERhdGEoZGF0YSgpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
LCBiaXRzUGVyQ29tcG9uZW50LnZhbHVlKCksIGJ5dGVzUGVyUm93LnZhbHVlKCksIGNvbG9yU3Bh
Y2UobV9jb25maWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCByZWxlYXNl
Qml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNjMsNyArMTYzLDcgQEAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZiBk
YXRhUHJvdmkKICAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBiaXRzUGVy
UGl4ZWwudW5zYWZlR2V0KCkgLyA0LCBiaXRzUGVyUGl4ZWwudW5zYWZlR2V0KCksIGJ5dGVzUGVy
Um93LnVuc2FmZUdldCgpLCBjb2xvclNwYWNlKG1fY29uZmlndXJhdGlvbiksIGJpdG1hcEluZm8o
bV9jb25maWd1cmF0aW9uKSwgZGF0YVByb3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBiaXRzUGVyUGl4
ZWwudmFsdWUoKSAvIDQsIGJpdHNQZXJQaXhlbC52YWx1ZSgpLCBieXRlc1BlclJvdy52YWx1ZSgp
LCBjb2xvclNwYWNlKG1fY29uZmlndXJhdGlvbiksIGJpdG1hcEluZm8obV9jb25maWd1cmF0aW9u
KSwgZGF0YVByb3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwog
ICAgIHJldHVybiBpbWFnZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5k
ZXggOWJiYjIyYWE2YTYxMTkxMzIzOTI4MmMzMGZiMmMwZTVhYjhiY2MxYy4uZmY0YjM2MmQxN2Q1
ZjgyOTUwNmE1YjYwNDZjNGZiMjI1NDM5MWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgT1NTdGF0dXMgTWVkaWFGb3JtYXRSZWFkZXI6OmNv
cHlUcmFja0FycmF5KENGQXJyYXlSZWYqIHRyYWNrQXJyYXlDb3B5KQogICAgIGlmICgqbV9wYXJz
ZVRyYWNrc1N0YXR1cyAhPSBub0VycikKICAgICAgICAgcmV0dXJuICptX3BhcnNlVHJhY2tzU3Rh
dHVzOwogCi0gICAgYXV0byBtdXRhYmxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRh
YmxlKGFsbG9jYXRvcigpLCBDaGVja2VkPENGSW5kZXg+KG1fdHJhY2tSZWFkZXJzLnNpemUoKSku
dW5zYWZlR2V0KCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBhdXRvIG11dGFibGVB
cnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoYWxsb2NhdG9yKCksIENoZWNrZWQ8
Q0ZJbmRleD4obV90cmFja1JlYWRlcnMuc2l6ZSgpKS52YWx1ZSgpLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7CiAgICAgZm9yIChhdXRvJiB0cmFja1JlYWRlciA6IG1fdHJhY2tSZWFkZXJzKQog
ICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUobXV0YWJsZUFycmF5LmdldCgpLCB0cmFja1JlYWRl
ci0+d3JhcHBlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKaW5kZXggZjI0
OTc1YjE5YTA5NWVkYTcwYzc0YTIzY2U5Mzc3N2Y1ZTY1MGZjMy4uOTRkODgwNWM4NTViM2FmZTNl
MjFkMmY4NTNlNDEwMGU4MzdkY2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3Bw
CkBAIC0zNzksOCArMzc5LDggQEAgT1NTdGF0dXMgTWVkaWFTYW1wbGVDdXJzb3I6OmNvcHlTYW1w
bGVMb2NhdGlvbihNVFBsdWdpblNhbXBsZUN1cnNvclN0b3JhZ2VSYW5nZSoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzYW1wbGUucGxhdGZvcm1TYW1w
bGUoKS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlKTsKICAgICAg
ICAgYXV0byBieXRlUmFuZ2UgPSAqc2FtcGxlLmJ5dGVSYW5nZSgpOwogICAgICAgICAqc3RvcmFn
ZVJhbmdlID0gewotICAgICAgICAgICAgLm9mZnNldCA9IENoZWNrZWRJbnQ2NChieXRlUmFuZ2Uu
Ynl0ZU9mZnNldCkudW5zYWZlR2V0KCksCi0gICAgICAgICAgICAubGVuZ3RoID0gQ2hlY2tlZElu
dDY0KGJ5dGVSYW5nZS5ieXRlTGVuZ3RoKS51bnNhZmVHZXQoKSwKKyAgICAgICAgICAgIC5vZmZz
ZXQgPSBDaGVja2VkSW50NjQoYnl0ZVJhbmdlLmJ5dGVPZmZzZXQpLnZhbHVlKCksCisgICAgICAg
ICAgICAubGVuZ3RoID0gQ2hlY2tlZEludDY0KGJ5dGVSYW5nZS5ieXRlTGVuZ3RoKS52YWx1ZSgp
LAogICAgICAgICB9OwogICAgICAgICAqYnl0ZVNvdXJjZSA9IHJldGFpblB0cihzYW1wbGUucGxh
dGZvcm1TYW1wbGUoKS5zYW1wbGUuYnl0ZVJhbmdlU2FtcGxlLmZpcnN0KS5sZWFrUmVmKCk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCmluZGV4IDhmZjM2NWNkMzQy
YTgyNmRhMDQ0OTNiYjY3Mjk0YzJjNTFmYTA0MzcuLjkwMmU5ZTg0MmRmZTliNjdiNjViYTQwYzA4
ZWVkMjVhYWFmOTM1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCkBAIC0z
Myw4ICszMyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzaXplX3QgRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKLSAgICBtX3dyaXRhYmxl
T2Zmc2V0ID0gKENoZWNrZWRTaXplIHsgbV93cml0YWJsZU9mZnNldCB9ICsgYW1vdW50KS51bnNh
ZmVHZXQoKTsKLSAgICByZXR1cm4gKENoZWNrZWRTaXplIHsgaGVhZGVyKCkudW5yZWFkQnl0ZXMu
ZXhjaGFuZ2VBZGQoYW1vdW50KSB9ICsgYW1vdW50KS51bnNhZmVHZXQoKTsKKyAgICBtX3dyaXRh
YmxlT2Zmc2V0ID0gKENoZWNrZWRTaXplIHsgbV93cml0YWJsZU9mZnNldCB9ICsgYW1vdW50KS52
YWx1ZSgpOworICAgIHJldHVybiAoQ2hlY2tlZFNpemUgeyBoZWFkZXIoKS51bnJlYWRCeXRlcy5l
eGNoYW5nZUFkZChhbW91bnQpIH0gKyBhbW91bnQpLnZhbHVlKCk7CiB9CiAKIHNpemVfdCBEaXNw
bGF5TGlzdFdyaXRlckhhbmRsZTo6YXZhaWxhYmxlQ2FwYWNpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGUzYjNmN2Rj
ZTU4ZjMyNzEzNDM4ZGZiYmJlMDRiNzA4ZjA5YzE2YzYuLjdjMjc4Y2JjNzlhMmYwOTA2NjYyYzU5
YTczMmFkZWZmYmM3MWZkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0
ZXIKIHsKICAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CiAgICAgQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGJ5dGVzUGVyUm93ID0gU2hhcmVhYmxlQml0bWFwOjpj
YWxjdWxhdGVCeXRlc1BlclJvdyhiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJz
KSk7Ci0gICAgcmV0dXJuIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpOworICAgIHJldHVybiBieXRl
c1BlclJvdy52YWx1ZSgpOwogfQogCiBzaXplX3QgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5kZXggNTNkMDE1NzgxYzRkYjY2YWE2NDkxMjBhN2M4
ZGFhYWZiMzg0MDhiNC4uYWY4ZmZkYmNkNzQyOGNlNzc3MjU4NDk4MDc1OGM0ZjRhYzJjOGY2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGOjpmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRl
eCkgY29uc3QKIAogdW5zaWduZWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChzaXpl
KCkuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChzaXplKCkuYXJlYSgpICog
NCkudmFsdWUoKTsKIH0KIAogUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTQyNTE0ODYxNzdjNTUxMGM1
N2Y1NjEyOWM0MjU5NmQzMzY5MmRhNS4uZjQyOGM5NjdjOGY2ODZmYTc1Y2Q1NmVlZGY2NGFjY2Mw
NmViYzMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFdlYlNvY2tldENo
YW5uZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQoc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX2J1ZmZlcmVkQW1vdW50ID0gY2hlY2tlZE5l
d0J1ZmZlcmVkQW1vdW50LnVuc2FmZUdldCgpOworICAgIG1fYnVmZmVyZWRBbW91bnQgPSBjaGVj
a2VkTmV3QnVmZmVyZWRBbW91bnQudmFsdWUoKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
IG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChtX2J1ZmZlcmVkQW1vdW50KTsKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZDVhNTAxNzZmZjRiMmJmYmRiNTIzMWM1NWI4MWM1NzQ5
ZDM0ZGQ2ZS4uZjIzZjQ5MDFkYWU0MTI1ZmQzODQyNjczZDZmODFkNDJjMTQzZTQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
QEAgLTE5NzYsNyArMTk3Niw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEV2YXNpb25SZWN0c0Fi
b3ZlU2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBkb3VibGUgY29udGV4dE1lbnVBcmVhTGltaXQgPSBmYWN0b3JP
ZkNvbnRlbnRBcmVhICogc2NhbGVGYWN0b3IgKiB1bm9ic2N1cmVkQ29udGVudEFyZWEudW5zYWZl
R2V0KCk7CisgICAgZG91YmxlIGNvbnRleHRNZW51QXJlYUxpbWl0ID0gZmFjdG9yT2ZDb250ZW50
QXJlYSAqIHNjYWxlRmFjdG9yICogdW5vYnNjdXJlZENvbnRlbnRBcmVhLnZhbHVlKCk7CiAKICAg
ICBGbG9hdFJlY3Qgc2VsZWN0aW9uQm91bmRzSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGlm
IChzZWxlY3Rpb24uaXNSYW5nZSgpKQpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgdm9pZCBXZWJQYWdl
OjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWMKIAogICAgICAgICBhdXRvIGJvdW5kcyA9IGZyYW1lVmlldy0+Y29udGVudHNU
b1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKICAgICAgICAg
YXV0byBhcmVhID0gYm91bmRzLmFyZWEoKTsKLSAgICAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dl
ZCgpIHx8IGFyZWEudW5zYWZlR2V0KCkgPiBjb250ZXh0TWVudUFyZWFMaW1pdCkKKyAgICAgICAg
aWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpIHx8IGFyZWEudmFsdWUoKSA+IGNvbnRleHRNZW51QXJl
YUxpbWl0KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGJvdW5kcy5jb250
YWlucyhlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kc0luUm9vdFZpZXdDb29yZGluYXRl
cykpKQpAQCAtNDMxNSw3ICs0MzE1LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25X
aXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERlbHQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbmV3U2VsZWN0aW9uUmFuZ2UgPSBDaGFyYWN0
ZXJSYW5nZShuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKSwgbmV3U2VsZWN0aW9uTGVu
Z3RoLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIG5ld1NlbGVjdGlvblJhbmdlID0gQ2hhcmFjdGVy
UmFuZ2UobmV3U2VsZWN0aW9uTG9jYXRpb24udmFsdWUoKSwgbmV3U2VsZWN0aW9uTGVuZ3RoLnZh
bHVlKCkpOwogICAgIGF1dG8gdXBkYXRlZFNlbGVjdGlvblJhbmdlID0gcmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIG5ld1NlbGVjdGlv
blJhbmdlKTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSh1cGRhdGVk
U2VsZWN0aW9uUmFuZ2UsIEFmZmluaXR5OjpEb3duc3RyZWFtLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA5N2U5MGE3ZmMzMWE1ZGY4MzBhODA5MDdmNjM2YjVmYmVmODBkYTM4Li4wNzVk
NmI5NGZlNzBlOWE0NmM0NjFlZjA3NTVjNzBiOWM3NTEyY2Y4IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDYt
MDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQ2hl
Y2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTE0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIENoZWNrZWQ6OnVuc2FmZUdldCgp
IHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRoZSAidW5zYWZlR2V0IiBuYW1pbmcgaXMgY29uZnVzaW5n
IGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXNuJ3QgcmVhbGx5IHVuc2FmZSBzaW5jZSBpdCB3
aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dlZC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpDaGVja2VkQXJpdGhtZXRpY1Rlc3Rlcjo6cnVuKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkFsbG93TWl4ZWRTaWduZWRuZXNzVGVzdDo6cnVuKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9JbnRSZWN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wNi0wMSAgRnVqaWkgSGly
b25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBTeW5jIFRvb2xzL3dp
bi9ETExMYXVuY2hlci9ETExMYXVuY2hlck1haW4uY3BwIHdpdGggU291cmNlL0phdmFTY3JpcHRD
b3JlL3NoZWxsL0RMTExhdW5jaGVyTWFpbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCmlu
ZGV4IDZkOTc3MmM5NjBhYzQwNjk4OTRjYTc1ODA1ZTVkNzNiYjkxYmU0MzguLmM0NGE3MGI3NTVl
OWMxNTY3NDkxMjQ3OGM3ZGQ2OThmMTU0ODdiZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNw
cApAQCAtODgsMzIgKzg4LDMyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBydW4oKQogICAg
IHsKICAgICAgICAgQ2hlY2tlZDx0eXBlLCBSZWNvcmRPdmVyZmxvdz4gdmFsdWU7Ci0gICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCB2YWx1ZS51bnNhZmVHZXQoKSk7Ci0gICAgICAg
IEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptYXgoKSwgKHZhbHVlICsgc3Rk
OjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWF4KCkpLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQ
RUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1heCgpLCAoc3RkOjpudW1lcmljX2xp
bWl0czx0eXBlPjo6bWF4KCkgKyB2YWx1ZSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCksICh2YWx1ZSArIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dHlwZT46Om1pbigpKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShz
dGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptaW4oKSwgKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlw
ZT46Om1pbigpICsgdmFsdWUpLnVuc2FmZUdldCgpKTsKLQotICAgICAgICBFWFBFQ1RfRVEoY29l
cmNlTGl0ZXJhbCgwKSwgKHZhbHVlICogY29lcmNlTGl0ZXJhbCgwKSkudW5zYWZlR2V0KCkpOwot
ICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKGNvZXJjZUxpdGVyYWwoMCkgKiB2
YWx1ZSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwg
KHZhbHVlICogdmFsdWUpLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxp
dGVyYWwoMCksICh2YWx1ZSAtIGNvZXJjZUxpdGVyYWwoMCkpLnVuc2FmZUdldCgpKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIChjb2VyY2VMaXRlcmFsKDApIC0gdmFsdWUp
LnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1
ZSAtIHZhbHVlKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFs
KDApLCAodmFsdWUrKykudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0
ZXJhbCgxKSwgKHZhbHVlLS0pLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJj
ZUxpdGVyYWwoMSksICgrK3ZhbHVlKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShj
b2VyY2VMaXRlcmFsKDApLCAoLS12YWx1ZSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoY29lcmNlTGl0ZXJhbCgxMCksICh2YWx1ZSArPSBjb2VyY2VMaXRlcmFsKDEwKSkudW5zYWZl
R2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxMCksIHZhbHVlLnVuc2Fm
ZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMTAwKSwgKHZhbHVlICo9
IGNvZXJjZUxpdGVyYWwoMTApKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShjb2Vy
Y2VMaXRlcmFsKDEwMCksIHZhbHVlLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNv
ZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtPSBjb2VyY2VMaXRlcmFsKDEwMCkpLnVuc2FmZUdldCgp
KTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIHZhbHVlLnVuc2FmZUdldCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIHZhbHVlLnZhbHVlKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWF4KCksICh2YWx1
ZSArIHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1heCgpKS52YWx1ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1heCgpLCAoc3RkOjpudW1lcmlj
X2xpbWl0czx0eXBlPjo6bWF4KCkgKyB2YWx1ZSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9F
UShzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptaW4oKSwgKHZhbHVlICsgc3RkOjpudW1lcmlj
X2xpbWl0czx0eXBlPjo6bWluKCkpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoc3RkOjpu
dW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCksIChzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+Ojpt
aW4oKSArIHZhbHVlKS52YWx1ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJh
bCgwKSwgKHZhbHVlICogY29lcmNlTGl0ZXJhbCgwKSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVD
VF9FUShjb2VyY2VMaXRlcmFsKDApLCAoY29lcmNlTGl0ZXJhbCgwKSAqIHZhbHVlKS52YWx1ZSgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAqIHZhbHVlKS52
YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtIGNv
ZXJjZUxpdGVyYWwoMCkpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJh
bCgwKSwgKGNvZXJjZUxpdGVyYWwoMCkgLSB2YWx1ZSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVD
VF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUgLSB2YWx1ZSkudmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUrKykudmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEpLCAodmFsdWUtLSkudmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEpLCAoKyt2YWx1ZSkudmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAoLS12YWx1ZSkudmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEwKSwgKHZhbHVlICs9IGNvZXJjZUxpdGVyYWwoMTAp
KS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMTApLCB2YWx1ZS52
YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMTAwKSwgKHZhbHVlICo9
IGNvZXJjZUxpdGVyYWwoMTApKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxp
dGVyYWwoMTAwKSwgdmFsdWUudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRl
cmFsKDApLCAodmFsdWUgLT0gY29lcmNlTGl0ZXJhbCgxMDApKS52YWx1ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIHZhbHVlLnZhbHVlKCkpOwogICAgICAgICB2YWx1
ZSA9IDEwOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxMCksIHZhbHVlLnVuc2Fm
ZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtIGNv
ZXJjZUxpdGVyYWwoMTApKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VM
aXRlcmFsKDEwKSwgdmFsdWUudW5zYWZlR2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNl
TGl0ZXJhbCgxMCksIHZhbHVlLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0
ZXJhbCgwKSwgKHZhbHVlIC0gY29lcmNlTGl0ZXJhbCgxMCkpLnZhbHVlKCkpOworICAgICAgICBF
WFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxMCksIHZhbHVlLnZhbHVlKCkpOwogCiAgICAgICAgIHZh
bHVlID0gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCk7CiAgICAgICAgIEVYUEVDVF9F
USh0cnVlLCAoQ2hlY2tlZDx0eXBlLCBSZWNvcmRPdmVyZmxvdz4odmFsdWUgLSBjb2VyY2VMaXRl
cmFsKDEpKSkuaGFzT3ZlcmZsb3dlZCgpKTsKQEAgLTM3NCwxMCArMzc0LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgQ2hlY2tlZDx0eXBlLCBSZWNvcmRPdmVyZmxvdz4gdmFsdWU7CiAgICAgICAgIHZh
bHVlID0gMTA7CiAKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAr
IC0xMCkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoMFUsICh2YWx1ZSAtIDEwVSku
dW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKC0xMCAr
IHZhbHVlKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwVSwgKDEwVSAtIHZhbHVl
KS51bnNhZmVHZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFs
dWUgKyAtMTApLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUsICh2YWx1ZSAtIDEwVSku
dmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAoLTEwICsgdmFs
dWUpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUsICgxMFUgLSB2YWx1ZSkudmFsdWUo
KSk7CiAgICAgICAgIHZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCk7CiAg
ICAgICAgIEVYUEVDVF9FUSh0cnVlLCAoQ2hlY2tlZDx0eXBlLCBSZWNvcmRPdmVyZmxvdz4odmFs
dWUgLSAxKSkuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICAgICAgRVhQRUNUX0VRKHRydWUsICEodmFs
dWUtLSkuaGFzT3ZlcmZsb3dlZCgpKTsKQEAgLTQ4OSwxNCArNDg5LDE0IEBAIFRFU1QoQ2hlY2tl
ZEFyaXRobWV0aWNUZXN0LCBJc0luQm91bmRzKQogVEVTVChDaGVja2VkQXJpdGhtZXRpY1Rlc3Qs
IERpdmlzaW9uKQogewogICAgIENoZWNrZWRTaXplIHNpemUgPSAxMDA7Ci0gICAgRVhQRUNUX0VR
KDEwMFUsIHNpemUudW5zYWZlR2V0KCkpOworICAgIEVYUEVDVF9FUSgxMDBVLCBzaXplLnZhbHVl
KCkpOwogICAgIHNpemUgLz0gMTBVOwogICAgIEVYUEVDVF9GQUxTRShzaXplLmhhc092ZXJmbG93
ZWQoKSk7Ci0gICAgRVhQRUNUX0VRKDEwVSwgc2l6ZS51bnNhZmVHZXQoKSk7CisgICAgRVhQRUNU
X0VRKDEwVSwgc2l6ZS52YWx1ZSgpKTsKIAogICAgIHNpemUgLz0gMTFVOwogICAgIEVYUEVDVF9G
QUxTRShzaXplLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgRVhQRUNUX0VRKDBVLCBzaXplLnVuc2Fm
ZUdldCgpKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHNpemUudmFsdWUoKSk7CiAKICAgICBzaXplID0g
MTAwOwogICAgIEVYUEVDVF9GQUxTRShzaXplLmhhc092ZXJmbG93ZWQoKSk7CkBAIC01MDYsNyAr
NTA2LDcgQEAgVEVTVChDaGVja2VkQXJpdGhtZXRpY1Rlc3QsIERpdmlzaW9uKQogCiAgICAgc2l6
ZSA9IDEwMDsKICAgICBFWFBFQ1RfRkFMU0Uoc2l6ZS5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEVY
UEVDVF9FUSgxMDBVLCBzaXplLnVuc2FmZUdldCgpKTsKKyAgICBFWFBFQ1RfRVEoMTAwVSwgc2l6
ZS52YWx1ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFJlY3RUZXN0cy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UmVjdFRlc3RzLmNwcAppbmRleCAw
NzkzZWFhOGFmOTc2NGQzNTIyYmYxNzdkZDA3M2IyYjU5YjM2YTQwLi43ZDViMmUwMzA4ZmRhZDI5
NDM3NTQyNTRmNWZlN2RmZGJlM2Q4NzNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSW50UmVjdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSW50UmVjdFRlc3RzLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIFRFU1Qo
SW50UmVjdCwgQXJlYUFuZERpc3RhbmNlcykKIHsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qo
MTAsIDIwLCAxMDAsIDEwMCk7CiAKLSAgICBFWFBFQ1RfRVEoMTAwMDBVLCByZWN0LmFyZWEoKS51
bnNhZmVHZXQoKSk7CisgICAgRVhQRUNUX0VRKDEwMDAwVSwgcmVjdC5hcmVhKCkudmFsdWUoKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9J
bnRTaXplVGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNp
emVUZXN0cy5jcHAKaW5kZXggYTU1OTQyZjc0ZTRhYzkxOGZkZjQ5NTI1OTU2MDhkYzdiY2UxYTVj
NC4uNjIyZjBhODhjZGRhZWFkYmU2YmQ0NTZjNTZlOGM0ZDgyMjlmNWRiZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgVEVTVChJbnRTaXplLCBEaWFnb25hbExlbmd0aEFuZEFyZWEpCiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSB0ZXN0KDEwMjQsIDc2OCk7CiAKICAgICBFWFBFQ1RfRVEoMTYzODQwMCwg
dGVzdC5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSk7Ci0gICAgRVhQRUNUX0VRKDc4NjQzMlUsIHRl
c3QuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBFWFBFQ1RfRVEoNzg2NDMyVSwgdGVzdC5hcmVh
KCkudmFsdWUoKSk7CiB9CiAKIFRFU1QoSW50U2l6ZSwgU2NhbGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430306</attachid>
            <date>2021-06-01 17:05:20 -0700</date>
            <delta_ts>2021-06-01 20:14:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226514-20210601170519.patch</filename>
            <type>text/plain</type>
            <size>229942</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi43NWU4MWJlNWFmZjFkNzhm
YjhhOTkxYjlmZmM0MWExOWQ2ZTdhZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1l
IENoZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRoZSAidW5zYWZlR2V0
IiBuYW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXNuJ3QgcmVh
bGx5IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dl
ZC4gQWxzbyBhZGQgYW4KKyAgICAgICAgYG9wZXJhdG9yIFQoKWAgdG8gaW1wbGljaXRseSBjb252
ZXJ0IGEgQ2hlY2tlZCB0byBpdHMgdW5kZXJseWluZyB0eXBlIHdpdGhvdXQgbmVlZGluZyB0bwor
ICAgICAgICBjYWxsIHZhbHVlKCkuCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmNoZWNrQWRkQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpjaGVja1N1YkNvbnN0YW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6Y2hlY2tNdWxDb25zdGFudCBjb25z
dCk6CisgICAgICAgICogYjMvQjNDb25zdDY0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3Q2NFZhbHVlOjpjaGVja0FkZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0NjRWYWx1ZTo6Y2hlY2tTdWJDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIz
OjpDb25zdDY0VmFsdWU6OmNoZWNrTXVsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpGaW5hbGx5Q29udGV4
dDo6bnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcyBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRp
bmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRm9yd2FyZFZhcmFy
Z3NXaXRoU3ByZWFkKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlT
bG93Q2FzZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmV4dHJhTWVtb3J5U2l6ZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6cHJvcGFnYXRlRXh0ZXJuYWxNZW1vcnlW
aXNpdGVkSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjpzbG93RW5zdXJlQ2FwYWNpdHkpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpjb25jYXRBcHBl
bmRPbmUpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6SGFzaE1h
cEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpIYXNoTWFwSW1wbDo6SGFz
aE1hcEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6Om5leHRDYXBhY2l0eSk6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsPEhhc2hN
YXBCdWNrZXRUeXBlPjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJ
bnQuY3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJbW11dGFibGVC
dXR0ZXJmbHk6OnRyeUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5oOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6b2Zmc2V0T2ZWYXJp
YWJsZSk6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6
ZUZvclNjb3BlU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmcuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChK
U0M6OlNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmlu
Z3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpT
Qzo6U2NyYXRjaEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vh
a01hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6V2Vha01hcEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUp
OgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmVtaXRDYWxsUGF0Y2hwb2ludCk6CisgICAgICAgICogd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6
OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
YWxsb2NhdGlvblNpemUpOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OnB1c2gpOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Z2V0RHJvcEtlZXBDb3VudCk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjp3YWxrRXhwcmVzc2lvblN0YWNrKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRMb29wKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRHZW5lcmF0b3I6OmFkZFRvcExldmVsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5l
cmF0b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFk
ZElmKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEVsc2VUb1VucmVh
Y2hhYmxlKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2lnbmF0dXJlOjphbGxvY2F0ZWRTaXplKToKKyAgICAgICAgKiB3YXNtL1dhc21TdHJl
YW1pbmdQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OmFk
ZEJ5dGVzKToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OlRhYmxlOjpUYWJsZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpncm93KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6RnVuY1JlZlRhYmxlOjpGdW5jUmVmVGFibGUpOgorICAgICAgICAq
IHlhcnIvWWFyckludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0
ZXI6OkRpc2p1bmN0aW9uQ29udGV4dDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpJbnRlcnByZXRlcjo6UGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OmFsbG9jYXRp
b25TaXplKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmFsbG9jUGFyZW50aGVz
ZXNEaXNqdW5jdGlvbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6
OmF0b21DaGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6
YXRvbUJhY2tSZWZlcmVuY2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0
b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNv
bXBpbGVyOjphdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNPbmNlRW5kKToKKyAgICAgICAgKEpTQzo6
WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNUZXJtaW5hbEVuZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6ZW1pdERpc2p1bmN0aW9uKToKKyAgICAgICAgKiB5
YXJyL1lhcnJJbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Qnl0
ZVRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Q2hlY2tJbnB1dCk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJ5dGVUZXJtOjpVbmNoZWNrSW5wdXQpOgorICAgICAgICAqIHlhcnIv
WWFyckpJVC5jcHA6CisgICAgICAgICogeWFyci9ZYXJyUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OllhcnI6OlBhcnNlcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVy
bi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcik6
CisKIDIwMjEtMDYtMDEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXVtHVEtdIFN1cHBvcnQgYnVpbGRpbmcgYWdhaW5zdCB1Q2xpYmMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZGVhN2NiZGNhODI5YWE3MTNjODUxODQ4ZWIyMjFmNjJkZGE3N2U5Ni4uZTRjNzFiNDQy
YjVlMmQ0NWVjMDRlYjlhZWU0ODFjMTQ2MzMwNDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAy
MS0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSBDaGVja2VkOjp1bnNhZmVHZXQoKSB0byBDaGVja2VkOjp2YWx1ZSgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1MTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZl
R2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUoKS4gVGhlICJ1bnNhZmVHZXQiIG5hbWluZyBpcyBjb25m
dXNpbmcgYXMgdGhpcworICAgICAgICBmdW5jdGlvbiBpc24ndCByZWFsbHkgdW5zYWZlIHNpbmNl
IGl0IHdpbGwgY3Jhc2ggaWYgdGhlIHZhbHVlIGhhcyBvdmVyZmxvd2VkLiBBbHNvIGFkZCBhbgor
ICAgICAgICBgb3BlcmF0b3IgVCgpYCB0byBpbXBsaWNpdGx5IGNvbnZlcnQgYSBDaGVja2VkIHRv
IGl0cyB1bmRlcmx5aW5nIHR5cGUgd2l0aG91dCBuZWVkaW5nIHRvCisgICAgICAgIGNhbGwgdmFs
dWUoKS4KKworICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RG
OjpDaGVja2VkOjpvcGVyYXRvciEgY29uc3QpOgorICAgICAgICAoV1RGOjpDaGVja2VkOjpvcGVy
YXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q2hlY2tlZDo6b3BlcmF0b3IgVCBjb25z
dCk6CisgICAgICAgIChXVEY6OkNoZWNrZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdURjo6
Q2hlY2tlZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OkNoZWNrZWQ6Om9wZXJhdG9yPCBj
b25zdCk6CisgICAgICAgIChXVEY6OkNoZWNrZWQ6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAg
ICAoV1RGOjpDaGVja2VkOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoV1RGOjpDaGVja2Vk
OjpvcGVyYXRvcj49IGNvbnN0KToKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudEJ1ZmZlci5oOgor
ICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6ZmFzdENhbGxvYyk6
CisgICAgICAgIChXVEY6OnRyeUZhc3RDYWxsb2MpOgorICAgICAgICAqIHd0Zi9HaWdhY2FnZS5j
cHA6CisgICAgICAgIChHaWdhY2FnZTo6dHJ5TWFsbG9jQXJyYXkpOgorICAgICAgICAqIHd0Zi9V
UkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6dXNlclZpc2libGVVUkwp
OgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6
OnBhcnNlSVB2NFBpZWNlKToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXkuaDoKKyAgICAgICAg
KiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5
cGVkU3RyaW5nKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdURjo6U29ja2V0Q29ubmVjdGlvbjo6cmVhZE1lc3NhZ2UpOgorICAgICAgICAoV1RG
OjpTb2NrZXRDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQ1N0
cmluZy5jcHA6CisgICAgICAgIChXVEY6OkNTdHJpbmdCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oOgorICAgICAgICAoV1RGOjpT
dHJpbmdCdWZmZXI6OlN0cmluZ0J1ZmZlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVp
bGRlckpTT04uY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRRdW90ZWRK
U09OU3RyaW5nKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAg
ICAgICAoV1RGOjp0cnlNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmFsbG9jYXRpb25TaXpl
KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg6CisgICAg
ICAgIChXVEY6OnBhcnNlSW50ZWdlcik6CisKIDIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjc3
ODgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDBmZjcxMTJhYzI4OTBjMzU5Yjg1NDcwYmVjMzBiYmY2YmMyYjk3
OTQuLmMxNjFmMjJkNWQ0ZmQ3ZTRhNjEwYjczZDFmYmVkYjFhOGIwYzg0MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNDkgQEAKKzIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6
dmFsdWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVuYW1lIENoZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRoZSAidW5z
YWZlR2V0IiBuYW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXNu
J3QgcmVhbGx5IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBoYXMgb3Zl
cmZsb3dlZC4gQWxzbyBhZGQgYW4KKyAgICAgICAgYG9wZXJhdG9yIFQoKWAgdG8gaW1wbGljaXRs
eSBjb252ZXJ0IGEgQ2hlY2tlZCB0byBpdHMgdW5kZXJseWluZyB0eXBlIHdpdGhvdXQgbmVlZGlu
ZyB0bworICAgICAgICBjYWxsIHZhbHVlKCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6
ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmVuY29k
ZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKToKKyAgICAgICAgKiBodG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6c2F2ZUZvcm1D
b250cm9sU3RhdGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5G
cmFtZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpzbGljZUFycmF5QnVm
ZmVyVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb3B5
QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRl
Q29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcDJEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0FycmF5cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdF
bGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0
cmliMCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVU
ZXhJbWFnZVN1YlJlY3RhbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjaGVja2VkQWRkQW5kTXVsdGlwbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmluY3JlbWVudFZpc3VhbGx5Tm9u
RW1wdHlQaXhlbENvdW50KToKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZCk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9BcnJheS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9BcnJheTo6cmVzaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlDcmVhdGVBdWRpb0J1ZmZlckxpc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQVJpbmdCdWZmZXI6OmFkb3B0U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDQVJp
bmdCdWZmZXI6OmluaXRpYWxpemVBZnRlckFsbG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0FSaW5nQnVmZmVyOjphbGxvY2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
V2ViQXVkaW9CdWZmZXJMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVy
TGlzdDo6V2ViQXVkaW9CdWZmZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b3JtYXRDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1hdENvbnZlcnRlcjo6Rm9y
bWF0Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUlt
YWdlU2l6ZUluQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6Y2xlYXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmZyYW1lQnl0ZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhpbXVtU3Vi
c2FtcGxpbmdMZXZlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhl
bEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZP
YmpDOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRCeXRlUmFuZ2VPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2VGb3JBdHRhY2htZW50IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVCYWNrZHJvcEZpbHRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclBvb2w6OmJhY2tpbmdTdG9yZUJ5dGVzRm9yU2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCeXRl
c1BlclJvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmZyYW1lQnl0ZXNBdEluZGV4
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
OjpyZWFkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWZmZWN0QXBwbHlBY2NlbGVyYXRlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvcHlQcmVtdWx0aXBseWluZ0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVUJpbmRHcm91cEFsbG9jYXRvcjo6YWxsb2NhdGVBbmRTZXRFbmNvZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnJlYWxsb2NhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06
CisgICAgICAgIChXZWJDb3JlOjpHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5j
b2Rlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGFzc0VuY29kZXI6OmRy
YXdJbmRleGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCdWZmZXI6
OkJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0
aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVEaXJlY3QyREltYWdl
U3VyZmFjZVdpdGhEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJEaXJlY3QyRDo6ZnJhbWVCeXRlc0F0SW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ljYzQ0NFRvUkdCKToKKyAgICAg
ICAgKFdlYkNvcmU6OnN5Y2M0MjJUb1JHQik6CisgICAgICAgIChXZWJDb3JlOjpzeWNjNDIwVG9S
R0IpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6Ynl0ZXNCYWNraW5nTGF5ZXJXaXRo
UGl4ZWxTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjE2OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29kZWNVVEY4OjplbmNvZGVVVEY4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckNhbnZhcyBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFz
dGVyU2hhcGUpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlTWFwOjpzZXRJdGVtKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVl
dExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp4c2x0UGFyYW1BcnJheUZyb21QYXJhbWV0ZXJNYXApOgorICAgICAgICAqIHhtbC9w
YXJzZXIvQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZUNoYXJhY3RlclJlZmVyZW5jZSk6CisKIDIwMjEtMDYtMDEgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gUmVtb3ZlIHVu
dXNlZCBHcmFwaGljc0NvbnRleHQ6OmhkYygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzYzExNDY3ZjdmZmNhZmNi
YzZiMjE1ZTZlYTQ3Mjg2NWEwMDBkYzkuLjI5NzVhZWUwZTRjMzUyYzZmN2FiNjcwYWFiYzFhMTY3
YWIwMTdkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMDYtMDEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZl
R2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lIENoZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6
OnZhbHVlKCkuIFRoZSAidW5zYWZlR2V0IiBuYW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAg
ICAgICAgZnVuY3Rpb24gaXNuJ3QgcmVhbGx5IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlm
IHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dlZC4gQWxzbyBhZGQgYW4KKyAgICAgICAgYG9wZXJhdG9y
IFQoKWAgdG8gaW1wbGljaXRseSBjb252ZXJ0IGEgQ2hlY2tlZCB0byBpdHMgdW5kZXJseWluZyB0
eXBlIHdpdGhvdXQgbmVlZGluZyB0bworICAgICAgICBjYWxsIHZhbHVlKCkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2V0SXRlbSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjpwdXQpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2Nv
Y29hL01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6
CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFw
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Ynl0ZXNQZXJSb3cgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnNpemVJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVh
YmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNhbGN1
bGF0ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUNHSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJl
YWRlcjo6Y29weVRyYWNrQXJyYXkpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBs
ZUN1cnNvcjo6Y29weVNhbXBsZUxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZhbmNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1
bGF0ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJB
VkY6OmZyYW1lQnl0ZXNBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5u
ZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEV2
YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlU2VsZWN0aW9uV2l0aERlbHRhKToKKwogMjAyMS0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyNzgy
NTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAppbmRleCBi
MGIwYjM3NDVjYzNmNThiNDE0MGE0YjAyNDc1NTEzODc4ZjZkNDYxLi4yMDk0ZmJlMTI3ODY1ZGRl
ZDMzM2ZhOTMwMmJiY2I5NWM3YjE2Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0MzJWYWx1ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6
Y2hlY2tBZGRDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKICAgICBDaGVja2VkSW50MzIgcmVzdWx0ID0gQ2hlY2tlZEludDMyKG1fdmFsdWUpICsgQ2hl
Y2tlZEludDMyKG90aGVyLT5hc0ludDMyKCkpOwogICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dl
ZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Qz
MlZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gcHJvYy5h
ZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiBWYWx1ZSog
Q29uc3QzMlZhbHVlOjpjaGVja1N1YkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdApAQCAtODUsNyArODUsNyBAQCBWYWx1ZSogQ29uc3QzMlZhbHVlOjpj
aGVja1N1YkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogICAgIENoZWNrZWRJbnQzMiByZXN1bHQgPSBDaGVja2VkSW50MzIobV92YWx1ZSkgLSBDaGVj
a2VkSW50MzIob3RoZXItPmFzSW50MzIoKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDMy
VmFsdWU+KG9yaWdpbigpLCByZXN1bHQudW5zYWZlR2V0KCkpOworICAgIHJldHVybiBwcm9jLmFk
ZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIFZhbHVlKiBD
b25zdDMyVmFsdWU6OmNoZWNrTXVsQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1
ZSogb3RoZXIpIGNvbnN0CkBAIC05NSw3ICs5NSw3IEBAIFZhbHVlKiBDb25zdDMyVmFsdWU6OmNo
ZWNrTXVsQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
CiAgICAgQ2hlY2tlZEludDMyIHJlc3VsdCA9IENoZWNrZWRJbnQzMihtX3ZhbHVlKSAqIENoZWNr
ZWRJbnQzMihvdGhlci0+YXNJbnQzMigpKTsKICAgICBpZiAocmVzdWx0Lmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJW
YWx1ZT4ob3JpZ2luKCksIHJlc3VsdC51bnNhZmVHZXQoKSk7CisgICAgcmV0dXJuIHByb2MuYWRk
PENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogVmFsdWUqIENv
bnN0MzJWYWx1ZTo6Y2hlY2tOZWdDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAppbmRleCBkM2UyYTQyNzM1
OTAxYmYwYjU2MjI3ZDEzOWNmYzU1MTVhZWE1NTg5Li5iMWI1ZDUyY2JmMjljNjg5ZmRlYTNiNzFm
OThkZGNjMDJjYTBlM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdDY0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRW
YWx1ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgVmFsdWUqIENvbnN0NjRWYWx1ZTo6Y2hlY2tBZGRD
b25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICBD
aGVja2VkSW50NjQgcmVzdWx0ID0gQ2hlY2tlZEludDY0KG1fdmFsdWUpICsgQ2hlY2tlZEludDY0
KG90aGVyLT5hc0ludDY0KCkpOwogICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihv
cmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2
NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiBWYWx1ZSogQ29uc3Q2NFZh
bHVlOjpjaGVja1N1YkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdApAQCAtODUsNyArODUsNyBAQCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjpjaGVja1N1YkNv
bnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogICAgIENo
ZWNrZWRJbnQ2NCByZXN1bHQgPSBDaGVja2VkSW50NjQobV92YWx1ZSkgLSBDaGVja2VkSW50NjQo
b3RoZXItPmFzSW50NjQoKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9y
aWdpbigpLCByZXN1bHQudW5zYWZlR2V0KCkpOworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0
VmFsdWU+KG9yaWdpbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIFZhbHVlKiBDb25zdDY0VmFs
dWU6OmNoZWNrTXVsQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIp
IGNvbnN0CkBAIC05NSw3ICs5NSw3IEBAIFZhbHVlKiBDb25zdDY0VmFsdWU6OmNoZWNrTXVsQ29u
c3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiAgICAgQ2hl
Y2tlZEludDY0IHJlc3VsdCA9IENoZWNrZWRJbnQ2NChtX3ZhbHVlKSAqIENoZWNrZWRJbnQ2NChv
dGhlci0+YXNJbnQ2NCgpKTsKICAgICBpZiAocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3Jp
Z2luKCksIHJlc3VsdC51bnNhZmVHZXQoKSk7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0NjRW
YWx1ZT4ob3JpZ2luKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogVmFsdWUqIENvbnN0NjRWYWx1
ZTo6Y2hlY2tOZWdDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggY2I5NjkzNDJhZGQ4ZGY2MmM2NTZkNDA0Yjg1ZDRmYTdmMzM5NzhkOC4uMGJjMWVlMTVjOGYz
MTdmOGJlMWE3MGM4OTgzOWNmMDkyZTk3NmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjA3LDcgKzIw
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBjb21wbGV0aW9uVHlw
ZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wbGV0aW9uUmVjb3JkLnR5cGVSZWdpc3Rl
ci5nZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBjb21wbGV0aW9uVmFsdWVSZWdpc3Rlcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcGxldGlvblJlY29yZC52YWx1ZVJlZ2lzdGVyLmdldCgpOyB9
CiAKLSAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcy51bnNhZmVHZXQoKTsgfQorICAgICAg
ICB1aW50MzJfdCBudW1iZXJPZkJyZWFrc09yQ29udGludWVzKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1iZXJPZkJyZWFrc09yQ29udGludWVzOyB9CiAgICAgICAgIHZvaWQgaW5jTnVtYmVyT2ZCcmVh
a3NPckNvbnRpbnVlcygpIHsgbV9udW1iZXJPZkJyZWFrc09yQ29udGludWVzKys7IH0KIAogICAg
ICAgICBib29sIGhhbmRsZXNSZXR1cm5zKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVzUmV0dXJu
czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAppbmRleCAyZWRkOWFlNWFkNzliNGMyMjlhNjM3OTZhMmZhM2Q3MmRmOGE3
YTc0Li5jNDdkNDkzMDgzMjU2ZDM0NTE5ODZkODEzMDNlYTZmM2M3MjRmOTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cApAQCAtMzk0LDEyICszOTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIWlu
ZGV4VmFsdWUgfHwgIWluZGV4VmFsdWUuaXNVSW50MzIoKSkKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4gY2hlY2tlZEluZGV4ID0gaW5kZXhWYWx1ZS5hc1VJbnQzMigpOworICAgICAgICAgICAgICAg
IENoZWNrZWRVaW50MzIgY2hlY2tlZEluZGV4ID0gaW5kZXhWYWx1ZS5hc1VJbnQzMigpOwogICAg
ICAgICAgICAgICAgIGNoZWNrZWRJbmRleCArPSBub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tp
cCgpOwogICAgICAgICAgICAgICAgIGlmIChjaGVja2VkSW5kZXguaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IGNoZWNrZWRJbmRleC51bnNhZmVHZXQoKTsKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGNoZWNrZWRJbmRleDsKICAgICAgICAgICAgICAgICBO
b2RlKiBhcmd1bWVudHMgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBhcmd1bWVudHMtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGZjYjA0NDYwYTNmZDA3MTVkOTQ3
NWZiYWFmMDM4MTM3MGY3OGQyODQuLmIxNzIzZGZmOTUyNzlhNWViYjJjY2NkY2FjZjZhODhlNDg4
YWNmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApA
QCAtMzAzMyw3ICszMDMzLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0FycmF5V2l0aFNwcmVhZFNsb3csIEpTQ2VsbCosIChKU0dsb2JhbE9iamUKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBFbmNvZGVkSlNWYWx1ZSogdmFs
dWVzID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihidWZmZXIpOwotICAgIENoZWNrZWQ8
dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkTGVuZ3RoID0gMDsKKyAgICBDaGVja2Vk
VWludDMyIGNoZWNrZWRMZW5ndGggPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1JdGVtczsgaSsrKSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dmFsdWVzW2ldKTsKICAgICAgICAgaWYgKEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBhcnJheSA9IGpz
RHluYW1pY0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPih2bSwgdmFsdWUpKQpAQCAtMzA0Nyw3
ICszMDQ3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0
aFNwcmVhZFNsb3csIEpTQ2VsbCosIChKU0dsb2JhbE9iamUKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gY2hlY2tlZExlbmd0aC51bnNhZmVH
ZXQoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjaGVja2VkTGVuZ3RoOwogICAgIGlmIChVTkxJ
S0VMWShsZW5ndGggPj0gTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpIHsK
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCA4MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZmYmNmZDYyM2NhNWM1
YzdkLi41MzQ2MjkzNjc1ODEyMjRmN2NmMTU5NTQyNGRjYWExMjg2Zjc5Mzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03Mjg0LDcgKzcy
ODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmNvbnN0SW50MzIoc3RhcnRMZW5n
dGgudW5zYWZlR2V0KCkpOworICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmNvbnN0
SW50MzIoc3RhcnRMZW5ndGgpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9ub2RlLT5udW1DaGlsZHJlbigpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoYml0
VmVjdG9yLT5nZXQoaSkpIHsKQEAgLTczMzEsNyArNzMzMSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgcmVzdWx0ZWQgYXJyYXkgZnJvbSBO
ZXdBcnJheVdpdGhTcHJlYWQgaXMgYWx3YXlzIGNvbnRpZ3VvdXMsIHdlIHNob3VsZCBub3QgZ2Vu
ZXJhdGUgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gRG91Ymxl
IGZvcm0gZXZlbiBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGluZ1R5cGUgaXMgQXJy
YXlXaXRoRG91YmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQodmFsdWUpLCBtX291
dC5iYXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIEpTVmFsdWUoKSwgKENoZWNrZWQ8aW50
MzJfdD4oc2l6ZW9mKEpTVmFsdWUpKSAqIGkpLnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSks
IG1fb3V0LmJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgSlNWYWx1ZSgpLCAoQ2hlY2tl
ZDxpbnQzMl90PihzaXplb2YoSlNWYWx1ZSkpICogaSkudmFsdWUoKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IG1f
b3V0LmFkZChpbmRleCwgbV9vdXQuY29uc3RJbnRQdHIoYXJyYXktPmxlbmd0aCgpKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzYyNSw3ICs3NjI1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIEFTU0VSVChpbW11dGFibGVCdXR0ZXJmbHktPmxlbmd0aCgpIDw9IE1B
WF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpOwogCiAgICAgICAgICAgICBMVmFsdWUgZmFzdEltbXV0
YWJsZUJ1dHRlcmZseVZhbHVlID0gYWxsb2NhdGVWYXJpYWJsZVNpemVkQ2VsbDxKU0ltbXV0YWJs
ZUJ1dHRlcmZseT4oCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoSlNJbW11dGFi
bGVCdXR0ZXJmbHk6OmFsbG9jYXRpb25TaXplKGltbXV0YWJsZUJ1dHRlcmZseS0+bGVuZ3RoKCkp
LnVuc2FmZUdldCgpKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihKU0ltbXV0
YWJsZUJ1dHRlcmZseTo6YWxsb2NhdGlvblNpemUoaW1tdXRhYmxlQnV0dGVyZmx5LT5sZW5ndGgo
KSkudmFsdWUoKSksCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZtLmltbXV0YWJsZUJ1dHRl
cmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJh
eVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCBzbG93QWxs
b2NhdGlvbik7CiAgICAgICAgICAgICBMVmFsdWUgZmFzdEltbXV0YWJsZUJ1dHRlcmZseVN0b3Jh
Z2UgPSB0b0J1dHRlcmZseShmYXN0SW1tdXRhYmxlQnV0dGVyZmx5VmFsdWUpOwogICAgICAgICAg
ICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKGltbXV0YWJsZUJ1dHRlcmZseS0+bGVu
Z3RoKCkpLCBmYXN0SW1tdXRhYmxlQnV0dGVyZmx5U3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlf
cHVibGljTGVuZ3RoKTsKQEAgLTEwMjM3LDcgKzEwMjM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBjdXJyZW50U3RvcmVPZmZz
ZXQgeyBzdG9yZU9mZnNldCB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50U3RvcmVPZmZzZXQgLT0gKG9mZnNldENvdW50ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6
ZW9mKFJlZ2lzdGVyKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmU2NChzY3JhdGNoR1BSMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxw
ZXJzOjpUaW1lc0VpZ2h0LCBjdXJyZW50U3RvcmVPZmZzZXQudW5zYWZlR2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNj
cmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBjdXJyZW50
U3RvcmVPZmZzZXQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KGFycmF5LT5sZW5ndGgoKSkpLCBzY3JhdGNoR1BS
Mik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA4ODUsNyArMTA4
ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIGZvcndhcmRl
ZCB2YWx1ZXMgYXJlIGRyYWluZWQgYXMgSlNWYWx1ZSwgd2Ugc2hvdWxkIG5vdCBnZW5lcmF0ZSB2
YWx1ZQogICAgICAgICAgICAgICAgICAgICAvLyBpbiBEb3VibGUgZm9ybSBldmVuIGlmIFBoYW50
b21OZXdBcnJheUJ1ZmZlcidzIGluZGV4aW5nVHlwZSBpcyBBcnJheVdpdGhEb3VibGUuCiAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdl
dChpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2
NCh2YWx1ZSksIG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnZhcmlhYmxlcywgdGFyZ2V0U3RhcnQs
IHN0b3JlSW5kZXgsIEpTVmFsdWUoKSwgKENoZWNrZWQ8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKiBpKS51bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0
KG1fb3V0LmNvbnN0SW50NjQodmFsdWUpLCBtX291dC5iYXNlSW5kZXgobV9oZWFwcy52YXJpYWJs
ZXMsIHRhcmdldFN0YXJ0LCBzdG9yZUluZGV4LCBKU1ZhbHVlKCksIChDaGVja2VkPGludDMyX3Q+
KHNpemVvZihSZWdpc3RlcikpICogaSkudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0LmNvbnN0SW50UHRyKGFycmF5LT5s
ZW5ndGgoKSksIHN0b3JlSW5kZXgpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMjU4MDRhMTUyOTQwNzA4OTMyMTQ3NDRj
MjVkMjZlOWE1ZDdlNDcxYi4uMjAyZDhkNDcwNjUzMTU4Y2QzMWFjOWVlMWJhMDBiNjIxODBiMmQ5
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC02
MjgsNyArNjI4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IsIEpTQ2VsbCosIChKU0dsb2JhbE9iamUKIAogICAgICAgICAvLyBGSVhN
RTogd2Ugc2hvdWxkIHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSBpZiBjaGVja2Vk
QXJyYXlTaXplIGhhcyBoYXNPdmVyZmxvd2VkKCkgb3IgdHJ5Q3JlYXRlKCkgZmFpbHMuCiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3ODQKLSAg
ICAgICAgdW5zaWduZWQgYXJyYXlTaXplID0gY2hlY2tlZEFycmF5U2l6ZS51bnNhZmVHZXQoKTsg
Ly8gQ3Jhc2hlcyBpZiBvdmVyZmxvd2VkLgorICAgICAgICB1bnNpZ25lZCBhcnJheVNpemUgPSBj
aGVja2VkQXJyYXlTaXplOyAvLyBDcmFzaGVzIGlmIG92ZXJmbG93ZWQuCiAgICAgICAgIEpTQXJy
YXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgc3RydWN0dXJlLCBhcnJheVNpemUp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCmluZGV4IGNiMDc5YmY3NWExZDc0ODRjOGIyODc3YjQyNDgzNWQ0NjcyYzA5OGEu
LjhmYWFmZmM2NWQ1YmI5ZjFmN2Y5ZjUzNGY2ZWU1N2Y3MTllMTg5MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBIZWFwOjpkZXByZWNh
dGVkUmVwb3J0RXh0cmFNZW1vcnlTbG93Q2FzZShzaXplX3Qgc2l6ZSkKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDExCiAgICAgQ2hlY2tlZFNpemUg
Y2hlY2tlZE5ld1NpemUgPSBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemU7CiAgICAgY2hlY2tl
ZE5ld1NpemUgKz0gc2l6ZTsKLSAgICBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUgPSBVTkxJ
S0VMWShjaGVja2VkTmV3U2l6ZS5oYXNPdmVyZmxvd2VkKCkpID8gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSA6IGNoZWNrZWROZXdTaXplLnVuc2FmZUdldCgpOworICAgIG1fZGVw
cmVjYXRlZEV4dHJhTWVtb3J5U2l6ZSA9IFVOTElLRUxZKGNoZWNrZWROZXdTaXplLmhhc092ZXJm
bG93ZWQoKSkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIDogY2hlY2tlZE5l
d1NpemUudmFsdWUoKTsKICAgICByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNp
emUpOwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgc2l6ZV90IEhlYXA6OmV4dHJhTWVtb3J5U2l6
ZSgpCiAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZFRvdGFsID0gbV9leHRyYU1lbW9yeVNpemU7CiAg
ICAgY2hlY2tlZFRvdGFsICs9IG1fZGVwcmVjYXRlZEV4dHJhTWVtb3J5U2l6ZTsKICAgICBjaGVj
a2VkVG90YWwgKz0gbV9hcnJheUJ1ZmZlcnMuc2l6ZSgpOwotICAgIHNpemVfdCB0b3RhbCA9IFVO
TElLRUxZKGNoZWNrZWRUb3RhbC5oYXNPdmVyZmxvd2VkKCkpID8gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSA6IGNoZWNrZWRUb3RhbC51bnNhZmVHZXQoKTsKKyAgICBzaXplX3Qg
dG90YWwgPSBVTkxJS0VMWShjaGVja2VkVG90YWwuaGFzT3ZlcmZsb3dlZCgpKSA/IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgOiBjaGVja2VkVG90YWwudmFsdWUoKTsKIAogICAg
IEFTU0VSVChtX29iamVjdFNwYWNlLmNhcGFjaXR5KCkgPj0gbV9vYmplY3RTcGFjZS5zaXplKCkp
OwogICAgIHJldHVybiBzdGQ6Om1pbih0b3RhbCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIG1fb2JqZWN0U3BhY2UuY2FwYWNpdHkoKSk7CkBAIC0yMjU1LDcgKzIyNTUsNyBA
QCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAgIGlmIChBU1NFUlRfRU5B
QkxFRCkgewogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkQ3VycmVudEhlYXBTaXplID0gbV90
b3RhbEJ5dGVzVmlzaXRlZDsKICAgICAgICAgY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZSArPSBleHRy
YU1lbW9yeVNpemUoKTsKLSAgICAgICAgQVNTRVJUKCFjaGVja2VkQ3VycmVudEhlYXBTaXplLmhh
c092ZXJmbG93ZWQoKSAmJiBjaGVja2VkQ3VycmVudEhlYXBTaXplLnVuc2FmZUdldCgpID09IGN1
cnJlbnRIZWFwU2l6ZSk7CisgICAgICAgIEFTU0VSVCghY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZS5o
YXNPdmVyZmxvd2VkKCkgJiYgY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZSA9PSBjdXJyZW50SGVhcFNp
emUpOwogICAgIH0KIAogICAgIGlmICh2ZXJib3NlKQpAQCAtMjU1OCw3ICsyNTU4LDcgQEAgdm9p
ZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQoc2l6ZV90IHNpemUpCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0MTEKICAgICAgICAg
Q2hlY2tlZFNpemUgY2hlY2tlZE5ld1NpemUgPSBvbGRTaXplOwogICAgICAgICBjaGVja2VkTmV3
U2l6ZSArPSBzaXplOwotICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IFVOTElLRUxZKGNoZWNrZWRO
ZXdTaXplLmhhc092ZXJmbG93ZWQoKSkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpIDogY2hlY2tlZE5ld1NpemUudW5zYWZlR2V0KCk7CisgICAgICAgIHNpemVfdCBuZXdTaXpl
ID0gVU5MSUtFTFkoY2hlY2tlZE5ld1NpemUuaGFzT3ZlcmZsb3dlZCgpKSA/IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgOiBjaGVja2VkTmV3U2l6ZS52YWx1ZSgpOwogICAgICAg
ICBpZiAoV1RGOjphdG9taWNDb21wYXJlRXhjaGFuZ2VXZWFrUmVsYXhlZChjb3VudGVyLCBvbGRT
aXplLCBuZXdTaXplKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKaW5kZXggYzVmMzdkYTVlNzZlYjUzZTJkYjg5
YWRhNDYxOTQ4ZDFlNzk4MDlkZi4uNDk4MTc5NTc0NTI0MGM4NDgyYzI5ZjlhMWM0ZDRlYTJmYmJj
YzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcApAQCAt
NDE1LDcgKzQxNSw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjpwcm9wYWdhdGVFeHRlcm5h
bE1lbW9yeVZpc2l0ZWRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGlmIChtX2V4dHJhTWVtb3J5U2l6
ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgZWxz
ZSBpZiAobV9leHRyYU1lbW9yeVNpemUpCi0gICAgICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJh
TWVtb3J5VmlzaXRlZChtX2V4dHJhTWVtb3J5U2l6ZS51bnNhZmVHZXQoKSk7CisgICAgICAgICAg
ICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2V4dHJhTWVtb3J5U2l6ZSk7CiAg
ICAgICAgIG1fZXh0cmFNZW1vcnlTaXplID0gMDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCmluZGV4IGY4NGM1YTY5NDc2MDJlZWViZGZhNTRhODk3
ZWRjMmZmMzczNmZlMTAuLjUxYWJjNWExM2NiNmY5ZWMwZDgyNTVmNTFlYzBkZjliMzRhZDE2ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCkBAIC02OCwxOSAr
NjgsMTkgQEAgdGVtcGxhdGUgdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKFNs
b3RWaXNpdG9yJiwgTGlzdFNldCYpOwogdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6c2xvd0Vu
c3VyZUNhcGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRDYXBhY2l0eSkKIHsKICAgICBzZXROZWVkc092
ZXJmbG93Q2hlY2soKTsKLSAgICBhdXRvIGNoZWNrZWROZXdDYXBhY2l0eSA9IENoZWNrZWQ8aW50
LCBSZWNvcmRPdmVyZmxvdz4ocmVxdWVzdGVkQ2FwYWNpdHkpOworICAgIGF1dG8gY2hlY2tlZE5l
d0NhcGFjaXR5ID0gQ2hlY2tlZEludDMyKHJlcXVlc3RlZENhcGFjaXR5KTsKICAgICBpZiAoVU5M
SUtFTFkoY2hlY2tlZE5ld0NhcGFjaXR5Lmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIHJldHVy
biB0aGlzLT5vdmVyZmxvd2VkKCk7Ci0gICAgZXhwYW5kQ2FwYWNpdHkoY2hlY2tlZE5ld0NhcGFj
aXR5LnVuc2FmZUdldCgpKTsKKyAgICBleHBhbmRDYXBhY2l0eShjaGVja2VkTmV3Q2FwYWNpdHkp
OwogfQogCiB2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSgpCiB7CiAg
ICAgc2V0TmVlZHNPdmVyZmxvd0NoZWNrKCk7Ci0gICAgYXV0byBjaGVja2VkTmV3Q2FwYWNpdHkg
PSBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1fY2FwYWNpdHkpICogMjsKKyAgICBhdXRv
IGNoZWNrZWROZXdDYXBhY2l0eSA9IENoZWNrZWRJbnQzMihtX2NhcGFjaXR5KSAqIDI7CiAgICAg
aWYgKFVOTElLRUxZKGNoZWNrZWROZXdDYXBhY2l0eS5oYXNPdmVyZmxvd2VkKCkpKQogICAgICAg
ICByZXR1cm4gdGhpcy0+b3ZlcmZsb3dlZCgpOwotICAgIGV4cGFuZENhcGFjaXR5KGNoZWNrZWRO
ZXdDYXBhY2l0eS51bnNhZmVHZXQoKSk7CisgICAgZXhwYW5kQ2FwYWNpdHkoY2hlY2tlZE5ld0Nh
cGFjaXR5KTsKIH0KIAogdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHko
aW50IG5ld0NhcGFjaXR5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyOjpleHBhbmRDYXBhY2l0eShpbnQgbmV3Q2FwYWNpdHkpCiAgICAgYXV0byBjaGVja2VkU2l6
ZSA9IENoZWNrZWRTaXplKG5ld0NhcGFjaXR5KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKGNoZWNrZWRTaXplLmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIHJl
dHVybiB0aGlzLT5vdmVyZmxvd2VkKCk7Ci0gICAgRW5jb2RlZEpTVmFsdWUqIG5ld0J1ZmZlciA9
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2Fn
ZTo6SlNWYWx1ZSwgY2hlY2tlZFNpemUudW5zYWZlR2V0KCkpKTsKKyAgICBFbmNvZGVkSlNWYWx1
ZSogbmV3QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihHaWdhY2FnZTo6dHJ5
TWFsbG9jKEdpZ2FjYWdlOjpKU1ZhbHVlLCBjaGVja2VkU2l6ZSkpOwogICAgIGlmICghbmV3QnVm
ZmVyKQogICAgICAgICByZXR1cm4gdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbV9zaXplOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3OTA2ODU2MTY1MjE5OWZiYjdlNzQ4NmU5MzU0
NzkyNDQ3Nzc2OGZmLi41YjJhMjE0MGY2ZDc4MzNlMThkYjZiYTNiNzRjN2EwMmIxZTNkYjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CkBAIC0xNDc4LDE0ICsxNDc4LDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25jYXRBcHBl
bmRPbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU0FyCiAgICAgQnV0
dGVyZmx5KiBmaXJzdEJ1dHRlcmZseSA9IGZpcnN0LT5idXR0ZXJmbHkoKTsKICAgICB1bnNpZ25l
ZCBmaXJzdEFycmF5U2l6ZSA9IGZpcnN0QnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKIAotICAg
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUmVzdWx0U2l6ZSA9IGZp
cnN0QXJyYXlTaXplOworICAgIENoZWNrZWRVaW50MzIgY2hlY2tlZFJlc3VsdFNpemUgPSBmaXJz
dEFycmF5U2l6ZTsKICAgICBjaGVja2VkUmVzdWx0U2l6ZSArPSAxOwogICAgIGlmIChVTkxJS0VM
WShjaGVja2VkUmVzdWx0U2l6ZS5oYXNPdmVyZmxvd2VkKCkpKSB7CiAgICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVzdWx0U2l6ZSA9IGNoZWNrZWRS
ZXN1bHRTaXplLnVuc2FmZUdldCgpOworICAgIHVuc2lnbmVkIHJlc3VsdFNpemUgPSBjaGVja2Vk
UmVzdWx0U2l6ZTsKICAgICBJbmRleGluZ1R5cGUgdHlwZSA9IGZpcnN0LT5tZXJnZUluZGV4aW5n
VHlwZUZvckNvcHlpbmcoaW5kZXhpbmdUeXBlRm9yVmFsdWUoc2Vjb25kKSB8IElzQXJyYXkpOwog
ICAgIAogICAgIGlmICh0eXBlID09IE5vbkFycmF5KQpAQCAtMTU3MSw3ICsxNTcxLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICB1bnNpZ25lZCBmaXJzdEFycmF5U2l6ZSA9IGZpcnN0
QnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICB1bnNpZ25lZCBzZWNvbmRBcnJheVNpemUg
PSBzZWNvbmRCdXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogCi0gICAgQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRSZXN1bHRTaXplID0gZmlyc3RBcnJheVNpemU7Cisg
ICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkUmVzdWx0U2l6ZSA9IGZpcnN0QXJyYXlTaXplOwogICAg
IGNoZWNrZWRSZXN1bHRTaXplICs9IHNlY29uZEFycmF5U2l6ZTsKIAogICAgIGlmIChVTkxJS0VM
WShjaGVja2VkUmVzdWx0U2l6ZS5oYXNPdmVyZmxvd2VkKCkpKSB7CkBAIC0xNTc5LDcgKzE1Nzks
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0
TWVtY3B5LCAoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHRTaXplID0gY2hlY2tlZFJlc3VsdFNp
emUudW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgcmVzdWx0U2l6ZSA9IGNoZWNrZWRSZXN1bHRT
aXplOwogICAgIEluZGV4aW5nVHlwZSBmaXJzdFR5cGUgPSBmaXJzdEFycmF5LT5pbmRleGluZ1R5
cGUoKTsKICAgICBJbmRleGluZ1R5cGUgc2Vjb25kVHlwZSA9IHNlY29uZEFycmF5LT5pbmRleGlu
Z1R5cGUoKTsKICAgICBJbmRleGluZ1R5cGUgdHlwZSA9IGZpcnN0QXJyYXktPm1lcmdlSW5kZXhp
bmdUeXBlRm9yQ29weWluZyhzZWNvbmRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDJlYzZlYzRhZTAxMWIwOTA4ZTdi
OTg5MTU0MDkwYzU5NmUzZDQyY2IuLjY0Yzg2ZTYxMTYyODBjOTJjNDc0MDdmMWU3MjMwNzdjZGI5
NmUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMTQwMyw3ICsxNDAzLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19Q
QVRIKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZEFycmF5U2l6ZSA9
IDA7CisgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQXJyYXlTaXplID0gMDsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bUl0ZW1zOyBpKyspIHsKICAgICAgICAgaWYgKGJpdFZlY3Rvci5nZXQo
aSkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2YWx1ZXNbLWldOwpAQCAtMTQxNSw3
ICsxNDE1LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9uZXdfYXJy
YXlfd2l0aF9zcHJlYWQpCiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRBcnJheVNpemUuaGFzT3Zl
cmZsb3dlZCgpKSkKICAgICAgICAgVEhST1coY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxP
YmplY3QpKTsKIAotICAgIHVuc2lnbmVkIGFycmF5U2l6ZSA9IGNoZWNrZWRBcnJheVNpemUudW5z
YWZlR2V0KCk7CisgICAgdW5zaWduZWQgYXJyYXlTaXplID0gY2hlY2tlZEFycmF5U2l6ZTsKICAg
ICBpZiAoVU5MSUtFTFkoYXJyYXlTaXplID49IE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElP
Tl9MRU5HVEgpKQogICAgICAgICBUSFJPVyhjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9i
amVjdCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3Vt
ZW50cy5oCmluZGV4IGJlOTUwZjE1NmFlNzM3N2JlODhiOGY0ZGJhZDkxYjc1YjM2ZWJjN2UuLmM0
ZmQ1N2RiMDJhODBhZTk3NzU0YzE2MGY2ODdmOGU2NDE1NjhmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCkBAIC0xNjMsNyArMTYzLDcg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZTbG90KENoZWNrZWQ8
c2l6ZV90PiBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc3RvcmFnZU9mZnNldCgpICsg
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBpbmRleCkudW5zYWZlR2V0KCk7CisgICAg
ICAgIHJldHVybiAoc3RvcmFnZU9mZnNldCgpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikgKiBpbmRleCkudmFsdWUoKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gY2FwYWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAppbmRleCBkODE1YTMyMGMyZTE4MTFmYjVkYjI5Y2Nk
OWZlY2YwYmFiOWY2MDRmLi4xMjI5NjJiZTc1ODQ4ZTg4MTYwMjYxMzUzZGUwZGQ1NTQ0NWQ1ZGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKQEAgLTIw
MSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXpl
KENoZWNrZWQ8c2l6ZV90PiBjYXBhY2l0eSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoY2FwYWNp
dHkgKiBzaXplb2YoQnVja2V0VHlwZSopKS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIChj
YXBhY2l0eSAqIHNpemVvZihCdWNrZXRUeXBlKikpLnZhbHVlKCk7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSBCdWNrZXRUeXBlKiogYnVmZmVyKCkgY29uc3QKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICwgbV9rZXlDb3VudCgwKQogICAgICAgICAsIG1fZGVsZXRlQ291
bnQoMCkKICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGNhcGFjaXR5ID0gKChDaGVja2VkPHVpbnQz
Ml90PihzaXplSGludCkgKiAyKSArIDEpLnVuc2FmZUdldCgpOworICAgICAgICB1aW50MzJfdCBj
YXBhY2l0eSA9ICgoQ2hlY2tlZDx1aW50MzJfdD4oc2l6ZUhpbnQpICogMikgKyAxKS52YWx1ZSgp
OwogICAgICAgICBjYXBhY2l0eSA9IHN0ZDo6bWF4PHVpbnQzMl90PihXVEY6OnJvdW5kVXBUb1Bv
d2VyT2ZUd28oY2FwYWNpdHkpLCA0VSk7CiAgICAgICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFw
SW1wbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
SW5saW5lcy5oCmluZGV4IDUxNjBlODE4YzAxOWJlZDcyNjE4M2EzNDllNjY3ODE2MWQ2MjAxMDYu
LmU0NDBmZjJiNmM4MDY3MGEzZTQ4MTA3ZjNiNTI4ZmRjNDFkNjdhODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oCkBAIC0xNjks
NyArMTY5LDcgQEAgQUxXQVlTX0lOTElORSB1aW50MzJfdCBuZXh0Q2FwYWNpdHkodWludDMyX3Qg
Y2FwYWNpdHksIHVpbnQzMl90IGtleUNvdW50KQogICAgICAgICAvLyBhdCB0aGUgc2FtZSBjYXBh
Y2l0eSkuCiAgICAgICAgIHJldHVybiBjYXBhY2l0eTsKICAgICB9Ci0gICAgcmV0dXJuIChDaGVj
a2VkPHVpbnQzMl90PihjYXBhY2l0eSkgKiAyKS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gKENo
ZWNrZWQ8dWludDMyX3Q+KGNhcGFjaXR5KSAqIDIpLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBIYXNoTWFwQnVja2V0VHlwZT4KQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEhhc2hN
YXBJbXBsPEhhc2hNYXBCdWNrZXRUeXBlPjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKIAogICAgIC8vIFRo
aXMgc2l6ZSBzaG91bGQgYmUgdGhlIHNhbWUgdG8gdGhlIGNhc2Ugd2hlbiB5b3UgY2xvbmUgdGhl
IG1hcCBieSBjYWxsaW5nIGFkZCgpIHJlcGVhdGVkbHkuCi0gICAgdWludDMyX3QgY2FwYWNpdHkg
PSAoKENoZWNrZWQ8dWludDMyX3Q+KGJhc2UtPm1fa2V5Q291bnQpICogMikgKyAxKS51bnNhZmVH
ZXQoKTsKKyAgICB1aW50MzJfdCBjYXBhY2l0eSA9ICgoQ2hlY2tlZDx1aW50MzJfdD4oYmFzZS0+
bV9rZXlDb3VudCkgKiAyKSArIDEpLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FwYWNp
dHkgPD0gKDFVIDw8IDMxKSk7CiAgICAgY2FwYWNpdHkgPSBzdGQ6Om1heDx1aW50MzJfdD4oV1RG
Ojpyb3VuZFVwVG9Qb3dlck9mVHdvKGNhcGFjaXR5KSwgNFUpOwogICAgIG1fY2FwYWNpdHkgPSBj
YXBhY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRl
eCAxNzUzNzExZjRiYjY5MGJlM2E5MjMzYzBiMzIzMmE4MzE2OTIxMTJjLi42MzViNWMxMWY3ODg2
NWQ3NTY2YjhhMzg2M2U0Yjc4NzBjZWUyM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0yNTI3LDggKzI1MjcsOCBAQCBKU1ZhbHVlIEpTQmlnSW50
OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogbnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBWTSYg
dm0sIENoYQogCiAgICAgICAgIGlmICghaGVhcFJlc3VsdCkgewogICAgICAgICAgICAgaWYgKHAg
PT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRpZ2l0LnVuc2FmZUdldCgpIDw9
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgo
KSkpOwotICAgICAgICAgICAgICAgIGludDY0X3QgbWF5YmVSZXN1bHQgPSBkaWdpdC51bnNhZmVH
ZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGlnaXQgPD0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKSk7CisgICAgICAgICAgICAg
ICAgaW50NjRfdCBtYXliZVJlc3VsdCA9IGRpZ2l0OwogICAgICAgICAgICAgICAgIEFTU0VSVCht
YXliZVJlc3VsdCA+PSAwKTsKICAgICAgICAgICAgICAgICBpZiAoc2lnbiA9PSBQYXJzZUludFNp
Z246OlNpZ25lZCkKICAgICAgICAgICAgICAgICAgICAgbWF5YmVSZXN1bHQgKj0gLTE7CkBAIC0y
NTQ3LDkgKzI1NDcsOSBAQCBKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVj
dCogbnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBWTSYgdm0sIENoYQogICAgICAgICAgICAgaGVh
cFJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8
RGlnaXQ+KG11bHRpcGxpZXIudW5zYWZlR2V0KCkpKSA9PSBtdWx0aXBsaWVyLnVuc2FmZUdldCgp
KTsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxEaWdp
dD4oZGlnaXQudW5zYWZlR2V0KCkpKSA9PSBkaWdpdC51bnNhZmVHZXQoKSk7Ci0gICAgICAgIGhl
YXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGll
ci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdC51bnNhZmVHZXQoKSkpOwor
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PERpZ2l0Piht
dWx0aXBsaWVyLnZhbHVlKCkpKSA9PSBtdWx0aXBsaWVyLnZhbHVlKCkpOworICAgICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdC52YWx1ZSgp
KSkgPT0gZGlnaXQudmFsdWUoKSk7CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBs
eUFkZChzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci52YWx1ZSgpKSwgc3RhdGljX2Nhc3Q8
RGlnaXQ+KGRpZ2l0LnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBoZWFwUmVzdWx0LT5zZXRTaWdu
KHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKaW5kZXggOTA2NWMyNDAzNWJm
NTQ5YTRhYmFjMzc0ZTczMzUzZWE4NGYxNDYzYy4uOGU4M2M0YWQ1NjJjNGY0MmNiMjM2YjJlMTE0
MDlhNWM4YjYzODNlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNJbW11dGFibGVCdXR0ZXJmbHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIC8vIEJlY2F1c2Ugb2YgdGhlIGFib3Zl
IG1heGltdW1MZW5ndGggcmVxdWlyZW1lbnQsIGFsbG9jYXRpb25TaXplIGNhbiBuZXZlciBvdmVy
Zmxvdy4KLSAgICAgICAgdm9pZCogYnVmZmVyID0gdHJ5QWxsb2NhdGVDZWxsPEpTSW1tdXRhYmxl
QnV0dGVyZmx5Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpLnVuc2FmZUdldCgpKTsK
KyAgICAgICAgdm9pZCogYnVmZmVyID0gdHJ5QWxsb2NhdGVDZWxsPEpTSW1tdXRhYmxlQnV0dGVy
Zmx5Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKCFidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGJ1ZmZlcikgSlNJbW11dGFi
bGVCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDkwMTIzYTJl
OGU0MjlkNmJmYWJmOTY1ZTdlOGZhYjIzMjhlM2Y1OWQuLjhjZTI2YTc2NDhmOTlmZjZjYjVjOWZm
NDUxZjdhMDIyMTM2N2YzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtNzQsMTIgKzc0LDEyIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mVmFyaWFibGUoU2NvcGVPZmZzZXQgb2Zmc2V0KQog
ICAgIHsKICAgICAgICAgQ2hlY2tlZDxzaXplX3Q+IHNjb3BlT2Zmc2V0ID0gb2Zmc2V0Lm9mZnNl
dCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldE9mVmFyaWFibGVzKCkgKyBzY29wZU9mZnNldCAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0
dXJuIChvZmZzZXRPZlZhcmlhYmxlcygpICsgc2NvcGVPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KSkudmFsdWUoKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplRm9yU2NvcGVTaXplKENoZWNrZWQ8c2l6ZV90PiBzY29wZVNpemUpCiAgICAgewot
ICAgICAgICByZXR1cm4gKG9mZnNldE9mVmFyaWFibGVzKCkgKyBzY29wZVNpemUgKiBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KSkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAob2Zm
c2V0T2ZWYXJpYWJsZXMoKSArIHNjb3BlU2l6ZSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93
bj4pKS52YWx1ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKaW5kZXggNmMwMjI5MDU1ZTgzNzI2M2U0MGQ1MGExZDkxNjA2NWRkNGI4ODliNi4u
YjdiMWU1ODA3YjQ3MGE0NGU5ZWYzMzQ0Y2RlOTk2OGI1NWExMWI4OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xMTg2LDcgKzExODYsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxp
bmVDYXBhY2l0eSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc2l6ZW9mKEpTT2JqZWN0KSArIGlu
bGluZUNhcGFjaXR5ICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKS51bnNhZmVH
ZXQoKTsKKyAgICAgICAgcmV0dXJuIChzaXplb2YoSlNPYmplY3QpICsgaW5saW5lQ2FwYWNpdHkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikpLnZhbHVlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIGlubGluZSBjb25zdCBUeXBlSW5mbyB0eXBlSW5mbygpIHsgcmV0dXJuIFR5cGVJ
bmZvKEZpbmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cAppbmRleCA4YTViNjljNWU5NWQwMmZlNGE1YmFjN2JlY2U4NzExN2VmYTRkODc0Li4yZjNiZjdl
YjUxNGI3NDU5MDE2Y2VhZDc3NjU4NjQzNGM3ZDYxZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6c19pbmZvID0geyAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIiwKIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgaW5kZXhlZExlbmd0aCwgdWludDMyX3QgbnVtYmVy
U3RydWN0dXJlUHJvcGVydGllcywgUHJvcGVydHlOYW1lQXJyYXkmJiBwcm9wZXJ0eU5hbWVzKQog
ewogICAgIHVuc2lnbmVkIHByb3BlcnR5TmFtZXNTaXplID0gcHJvcGVydHlOYW1lcy5zaXplKCk7
Ci0gICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzID0gKENoZWNrZWQ8
dW5zaWduZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJp
bmc+KSkudW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJ
bkJ5dGVzID0gKENoZWNrZWQ8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVvZihX
cml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkudmFsdWUoKTsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJp
bmc+KiBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gbnVsbHB0cjsKICAgICBpZiAocHJvcGVydHlOYW1l
c0J1ZmZlclNpemVJbkJ5dGVzKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0
aWNfY2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUlu
Qnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA2NjkyZjA1NWIzZjhhZTA1MTcy
ZDhjODhjNDk5MjFmOWE0ZWYxNzJlLi5lNDgyMDE4N2MwMmQ2MTEzMGQzYWE1MTE0OWJmZTMwZTU4
YTZlNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTM5
NSw5ICszOTUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VtLnVuc2FmZUdldCgpKSA8PSBNYXhM
ZW5ndGgpOworICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdW0pIDw9
IE1heExlbmd0aCk7CiAgICAgICAgICAgICBtX3N0cmluZ3MuYXBwZW5kKGpzU3RyaW5nKTsKLSAg
ICAgICAgICAgIG1fbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1bS51bnNhZmVHZXQo
KSk7CisgICAgICAgICAgICBtX2xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdW0pOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKaW5kZXggNTgzZTllMzZmMzAy
MTJmYjAxNTY1YjgwMWE4MWUzMWJlYTkyN2NhNi4uMjMwZjMwZDRjODgwMDgzNjI5NmJkMmNiYzFi
MmI0NGM1YTI2Y2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZWRBcmd1bWVudHMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFNjb3BlZEFyZ3VtZW50cyogU2Nv
cGVkQXJndW1lbnRzOjpjcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzdG9yYWdlID0gbnVsbHB0cjsKICAgICBp
ZiAodG90YWxMZW5ndGggPiB0YWJsZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgQ2hlY2tlZDx1bnNp
Z25lZD4gb3ZlcmZsb3dMZW5ndGggPSB0b3RhbExlbmd0aCAtIHRhYmxlLT5sZW5ndGgoKTsKLSAg
ICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgKG92ZXJm
bG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLnVuc2FmZUdldCgpLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgICAgICBzdG9yYWdl
ID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCAob3ZlcmZsb3dMZW5ndGggKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkudmFsdWUoKSwgbnVsbHB0ciwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVudHMqIHJl
c3VsdCA9IG5ldyAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcAppbmRleCBmNWZiNzg1ZGJhMWY0ZDM1YjQzYmIyNzZkMTI0MWIxYjUwMTk4
OWFlLi5jNzRmMTg4ZjAzNGNhZTg0NzE0NmYyMjUxY2MzOWUyM2IzOTY4OTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTMx
Miw3ICszMTIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJz
dHJpbmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2hlY2tlZDxpbnQsIEFz
c2VydE5vT3ZlcmZsb3c+IHRvdGFsTGVuZ3RoID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IHJhbmdlQ291bnQ7IGkrKykKICAgICAgICAgdG90YWxMZW5ndGggKz0gc3Vic3RyaW5nUmFuZ2Vz
W2ldLmxlbmd0aDsKLSAgICBBU1NFUlQodG90YWxMZW5ndGggPD0gU3RyaW5nOjpNYXhMZW5ndGgp
OworICAgIEFTU0VSVCh0b3RhbExlbmd0aCA8PSBzdGF0aWNfY2FzdDxpbnQ+KFN0cmluZzo6TWF4
TGVuZ3RoKSk7CiAKICAgICBpZiAoIXRvdGFsTGVuZ3RoKQogICAgICAgICByZXR1cm4ganNFbXB0
eVN0cmluZyh2bSk7CkBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNT
dHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5ncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpIHsKICAgICAgICAgTENoYXIqIGJ1ZmZlcjsKICAgICAg
ICAgY29uc3QgTENoYXIqIHNvdXJjZURhdGEgPSBzb3VyY2UuY2hhcmFjdGVyczgoKTsKLSAgICAg
ICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExl
bmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKKyAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1w
bDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aC52YWx1ZSgpLCBidWZmZXIpOwog
ICAgICAgICBpZiAoIWltcGwpIHsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzI5
LDcgKzMyOSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0
cmluZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgQ2hlY2tlZDxpbnQs
IEFzc2VydE5vT3ZlcmZsb3c+IGJ1ZmZlclBvcyA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1
YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MudW5zYWZlR2V0KCksIHNvdXJjZURhdGEg
KyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAg
U3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNv
dXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAg
ICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMzQwLDcgKzM0MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGlj
ZVN1YnN0cmluZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBVQ2hhciogYnVm
ZmVyOwogICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VEYXRhID0gc291cmNlLmNoYXJhY3RlcnMxNigp
OwogCi0gICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0
b3RhbExlbmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKKyAgICBhdXRvIGltcGwgPSBTdHJpbmdJ
bXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnZhbHVlKCksIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNDksNyArMzQ5LDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5ncyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENoZWNrZWQ8aW50LCBBc3NlcnROb092ZXJm
bG93PiBidWZmZXJQb3MgPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsg
aSsrKSB7CiAgICAgICAgIGlmIChpbnQgc3JjTGVuID0gc3Vic3RyaW5nUmFuZ2VzW2ldLmxlbmd0
aCkgewotICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLnVuc2FmZUdldCgpLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0
aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVm
ZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0u
cG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3JjTGVuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMzk5LDcgKzM5OSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
U3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhKU0dsb2JhbE9iamVjdCoK
ICAgICAgICAgTENoYXIqIGJ1ZmZlcjsKICAgICAgICAgY29uc3QgTENoYXIqIHNvdXJjZURhdGEg
PSBzb3VyY2UuY2hhcmFjdGVyczgoKTsKIAotICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBs
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnVuc2FmZUdldCgpLCBidWZmZXIp
OworICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHRvdGFsTGVuZ3RoLnZhbHVlKCksIGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkgewogICAg
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00MTAsMTMgKzQxMCwxMyBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoSlNH
bG9iYWxPYmplY3QqCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4Q291bnQ7IGkrKykg
ewogICAgICAgICAgICAgaWYgKGkgPCByYW5nZUNvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYg
KGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy51bnNh
ZmVHZXQoKSwgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVu
KTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVy
ICsgYnVmZmVyUG9zLnZhbHVlKCksIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9z
aXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBzcmNMZW47
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGkgPCBz
ZXBhcmF0b3JDb3VudCkgewogICAgICAgICAgICAgICAgIGlmIChpbnQgc2VwTGVuID0gc2VwYXJh
dG9yc1tpXS5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MudW5zYWZlR2V0KCksIHNlcGFyYXRvcnNbaV0u
Y2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNlcGFyYXRvcnNbaV0u
Y2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9
IHNlcExlbjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00MjYsNyArNDI2
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5nc1dp
dGhTZXBhcmF0b3JzKEpTR2xvYmFsT2JqZWN0KgogICAgIH0KIAogICAgIFVDaGFyKiBidWZmZXI7
Ci0gICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3Rh
bExlbmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKKyAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBs
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnZhbHVlKCksIGJ1ZmZlcik7CiAg
ICAgaWYgKCFpbXBsKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00MzgsMTggKzQzOCwxOCBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNl
cGFyYXRvcnMoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIGlmIChpIDwgcmFuZ2VDb3VudCkgewog
ICAgICAgICAgICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnVuc2FmZUdl
dCgpLCBzb3VyY2UuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwg
c3JjTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMo
YnVmZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNvdXJjZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3Ry
aW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLnVuc2FmZUdldCgpLCBzb3VyY2UuY2hhcmFjdGVyczE2KCkgKyBzdWJzdHJpbmdSYW5n
ZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzb3VyY2UuY2hhcmFj
dGVyczE2KCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAg
ICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICBpZiAoaW50IHNl
cExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2Vw
YXJhdG9yc1tpXS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29w
eUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnVuc2FmZUdldCgpLCBzZXBhcmF0b3JzW2ld
LmNoYXJhY3RlcnM4KCksIHNlcExlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzZXBhcmF0b3JzW2ld
LmNoYXJhY3RlcnM4KCksIHNlcExlbik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3Mu
dW5zYWZlR2V0KCksIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczE2KCksIHNlcExlbik7CisgICAg
ICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZl
clBvcy52YWx1ZSgpLCBzZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnMxNigpLCBzZXBMZW4pOwogICAg
ICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBzZXBMZW47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cAppbmRleCBkY2VjYTU2YTRkZGFkZDRlZDY3MjhkYmNmOTg4ZTZhYmMwMTI3NzFjLi40ODViNDBk
MmZhOWY0MDM3MjM4M2M3YWI1N2JjMzk3OTA2MjQ5OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFN0
cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqIGhl
YWQpCiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQg
PSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoY3VycmVudCkp
CiAgICAgICAgICsrc2l6ZTsKICAgICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxwdHIuCi0gICAg
c2l6ZV90IGJ5dGVzID0gKENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJ
RCkpLnVuc2FmZUdldCgpOworICAgIHNpemVfdCBieXRlcyA9IChDaGVja2VkPHNpemVfdD4oc2l6
ZSkgKiBzaXplb2YoU3RydWN0dXJlSUQpKS52YWx1ZSgpOwogICAgIFN0cnVjdHVyZUlEKiB2ZWN0
b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZlY3RvciwgMCwgYnl0ZXMpOwogICAg
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVj
dHVyZUNoYWluPih2bS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4odm0sIHZtLnN0cnVjdHVyZUNoYWlu
U3RydWN0dXJlLmdldCgpLCB2ZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggOThhNzVjNmY4YjhkYjI3OWQwMjZmMzJlYmYzYmJjYzU0MWJhYjBmOS4uMTNjOGMxNzA0M2Fj
Nzk1MTAyM2YzZGNlZmIxZjgwZTI2YzNiMGM5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0yNTksNyArMjU5LDcgQEAgc3RydWN0IFNjcmF0Y2hCdWZmZXIgewogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
Q2hlY2tlZDxzaXplX3Q+IGJ1ZmZlclNpemUpIHsgcmV0dXJuIChzaXplb2YoU2NyYXRjaEJ1ZmZl
cikgKyBidWZmZXJTaXplKS51bnNhZmVHZXQoKTsgfQorICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGJ1ZmZlclNpemUpIHsgcmV0dXJuIChzaXplb2YoU2Ny
YXRjaEJ1ZmZlcikgKyBidWZmZXJTaXplKS52YWx1ZSgpOyB9CiAgICAgdm9pZCBzZXRBY3RpdmVM
ZW5ndGgoc2l6ZV90IGFjdGl2ZUxlbmd0aCkgeyB1Lm1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVu
Z3RoOyB9CiAgICAgc2l6ZV90IGFjdGl2ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHUubV9hY3Rp
dmVMZW5ndGg7IH07CiAgICAgc2l6ZV90KiBhZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSB7IHJldHVy
biAmdS5tX2FjdGl2ZUxlbmd0aDsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwSW1wbC5oCmluZGV4IDZiYmEyY2Q0NmIxZDU4NjRlYjE5MzE2YmNjYWM4NzBkMTgxMmI0
MDUuLmU5NWM4NzY0ZWY0ZTQ5NGM0ZDAxNmU4ZGNkYjc1YTkwNTRhMTJlYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuaApAQCAtMTYwLDcgKzE2MCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXpl
X3Q+IGNhcGFjaXR5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIChjYXBhY2l0eSAqIHNpemVvZihC
dWNrZXRUeXBlKSkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAoY2FwYWNpdHkgKiBzaXpl
b2YoQnVja2V0VHlwZSkpLnZhbHVlKCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBCdWNr
ZXRUeXBlKiBidWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggZjRhNmRhOTY5MjU1MDliZjE1NzkzYzI0NTIz
NWY1MzM5ZmQ5ODIyNi4uZjFhN2QxZmQ4ZGNiNjRkOTc3ZGI3YTczNGY5MTJjMWExMTBlZTMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwCkBAIC04NTAsMTEgKzg1MCwxMSBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3Io
Y29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGVsaWRlIHN0YWNrIGNoZWNrcyBpbiB0aGUg
V2FzbSAtPiBFbWJlZGRlciBjYWxsIElDIHN0dWIuIFNpbmNlIHRoZXNlIHdpbGwKICAgICAgICAg
ICAgICAgICAvLyBzcGlsbCBhbGwgYXJndW1lbnRzIHRvIHRoZSBzdGFjaywgd2UgZW5zdXJlIHRo
YXQgYSBzdGFjayBjaGVjayBoZXJlIGNvdmVycyB0aGUKICAgICAgICAgICAgICAgICAvLyBzdGFj
ayB0aGF0IHN1Y2ggYSBzdHViIHdvdWxkIHVzZS4KLSAgICAgICAgICAgICAgICAoQ2hlY2tlZDx1
aW50MzJfdD4obV9tYXhOdW1KU0NhbGxBcmd1bWVudHMpICogc2l6ZW9mKFJlZ2lzdGVyKSArIGpz
Q2FsbGluZ0NvbnZlbnRpb24oKS5oZWFkZXJTaXplSW5CeXRlcykudW5zYWZlR2V0KCkKKyAgICAg
ICAgICAgICAgICAoQ2hlY2tlZDx1aW50MzJfdD4obV9tYXhOdW1KU0NhbGxBcmd1bWVudHMpICog
c2l6ZW9mKFJlZ2lzdGVyKSArIGpzQ2FsbGluZ0NvbnZlbnRpb24oKS5oZWFkZXJTaXplSW5CeXRl
cykudmFsdWUoKQogICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBjb25zdCBpbnQzMl90IGNo
ZWNrU2l6ZSA9IG1fbWFrZXNDYWxscyA/ICh3YXNtRnJhbWVTaXplICsgZXh0cmFGcmFtZVNpemUp
LnVuc2FmZUdldCgpIDogd2FzbUZyYW1lU2l6ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIGNv
bnN0IGludDMyX3QgY2hlY2tTaXplID0gbV9tYWtlc0NhbGxzID8gKHdhc21GcmFtZVNpemUgKyBl
eHRyYUZyYW1lU2l6ZSkudmFsdWUoKSA6IHdhc21GcmFtZVNpemUudmFsdWUoKTsKICAgICAgICAg
ICAgIGJvb2wgbmVlZFVuZGVyZmxvd0NoZWNrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoZWNr
U2l6ZSkgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCk7Ci0gICAgICAgICAgICBib29sIG5l
ZWRzT3ZlcmZsb3dDaGVjayA9IG1fbWFrZXNDYWxscyB8fCB3YXNtRnJhbWVTaXplID49IG1pbmlt
dW1QYXJlbnRDaGVja1NpemUgfHwgbmVlZFVuZGVyZmxvd0NoZWNrOworICAgICAgICAgICAgYm9v
bCBuZWVkc092ZXJmbG93Q2hlY2sgPSBtX21ha2VzQ2FsbHMgfHwgd2FzbUZyYW1lU2l6ZSA+PSBz
dGF0aWNfY2FzdDxpbnQzMl90PihtaW5pbXVtUGFyZW50Q2hlY2tTaXplKSB8fCBuZWVkVW5kZXJm
bG93Q2hlY2s7CiAKICAgICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIGxlYWYgZnVuY3Rpb25zIHRv
IG5vdCBkbyBzdGFjayBjaGVja3MgaWYgdGhlaXIgZnJhbWUgc2l6ZSBpcyB3aXRoaW4KICAgICAg
ICAgICAgIC8vIGNlcnRhaW4gbGltaXRzIHNpbmNlIHRoZWlyIGNhbGxlciB3b3VsZCBoYXZlIGFs
cmVhZHkgZG9uZSB0aGUgY2hlY2suCkBAIC0zMTU1LDcgKzMxNTUsNyBAQCBCMzo6UGF0Y2hwb2lu
dFZhbHVlKiBBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJs
b2NrLCBjb25zdAogICAgIENoZWNrZWQ8c2l6ZV90PiBuZXdTaXplID0gY2hlY2tlZFN1bTxzaXpl
X3Q+KHBhdGNoQXJncy5zaXplKCksIGFyZ3Muc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
bmV3U2l6ZS5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgcGF0Y2hBcmdzLmdyb3cobmV3U2l6ZS51
bnNhZmVHZXQoKSk7CisgICAgcGF0Y2hBcmdzLmdyb3cobmV3U2l6ZSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCiAgICAgICAgIHBhdGNoQXJnc1tpICsg
b2Zmc2V0XSA9IENvbnN0cmFpbmVkVG1wKGFyZ3NbaV0sIGxvY2F0aW9ucy5wYXJhbXNbaV0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
aW5kZXggMTA2Y2E1ZmQ1NWQ2ZGJkMmEzYWYxODM4NDVjYTRhNzk4NzdiZDZjMi4uYmVjMDBkZTFm
MzdiODJiOTM2ODE2MzY4MzkzM2UwNzhmMWQ1NTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtNTIxLDExICs1MjEsMTEgQEAg
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5m
bywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgICAgICAgICAvLyBUaGlzIGFsbG93cyB1
cyB0byBlbGlkZSBzdGFjayBjaGVja3MgaW4gdGhlIFdhc20gLT4gRW1iZWRkZXIgY2FsbCBJQyBz
dHViLiBTaW5jZSB0aGVzZSB3aWxsCiAgICAgICAgICAgICAgICAgLy8gc3BpbGwgYWxsIGFyZ3Vt
ZW50cyB0byB0aGUgc3RhY2ssIHdlIGVuc3VyZSB0aGF0IGEgc3RhY2sgY2hlY2sgaGVyZSBjb3Zl
cnMgdGhlCiAgICAgICAgICAgICAgICAgLy8gc3RhY2sgdGhhdCBzdWNoIGEgc3R1YiB3b3VsZCB1
c2UuCi0gICAgICAgICAgICAgICAgKENoZWNrZWQ8dWludDMyX3Q+KG1fbWF4TnVtSlNDYWxsQXJn
dW1lbnRzKSAqIHNpemVvZihSZWdpc3RlcikgKyBKU0NhbGxpbmdDb252ZW50aW9uOjpoZWFkZXJT
aXplSW5CeXRlcykudW5zYWZlR2V0KCkKKyAgICAgICAgICAgICAgICAoQ2hlY2tlZDx1aW50MzJf
dD4obV9tYXhOdW1KU0NhbGxBcmd1bWVudHMpICogc2l6ZW9mKFJlZ2lzdGVyKSArIEpTQ2FsbGlu
Z0NvbnZlbnRpb246OmhlYWRlclNpemVJbkJ5dGVzKS52YWx1ZSgpCiAgICAgICAgICAgICApKTsK
LSAgICAgICAgICAgIGNvbnN0IGludDMyX3QgY2hlY2tTaXplID0gbV9tYWtlc0NhbGxzID8gKHdh
c21GcmFtZVNpemUgKyBleHRyYUZyYW1lU2l6ZSkudW5zYWZlR2V0KCkgOiB3YXNtRnJhbWVTaXpl
LnVuc2FmZUdldCgpOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCBjaGVja1NpemUgPSBtX21h
a2VzQ2FsbHMgPyAod2FzbUZyYW1lU2l6ZSArIGV4dHJhRnJhbWVTaXplKS52YWx1ZSgpIDogd2Fz
bUZyYW1lU2l6ZS52YWx1ZSgpOwogICAgICAgICAgICAgYm9vbCBuZWVkVW5kZXJmbG93Q2hlY2sg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hlY2tTaXplKSA+IE9wdGlvbnM6OnJlc2VydmVkWm9u
ZVNpemUoKTsKLSAgICAgICAgICAgIGJvb2wgbmVlZHNPdmVyZmxvd0NoZWNrID0gbV9tYWtlc0Nh
bGxzIHx8IHdhc21GcmFtZVNpemUgPj0gbWluaW11bVBhcmVudENoZWNrU2l6ZSB8fCBuZWVkVW5k
ZXJmbG93Q2hlY2s7CisgICAgICAgICAgICBib29sIG5lZWRzT3ZlcmZsb3dDaGVjayA9IG1fbWFr
ZXNDYWxscyB8fCB3YXNtRnJhbWVTaXplID49IHN0YXRpY19jYXN0PGludDMyX3Q+KG1pbmltdW1Q
YXJlbnRDaGVja1NpemUpIHx8IG5lZWRVbmRlcmZsb3dDaGVjazsKIAogICAgICAgICAgICAgR1BS
UmVnIGNvbnRleHRJbnN0YW5jZSA9IENvbnRleHQ6OnVzZUZhc3RUTFMoKSA/IHBhcmFtc1swXS5n
cHIoKSA6IG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKaW5kZXggODU3NTQ1NzMwY2NjMzBkNjM0ZjM0YjRjMmI0
YzlhNjQxMGI5ZGI3Yy4uZTUyYjAwNGRjYmM3NzExMWIwOGQ0NTRjMWNkYWViMmQ0M2YwNzVhYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiBuYW1lc3BhY2Ugewog
c2l6ZV90IGdsb2JhbE1lbW9yeUJ5dGVTaXplKE1vZHVsZSYgbW9kdWxlKQogewotICAgIHJldHVy
biAoQ2hlY2tlZDxzaXplX3Q+KG1vZHVsZS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHMuc2l6
ZSgpKSAqIHNpemVvZihSZWdpc3RlcikpLnVuc2FmZUdldCgpOworICAgIHJldHVybiAoQ2hlY2tl
ZDxzaXplX3Q+KG1vZHVsZS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHMuc2l6ZSgpKSAqIHNp
emVvZihSZWdpc3RlcikpLnZhbHVlKCk7CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUluc3RhbmNlLmgKaW5kZXggN2VjYzE0YTMzYjMzNmMxYzA2N2UyYTNiOThlMWJjY2Mz
NzAyMzNkOC4uZWY0MzA2NDk5YjMyZjEwZDZmNzM3ZmY5YjI0YjI0NmViNTk5MTZmMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tl
ZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucywgQ2hlY2tlZDxzaXplX3Q+IG51bVRhYmxlcykK
ICAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVu
Y3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSopICogbnVtVGFi
bGVzKS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIChvZmZzZXRPZlRhaWwoKSArIHNpemVv
ZihJbXBvcnRGdW5jdGlvbkluZm8pICogbnVtSW1wb3J0RnVuY3Rpb25zICsgc2l6ZW9mKFRhYmxl
KikgKiBudW1UYWJsZXMpLnZhbHVlKCk7CiAgICAgfQogICAgIHZvaWQqIG1fb3duZXIgeyBudWxs
cHRyIH07IC8vIEluIGEgSlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKi4KICAgICBDb250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCBkNWY1MDdj
ZGE2MzM1YTYxNmEwOGM4ZWZlMjFlZDczMzQxZDQyZWIzLi5lOTk0NzQzMDk0MmI4NmQxMGY3ZTU2
ZWYzODE1ZDQyYTQwNGM1Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAg
RXhwcmVzc2lvblR5cGUgcHVzaChOb0NvbnNpc3RlbmN5Q2hlY2tUYWcpCiAgICAgewogICAgICAg
ICBtX21heFN0YWNrU2l6ZSA9IHN0ZDo6bWF4KG1fbWF4U3RhY2tTaXplLCArK21fc3RhY2tTaXpl
KTsKLSAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKChtX3N0YWNrU2l6ZSAt
IDEpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KChtX3N0YWNrU2l6ZSAtIDEpLnZhbHVlKCkpOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25UeXBl
IHB1c2goKQpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzdGFy
dE9mZnNldCA9IHRhcmdldC5zdGFja1NpemUoKSArIDE7CiAgICAgICAgIGtlZXAgPSB0YXJnZXQu
YnJhbmNoVGFyZ2V0QXJpdHkoKTsKLSAgICAgICAgZHJvcCA9IChtX3N0YWNrU2l6ZSAtIHRhcmdl
dC5zdGFja1NpemUoKSAtIHRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpKS51bnNhZmVHZXQoKTsK
KyAgICAgICAgZHJvcCA9IChtX3N0YWNrU2l6ZSAtIHRhcmdldC5zdGFja1NpemUoKSAtIHRhcmdl
dC5icmFuY2hUYXJnZXRBcml0eSgpKS52YWx1ZSgpOwogICAgIH0KIAogICAgIHZvaWQgZHJvcEtl
ZXAoU3RhY2smIHZhbHVlcywgY29uc3QgQ29udHJvbFR5cGUmIHRhcmdldCwgYm9vbCBkcm9wVmFs
dWVzKQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4KICAgICB2b2lkIHdhbGtFeHByZXNzaW9uU3RhY2soU3RhY2smIGV4cHJlc3Npb25T
dGFjaywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNz
aW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgZnVuY3Rv
cik7CisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBtX3N0YWNr
U2l6ZS52YWx1ZSgpLCBmdW5jdG9yKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgpAQCAtNDgzLDcgKzQ4Myw3IEBAIExMSW50R2VuZXJhdG9yOjpMTEludEdlbmVyYXRv
cihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgdW5zaWduZWQgZnVuY3Rpb25JCiBzdGQ6
OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db2RlQmxvY2s+IExMSW50R2VuZXJhdG9yOjpmaW5hbGl6ZSgp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb2RlQmxvY2spOwotICAgIHNpemVfdCBudW1DYWxs
ZWVMb2NhbHMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSwgbV9tYXhTdGFja1NpemUudW5zYWZlR2V0KCkpOworICAgIHNpemVfdCBudW1DYWxsZWVM
b2NhbHMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgbV9tYXhTdGFja1NpemUudmFsdWUoKSk7CiAgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxzOwogICAgIFJFTEVBU0VfQVNTRVJUKG51bUNhbGxlZUxv
Y2FscyA9PSBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogCkBAIC01NzQsNyArNTc0
LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAvLyBGSVhNRTogd2UgYXJlIGFsbG9j
YXRpbmcgdGhlIGV4dHJhIHNwYWNlIGZvciB0aGUgYXJndW1lbnQvcmV0dXJuIGNvdW50IGluIG9y
ZGVyIHRvIGF2b2lkIGludGVyZmVyZW5jZSwgYnV0IHdlIGNvdWxkIGRvIGJldHRlcgogICAgIC8v
IE5PVEU6IFdlIGluY3JlYXNlIGFyZyBjb3VudCBieSAxIGZvciB0aGUgY2FzZSBvZiBpbmRpcmVj
dCBjYWxscwogICAgIG1fc3RhY2tTaXplICs9IHN0ZDo6bWF4KHNpZ25hdHVyZS5hcmd1bWVudENv
dW50KCkgKyAxLCBzaWduYXR1cmUucmV0dXJuQ291bnQoKSkgKyBncHJDb3VudCArIGZwckNvdW50
ICsgc3RhY2tDb3VudCArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotICAgIGlm
IChtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSAlIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpCisg
ICAgaWYgKG1fc3RhY2tTaXplLnZhbHVlKCkgJSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQog
ICAgICAgICArK21fc3RhY2tTaXplOwogICAgIGlmIChtX21heFN0YWNrU2l6ZSA8IG1fc3RhY2tT
aXplKQogICAgICAgICBtX21heFN0YWNrU2l6ZSA9IG1fc3RhY2tTaXplOwpAQCAtNTgzLDcgKzU4
Myw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgUmVzdWx0TGlzdCBhcmd1bWVudHMo
c2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSk7CiAgICAgUmVzdWx0TGlzdCB0ZW1wb3JhcnlSZXN1
bHRzKHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpKTsKIAotICAgIGNvbnN0IHVuc2lnbmVkIHN0YWNr
T2Zmc2V0ID0gbV9zdGFja1NpemUudW5zYWZlR2V0KCk7CisgICAgY29uc3QgdW5zaWduZWQgc3Rh
Y2tPZmZzZXQgPSBtX3N0YWNrU2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBiYXNlID0gc3RhY2tP
ZmZzZXQgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKIAogICAgIGNvbnN0IHVp
bnQzMl90IGdwckxpbWl0ID0gYmFzZSAtIHN0YWNrQ291bnQgLSBncHJDb3VudDsKQEAgLTg3Niw3
ICs4NzYsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRMb29wKEJsb2NrU2lnbmF0dXJlIHNp
Z25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBDbwogICAgIFJlZjxMYWJlbD4gYm9keSA9
IG5ld0VtaXR0ZWRMYWJlbCgpOwogICAgIFJlZjxMYWJlbD4gY29udGludWF0aW9uID0gbmV3TGFi
ZWwoKTsKIAotICAgIGJsb2NrID0gQ29udHJvbFR5cGU6Omxvb3Aoc2lnbmF0dXJlLCBtX3N0YWNr
U2l6ZS51bnNhZmVHZXQoKSwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShjb250aW51YXRpb24pKTsK
KyAgICBibG9jayA9IENvbnRyb2xUeXBlOjpsb29wKHNpZ25hdHVyZSwgbV9zdGFja1NpemUsIFdU
Rk1vdmUoYm9keSksIFdURk1vdmUoY29udGludWF0aW9uKSk7CiAKICAgICBWZWN0b3I8VmlydHVh
bFJlZ2lzdGVyPiBvc3JFbnRyeURhdGE7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1f
Y29kZUJsb2NrLT5tX251bUFyZ3VtZW50czsgaSsrKQpAQCAtOTA0LDEzICs5MDQsMTMgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNr
JiBlbmNsb3NpbmdTdGFjaywgQ28KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVG9wTGV2ZWwo
QmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKSAtPiBDb250cm9sVHlwZQogewotICAgIHJldHVybiBD
b250cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwg
bmV3TGFiZWwoKSk7CisgICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZlbChzaWduYXR1cmUs
IG1fc3RhY2tTaXplLCBuZXdMYWJlbCgpKTsKIH0KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRk
QmxvY2soQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENv
bnRyb2xUeXBlJiBuZXdCbG9jaywgU3RhY2smIG5ld1N0YWNrKSAtPiBQYXJ0aWFsUmVzdWx0CiB7
CiAgICAgc3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7Ci0g
ICAgbmV3QmxvY2sgPSBDb250cm9sVHlwZTo6YmxvY2soc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51
bnNhZmVHZXQoKSwgbmV3TGFiZWwoKSk7CisgICAgbmV3QmxvY2sgPSBDb250cm9sVHlwZTo6Ymxv
Y2soc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7CiAgICAgcmV0dXJuIHsgfTsK
IH0KIApAQCAtOTIzLDcgKzkyMyw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZElmKEV4cHJl
c3Npb25UeXBlIGNvbmRpdGlvbiwgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTCiAKICAgICBX
YXNtSmZhbHNlOjplbWl0KHRoaXMsIGNvbmRpdGlvbiwgYWx0ZXJuYXRlLT5iaW5kKHRoaXMpKTsK
IAotICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51
bnNhZmVHZXQoKSwgV1RGTW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwor
ICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RG
TW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIHJldHVybiB7IH07
CiB9CiAKQEAgLTk0MSw3ICs5NDEsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlVG9V
bnJlYWNoYWJsZShDb250cm9sVHlwZSYgZGF0YSkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgQ29u
dHJvbElmJiBjb250cm9sID0gV1RGOjpnZXQ8Q29udHJvbElmPihkYXRhKTsKICAgICBlbWl0TGFi
ZWwoY29udHJvbC5tX2FsdGVybmF0ZS5nZXQoKSk7Ci0gICAgZGF0YSA9IENvbnRyb2xUeXBlOjpi
bG9jayhkYXRhLm1fc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgV1RGTW92ZShk
YXRhLm1fY29udGludWF0aW9uKSk7CisgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpibG9jayhkYXRh
Lm1fc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShkYXRhLm1fY29udGludWF0aW9uKSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZS5oCmluZGV4IGYwZGVhYmIwOTRmNzRiMWI1NzA4MDI3MjVmNDIzZDVkMTk2NDU4YjQu
LjFmN2QwMWM2ZDM2N2RhMzU1NWNhOTM4MjI3ODhiOTY2MjdlMmU0MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3Mg
U2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNpZ25hdHVyZT4gewogICAg
IFR5cGUqIHN0b3JhZ2UoU2lnbmF0dXJlQXJnQ291bnQgaSkgY29uc3QgeyByZXR1cm4gY29uc3Rf
Y2FzdDxTaWduYXR1cmUqPih0aGlzKS0+c3RvcmFnZShpKTsgfQogICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGVkU2l6ZShDaGVja2VkPFNpZ25hdHVyZUFyZ0NvdW50PiByZXRDb3VudCwgQ2hlY2tl
ZDxTaWduYXR1cmVBcmdDb3VudD4gYXJnQ291bnQpCiAgICAgewotICAgICAgICByZXR1cm4gKHNp
emVvZihTaWduYXR1cmUpICsgKHJldENvdW50ICsgYXJnQ291bnQpICogc2l6ZW9mKFR5cGUpKS51
bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIChzaXplb2YoU2lnbmF0dXJlKSArIChyZXRDb3Vu
dCArIGFyZ0NvdW50KSAqIHNpemVvZihUeXBlKSkudmFsdWUoKTsKICAgICB9CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5j
cHAKaW5kZXggODhjNjI3YzE2MGM2OWI2YTc1OGM3MmNkMzExOTg3ZTU0ODE1ZjE5MC4uMmY2MDQw
YWRmZDU3NTBmNzNkODZiMWE3NmI1NzgzYjg2NGQ1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKQEAgLTI1Niw3ICsyNTYs
NyBAQCBhdXRvIFN0cmVhbWluZ1BhcnNlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogYnl0ZXMs
IHNpemVfdCBieXRlc1NpemUsIElzRW5kT2ZTdAogICAgICAgICByZXR1cm4gbV9zdGF0ZTsKIAog
ICAgIG1fdG90YWxTaXplICs9IGJ5dGVzU2l6ZTsKLSAgICBpZiAoVU5MSUtFTFkobV90b3RhbFNp
emUuaGFzT3ZlcmZsb3dlZCgpIHx8IG1fdG90YWxTaXplLnVuc2FmZUdldCgpID4gbWF4TW9kdWxl
U2l6ZSkpIHsKKyAgICBpZiAoVU5MSUtFTFkobV90b3RhbFNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8
IG1fdG90YWxTaXplID4gbWF4TW9kdWxlU2l6ZSkpIHsKICAgICAgICAgbV9zdGF0ZSA9IGZhaWwo
Im1vZHVsZSBzaXplIGlzIHRvbyBsYXJnZSwgbWF4aW11bSAiLCBtYXhNb2R1bGVTaXplKTsKICAg
ICAgICAgcmV0dXJuIG1fc3RhdGU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21UYWJsZS5jcHAKaW5kZXggOGE1NDc2MTg1NGNjNjFlNWRlZThiMGY0MDMyNGYyODM0OTU0MWMy
MS4uNzE3ZjA5MjM2ODk2MTU4OTY1YzM1M2ViMTQzZTc4ZGRjZGUyNGMzZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFRhYmxlOjpU
YWJsZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBU
YWJsZUVsZW1lbnRUeXBlCiAgICAgLy8gRklYTUU6IEl0IG1pZ2h0IGJlIHdvcnRoIHRyeWluZyB0
byBwcmUtYWxsb2NhdGUgbWF4aW11bSBoZXJlLiBUaGUgc3BlYyByZWNvbW1lbmRzIGRvaW5nIHNv
LgogICAgIC8vIEJ1dCBmb3Igbm93LCB3ZSdyZSBub3QgZG9pbmcgdGhhdC4KICAgICAvLyBGSVhN
RSB0aGlzIG92ZXItYWxsb2NhdGVzIGFuZCBjb3VsZCBiZSBzbWFydGVyIGFib3V0IG5vdCBjb21t
aXR0aW5nIGFsbCBvZiB0aGF0IG1lbW9yeSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgxNDI1Ci0gICAgbV9qc1ZhbHVlcyA9IE1hbGxvY1B0cjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4sIFZNTWFsbG9jPjo6bWFsbG9jKChzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSAqIENoZWNrZWQ8c2l6ZV90PihhbGxvY2F0ZWRMZW5ndGgobV9sZW5ndGgpKSkudW5zYWZlR2V0
KCkpOworICAgIG1fanNWYWx1ZXMgPSBNYWxsb2NQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+LCBW
TU1hbGxvYz46Om1hbGxvYygoc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBDaGVja2Vk
PHNpemVfdD4oYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKSkpLnZhbHVlKCkpOwogICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBhbGxvY2F0ZWRMZW5ndGgobV9sZW5ndGgpOyArK2kpIHsKICAg
ICAgICAgbmV3ICgmbV9qc1ZhbHVlcy5nZXQoKVtpXSkgV3JpdGVCYXJyaWVyPFVua25vd24+KCk7
CiAgICAgICAgIG1fanNWYWx1ZXMuZ2V0KClbaV0uc2V0U3RhcnRpbmdWYWx1ZShqc051bGwoKSk7
CkBAIC0xMDAsOCArMTAwLDggQEAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3co
dWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBjaGVja2VkR3JvdyA9IFsmXSAoYXV0byYgY29udGFpbmVy
LCBhdXRvIGluaXRpYWxpemVyKSB7Ci0gICAgICAgIGlmIChuZXdMZW5ndGhDaGVja2VkLnVuc2Fm
ZUdldCgpID4gYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKSkgewotICAgICAgICAgICAgQ2hlY2tl
ZCByZWFsbG9jU2l6ZUNoZWNrZWQgPSBhbGxvY2F0ZWRMZW5ndGgobmV3TGVuZ3RoQ2hlY2tlZC51
bnNhZmVHZXQoKSk7CisgICAgICAgIGlmIChuZXdMZW5ndGhDaGVja2VkID4gYWxsb2NhdGVkTGVu
Z3RoKG1fbGVuZ3RoKSkgeworICAgICAgICAgICAgQ2hlY2tlZCByZWFsbG9jU2l6ZUNoZWNrZWQg
PSBhbGxvY2F0ZWRMZW5ndGgobmV3TGVuZ3RoQ2hlY2tlZCk7CiAgICAgICAgICAgICByZWFsbG9j
U2l6ZUNoZWNrZWQgKj0gc2l6ZW9mKCpjb250YWluZXIuZ2V0KCkpOwogICAgICAgICAgICAgdWlu
dDMyX3QgcmVhbGxvY1NpemU7CiAgICAgICAgICAgICBpZiAocmVhbGxvY1NpemVDaGVja2VkLnNh
ZmVHZXQocmVhbGxvY1NpemUpID09IENoZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3cpCkBAIC0xOTUs
OSArMTk1LDkgQEAgRnVuY1JlZlRhYmxlOjpGdW5jUmVmVGFibGUodWludDMyX3QgaW5pdGlhbCwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSkKIHsKICAgICAvLyBGSVhNRTogSXQgbWln
aHQgYmUgd29ydGggdHJ5aW5nIHRvIHByZS1hbGxvY2F0ZSBtYXhpbXVtIGhlcmUuIFRoZSBzcGVj
IHJlY29tbWVuZHMgZG9pbmcgc28uCiAgICAgLy8gQnV0IGZvciBub3csIHdlJ3JlIG5vdCBkb2lu
ZyB0aGF0LgotICAgIG1faW1wb3J0YWJsZUZ1bmN0aW9ucyA9IE1hbGxvY1B0cjxXYXNtVG9XYXNt
SW1wb3J0YWJsZUZ1bmN0aW9uLCBWTU1hbGxvYz46Om1hbGxvYygoc2l6ZW9mKFdhc21Ub1dhc21J
bXBvcnRhYmxlRnVuY3Rpb24pICogQ2hlY2tlZDxzaXplX3Q+KGFsbG9jYXRlZExlbmd0aChtX2xl
bmd0aCkpKS51bnNhZmVHZXQoKSk7CisgICAgbV9pbXBvcnRhYmxlRnVuY3Rpb25zID0gTWFsbG9j
UHRyPFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIFZNTWFsbG9jPjo6bWFsbG9jKChzaXpl
b2YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbikgKiBDaGVja2VkPHNpemVfdD4oYWxsb2Nh
dGVkTGVuZ3RoKG1fbGVuZ3RoKSkpLnZhbHVlKCkpOwogICAgIC8vIEZJWE1FIHRoaXMgb3Zlci1h
bGxvY2F0ZXMgYW5kIGNvdWxkIGJlIHNtYXJ0ZXIgYWJvdXQgbm90IGNvbW1pdHRpbmcgYWxsIG9m
IHRoYXQgbWVtb3J5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE0
MjUKLSAgICBtX2luc3RhbmNlcyA9IE1hbGxvY1B0cjxJbnN0YW5jZSosIFZNTWFsbG9jPjo6bWFs
bG9jKChzaXplb2YoSW5zdGFuY2UqKSAqIENoZWNrZWQ8c2l6ZV90PihhbGxvY2F0ZWRMZW5ndGgo
bV9sZW5ndGgpKSkudW5zYWZlR2V0KCkpOworICAgIG1faW5zdGFuY2VzID0gTWFsbG9jUHRyPElu
c3RhbmNlKiwgVk1NYWxsb2M+OjptYWxsb2MoKHNpemVvZihJbnN0YW5jZSopICogQ2hlY2tlZDxz
aXplX3Q+KGFsbG9jYXRlZExlbmd0aChtX2xlbmd0aCkpKS52YWx1ZSgpKTsKICAgICBmb3IgKHVp
bnQzMl90IGkgPSAwOyBpIDwgYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKTsgKytpKSB7CiAgICAg
ICAgIG5ldyAoJm1faW1wb3J0YWJsZUZ1bmN0aW9ucy5nZXQoKVtpXSkgV2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbigpOwogICAgICAgICBBU1NFUlQobV9pbXBvcnRhYmxlRnVuY3Rpb25zLmdl
dCgpW2ldLnNpZ25hdHVyZUluZGV4ID09IFdhc206OlNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsg
Ly8gV2UgcmVseSBvbiB0aGlzIGluIGNvbXBpbGVkIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCAzYjM0OWJlODNiNDRjMDAzNmYw
MTA2Zjc1OTI1MmU2Yjk2NzdlZjFlLi5hYTVhZGQyNWU1MmZjY2RiYjQ2ZDUxZjlmZjZiMTFmNDBi
NzQ4NmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplKHVuc2lnbmVkIG51bWJlck9mRnJhbWVzKQogICAgICAgICB7CiAgICAgICAg
ICAgICBzdGF0aWNfYXNzZXJ0KGFsaWdub2YoRGlzanVuY3Rpb25Db250ZXh0KSA8PSBzaXplb2Yo
dm9pZCopLCAiIik7Ci0gICAgICAgICAgICBzaXplX3QgcmF3U2l6ZSA9IChzaXplb2YoRGlzanVu
Y3Rpb25Db250ZXh0KSAtIHNpemVvZih1aW50cHRyX3QpICsgQ2hlY2tlZDxzaXplX3Q+KG51bWJl
ck9mRnJhbWVzKSAqIHNpemVvZih1aW50cHRyX3QpKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAg
IHNpemVfdCByYXdTaXplID0gKHNpemVvZihEaXNqdW5jdGlvbkNvbnRleHQpIC0gc2l6ZW9mKHVp
bnRwdHJfdCkgKyBDaGVja2VkPHNpemVfdD4obnVtYmVyT2ZGcmFtZXMpICogc2l6ZW9mKHVpbnRw
dHJfdCkpLnZhbHVlKCk7CiAgICAgICAgICAgICBzaXplX3Qgcm91bmRlZFNpemUgPSByb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJhd1NpemUpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocm91bmRlZFNpemUgPj0gcmF3U2l6ZSk7CiAgICAgICAgICAgICByZXR1cm4gcm91
bmRlZFNpemU7CkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgc2l6
ZV90IGFsbG9jYXRpb25TaXplKHVuc2lnbmVkIG51bWJlck9mU3VicGF0dGVybnMpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoYWxpZ25vZihQYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uQ29udGV4dCkgPD0gc2l6ZW9mKHZvaWQqKSwgIiIpOwotICAgICAgICAgICAgc2l6ZV90IHJh
d1NpemUgPSAoc2l6ZW9mKFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KSAtIHNpemVvZih1
bnNpZ25lZCkgKyAoQ2hlY2tlZDxzaXplX3Q+KG51bWJlck9mU3VicGF0dGVybnMpICogMlUpICog
c2l6ZW9mKHVuc2lnbmVkKSkudW5zYWZlR2V0KCk7CisgICAgICAgICAgICBzaXplX3QgcmF3U2l6
ZSA9IChzaXplb2YoUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQpIC0gc2l6ZW9mKHVuc2ln
bmVkKSArIChDaGVja2VkPHNpemVfdD4obnVtYmVyT2ZTdWJwYXR0ZXJucykgKiAyVSkgKiBzaXpl
b2YodW5zaWduZWQpKS52YWx1ZSgpOwogICAgICAgICAgICAgc2l6ZV90IHJvdW5kZWRTaXplID0g
cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yodm9pZCopPihyYXdTaXplKTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJvdW5kZWRTaXplID49IHJhd1NpemUpOwogICAgICAgICAgICAgcmV0
dXJuIHJvdW5kZWRTaXplOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIFBhcmVu
dGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBhbGxvY1BhcmVudGhlc2VzRGlzanVuY3Rpb25Db250
ZXh0KEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHVuc2lnbmVkKiBvdXRwdXQsIEJ5dGVU
ZXJtJiB0ZXJtKQogICAgIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSAoQ2hlY2tlZDxzaXplX3Q+
KFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0OjphbGxvY2F0aW9uU2l6ZSh0ZXJtLmF0b20u
cGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+bV9udW1TdWJwYXR0ZXJucykpICsgRGlzanVuY3Rpb25D
b250ZXh0OjphbGxvY2F0aW9uU2l6ZShkaXNqdW5jdGlvbi0+bV9mcmFtZVNpemUpKS51bnNhZmVH
ZXQoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSAoQ2hlY2tlZDxzaXplX3Q+KFBhcmVudGhlc2Vz
RGlzanVuY3Rpb25Db250ZXh0OjphbGxvY2F0aW9uU2l6ZSh0ZXJtLmF0b20ucGFyZW50aGVzZXNE
aXNqdW5jdGlvbi0+bV9udW1TdWJwYXR0ZXJucykpICsgRGlzanVuY3Rpb25Db250ZXh0OjphbGxv
Y2F0aW9uU2l6ZShkaXNqdW5jdGlvbi0+bV9mcmFtZVNpemUpKS52YWx1ZSgpOwogICAgICAgICBh
bGxvY2F0b3JQb29sID0gYWxsb2NhdG9yUG9vbC0+ZW5zdXJlQ2FwYWNpdHkoc2l6ZSk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGFsbG9jYXRvclBvb2wpOwogICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0b3JQb29sLT5hbGxvYyhzaXplKSkgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQo
b3V0cHV0LCB0ZXJtKTsKQEAgLTE3ODYsNyArMTc4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oY2hhcmFjdGVyQ2xh
c3MsIGludmVydCwgaW5wdXRQb3NpdGlvbikpOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5sYXN0KCkuYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudC51
bnNhZmVHZXQoKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5hdG9t
LnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50OwogICAgICAgICBtX2JvZHlEaXNq
dW5jdGlvbi0+dGVybXMubGFzdCgpLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwog
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmZyYW1lTG9jYXRpb24gPSBm
cmFtZUxvY2F0aW9uOwogICAgIH0KQEAgLTE3OTcsNyArMTc5Nyw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCYWNrUmVmZXJl
bmNlKHN1YnBhdHRlcm5JZCwgaW5wdXRQb3NpdGlvbikpOwogCi0gICAgICAgIG1fYm9keURpc2p1
bmN0aW9uLT50ZXJtcy5sYXN0KCkuYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhD
b3VudC51bnNhZmVHZXQoKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3Qo
KS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50OwogICAgICAgICBtX2Jv
ZHlEaXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlU
eXBlOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmZyYW1lTG9jYXRp
b24gPSBmcmFtZUxvY2F0aW9uOwogICAgIH0KQEAgLTE4NzQsOSArMTg3NCw5IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucGFyZW50aGVz
ZXNXaWR0aCA9IGVuZFRlcm0gLSBiZWdpblRlcm07CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtc1tlbmRUZXJtXS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKIAotICAgICAg
ICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291
bnQgPSBxdWFudGl0eU1heENvdW50LnVuc2FmZUdldCgpOworICAgICAgICBtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1h
eENvdW50OwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9t
LnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24t
PnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5h
dG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50OwogICAgICAgICBtX2JvZHlE
aXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eVR5cGUgPSBxdWFudGl0eVR5
cGU7CiAgICAgfQogCkBAIC0xOTc0LDggKzE5NzQsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQo
KSwgY2FwdHVyZSwgaW5wdXRQb3NpdGlvbikpOwogICAgICAgICBtX2FsbFBhcmVudGhlc2VzSW5m
by5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7CiAKLSAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0g
cXVhbnRpdHlNaW5Db3VudC51bnNhZmVHZXQoKTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24t
PnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3Vu
dC51bnNhZmVHZXQoKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVy
bV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0gcXVhbnRpdHlNaW5Db3VudDsKKyAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0g
cXVhbnRpdHlNYXhDb3VudDsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2lu
VGVybV0uYXRvbS5xdWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7CiAgICAgICAgIG1fYm9keURp
c2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9u
OwogICAgIH0KQEAgLTE5OTYsMTEgKzE5OTYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JvZHlE
aXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5wYXJlbnRoZXNlc1dpZHRoID0gZW5kVGVy
bSAtIGJlZ2luVGVybTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1d
LmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0
aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWlu
Q291bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdp
blRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0
KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVh
bnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291bnQ7CisgICAgICAgIG1fYm9keURpc2p1bmN0
aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4
Q291bnQ7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20u
cXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0gcXVhbnRpdHlNaW5Db3VudC51
bnNhZmVHZXQoKTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0
b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCk7CisgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnF1YW50aXR5TWluQ291
bnQgPSBxdWFudGl0eU1pbkNvdW50OworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNb
ZW5kVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudDsKICAgICAg
ICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0g
cXVhbnRpdHlUeXBlOwogICAgIH0KIApAQCAtMjAyMCwxMSArMjAyMCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnBhcmVudGhlc2Vz
V2lkdGggPSBlbmRUZXJtIC0gYmVnaW5UZXJtOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXNbZW5kVGVybV0uZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CiAKLSAgICAgICAg
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50
ID0gcXVhbnRpdHlNaW5Db3VudC51bnNhZmVHZXQoKTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhD
b3VudC51bnNhZmVHZXQoKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2lu
VGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0gcXVhbnRpdHlNaW5Db3VudDsKKyAgICAgICAg
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50
ID0gcXVhbnRpdHlNYXhDb3VudDsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2Jl
Z2luVGVybV0uYXRvbS5xdWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7Ci0gICAgICAgIG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFu
dGl0eU1pbkNvdW50LnVuc2FmZUdldCgpOwotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVy
bXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudC51bnNh
ZmVHZXQoKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20u
cXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291bnQ7CisgICAgICAgIG1fYm9keURpc2p1
bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1h
eENvdW50OwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5x
dWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7CiAgICAgfQogCkBAIC0yMDkwLDI3ICsyMDkwLDI3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoYXV0byYgdGVybSA6IGFsdGVybmF0aXZlLT5t
X3Rlcm1zKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsKICAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgotICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRpb25CT0woKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5p
bnB1dFBvc2l0aW9uKS51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydGlv
bkJPTCgoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnZh
bHVlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25FT0w6Ci0gICAgICAgICAgICAgICAgICAgIGFz
c2VydGlvbkVPTCgoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRp
b24pLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uRU9MKChjdXJy
ZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudmFsdWUoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKLSAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0aW9uV29yZEJvdW5kYXJ5KHRlcm0uaW52ZXJ0KCksIChjdXJyZW50Q291bnRBbHJlYWR5Q2hl
Y2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRpb25Xb3JkQm91bmRhcnkodGVybS5pbnZlcnQoKSwgKGN1cnJlbnRDb3VudEFs
cmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKS52YWx1ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
UGF0dGVybkNoYXJhY3RlcjoKLSAgICAgICAgICAgICAgICAgICAgYXRvbVBhdHRlcm5DaGFyYWN0
ZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCAoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0
ZXJtLmlucHV0UG9zaXRpb24pLnVuc2FmZUdldCgpLCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0u
cXVhbnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOworICAgICAgICAgICAgICAgICAg
ICBhdG9tUGF0dGVybkNoYXJhY3Rlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIsIChjdXJyZW50Q291
bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudmFsdWUoKSwgdGVybS5mcmFt
ZUxvY2F0aW9uLCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRlcm0ucXVhbnRpdHlUeXBlKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3M6Ci0gICAgICAgICAgICAgICAgICAgIGF0b21DaGFyYWN0
ZXJDbGFzcyh0ZXJtLmNoYXJhY3RlckNsYXNzLCB0ZXJtLmludmVydCgpLCAoY3VycmVudENvdW50
QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnVuc2FmZUdldCgpLCB0ZXJtLmZy
YW1lTG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwor
ICAgICAgICAgICAgICAgICAgICBhdG9tQ2hhcmFjdGVyQ2xhc3ModGVybS5jaGFyYWN0ZXJDbGFz
cywgdGVybS5pbnZlcnQoKSwgKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1
dFBvc2l0aW9uKS52YWx1ZSgpLCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNYXhD
b3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgotICAg
ICAgICAgICAgICAgICAgICBhdG9tQmFja1JlZmVyZW5jZSh0ZXJtLmJhY2tSZWZlcmVuY2VTdWJw
YXR0ZXJuSWQsIChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlv
bikudW5zYWZlR2V0KCksIHRlcm0uZnJhbWVMb2NhdGlvbiwgdGVybS5xdWFudGl0eU1heENvdW50
LCB0ZXJtLnF1YW50aXR5VHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGF0b21CYWNrUmVmZXJl
bmNlKHRlcm0uYmFja1JlZmVyZW5jZVN1YnBhdHRlcm5JZCwgKGN1cnJlbnRDb3VudEFscmVhZHlD
aGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKS52YWx1ZSgpLCB0ZXJtLmZyYW1lTG9jYXRpb24s
IHRlcm0ucXVhbnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVG
b3J3YXJkUmVmZXJlbmNlOgpAQCAtMjEyNSwxOSArMjEyNSwxOSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzanVuY3Rpb25BbHJlYWR5Q2hlY2tlZENvdW50ID0gdGVy
bS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZUZy
YW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNP
bmNlOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZWdhdGVFbmRJbnB1dE9m
ZnNldCA9IChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbiku
dW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWxlZ2F0ZUVu
ZElucHV0T2Zmc2V0ID0gKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBv
c2l0aW9uKS52YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXRvbVBhcmVudGhlc2Vz
T25jZUJlZ2luKHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkLCB0ZXJtLmNhcHR1cmUoKSwg
ZGlzanVuY3Rpb25BbHJlYWR5Q2hlY2tlZENvdW50ICsgZGVsZWdhdGVFbmRJbnB1dE9mZnNldCwg
dGVybS5mcmFtZUxvY2F0aW9uLCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBlbWl0RGlzanVuY3Rpb24odGVybS5wYXJl
bnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQsIGRpc2p1bmN0
aW9uQWxyZWFkeUNoZWNrZWRDb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgYXRvbVBhcmVudGhlc2VzT25jZUVu
ZChkZWxlZ2F0ZUVuZElucHV0T2Zmc2V0LCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRp
dHlNaW5Db3VudCwgdGVybS5xdWFudGl0eU1heENvdW50LCB0ZXJtLnF1YW50aXR5VHlwZSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFs
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWxlZ2F0ZUVuZElucHV0T2Zm
c2V0ID0gKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKS51
bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRlbGVnYXRlRW5k
SW5wdXRPZmZzZXQgPSAoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9z
aXRpb24pLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdG9tUGFyZW50aGVzZXNU
ZXJtaW5hbEJlZ2luKHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkLCB0ZXJtLmNhcHR1cmUo
KSwgZGlzanVuY3Rpb25BbHJlYWR5Q2hlY2tlZENvdW50ICsgZGVsZWdhdGVFbmRJbnB1dE9mZnNl
dCwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLmZyYW1lTG9jYXRpb24gKyBZYXJyU3RhY2tTcGFj
ZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFsKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gZW1pdERpc2p1bmN0aW9uKHRlcm0ucGFyZW50aGVzZXMu
ZGlzanVuY3Rpb24sIGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkLCBkaXNqdW5jdGlvbkFscmVh
ZHlDaGVja2VkQ291bnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21QYXJlbnRoZXNlc1Rlcm1pbmFsRW5kKGRl
bGVnYXRlRW5kSW5wdXRPZmZzZXQsIHRlcm0uZnJhbWVMb2NhdGlvbiwgdGVybS5xdWFudGl0eU1p
bkNvdW50LCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRlcm0ucXVhbnRpdHlUeXBlKTsKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGRlbGVnYXRlRW5kSW5wdXRPZmZzZXQgPSAoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0
ZXJtLmlucHV0UG9zaXRpb24pLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgZGVsZWdhdGVFbmRJbnB1dE9mZnNldCA9IChjdXJyZW50Q291bnRBbHJlYWR5Q2hl
Y2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbih0ZXJtLnBhcmVudGhlc2VzLnN1YnBh
dHRlcm5JZCwgdGVybS5jYXB0dXJlKCksIGRpc2p1bmN0aW9uQWxyZWFkeUNoZWNrZWRDb3VudCAr
IGRlbGVnYXRlRW5kSW5wdXRPZmZzZXQsIHRlcm0uZnJhbWVMb2NhdGlvbiwgMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IGVtaXREaXNqdW5jdGlvbih0ZXJtLnBh
cmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCwgMCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMjE0OCw3ICsyMTQ4
LDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBh
cmVudGhldGljYWxBc3NlcnRpb246IHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWx0
ZXJuYXRpdmVGcmFtZUxvY2F0aW9uID0gdGVybS5mcmFtZUxvY2F0aW9uICsgWWFyclN0YWNrU3Bh
Y2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbjsKLSAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcG9zaXRpdmVJbnB1dE9mZnNldCA9IChjdXJyZW50Q291bnRBbHJlYWR5
Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHBvc2l0aXZlSW5wdXRPZmZzZXQgPSAoY3VycmVudENvdW50QWxyZWFk
eUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHVuY2hlY2tBbW91bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAo
cG9zaXRpdmVJbnB1dE9mZnNldCA+IHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWlu
aW11bVNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuY2hlY2tBbW91bnQgPSBwb3Np
dGl2ZUlucHV0T2Zmc2V0IC0gdGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVt
U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKaW5k
ZXggY2U5MTI1M2EzODU4ZDFhOWViMjc5MDRkZjE1OTc2MGYyNmMxYzZmYy4uYTVjNjk1YzU4Yjli
ZGY2Njg2NmY0ZjQ5OTBhMGNhNGFiY2JmY2RlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckludGVycHJldGVyLmgKQEAgLTExNSw4ICsxMTUsOCBAQCBzdHJ1Y3QgQnl0ZVRl
cm0gewogICAgIHsKICAgICAgICAgYXRvbS5wYXR0ZXJuQ2hhcmFjdGVyID0gY2g7CiAgICAgICAg
IGF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwotICAgICAgICBhdG9tLnF1YW50aXR5
TWluQ291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOwotICAgICAgICBhdG9tLnF1YW50
aXR5TWF4Q291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOworICAgICAgICBhdG9tLnF1
YW50aXR5TWluQ291bnQgPSBxdWFudGl0eUNvdW50OworICAgICAgICBhdG9tLnF1YW50aXR5TWF4
Q291bnQgPSBxdWFudGl0eUNvdW50OwogICAgICAgICBpbnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7
CiAKICAgICAgICAgc3dpdGNoIChxdWFudGl0eVR5cGUpIHsKQEAgLTE1Miw4ICsxNTIsOCBAQCBz
dHJ1Y3QgQnl0ZVRlcm0gewogICAgICAgICBhdG9tLmNhc2VkQ2hhcmFjdGVyLmxvID0gbG87CiAg
ICAgICAgIGF0b20uY2FzZWRDaGFyYWN0ZXIuaGkgPSBoaTsKICAgICAgICAgYXRvbS5xdWFudGl0
eVR5cGUgPSBxdWFudGl0eVR5cGU7Ci0gICAgICAgIGF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1
YW50aXR5Q291bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIGF0b20ucXVhbnRpdHlNYXhDb3VudCA9
IHF1YW50aXR5Q291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIGF0b20ucXVhbnRpdHlNaW5Db3Vu
dCA9IHF1YW50aXR5Q291bnQ7CisgICAgICAgIGF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50
aXR5Q291bnQ7CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKICAgICB9CiAKQEAg
LTIxNCwxNCArMjE0LDE0IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgc3RhdGljIEJ5dGVUZXJt
IENoZWNrSW5wdXQoQ2hlY2tlZDx1bnNpZ25lZD4gY291bnQpCiAgICAgewogICAgICAgICBCeXRl
VGVybSB0ZXJtKFR5cGVDaGVja0lucHV0KTsKLSAgICAgICAgdGVybS5jaGVja0lucHV0Q291bnQg
PSBjb3VudC51bnNhZmVHZXQoKTsKKyAgICAgICAgdGVybS5jaGVja0lucHV0Q291bnQgPSBjb3Vu
dDsKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQogCiAgICAgc3RhdGljIEJ5dGVUZXJtIFVu
Y2hlY2tJbnB1dChDaGVja2VkPHVuc2lnbmVkPiBjb3VudCkKICAgICB7CiAgICAgICAgIEJ5dGVU
ZXJtIHRlcm0oVHlwZVVuY2hlY2tJbnB1dCk7Ci0gICAgICAgIHRlcm0uY2hlY2tJbnB1dENvdW50
ID0gY291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIHRlcm0uY2hlY2tJbnB1dENvdW50ID0gY291
bnQ7CiAgICAgICAgIHJldHVybiB0ZXJtOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAKaW5kZXggM2I1MzY5ZWE4YjIwYTdmYmRkNDkzMmZmMjA2OTc1ODIy
ZjlhNmQ1ZS4uZjQ3ZGQyYWUwYjQyZmU3YzI4ZjljMGU0MmQ3MGQ4ZDMyNzQ2MzZlNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTU0MiwxMCArNTQyLDEwIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBhcyBhIHRlbXAgYWRkcmVzcyByZWdpc3Rlci4KICAg
ICAgICAgdW5zaWduZWQgbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9yQ2hhcmFjdGVyU2l6ZSA9IG1f
Y2hhclNpemUgPT0gQ2hhcjggPyAweDdmZmZmZmZmIDogMHgzZmZmZmZmZjsKICAgICAgICAgdW5z
aWduZWQgb2Zmc2V0QWRqdXN0QW1vdW50ID0gMHg0MDAwMDAwMDsKLSAgICAgICAgaWYgKG5lZ2F0
aXZlQ2hhcmFjdGVyT2Zmc2V0LnVuc2FmZUdldCgpID4gbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9y
Q2hhcmFjdGVyU2l6ZSkgeworICAgICAgICBpZiAobmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQgPiBt
YXhpbXVtTmVnYXRpdmVPZmZzZXRGb3JDaGFyYWN0ZXJTaXplKSB7CiAgICAgICAgICAgICBiYXNl
ID0gdGVtcFJlZzsKICAgICAgICAgICAgIG1vdmUoaW5wdXQsIGJhc2UpOwotICAgICAgICAgICAg
d2hpbGUgKG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0LnVuc2FmZUdldCgpID4gbWF4aW11bU5lZ2F0
aXZlT2Zmc2V0Rm9yQ2hhcmFjdGVyU2l6ZSkgeworICAgICAgICAgICAgd2hpbGUgKG5lZ2F0aXZl
Q2hhcmFjdGVyT2Zmc2V0ID4gbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9yQ2hhcmFjdGVyU2l6ZSkg
ewogICAgICAgICAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIob2Zmc2V0QWRqdXN0QW1vdW50
KSwgYmFzZSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgIT0gQ2hhcjgpCiAgICAg
ICAgICAgICAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIob2Zmc2V0QWRqdXN0QW1vdW50KSwg
YmFzZSk7CkBAIC01NTMsMTIgKzU1MywxMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIENoZWNrZWQ8aW50MzJfdD4gY2hhcmFjdGVyT2Zmc2V0
KC1zdGF0aWNfY2FzdDxpbnQzMl90PihuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldC51bnNhZmVHZXQo
KSkpOworICAgICAgICBDaGVja2VkPGludDMyX3Q+IGNoYXJhY3Rlck9mZnNldCgtc3RhdGljX2Nh
c3Q8aW50MzJfdD4obmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQpKTsKIAogICAgICAgICBpZiAobV9j
aGFyU2l6ZSA9PSBDaGFyOCkKLSAgICAgICAgICAgIHJldHVybiBCYXNlSW5kZXgoaW5wdXQsIGlu
ZGV4UmVnLCBUaW1lc09uZSwgKGNoYXJhY3Rlck9mZnNldCAqIHN0YXRpY19jYXN0PGludDMyX3Q+
KHNpemVvZihjaGFyKSkpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBCYXNlSW5k
ZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc09uZSwgKGNoYXJhY3Rlck9mZnNldCAqIHN0YXRpY19j
YXN0PGludDMyX3Q+KHNpemVvZihjaGFyKSkpLnZhbHVlKCkpOwogCi0gICAgICAgIHJldHVybiBC
YXNlSW5kZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc1R3bywgKGNoYXJhY3Rlck9mZnNldCAqIHN0
YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihVQ2hhcikpKS51bnNhZmVHZXQoKSk7CisgICAgICAg
IHJldHVybiBCYXNlSW5kZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc1R3bywgKGNoYXJhY3Rlck9m
ZnNldCAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihVQ2hhcikpKS52YWx1ZSgpKTsKICAg
ICB9CiAKICNpZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtMTAwMiw3ICsxMDAyLDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIEp1bXBMaXN0IG1hdGNoRGVzdDsKICAg
ICAgICAgICAgIGlmICghdGVybS0+aW5wdXRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICBtYXRj
aERlc3QuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBpbmRleCwgSW1tMzIobV9jaGVja2VkT2Zmc2V0
LnVuc2FmZUdldCgpKSkpOworICAgICAgICAgICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYnJhbmNo
MzIoRXF1YWwsIGluZGV4LCBJbW0zMihtX2NoZWNrZWRPZmZzZXQudmFsdWUoKSkpKTsKIAogICAg
ICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0
aW9uICsgMSwgY2hhcmFjdGVyKTsKICAgICAgICAgICAgIG1hdGNoQ2hhcmFjdGVyQ2xhc3MoY2hh
cmFjdGVyLCBtYXRjaERlc3QsIG1fcGF0dGVybi5uZXdsaW5lQ2hhcmFjdGVyQ2xhc3MoKSk7CkBA
IC0xMDE0LDcgKzEwMTQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIGlmICh0ZXJt
LT5pbnB1dFBvc2l0aW9uKQogICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXAo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQo
YnJhbmNoMzIoTm90RXF1YWwsIGluZGV4LCBJbW0zMihtX2NoZWNrZWRPZmZzZXQudW5zYWZlR2V0
KCkpKSk7CisgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1
YWwsIGluZGV4LCBJbW0zMihtX2NoZWNrZWRPZmZzZXQudmFsdWUoKSkpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICB2b2lkIGJhY2t0cmFja0Fzc2VydGlvbkJPTChzaXplX3Qgb3BJbmRleCkKQEAg
LTEwMzEsNyArMTAzMSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgY29uc3QgUmVn
aXN0ZXJJRCBjaGFyYWN0ZXIgPSByZWdUMDsKIAogICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hE
ZXN0OwotICAgICAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zm
c2V0LnVuc2FmZUdldCgpKQorICAgICAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0g
bV9jaGVja2VkT2Zmc2V0KQogICAgICAgICAgICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYXRFbmRP
ZklucHV0KCkpOwogCiAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAt
IHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKIAogICAgICAgICAgICAgbWF0Y2hEZXN0LmxpbmsodGhpcyk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGVybS0+aW5wdXRQb3NpdGlvbiA9PSBtX2No
ZWNrZWRPZmZzZXQudW5zYWZlR2V0KCkpCisgICAgICAgICAgICBpZiAodGVybS0+aW5wdXRQb3Np
dGlvbiA9PSBtX2NoZWNrZWRPZmZzZXQpCiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBl
bmQobm90QXRFbmRPZklucHV0KCkpOwogICAgICAgICAgICAgLy8gRXJrLCByZWFsbHkgc2hvdWxk
IHBvaXNvbiBvdXQgdGhlc2UgYWx0ZXJuYXRpdmVzIGVhcmx5LiA6LS8KICAgICAgICAgICAgIGVs
c2UKQEAgLTEwNjAsNyArMTA2MCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIGNvbnN0
IFJlZ2lzdGVySUQgY2hhcmFjdGVyID0gcmVnVDA7CiAKLSAgICAgICAgaWYgKHRlcm0tPmlucHV0
UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpKQorICAgICAgICBpZiAodGVy
bS0+aW5wdXRQb3NpdGlvbiA9PSBtX2NoZWNrZWRPZmZzZXQpCiAgICAgICAgICAgICBuZXh0SXNO
b3RXb3JkQ2hhci5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwogCiAgICAgICAgIHJlYWRDaGFyYWN0
ZXIobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKTsKQEAg
LTEwODUsNyArMTA4NSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBKdW1wIGF0QmVnaW47
CiAgICAgICAgIEp1bXBMaXN0IG1hdGNoRGVzdDsKICAgICAgICAgaWYgKCF0ZXJtLT5pbnB1dFBv
c2l0aW9uKQotICAgICAgICAgICAgYXRCZWdpbiA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleCwgSW1t
MzIobV9jaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICBhdEJlZ2luID0g
YnJhbmNoMzIoRXF1YWwsIGluZGV4LCBJbW0zMihtX2NoZWNrZWRPZmZzZXQudmFsdWUoKSkpOwog
ICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRp
b24gKyAxLCBjaGFyYWN0ZXIpOwogCiAgICAgICAgIENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNo
YXJhY3RlckNsYXNzOwpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICAgICAgbG9hZEZyb21GcmFtZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNr
VHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpLCBjaGFyYWN0ZXJPclRl
bXApOwogICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JU
ZW1wKTsKICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJl
bnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hB
bW91bnRJbmRleCgpKTsKLSAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihF
cXVhbCwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSksIGNoYXJhY3Rl
ck9yVGVtcCkpOworICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFs
LCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpLCBjaGFyYWN0ZXJPclRlbXAp
KTsKICAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQg
PDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7CiAgICAgICAgICAgICAgICAgbG9h
ZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGlu
dCkpLCBwYXR0ZXJuVGVtcCk7CiAgICAgICAgICAgICAgICAganVtcChvdXRlckxvb3ApOwpAQCAt
MTI0OSw3ICsxMjQ5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBhZGQzMihUcnVz
dGVkSW1tMzIoMSksIGNoYXJhY3Rlck9yVGVtcCk7CiAgICAgICAgICAgICBzdG9yZVRvRnJhbWUo
Y2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
QmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgICAgIGlmICh0ZXJt
LT5xdWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCi0gICAgICAgICAgICAgICAg
bWF0Y2hlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291
bnQudW5zYWZlR2V0KCkpLCBjaGFyYWN0ZXJPclRlbXApKTsKKyAgICAgICAgICAgICAgICBtYXRj
aGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC52
YWx1ZSgpKSwgY2hhcmFjdGVyT3JUZW1wKSk7CiAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhv
dXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7
CiAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEp
ICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKIApAQCAtMTM0NCw3ICsxMzQ0LDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQoYXRFbmRPZklu
cHV0KCkpOwogICAgICAgICAgICAgbG9hZEZyb21GcmFtZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRp
b24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpLCBtYXRj
aEFtb3VudCk7CiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFu
dGlmeUluZmluaXRlKQotICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCkpLCBt
YXRjaEFtb3VudCkpOworICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudmFsdWUoKSksIG1hdGNo
QW1vdW50KSk7CiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIG1hdGNoQW1vdW50
KTsKICAgICAgICAgICAgIHN0b3JlVG9GcmFtZShtYXRjaEFtb3VudCwgcGFyZW50aGVzZXNGcmFt
ZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgo
KSk7CiAgICAgICAgICAgICBqdW1wKG9wLm1fcmVlbnRyeSk7CkBAIC0xNTgzLDcgKzE1ODMsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbW92ZShpbmRleCwgY291bnRSZWdpc3Rlcik7CiAg
ICAgICAgIENoZWNrZWQ8dW5zaWduZWQ+IHNjYWxlZE1heENvdW50ID0gdGVybS0+cXVhbnRpdHlN
YXhDb3VudDsKICAgICAgICAgc2NhbGVkTWF4Q291bnQgKj0gVV9JU19CTVAoY2gpID8gMSA6IDI7
Ci0gICAgICAgIHN1YjMyKEltbTMyKHNjYWxlZE1heENvdW50LnVuc2FmZUdldCgpKSwgY291bnRS
ZWdpc3Rlcik7CisgICAgICAgIHN1YjMyKEltbTMyKHNjYWxlZE1heENvdW50LnZhbHVlKCkpLCBj
b3VudFJlZ2lzdGVyKTsKIAogICAgICAgICBMYWJlbCBsb29wKHRoaXMpOwogICAgICAgICByZWFk
Q2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRN
YXhDb3VudCwgY2hhcmFjdGVyLCBjb3VudFJlZ2lzdGVyKTsKQEAgLTE2NDIsNyArMTY0Miw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQg
PT0gcXVhbnRpZnlJbmZpbml0ZSkKICAgICAgICAgICAgICAgICBqdW1wKGxvb3ApOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3VudFJlZ2lz
dGVyLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50LnVuc2FmZUdldCgpKSkubGlua1RvKGxv
b3AsIHRoaXMpOworICAgICAgICAgICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3VudFJlZ2lz
dGVyLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpKS5saW5rVG8obG9vcCwg
dGhpcyk7CiAKICAgICAgICAgICAgIGZhaWx1cmVzLmxpbmsodGhpcyk7CiAgICAgICAgIH0KQEAg
LTE2OTgsNyArMTY5OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgSnVtcExpc3Qg
bm9uR3JlZWR5RmFpbHVyZXM7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQo
YXRFbmRPZklucHV0KCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQg
IT0gcXVhbnRpZnlJbmZpbml0ZSkKLSAgICAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5h
cHBlbmQoYnJhbmNoMzIoRXF1YWwsIGNvdW50UmVnaXN0ZXIsIEltbTMyKHRlcm0tPnF1YW50aXR5
TWF4Q291bnQudW5zYWZlR2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVy
ZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLT5xdWFu
dGl0eU1heENvdW50LnZhbHVlKCkpKSk7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5h
cHBlbmQoanVtcElmQ2hhck5vdEVxdWFscyhjaCwgbV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5w
dXRQb3NpdGlvbiwgY2hhcmFjdGVyKSk7CiAKICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0z
MigxKSwgaW5kZXgpOwpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgIGlmIChtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzICYmIHRlcm0tPmNoYXJhY3RlckNsYXNzLT5o
YXNPbmx5Tm9uQk1QQ2hhcmFjdGVycygpICYmICF0ZXJtLT5pbnZlcnQoKSkKICAgICAgICAgICAg
IHNjYWxlZE1heENvdW50ICo9IDI7CiAjZW5kaWYKLSAgICAgICAgc3ViMzIoSW1tMzIoc2NhbGVk
TWF4Q291bnQudW5zYWZlR2V0KCkpLCBjb3VudFJlZ2lzdGVyKTsKKyAgICAgICAgc3ViMzIoSW1t
MzIoc2NhbGVkTWF4Q291bnQudmFsdWUoKSksIGNvdW50UmVnaXN0ZXIpOwogCiAgICAgICAgIExh
YmVsIGxvb3AodGhpcyk7CiAgICAgICAgIEp1bXBMaXN0IG1hdGNoRGVzdDsKQEAgLTE4ODIsNyAr
MTg4Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSks
IGNvdW50UmVnaXN0ZXIpOwogCiAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9
IHF1YW50aWZ5SW5maW5pdGUpIHsKLSAgICAgICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3Vu
dFJlZ2lzdGVyLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50LnVuc2FmZUdldCgpKSkubGlu
a1RvKGxvb3AsIHRoaXMpOworICAgICAgICAgICAgYnJhbmNoMzIoTm90RXF1YWwsIGNvdW50UmVn
aXN0ZXIsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudmFsdWUoKSkpLmxpbmtUbyhsb29w
LCB0aGlzKTsKICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChqdW1wKCkpOwogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGp1bXAobG9vcCk7CkBAIC0xOTg2LDcgKzE5ODYsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgbG9hZEZyb21GcmFtZSh0ZXJtLT5mcmFtZUxvY2F0aW9uICsg
QmFja1RyYWNrSW5mb0NoYXJhY3RlckNsYXNzOjptYXRjaEFtb3VudEluZGV4KCksIGNvdW50UmVn
aXN0ZXIpOwogCiAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQo
KSk7Ci0gICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgY291
bnRSZWdpc3RlciwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSkpKTsK
KyAgICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBjb3VudFJl
Z2lzdGVyLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpKSk7CiAKICAgICAg
ICAgSnVtcExpc3QgbWF0Y2hEZXN0OwogICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9m
ZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CkBAIC0yMzczLDcgKzIzNzMs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAoKHRlcm0tPnF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkgJiYgKHRlcm0tPnR5cGUgIT0gUGF0dGVyblRl
cm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgb3Au
bV9jaGVja0FkanVzdCAtPSBkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAg
ICAgICBpZiAob3AubV9jaGVja0FkanVzdCkKLSAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChvcC5tX2NoZWNrQWRqdXN0LnVuc2FmZUdl
dCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZh
aWxhYmxlSW5wdXQob3AubV9jaGVja0FkanVzdCkpOwogCiAgICAgICAgICAgICAgICAgbV9jaGVj
a2VkT2Zmc2V0ICs9IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0yNDIwLDcgKzI0MjAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAo
KHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkgJiYgKHRlcm0tPnR5
cGUgIT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKICAgICAgICAg
ICAgICAgICAgICAgb3AubV9jaGVja0FkanVzdCAtPSBkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6
ZTsKICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0FkanVzdCkKLSAgICAgICAgICAgICAg
ICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChvcC5tX2NoZWNr
QWRqdXN0LnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBw
ZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQob3AubV9jaGVja0FkanVzdCkpOwogCiAgICAgICAg
ICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwogICAgICAg
ICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAtPSBsYXN0T3AubV9jaGVja0FkanVzdDsKQEAgLTI0
OTQsNyArMjQ5NCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIG9mZnNl
dHMgb25seSBhZnRlcndhcmRzLCBhdCB0aGUgcG9pbnQgdGhlIHJlc3VsdHMgYXJyYXkgaXMKICAg
ICAgICAgICAgICAgICAvLyBiZWluZyBhY2Nlc3NlZC4KICAgICAgICAgICAgICAgICBpZiAodGVy
bS0+Y2FwdHVyZSgpICYmIGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykgewotICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IChtX2NoZWNrZWRPZmZzZXQg
LSB0ZXJtLT5pbnB1dFBvc2l0aW9uKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbikudmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlw
ZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0
T2Zmc2V0ICs9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKQEAgLTI1MjQsNyArMjUyNCw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIG9mZnNldHMgb25seSBhZnRl
cndhcmRzLCBhdCB0aGUgcG9pbnQgdGhlIHJlc3VsdHMgYXJyYXkgaXMKICAgICAgICAgICAgICAg
ICAvLyBiZWluZyBhY2Nlc3NlZC4KICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgp
ICYmIGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykgewotICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IChtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1
dFBvc2l0aW9uKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5w
dXRPZmZzZXQgPSAobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbikudmFsdWUo
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBtb3ZlKGluZGV4LCBpbmRleFRlbXBvcmFyeSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWIzMihJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKQEAgLTI2
MzEsNyArMjYzMSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIGJlaW5n
IGFjY2Vzc2VkLgogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGls
ZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSByZWdUMDsKLSAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zm
c2V0ID0gKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24pLnZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZp
eGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE9mZnNldCArPSB0ZXJtLT5w
YXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlucHV0T2Zmc2V0KSB7CkBAIC0yNjczLDcgKzI2NzMsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpICYmIGNvbXBpbGVNb2RlID09
IEluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3Rl
cklEIGluZGV4VGVtcG9yYXJ5ID0gcmVnVDA7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IChtX2NoZWNrZWRPZmZzZXQgLSB0
ZXJtLT5pbnB1dFBvc2l0aW9uKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlv
bikudmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCBpbmRleFRlbXBvcmFyeSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5
KTsKQEAgLTI2ODcsNyArMjY4Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAg
IC8vIHBhcmVudGhlc2VzLCBsaW5rIHRoZSBqdW1wIGZyb20gYmVmb3JlIHRoZSBzdWJwYXR0ZXJu
IHRvIGhlcmUuCiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFu
dGlmaWVyR3JlZWR5KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1h
eENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmFu
Y2gzMihCZWxvdywgY291bnRUZW1wb3JhcnksIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCkpKS5saW5rVG8oYmVnaW5PcC5tX3JlZW50cnksIHRoaXMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoMzIoQmVsb3csIGNvdW50VGVtcG9yYXJ5LCBJbW0zMih0ZXJt
LT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpKS5saW5rVG8oYmVnaW5PcC5tX3JlZW50cnksIHRo
aXMpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBq
dW1wKGJlZ2luT3AubV9yZWVudHJ5KTsKICAgICAgICAgICAgICAgICAgICAgCkBAIC0yNzE1LDcg
KzI3MTUsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBDaGVjayAKICAg
ICAgICAgICAgICAgICBvcC5tX2NoZWNrQWRqdXN0ID0gbV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+
aW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0FkanVzdCkKLSAg
ICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIob3AubV9jaGVja0FkanVzdC51bnNhZmVHZXQo
KSksIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIob3AubV9jaGVja0Fk
anVzdC52YWx1ZSgpKSwgaW5kZXgpOwogCiAgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0
IC09IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDUzLDcg
KzMwNTMsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVj
a0FkanVzdCkgewogICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2VzIHdoZXJl
IHdlIG5lZWQgdG8gbGluayB0aGUgYmFja3RyYWNrcyBoZXJlLgogICAgICAgICAgICAgICAgICAg
ICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIHN1
YjMyKEltbTMyKG9wLm1fY2hlY2tBZGp1c3QudW5zYWZlR2V0KCkpLCBpbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgIHN1YjMyKEltbTMyKG9wLm1fY2hlY2tBZGp1c3QudmFsdWUoKSksIGluZGV4
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0xhc3RBbHRlcm5hdGl2ZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgdGhhdCBpcyBub3QgdGhlIGxhc3Qg
c2hvdWxkIGp1bXAgdG8gaXRzIHN1Y2Nlc3Nvci4KICAgICAgICAgICAgICAgICAgICAgICAgIGp1
bXAobmV4dE9wLm1fcmVlbnRyeSk7CkBAIC0zMzM2LDcgKzMzMzYsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQg
IT0gcXVhbnRpZnlJbmZpbml0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRG
cm9tRnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhl
c2VzOjptYXRjaEFtb3VudEluZGV4KCksIGNvdW50VGVtcG9yYXJ5KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlZWRlZE1hdGNoTGltaXQuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JF
cXVhbCwgY291bnRUZW1wb3JhcnksIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudW5zYWZl
R2V0KCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZWVkZWRNYXRjaExpbWl0
LmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIGNvdW50VGVtcG9yYXJ5LCBJbW0zMih0ZXJt
LT5xdWFudGl0eU1heENvdW50LnZhbHVlKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaDMyKEFib3ZlLCBpbmRleCwgYmVnaW5U
ZW1wb3JhcnkpLmxpbmtUbyhiZWdpbk9wLm1fcmVlbnRyeSwgdGhpcyk7CkBAIC0zMzY2LDcgKzMz
NjYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNr
aW5nU3RhdGUubGluayh0aGlzKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVj
a0FkanVzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKG9wLm1fY2hlY2tB
ZGp1c3QudW5zYWZlR2V0KCkpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGQz
MihJbW0zMihvcC5tX2NoZWNrQWRqdXN0LnZhbHVlKCkpLCBpbmRleCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgLy8gSW4gYW4gaW52ZXJ0ZWQgYXNzZXJ0aW9uIGZhaWx1cmUgdG8gbWF0Y2ggdGhl
IHN1YnBhdHRlcm4KICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdHJlYXRlZCBhcyBhIHN1Y2Nl
c3NmdWwgbWF0Y2ggLSBqdW1wIHRvIHRoZSBlbmQgb2YgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGFyc2VyLmgKaW5kZXggZjA3NzdkNGFmZWFkZjkwYTMxMjU3ZTYyZjZmZGE3MmUw
Y2IwNzZjMC4uNDYyOWRjODc0MzM2MjQ3YTZlZjVlYmQ3ZmVlYWE3ZDVlYWM3Y2FlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaApAQCAtMTA4Myw3ICsxMDgzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG4gPSBj
b25zdW1lRGlnaXQoKTsKICAgICAgICAgd2hpbGUgKHBlZWtJc0RpZ2l0KCkpCiAgICAgICAgICAg
ICBuID0gbiAqIDEwICsgY29uc3VtZURpZ2l0KCk7Ci0gICAgICAgIHJldHVybiBuLmhhc092ZXJm
bG93ZWQoKSA/IHF1YW50aWZ5SW5maW5pdGUgOiBuLnVuc2FmZUdldCgpOworICAgICAgICByZXR1
cm4gbi5oYXNPdmVyZmxvd2VkKCkgPyBxdWFudGlmeUluZmluaXRlIDogbi52YWx1ZSgpOwogICAg
IH0KIAogICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNwcm9kLWFubmV4Qi1MZWdhY3lP
Y3RhbEVzY2FwZVNlcXVlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5jcHAKaW5kZXggMjFkNzViMTU5YWE3ZGUzOTg5N2I0ODNmMTc5NGRlMmM3MzVhZjIxZi4uN2Fm
ZjBkNzFlOTM2MjU3MWNjYjNmY2E3MGJjYTU4ZDBlYTYzMGIzMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtODAxLDExICs4MDEsMTEgQEAgcHVibGlj
OgogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkJPTDoKICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25FT0w6CiAgICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgotICAgICAgICAgICAg
ICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgp
OworICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0
aW9uOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKLSAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRp
b24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICB0
ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAg
ICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAg
ICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0lu
Zm9CYWNrUmVmZXJlbmNlOwogICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVk
U2l6ZSA9IGZhbHNlOwpAQCAtODE1LDcgKzgxNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFy
YWN0ZXI6Ci0gICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0
UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9u
ID0gY3VycmVudElucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIHRl
cm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0lu
Zm9QYXR0ZXJuQ2hhcmFjdGVyOwpAQCAtODMxLDcgKzgzMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJh
Y3RlckNsYXNzOgotICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJ
bnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3Np
dGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1
YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCkgewogICAgICAgICAgICAgICAgICAg
ICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJh
Y2tJbmZvQ2hhcmFjdGVyQ2xhc3M7CkBAIC04NTgsMjMgKzg1OCwyMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAg
ICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlNYXhDb3VudCA9PSAxICYmICF0ZXJtLnBh
cmVudGhlc2VzLmlzQ29weSkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1l
U2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2U7Ci0g
ICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5w
YXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1
dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNl
cy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9u
LCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNFcnJv
cihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIHF1YW50aXR5IGlzIGZpeGVkLCB0aGVuIHByZS1jaGVjayBpdHMg
bWluaW11bSBzaXplLgogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUg
PT0gUXVhbnRpZmllckZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50
SW5wdXRQb3NpdGlvbiArPSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1T
aXplOwotICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBv
c2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICh0ZXJtLnBhcmVudGhlc2VzLmlzVGVybWluYWwpIHsKICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXNUZXJtaW5hbDsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0
aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1l
U2l6ZSwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVT
aXplKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0
cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgY3Vy
cmVudElucHV0UG9zaXRpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVu
dElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHRlcm0uaW5w
dXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1
dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9z
aXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgY3VycmVu
dENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVz
ZXM7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHMo
dGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJl
bnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJl
bnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBv
c2l0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICho
YXNFcnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtODgzLDkgKzg4Myw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhl
dGljYWxBc3NlcnRpb246Ci0gICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3Vy
cmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgdGVybS5pbnB1
dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgdGVybS5m
cmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7Ci0gICAgICAgICAgICAgICAgZXJy
b3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9u
LCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1Bh
cmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBj
dXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1
bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZy
YW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3Nl
cnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTAzLDcgKzkwMyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpPZmZzZXRUb29MYXJnZTsK
ICAgICAgICAgfQogCi0gICAgICAgIGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID0gKGN1cnJl
bnRJbnB1dFBvc2l0aW9uIC0gaW5pdGlhbElucHV0UG9zaXRpb24pLnVuc2FmZUdldCgpOworICAg
ICAgICBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA9IChjdXJyZW50SW5wdXRQb3NpdGlvbiAt
IGluaXRpYWxJbnB1dFBvc2l0aW9uKS52YWx1ZSgpOwogICAgICAgICBuZXdDYWxsRnJhbWVTaXpl
ID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CkBA
IC0xMjU5LDEyICsxMjU5LDEyIEBAIHZvaWQgUGF0dGVyblRlcm06OmR1bXBRdWFudGlmaWVyKFBy
aW50U3RyZWFtJiBvdXQpCiB7CiAgICAgaWYgKHF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4
ZWRDb3VudCAmJiBxdWFudGl0eU1pbkNvdW50ID09IDEgJiYgcXVhbnRpdHlNYXhDb3VudCA9PSAx
KQogICAgICAgICByZXR1cm47Ci0gICAgb3V0LnByaW50KCIgeyIsIHF1YW50aXR5TWluQ291bnQu
dW5zYWZlR2V0KCkpOworICAgIG91dC5wcmludCgiIHsiLCBxdWFudGl0eU1pbkNvdW50LnZhbHVl
KCkpOwogICAgIGlmIChxdWFudGl0eU1pbkNvdW50ICE9IHF1YW50aXR5TWF4Q291bnQpIHsKICAg
ICAgICAgaWYgKHF1YW50aXR5TWF4Q291bnQgPT0gVUlOVF9NQVgpCiAgICAgICAgICAgICBvdXQu
cHJpbnQoIiwuLi4iKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KCIsIiwg
cXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoIiwi
LCBxdWFudGl0eU1heENvdW50LnZhbHVlKCkpOwogICAgIH0KICAgICBvdXQucHJpbnQoIn0iKTsK
ICAgICBpZiAocXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaAppbmRleCA3M2FjZGM3MmQ1Y2JjYzYxZGE3ZWM2MjMzYzJjNWNlNzY0ODI5
ZDI1Li45MmRkM2Y4NGI2OTkwOWMzMjliYzYyMzliODUyMjljNmM4MzcwOTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTcyNywyMyArNzI3LDMwIEBAIHB1YmxpYzoKICAgICAv
LyBCb29sZWFuIG9wZXJhdG9ycwogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIGlmIChVTkxJS0VMWSh0
aGlzLT5oYXNPdmVyZmxvd2VkKCkpKQogICAgICAgICAgICAgdGhpcy0+Y3Jhc2goKTsKICAgICAg
ICAgcmV0dXJuICFtX3ZhbHVlOwogICAgIH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkKKyAgICAg
ICAgaWYgKFVOTElLRUxZKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICB0aGlz
LT5jcmFzaCgpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisKKyAgICBvcGVyYXRv
ciBUKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSh0aGlzLT5oYXNPdmVyZmxv
d2VkKCkpKQogICAgICAgICAgICAgdGhpcy0+Y3Jhc2goKTsKICAgICAgICAgcmV0dXJuIG1fdmFs
dWU7CiAgICAgfQogCi0gICAgLy8gVmFsdWUgYWNjZXNzb3JzLiB1bnNhZmVHZXQoKSB3aWxsIGNy
YXNoIGlmIHRoZXJlJ3MgYmVlbiBhbiBvdmVyZmxvdy4KKyAgICAvLyBWYWx1ZSBhY2Nlc3NvcnMu
IHZhbHVlKCkgd2lsbCBjcmFzaCBpZiB0aGVyZSdzIGJlZW4gYW4gb3ZlcmZsb3cuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0gICAgVSB1bnNhZmVHZXQoKSBjb25zdAorICAgIFUgdmFs
dWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkKKyAg
ICAgICAgaWYgKFVOTElLRUxZKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgICAgICB0
aGlzLT5jcmFzaCgpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VT4obV92YWx1ZSk7CiAg
ICAgfQpAQCAtODA5LDcgKzgxNiw3IEBAIHB1YmxpYzoKICAgICAvLyBFcXVhbGl0eSBjb21wYXJp
c29ucwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPT0oQ2hlY2tlZDxU
LCBWPiByaHMpCiAgICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPT0gcmhzLnVuc2Fm
ZUdldCgpOworICAgICAgICByZXR1cm4gdmFsdWUoKSA9PSByaHMudmFsdWUoKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgcmhzKQpAQCAtODIx
LDcgKzgyOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4gYm9vbCBvcGVyYXRvcj09KENoZWNrZWQ8VSwgVj4gcmhzKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHVuc2FmZUdldCgpID09IENoZWNrZWQocmhzLnVuc2FmZUdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlKCkgPT0gQ2hlY2tlZChyaHMudmFsdWUoKSk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3IhPShVIHJocykKQEAgLTgzMiw0MiAr
ODM5LDIyIEBAIHB1YmxpYzoKICAgICAvLyBPdGhlciBjb21wYXJpc29ucwogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPChDaGVja2VkPFQsIFY+IHJocykgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA8IHJocy51bnNhZmVHZXQoKTsKLSAgICB9
Ci0KLSAgICBib29sIG9wZXJhdG9yPChUIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biB1bnNhZmVHZXQoKSA8IHJoczsKKyAgICAgICAgcmV0dXJuIHZhbHVlKCkgPCByaHMudmFsdWUo
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcjw9KENo
ZWNrZWQ8VCwgVj4gcmhzKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgp
IDw9IHJocy51bnNhZmVHZXQoKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPD0oVCByaHMp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPD0gcmhzOworICAgICAg
ICByZXR1cm4gdmFsdWUoKSA8PSByaHMudmFsdWUoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcj4oQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPiByaHMudW5zYWZlR2V0KCk7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvcj4oVCByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
dW5zYWZlR2V0KCkgPiByaHM7CisgICAgICAgIHJldHVybiB2YWx1ZSgpID4gcmhzLnZhbHVlKCk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+IGJvb2wgb3BlcmF0b3I+PShDaGVj
a2VkPFQsIFY+IHJocykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA+
PSByaHMudW5zYWZlR2V0KCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj49KFQgcmhzKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpID49IHJoczsKKyAgICAgICAg
cmV0dXJuIHZhbHVlKCkgPj0gcmhzLnZhbHVlKCk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudEJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYv
Q29uY3VycmVudEJ1ZmZlci5oCmluZGV4IDJjMDI5NmQ1NTk2YTE0OGFmYzY2MTJkMjVmNDY1NDI4
ZGY4NDc0MjYuLjg1OTc2YjU0YTA0Mzk3NWE4NDBiMWU0MjEzODIwZmY1NzY5MTcyZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Db25jdXJyZW50QnVmZmVyLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAg
ICAgICBDaGVja2VkPHNpemVfdD4gb2JqZWN0U2l6ZSA9IHNpemVvZihUKTsKICAgICAgICAgb2Jq
ZWN0U2l6ZSAqPSBzaXplOwogICAgICAgICBvYmplY3RTaXplICs9IHN0YXRpY19jYXN0PHNpemVf
dD4oT0JKRUNUX09GRlNFVE9GKEFycmF5LCBkYXRhKSk7Ci0gICAgICAgIEFycmF5KiByZXN1bHQg
PSBzdGF0aWNfY2FzdDxBcnJheSo+KENvbmN1cnJlbnRCdWZmZXJNYWxsb2M6Om1hbGxvYyhvYmpl
Y3RTaXplLnVuc2FmZUdldCgpKSk7CisgICAgICAgIEFycmF5KiByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxBcnJheSo+KENvbmN1cnJlbnRCdWZmZXJNYWxsb2M6Om1hbGxvYyhvYmplY3RTaXplKSk7CiAg
ICAgICAgIHJlc3VsdC0+c2l6ZSA9IHNpemU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcAppbmRleCBlNGViODQzNWYxOWE5OThkZDI3ZTZkZjdlOGZhYmRl
YzEzNWRlMmIzLi4yZTVmNWJkMzQ0ZWM5MjRhOWQxZjllZjIxN2RmODRmYTI0NzRhYjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GYXN0TWFsbG9jLmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQqIGZhc3RDYWxsb2Moc2l6
ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgQVNTRVJUX0lTX1dJVEhJ
Tl9MSU1JVChudW1FbGVtZW50cyAqIGVsZW1lbnRTaXplKTsKICAgICBDaGVja2VkPHNpemVfdD4g
Y2hlY2tlZFNpemUgPSBlbGVtZW50U2l6ZTsKICAgICBjaGVja2VkU2l6ZSAqPSBudW1FbGVtZW50
czsKLSAgICB2b2lkKiByZXN1bHQgPSBmYXN0WmVyb2VkTWFsbG9jKGNoZWNrZWRTaXplLnVuc2Fm
ZUdldCgpKTsKKyAgICB2b2lkKiByZXN1bHQgPSBmYXN0WmVyb2VkTWFsbG9jKGNoZWNrZWRTaXpl
KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNjE4LDcgKzYxOCw3IEBAIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Mo
c2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgY2hlY2tlZFNpemUg
Kj0gbnVtRWxlbWVudHM7CiAgICAgaWYgKGNoZWNrZWRTaXplLmhhc092ZXJmbG93ZWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHRyeUZhc3RaZXJvZWRNYWxsb2MoY2hl
Y2tlZFNpemUudW5zYWZlR2V0KCkpOworICAgIHJldHVybiB0cnlGYXN0WmVyb2VkTWFsbG9jKGNo
ZWNrZWRTaXplKTsKIH0KIAogVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9p
ZCogb2JqZWN0LCBzaXplX3QgbmV3U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0dp
Z2FjYWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAppbmRleCBhNjFhZGYyNGQy
ZjY2NjcxNWQxNjc2ODExMzEzMGQyZDVjNzc5YmQ4Li5iNzkxMTM0YzAxOTc0M2YwY2UyYTBkOWI5
MjA4Yzk4YjE4MzFhM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9p
ZCogdHJ5TWFsbG9jQXJyYXkoS2luZCBraW5kLCBzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBl
bGVtZW50U2l6ZSkKICAgICBjaGVja2VkU2l6ZSAqPSBudW1FbGVtZW50czsKICAgICBpZiAoY2hl
Y2tlZFNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gdHJ5TWFsbG9jKGtpbmQsIGNoZWNrZWRTaXplLnVuc2FmZUdldCgpKTsKKyAgICByZXR1
cm4gdHJ5TWFsbG9jKGtpbmQsIGNoZWNrZWRTaXplKTsKIH0KIAogdm9pZCogbWFsbG9jKEtpbmQg
a2luZCwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCmluZGV4IDljMTVlN2YxZjA5MDRj
YjE0OTA2NzUyYmU3Yjc2YTY4MGNmZjc1ZTEuLmRlNDZkOThmMWJhMmQzOTFiZjc3NjMyNjFjYzk5
OWM0NjNkODliNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCkBAIC04MzUsNyArODM1LDcgQEAgU3Ry
aW5nIHVzZXJWaXNpYmxlVVJMKGNvbnN0IENTdHJpbmcmIHVybCkKICAgICBidWZmZXJMZW5ndGgg
PSBidWZmZXJMZW5ndGggKiAzICsgMTsgLy8gVGhlIGJ1ZmZlciBzaG91bGQgYmUgbGFyZ2UgZW5v
dWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3Rlci4KICAgICBpZiAoYnVmZmVyTGVuZ3RoLmhh
c092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBWZWN0b3I8Y2hhciwgdXJs
Qnl0ZXNCdWZmZXJMZW5ndGg+IGFmdGVyKGJ1ZmZlckxlbmd0aC51bnNhZmVHZXQoKSk7CisgICAg
VmVjdG9yPGNoYXIsIHVybEJ5dGVzQnVmZmVyTGVuZ3RoPiBhZnRlcihidWZmZXJMZW5ndGgudmFs
dWUoKSk7CiAKICAgICBjaGFyKiBxID0gYWZ0ZXIuZGF0YSgpOwogICAgIHsKQEAgLTg3NSw3ICs4
NzUsNyBAQCBTdHJpbmcgdXNlclZpc2libGVVUkwoY29uc3QgQ1N0cmluZyYgdXJsKQogICAgICAg
ICAvLyB0aGVuIHdlIHdpbGwgY29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm
ZmVyIAogICAgICAgICAvLyBhcyB3ZSBjb252ZXJ0LgogICAgICAgICBpbnQgYWZ0ZXJsZW5ndGgg
PSBxIC0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICBjaGFyKiBwID0gYWZ0ZXIuZGF0YSgpICsgYnVm
ZmVyTGVuZ3RoLnVuc2FmZUdldCgpIC0gYWZ0ZXJsZW5ndGggLSAxOworICAgICAgICBjaGFyKiBw
ID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoLnZhbHVlKCkgLSBhZnRlcmxlbmd0aCAtIDE7
CiAgICAgICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBj
b3BpZXMgdHJhaWxpbmcgJ1wwJwogICAgICAgICBjaGFyKiBxID0gYWZ0ZXIuZGF0YSgpOwogICAg
ICAgICB3aGlsZSAoKnApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCmluZGV4IGJlMWE3ZTY3MTBjMDAzMjY1
MmU0ODM4MDk0ZWUwZWM3ZjJjODk5N2MuLjE1YTY4YjMzMWZhMDAxZjVmOTExMGEzNTI2MTQxNmE1
YjEyYzFkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApAQCAtMjE2NSw3ICsyMTY1LDcgQEAgRXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6
OnBhcnNlSVB2NFBpZWNlKEMKICAgICAgICAgfQogICAgICAgICBpZiAoKml0ZXJhdG9yID09ICcu
JykgewogICAgICAgICAgICAgQVNTRVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlLnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LnZhbHVlKCk7CiAgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgICAgICBj
YXNlIFN0YXRlOjpVbmtub3duQmFzZToKQEAgLTIyMTcsNyArMjIxNyw3IEBAIEV4cGVjdGVkPHVp
bnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJz
ZUlQdjRQaWVjZShDCiAgICAgICAgIH0KICAgICB9CiAgICAgQVNTRVJUKCF2YWx1ZS5oYXNPdmVy
Zmxvd2VkKCkpOwotICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gdmFs
dWUudmFsdWUoKTsKIH0KIAogQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNp
emVfdCBleHBvbmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oCmluZGV4IDU0NGI4ZGZmODBkMmFmZjc0NjIx
MjU2MTdhM2I5ZTdhODU2MWY3ZWUuLjViYzhkOGI0MTM5MmUwNGY1MGQ0OTQyNmI4ZjBiOTdlODM5
ZDQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmgKKysrIGIvU291
cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaApAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgVW5pcXVl
QXJyYXlNYWtlcjx0cnVlLCBUPiB7CiAgICAgICAgIC8vIERvIG5vdCB1c2UgcGxhY2VtZW50IG5l
dyBsaWtlIGBuZXcgKHN0b3JhZ2UpIFRbc2l6ZV0oKWAuIGBuZXcgVFtzaXplXSgpYCByZXF1aXJl
cwogICAgICAgICAvLyBsYXJnZXIgc3RvcmFnZSB0aGFuIHRoZSBgc2l6ZW9mKFQpICogc2l6ZWAg
c3RvcmFnZSBzaW5jZSBpdCB3YW50IHRvIHN0b3JlIGBzaXplYAogICAgICAgICAvLyB0byBzb21l
d2hlcmUuCi0gICAgICAgIFQqIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxUKj4oVW5pcXVlQXJyYXlN
YWxsb2M6Om1hbGxvYygoQ2hlY2tlZDxzaXplX3Q+KHNpemVvZihUKSkgKiBzaXplKS51bnNhZmVH
ZXQoKSkpOworICAgICAgICBUKiBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8VCo+KFVuaXF1ZUFycmF5
TWFsbG9jOjptYWxsb2MoKENoZWNrZWQ8c2l6ZV90PihzaXplb2YoVCkpICogc2l6ZSkudmFsdWUo
KSkpOwogICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6aW5pdGlhbGl6ZShzdG9yYWdl
LCBzdG9yYWdlICsgc2l6ZSk7CiAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKHN0b3JhZ2UpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KaW5kZXggNDVkMmI0ZGM0YjhhOGRm
ZjJhNWYxOWU4NmJmMDgxMmJkMDQ0NjFiNC4uMzA2M2Y4NTFhZjRlYjFmMzVhYzNiMTk1NmUwOGEy
NzlhY2I2ZmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMu
bW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTE5Miw3ICsx
OTIsNyBAQCBzdGF0aWMgTlNEYXRhICpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAq
c3RyaW5nKQogICAgIGlmIChtYWxsb2NMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAotICAgIGNoYXIqIG91dEJ5dGVzID0gc3RhdGljX2Nhc3Q8Y2hhciAq
PihtYWxsb2MobWFsbG9jTGVuZ3RoLnVuc2FmZUdldCgpKSk7CisgICAgY2hhciogb3V0Qnl0ZXMg
PSBzdGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhtYWxsb2NMZW5ndGgpKTsKICAgICBjaGFyKiBw
ID0gb3V0Qnl0ZXM7CiAgICAgaW50IG91dExlbmd0aCA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBpbkxlbmd0aDsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1Nv
Y2tldENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9u
LmNwcAppbmRleCAzYWZiNTRhNDFjYjViOGRlMTEzOWIwM2RiMzEzNjQzYzI0MzIwZDkyLi5jY2Nl
YjQ5YzVkMWU4ZTA1YmRkZmRmMzUyYWEzYTZjMWJlODI0NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2ds
aWIvU29ja2V0Q29ubmVjdGlvbi5jcHAKQEAgLTEyNCwyMyArMTI0LDIzIEBAIGJvb2wgU29ja2V0
Q29ubmVjdGlvbjo6cmVhZE1lc3NhZ2UoKQogICAgIG1lbWNweSgmZmxhZ3MsIG1lc3NhZ2VEYXRh
LCBzaXplb2YoTWVzc2FnZUZsYWdzKSk7CiAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKE1lc3Nh
Z2VGbGFncyk7CiAgICAgYXV0byBtZXNzYWdlU2l6ZSA9IHNpemVvZih1aW50MzJfdCkgKyBzaXpl
b2YoTWVzc2FnZUZsYWdzKSArIGJvZHlTaXplOwotICAgIGlmIChtX3JlYWRCdWZmZXIuc2l6ZSgp
IDwgbWVzc2FnZVNpemUudW5zYWZlR2V0KCkpCisgICAgaWYgKG1fcmVhZEJ1ZmZlci5zaXplKCkg
PCBtZXNzYWdlU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2hlY2tlZDxzaXpl
X3Q+IG1lc3NhZ2VOYW1lTGVuZ3RoID0gc3RybGVuKG1lc3NhZ2VEYXRhKTsKICAgICBtZXNzYWdl
TmFtZUxlbmd0aCsrOwotICAgIGlmIChtX3JlYWRCdWZmZXIuc2l6ZSgpIDwgbWVzc2FnZU5hbWVM
ZW5ndGgudW5zYWZlR2V0KCkpIHsKKyAgICBpZiAobV9yZWFkQnVmZmVyLnNpemUoKSA8IG1lc3Nh
Z2VOYW1lTGVuZ3RoKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgYXV0byBpdCA9IG1fbWVzc2FnZUhhbmRs
ZXJzLmZpbmQobWVzc2FnZURhdGEpOwogICAgIGlmIChpdCAhPSBtX21lc3NhZ2VIYW5kbGVycy5l
bmQoKSkgewotICAgICAgICBtZXNzYWdlRGF0YSArPSBtZXNzYWdlTmFtZUxlbmd0aC51bnNhZmVH
ZXQoKTsKKyAgICAgICAgbWVzc2FnZURhdGEgKz0gbWVzc2FnZU5hbWVMZW5ndGgudmFsdWUoKTsK
ICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gcGFyYW1ldGVyczsKICAgICAgICAgaWYgKCFpdC0+
dmFsdWUuZmlyc3QuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIEdVbmlxdWVQdHI8R1ZhcmlhbnRU
eXBlPiB2YXJpYW50VHlwZShnX3ZhcmlhbnRfdHlwZV9uZXcoaXQtPnZhbHVlLmZpcnN0LmRhdGEo
KSkpOwotICAgICAgICAgICAgc2l6ZV90IHBhcmFtZXRlcnNTaXplID0gYm9keVNpemUudW5zYWZl
R2V0KCkgLSBtZXNzYWdlTmFtZUxlbmd0aC51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIHNpemVf
dCBwYXJhbWV0ZXJzU2l6ZSA9IGJvZHlTaXplLnZhbHVlKCkgLSBtZXNzYWdlTmFtZUxlbmd0aC52
YWx1ZSgpOwogICAgICAgICAgICAgLy8gZ192YXJpYW50X25ld19mcm9tX2RhdGEoKSByZXF1aXJl
cyB0aGUgbWVtb3J5IHRvIGJlIHByb3Blcmx5IGFsaWduZWQgZm9yIHRoZSB0eXBlIGJlaW5nIGxv
YWRlZCwKICAgICAgICAgICAgIC8vIGJ1dCBpdCdzIG5vdCBwb3NzaWJsZSB0byBrbm93IHRoZSBh
bGlnbm1lbnQgYmVjYXVzZSBnX3ZhcmlhbnRfdHlwZV9pbmZvX3F1ZXJ5KCkgaXMgbm90IHB1Ymxp
YyBBUEkuCiAgICAgICAgICAgICAvLyBTaW5jZSBHTGliIDIuNjAgZ192YXJpYW50X25ld19mcm9t
X2RhdGEoKSBhbHJlYWR5IGNoZWNrcyB0aGUgYWxpZ25tZW50IGFuZCByZWFsbG9jYXRlcyB0aGUg
YnVmZmVyCkBAIC0xNjMsOSArMTYzLDkgQEAgYm9vbCBTb2NrZXRDb25uZWN0aW9uOjpyZWFkTWVz
c2FnZSgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1fcmVh
ZEJ1ZmZlci5zaXplKCkgPiBtZXNzYWdlU2l6ZS51bnNhZmVHZXQoKSkgewotICAgICAgICBzdGQ6
Om1lbW1vdmUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLmRhdGEoKSArIG1lc3Nh
Z2VTaXplLnVuc2FmZUdldCgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpIC0gbWVzc2FnZVNpemUudW5z
YWZlR2V0KCkpOwotICAgICAgICBtX3JlYWRCdWZmZXIuc2hyaW5rKG1fcmVhZEJ1ZmZlci5zaXpl
KCkgLSBtZXNzYWdlU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgaWYgKG1fcmVhZEJ1ZmZlci5zaXpl
KCkgPiBtZXNzYWdlU2l6ZSkgeworICAgICAgICBzdGQ6Om1lbW1vdmUobV9yZWFkQnVmZmVyLmRh
dGEoKSwgbV9yZWFkQnVmZmVyLmRhdGEoKSArIG1lc3NhZ2VTaXplLnZhbHVlKCksIG1fcmVhZEJ1
ZmZlci5zaXplKCkgLSBtZXNzYWdlU2l6ZS52YWx1ZSgpKTsKKyAgICAgICAgbV9yZWFkQnVmZmVy
LnNocmluayhtX3JlYWRCdWZmZXIuc2l6ZSgpIC0gbWVzc2FnZVNpemUudmFsdWUoKSk7CiAgICAg
fSBlbHNlCiAgICAgICAgIG1fcmVhZEJ1ZmZlci5zaHJpbmsoMCk7CiAKQEAgLTE5MSwxMCArMTkx
LDEwIEBAIHZvaWQgU29ja2V0Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoY29uc3QgY2hhciogbWVz
c2FnZU5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgc2l6ZV90IHByZXZpb3VzQnVmZmVyU2l6ZSA9IG1fd3JpdGVCdWZmZXIuc2l6ZSgpOwotICAg
IG1fd3JpdGVCdWZmZXIuZ3JvdyhwcmV2aW91c0J1ZmZlclNpemUgKyBzaXplb2YodWludDMyX3Qp
ICsgc2l6ZW9mKE1lc3NhZ2VGbGFncykgKyBib2R5U2l6ZS51bnNhZmVHZXQoKSk7CisgICAgbV93
cml0ZUJ1ZmZlci5ncm93KHByZXZpb3VzQnVmZmVyU2l6ZSArIHNpemVvZih1aW50MzJfdCkgKyBz
aXplb2YoTWVzc2FnZUZsYWdzKSArIGJvZHlTaXplLnZhbHVlKCkpOwogCiAgICAgYXV0byogbWVz
c2FnZURhdGEgPSBtX3dyaXRlQnVmZmVyLmRhdGEoKSArIHByZXZpb3VzQnVmZmVyU2l6ZTsKLSAg
ICB1aW50MzJfdCBib2R5U2l6ZUhlYWRlciA9IGh0b25sKGJvZHlTaXplLnVuc2FmZUdldCgpKTsK
KyAgICB1aW50MzJfdCBib2R5U2l6ZUhlYWRlciA9IGh0b25sKGJvZHlTaXplLnZhbHVlKCkpOwog
ICAgIG1lbWNweShtZXNzYWdlRGF0YSwgJmJvZHlTaXplSGVhZGVyLCBzaXplb2YodWludDMyX3Qp
KTsKICAgICBtZXNzYWdlRGF0YSArPSBzaXplb2YodWludDMyX3QpOwogICAgIE1lc3NhZ2VGbGFn
cyBmbGFncyA9IDA7CkBAIC0yMDMsOCArMjAzLDggQEAgdm9pZCBTb2NrZXRDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZShjb25zdCBjaGFyKiBtZXNzYWdlTmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMK
ICNlbmRpZgogICAgIG1lbWNweShtZXNzYWdlRGF0YSwgJmZsYWdzLCBzaXplb2YoTWVzc2FnZUZs
YWdzKSk7CiAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKE1lc3NhZ2VGbGFncyk7Ci0gICAgbWVt
Y3B5KG1lc3NhZ2VEYXRhLCBtZXNzYWdlTmFtZSwgbWVzc2FnZU5hbWVMZW5ndGgudW5zYWZlR2V0
KCkpOwotICAgIG1lc3NhZ2VEYXRhICs9IG1lc3NhZ2VOYW1lTGVuZ3RoLnVuc2FmZUdldCgpOwor
ICAgIG1lbWNweShtZXNzYWdlRGF0YSwgbWVzc2FnZU5hbWUsIG1lc3NhZ2VOYW1lTGVuZ3RoKTsK
KyAgICBtZXNzYWdlRGF0YSArPSBtZXNzYWdlTmFtZUxlbmd0aC52YWx1ZSgpOwogICAgIGlmIChw
YXJhbWV0ZXJzKQogICAgICAgICBtZW1jcHkobWVzc2FnZURhdGEsIGdfdmFyaWFudF9nZXRfZGF0
YShwYXJhbWV0ZXJzKSwgcGFyYW1ldGVyc1NpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0NTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcApp
bmRleCBiNThkOWVhNTQ5YzA3YWMyNjI3MDJkZDdmYzEyNGI4MjIxN2ZjNGQ0Li5iOWIzNDhmODli
NzExNjNkZThjNDZkOWQyM2Y3YTlhMzFjN2IwYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0NTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihD
U3RyaW5nQnVmZmVyKTsKIFJlZjxDU3RyaW5nQnVmZmVyPiBDU3RyaW5nQnVmZmVyOjpjcmVhdGVV
bmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgLy8gVGhlICsxIGlzIGZvciB0aGUg
dGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIuCi0gICAgYXV0byBzaXplID0gKENoZWNrZWQ8c2l6
ZV90PihzaXplb2YoQ1N0cmluZ0J1ZmZlcikpICsgbGVuZ3RoICsgMVUpLnVuc2FmZUdldCgpOwor
ICAgIGF1dG8gc2l6ZSA9IChDaGVja2VkPHNpemVfdD4oc2l6ZW9mKENTdHJpbmdCdWZmZXIpKSAr
IGxlbmd0aCArIDFVKS52YWx1ZSgpOwogICAgIGF1dG8qIHN0cmluZ0J1ZmZlciA9IHN0YXRpY19j
YXN0PENTdHJpbmdCdWZmZXIqPihDU3RyaW5nQnVmZmVyTWFsbG9jOjptYWxsb2Moc2l6ZSkpOwog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdCdWZmZXIpIENTdHJpbmdC
dWZmZXIobGVuZ3RoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1ZmZlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWZmZXIuaAppbmRleCBmY2Yz
OTI0NDFiZmFmMjU5MTQ5M2M0YTk3NTdjMjZhNmY4ZGE2NWZkLi40NTM4N2Q4MGFiZGQ4YzBlYTk0
OGU1YzYwOTg4ZDliM2I0NTEzYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVmZmVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3RyaW5nQnVmZmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBTdHJpbmdCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0
aCkKLSAgICAgICAgLCBtX2RhdGEobV9sZW5ndGggPyBzdGF0aWNfY2FzdDxDaGFyVHlwZSo+KFN0
cmluZ0J1ZmZlck1hbGxvYzo6bWFsbG9jKChDaGVja2VkPHNpemVfdD4obV9sZW5ndGgpICogc2l6
ZW9mKENoYXJUeXBlKSkudW5zYWZlR2V0KCkpKSA6IG51bGxwdHIpCisgICAgICAgICwgbV9kYXRh
KG1fbGVuZ3RoID8gc3RhdGljX2Nhc3Q8Q2hhclR5cGUqPihTdHJpbmdCdWZmZXJNYWxsb2M6Om1h
bGxvYygoQ2hlY2tlZDxzaXplX3Q+KG1fbGVuZ3RoKSAqIHNpemVvZihDaGFyVHlwZSkpLnZhbHVl
KCkpKSA6IG51bGxwdHIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXJKU09OLmNwcAppbmRleCA4M2VkMzhiMTk4MTk0YTA0NjkyZWJlMWE2MjhiZTgzZjM3
MzFhYjRmLi5kNjNlYzlmMTFhMjdjZGI1OGY2N2NiOGE2NmIxN2E1MjFkMGI5YzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kUXVvdGVkSlNPTlN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIG1heGltdW0gbGVuZ3RoIGJlZm9yZSBj
YWxsaW5nIHJvdW5kVXBQb3dlck9mVHdvIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiByZXR1cm5zIDAg
Zm9yIHZhbHVlcyBpbiB0aGUgcmFuZ2UgWzJeMzEsIDJeMzItMl0uCiAgICAgLy8gRklYTUU6IElu
c3RlYWQsIHJvdW5kVXBUb1Bvd2VyT2ZUd28gc2hvdWxkIGJlIGZpeGVkIHRvIGRvIHNvbWV0aGlu
ZyBtb3JlIHVzZWZ1bCBpbiB0aG9zZSBjYXNlcywgcGVyaGFwcyB1c2luZyBjaGVja2VkIG9yIHNh
dHVyYXRlZCBhcml0aG1ldGljLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYwODYKLSAgICBhdXRvIGFsbG9jYXRpb25TaXplID0gbWF4aW11bUNhcGFj
aXR5UmVxdWlyZWQudW5zYWZlR2V0KCk7CisgICAgYXV0byBhbGxvY2F0aW9uU2l6ZSA9IG1heGlt
dW1DYXBhY2l0eVJlcXVpcmVkLnZhbHVlKCk7CiAgICAgaWYgKGFsbG9jYXRpb25TaXplID4gU3Ry
aW5nOjpNYXhMZW5ndGgpIHsKICAgICAgICAgZGlkT3ZlcmZsb3coKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCmluZGV4IDJlMzhlZjc3ODk5
YTNjM2ViYWZlYjUxZGE5NDA2Y2ZhYmRkZjczNzEuLjgzMGMxNTlmYmE2NjI0MzQwYmI4MjI0MGE5
Y2ViNjFkODRmMDVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgK
QEAgLTQzNCw3ICs0MzQsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmluZ0Zyb21BZGFwdGVycyhTdHJp
bmdUeXBlQWRhcHRlciBhZGFwdGVyLCBTdHJpbmdUeXBlQWRhcHRlcnMgLgogICAgIGlmIChzdW0u
aGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdW0udW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3VtLnZh
bHVlKCk7CiAgICAgQVNTRVJUKGxlbmd0aCA8PSBTdHJpbmc6Ok1heExlbmd0aCk7CiAgICAgaWYg
KGFyZThCaXQoYWRhcHRlciwgYWRhcHRlcnMuLi4pKSB7CiAgICAgICAgIExDaGFyKiBidWZmZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAyYTVkYWQyNzNiY2IyMzJlYWM4YjEwYmQ1
OTMwYTU1YWY1ZWNmZjAuLjRkZTA2ZWY4YmExNjFkMmU0NTBmZjEzMmVlYzU5ZGViYTQwZTE4OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC0xMTYxLDcgKzExNjEsNyBAQCBpbmxpbmUg
U3RyaW5nSW1wbDo6U3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcpCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxz
aXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCiB7Ci0gICAgcmV0dXJuICh0YWlsT2Zmc2V0PFQ+KCkg
KyB0YWlsRWxlbWVudENvdW50ICogc2l6ZW9mKFQpKS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4g
KHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2YoVCkpLnZhbHVlKCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCmluZGV4IGUxOWFmZWRmNWNhYmFj
NjRjNmUwMDUzMTgyMDY4OTcwZGM3Mjk3ZTkuLjM3OGZmMTU2MGE1OTM1YmI5M2Y3Y2UyNmExM2Mw
OGU1Y2I0ZjkwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oCkBAIC05Myw3ICs5Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5CiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIHJldHVybiB2YWx1
ZS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgSW50ZWdyYWxUeXBlPiBzdGQ6Om9wdGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJ
bnRlZ2VyKFN0cmluZ1ZpZXcgc3RyaW5nLCB1aW50OF90IGJhc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA1YTUw
ZmZkMTNmNTA5Y2ViYzI1YzllNmQyYWVjMjMwNzliZmFkMWJhLi4xMzM5YjE4YTYyMmQzYjBkYTVi
ZmUyZmM0YWQzZjQxYjE1N2I5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM0MTksNyArMzQxOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChsZW5ndGggJiYgKEludFNpemUod2lkdGgsIGhlaWdodCku
YXJlYSgpICogNCkudW5zYWZlR2V0KCkgIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAobGVu
Z3RoICYmIChJbnRTaXplKHdpZHRoLCBoZWlnaHQpLmFyZWEoKSAqIDQpLnZhbHVlKCkgIT0gbGVu
Z3RoKSB7CiAgICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5j
b2RlclN0cmVhbUVuY29kZXIuY3BwCmluZGV4IDMwZmUwN2RlNTU4ZWFiY2UzMzY5NjM1MDEwNTQ5
MjViZDcyNGYyZjIuLjA2Mzg3NGIwZmQxZTM0NDg4NTFmZDZlMjU3ZTA1MTlmY2Y5YjRiMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBUZXh0RW5jb2RlclN0cmVhbUVuY29k
ZXI6OmVuY29kZShjb25zdCBTdHJpbmcmIGlucHV0KQogICAgIGlmICghdmlldy5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMoV1RG
OjpjaGVja2VkUHJvZHVjdDxzaXplX3Q+KHZpZXcubGVuZ3RoKCkgKyAxLCAzKS51bnNhZmVHZXQo
KSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzKFdURjo6Y2hlY2tlZFByb2R1Y3Q8c2l6ZV90
Pih2aWV3Lmxlbmd0aCgpICsgMSwgMykudmFsdWUoKSk7CiAgICAgc2l6ZV90IGJ5dGVzV3JpdHRl
biA9IDA7CiAKICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHZpZXcubGVuZ3RoKCk7
IGNwdHIrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDhhZTQ4OTE1NjNlYTc3
ZTYwZDEzZTU0OTFkYmQ1NTA3MDlhZjE5MTMuLjY0MDMwZWI4N2JmOTUxYzBiYjcxNWQ5NDhjNDlj
NGI4MWJlMThmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQxNSw3ICs0MTUs
NyBAQCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKCkKICAgICBm
b3IgKGF1dG8mIHN0cmluZyA6IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXApCiAgICAgICAgIGxl
bmd0aCArPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAg
cmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgudW5zYWZlR2V0KCkpOworICAgIHJlc3VsdC5y
ZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IG1ha2VSZXZl
cnNlZFJhbmdlKG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXApKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKHN0cmluZyk7CiAgICAgcmVzdWx0LmFwcGVuZCh0YWtlTWFya3VwKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggMDZjODQzMjFiYjI5MWZiMTc4NjI1ZjNkNzgz
NDM4ZWU4ODg0NmY5My4uYmI4Y2E4NzNlMzRiMzY3ZTkxYjQ5MjdiNzhiN2NlMzhlZjY0MTI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAg
Rm9ybUNvbnRyb2xTdGF0ZSBGaWxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNv
bnN0CiAgICAgYXV0byBsZW5ndGggPSBDaGVja2VkPHNpemVfdD4obV9maWxlTGlzdC0+ZmlsZXMo
KS5zaXplKCkpICogQ2hlY2tlZDxzaXplX3Q+KDIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gc3Rh
dGVWZWN0b3I7Ci0gICAgc3RhdGVWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgu
dW5zYWZlR2V0KCkpOworICAgIHN0YXRlVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVu
Z3RoKTsKICAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2ZpbGVMaXN0LT5maWxlcygpKSB7CiAgICAg
ICAgIHN0YXRlVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChmaWxlLT5wYXRoKCkpOwogICAgICAgICBz
dGF0ZVZlY3Rvci51bmNoZWNrZWRBcHBlbmQoZmlsZS0+bmFtZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmNwcAppbmRleCA5MTZkZmIwZjJiOGZlMjllNWYzZmMyODE1NjM4YzY0MDFiNTcxNGQ2
Li5iN2Q1M2IzNDA1MDNiMmVmNmNhMDk4OGY2ZDc0ZTBiNDg4NmY3N2IzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURhdGEuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgYXV0byBkYXRhU2l6ZSA9IGNv
bXB1dGVEYXRhU2l6ZShzaXplKTsKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKKyAg
ICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKGRhdGFTaXplKTsKICAgICBpZiAoIWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5y
ZWxlYXNlTm9uTnVsbCgpLCBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQikpOwpAQCAtNzcsNyAr
NzcsNyBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplKQogUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgUHJlZGVmaW5lZENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFT
aXplKHNpemUpOwotICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgZGF0YVNpemUu
dW5zYWZlR2V0KCkgIT0gYnl0ZUFycmF5LT5sZW5ndGgoKSkKKyAgICBpZiAoZGF0YVNpemUuaGFz
T3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNp
emUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JTcGFjZSkpOwpAQCAtOTAsNyArOTAsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIHJvd3MsIHVuc2lnbgogICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiQ2Fubm90IGFsbG9jYXRl
IGEgYnVmZmVyIG9mIHRoaXMgc2l6ZSJfcyB9OwogCi0gICAgYXV0byBieXRlQXJyYXkgPSBVaW50
OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS51bnNhZmVHZXQo
KSk7CisgICAgYXV0byBieXRlQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChkYXRhU2l6ZSk7CiAgICAgaWYgKCFieXRlQXJyYXkpIHsKICAgICAgICAgLy8g
RklYTUU6IERvZXMgdGhpcyBuZWVkIHRvIGJlIGEgInJlYWwiIG91dCBvZiBtZW1vcnkgZXJyb3Ig
d2l0aCBzZXRPdXRPZk1lbW9yeUVycm9yIGNhbGxlZCBvbiBpdD8KICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CkBAIC0xMTAsNyArMTEw
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2ln
bmVkIHN3LCB1bnNpZ25lZCBzaCwgc3RkOjpvcHQKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZs
b3dlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkNhbm5vdCBh
bGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlzIHNpemUiX3MgfTsKIAotICAgIGF1dG8gYnl0ZUFycmF5
ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUudW5z
YWZlR2V0KCkpOworICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUpOwogICAgIGlmICghYnl0ZUFycmF5KSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFsIiBvdXQgb2YgbWVtb3J5
IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24gaXQ/CiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9yeSJfcyB9OwpAQCAtMTM3
LDcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0
ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5CiAKICAgICBJbnRTaXplIHNpemUo
c3csIGhlaWdodCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsK
LSAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgp
ICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQo
KSB8fCBkYXRhU2l6ZSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgUmFuZ2VFcnJvciB9OwogCiAgICAgYXV0byBjb2xvclNwYWNlID0gY29tcHV0ZUNv
bG9yU3BhY2Uoc2V0dGluZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKaW5kZXggN2EyNzVkN2MzMTU3NWJmZjgwOThjMmQ5YjI2ZWQ4ZWFmMzZlZmE5OC4u
OWExZDQ3MjE1MTFjZjllMDU0YjZkOGVlOWEyZDJiYWViMmUyMTAxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC05OTYsNyArOTk2LDcgQEAgc3Rh
dGljIGJvb2wgaXNFbGVtZW50UmVjdE1vc3RseUluTWFpbkZyYW1lKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmIGVsZW1lbnQpCiAKICAgICBlbGVtZW50UmVjdEluTWFpbkZyYW1lLmludGVyc2VjdCht
YWluRnJhbWVSZWN0QWRqdXN0ZWRGb3JTY3JvbGxQb3NpdGlvbik7CiAKLSAgICByZXR1cm4gZWxl
bWVudFJlY3RJbk1haW5GcmFtZS5hcmVhKCkudW5zYWZlR2V0KCkgPiB0b3RhbEVsZW1lbnRBcmVh
LnVuc2FmZUdldCgpIC8gMjsKKyAgICByZXR1cm4gZWxlbWVudFJlY3RJbk1haW5GcmFtZS5hcmVh
KCkgPiB0b3RhbEVsZW1lbnRBcmVhIC8gMjsKIH0KIAogc3RhdGljIGJvb2wgaXNFbGVtZW50TGFy
Z2VSZWxhdGl2ZVRvTWFpbkZyYW1lKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDJiMWIwZjFlZWNiNTE1M2VlYjUyOWJjNzk0OWNhYTNhM2E4NTcwNzAuLmVj
Nzc1OWQwYTlhZDJlMDE2OTBmNDY0Yzc1MmYwNDBkZjI0MDFkZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01
MDksNyArNTA5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6c2xpY2VBcnJheUJ1ZmZlclZpZXcoY29uc3QgY2hhcioKICAgICBDaGVja2VkPEdDR0x1
aW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFNyY09mZnNldChzcmNPZmZzZXQpOwogICAgIENo
ZWNrZWQ8R0NHTHVpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQnl0ZVNyY09mZnNldCA9IGNo
ZWNrZWRTcmNPZmZzZXQgKiBjaGVja2VkRWxlbWVudFNpemU7CiAgICAgQ2hlY2tlZDxHQ0dMdWlu
dCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRMZW5ndGgobGVuZ3RoKTsKLSAgICBpZiAoIWNoZWNr
ZWRMZW5ndGgudW5zYWZlR2V0KCkpIHsKKyAgICBpZiAoIWNoZWNrZWRMZW5ndGgpIHsKICAgICAg
ICAgLy8gRGVmYXVsdCB0byB0aGUgcmVtYWluZGVyIG9mIHRoZSBidWZmZXIuCiAgICAgICAgIGNo
ZWNrZWRMZW5ndGggPSBkYXRhLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgY2hlY2tlZExlbmd0aCAv
PSBlbGVtZW50U2l6ZTsKQEAgLTUxOSwxMyArNTE5LDEzIEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnNsaWNlQXJyYXlCdWZmZXJWaWV3KGNvbnN0IGNo
YXIqCiAKICAgICBpZiAoY2hlY2tlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tlZEJ5
dGVTcmNPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpCiAgICAgICAgIHx8IGNoZWNrZWRCeXRlTGVuZ3Ro
Lmhhc092ZXJmbG93ZWQoKQotICAgICAgICB8fCBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVH
ZXQoKSA+IGRhdGEuYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGNoZWNrZWRCeXRlTGVuZ3RoLnVu
c2FmZUdldCgpID4gZGF0YS5ieXRlTGVuZ3RoKCkgLSBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNh
ZmVHZXQoKSkgeworICAgICAgICB8fCBjaGVja2VkQnl0ZVNyY09mZnNldCA+IGRhdGEuYnl0ZUxl
bmd0aCgpCisgICAgICAgIHx8IGNoZWNrZWRCeXRlTGVuZ3RoID4gZGF0YS5ieXRlTGVuZ3RoKCkg
LSBjaGVja2VkQnl0ZVNyY09mZnNldC52YWx1ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJzcmNP
ZmZzZXQgb3IgbGVuZ3RoIGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgcmV0dXJuIGFycmF5QnVmZmVyVmlld1NsaWNlRmFjdG9yeShmdW5j
dGlvbk5hbWUsIGRhdGEsIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQu
dW5zYWZlR2V0KCksIGNoZWNrZWRMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIHJldHVybiBhcnJh
eUJ1ZmZlclZpZXdTbGljZUZhY3RvcnkoZnVuY3Rpb25OYW1lLCBkYXRhLCBkYXRhLmJ5dGVPZmZz
ZXQoKSArIGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnZhbHVlKCksIGNoZWNrZWRMZW5ndGgpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50IHBhcmFtKQpAQCAtNjExLDE0ICs2MTEsMTQgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51
bSB3cmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghd3JpdGVCdWZmZXItPmFz
c29jaWF0ZUNvcHlCdWZmZXJTdWJEYXRhKCpyZWFkQnVmZmVyLCBjaGVja2VkUmVhZE9mZnNldC51
bnNhZmVHZXQoKSwgY2hlY2tlZFdyaXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkU2l6ZS51
bnNhZmVHZXQoKSkpIHsKKyAgICBpZiAoIXdyaXRlQnVmZmVyLT5hc3NvY2lhdGVDb3B5QnVmZmVy
U3ViRGF0YSgqcmVhZEJ1ZmZlciwgY2hlY2tlZFJlYWRPZmZzZXQsIGNoZWNrZWRXcml0ZU9mZnNl
dCwgY2hlY2tlZFNpemUpKSB7CiAgICAgICAgIHRoaXMtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiY29weUJ1ZmZlclN1YkRhdGEiLCAib2Zmc2V0
IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0
LCBjaGVja2VkUmVhZE9mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZFdyaXRlT2Zmc2V0LnVuc2Fm
ZUdldCgpLCBjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgbV9jb250ZXh0LT5jb3B5QnVm
ZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgY2hlY2tlZFJlYWRPZmZzZXQsIGNo
ZWNrZWRXcml0ZU9mZnNldCwgY2hlY2tlZFNpemUpOwogI2VuZGlmCiAgICAgaWYgKG1fY29udGV4
dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAgLy8gVGhlIGJ1
ZmZlclN1YkRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZmZXIgaXQgZG9lc24ndCBo
YXZlIHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgpAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBzcmNCeXRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY2hl
Y2tlZERlc3RpbmF0aW9uRW5kLnVuc2FmZUdldCgpID4gZHN0RGF0YUxlbmd0aCkgeworICAgIGlm
IChjaGVja2VkRGVzdGluYXRpb25FbmQgPiBkc3REYXRhTGVuZ3RoKSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVy
U3ViRGF0YSIsICJlbmQgb2Ygd3JpdHRlbiBkZXN0aW5hdGlvbiBpcyBwYXN0IHRoZSBlbmQgb2Yg
dGhlIGJ1ZmZlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjgwLDcgKzY4MCw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIGxvbmcgbG9uZyBzcmNCeXRlCiAgICAgQ2hlY2tlZDxHQ0dMaW50cHRyLCBSZWNvcmRP
dmVyZmxvdz4gY2hlY2tlZENvcHlMZW5ndGhQdHIoY29weUxlbmd0aCk7CiAgICAgQ2hlY2tlZDxH
Q0dMaW50cHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZEVsZW1lbnRTaXplKGVsZW1lbnRTaXpl
KTsKICAgICBhdXRvIGNoZWNrZWRTb3VyY2VFbmQgPSBjaGVja2VkU3JjQnl0ZU9mZnNldCArIGNo
ZWNrZWRDb3B5TGVuZ3RoUHRyICogY2hlY2tlZEVsZW1lbnRTaXplOwotICAgIGlmIChjaGVja2Vk
U291cmNlRW5kLmhhc092ZXJmbG93ZWQoKSB8fCBjaGVja2VkU291cmNlRW5kLnVuc2FmZUdldCgp
ID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKKyAgICBpZiAoY2hlY2tlZFNvdXJjZUVuZC5oYXNP
dmVyZmxvd2VkKCkgfHwgY2hlY2tlZFNvdXJjZUVuZCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZB
TFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQgb3V0c2lkZSB0
aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0zNDQ0LDE0ICszNDQ0LDE0IEBAIHN0ZDo6b3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uCiAgICAgfQog
ICAgIHN3aXRjaCAoYnVmZmVyKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1I6
Ci0gICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8IDQpIHsKKyAgICAgICAgaWYg
KGNoZWNrZWRTaXplIDwgNCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkg
c2l6ZSAvIHNyY09mZnNldCIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDQp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlNURU5DSUw6Ci0gICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8
IDEpIHsKKyAgICAgICAgaWYgKGNoZWNrZWRTaXplIDwgMSkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFt
ZSwgImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIpOwogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwCmluZGV4IDNlMzJmMTUxNjY1Y2JmYTg0MGM1ZjVkMjMxZTg5Yjg1ZTZkMDQxOGEuLjM5NmQ5
NmZlMGU2NmQ4ZjhhYzVmMzVlYmY2ZGIwNWNjNzA0ZmY4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIFdlYkdM
QnVmZmVyOjphc3NvY2lhdGVCdWZmZXJTdWJEYXRhSW1wbChHQ0dMaW50cHRyIG9mZnNldCwgY29u
c3Qgdm9pZCogZGF0YQogICAgICAgICBDaGVja2VkPEdDR0xpbnRwdHIsIFJlY29yZE92ZXJmbG93
PiBjaGVja2VkQnVmZmVyT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIENoZWNrZWQ8R0NHTHNpemVp
cHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZERhdGFMZW5ndGgoYnl0ZUxlbmd0aCk7CiAgICAg
ICAgIENoZWNrZWQ8R0NHTGludHB0ciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRCdWZmZXJNYXgg
PSBjaGVja2VkQnVmZmVyT2Zmc2V0ICsgY2hlY2tlZERhdGFMZW5ndGg7Ci0gICAgICAgIGlmIChj
aGVja2VkQnVmZmVyTWF4Lmhhc092ZXJmbG93ZWQoKSB8fCBvZmZzZXQgPiBtX2J5dGVMZW5ndGgg
fHwgY2hlY2tlZEJ1ZmZlck1heC51bnNhZmVHZXQoKSA+IG1fYnl0ZUxlbmd0aCkKKyAgICAgICAg
aWYgKGNoZWNrZWRCdWZmZXJNYXguaGFzT3ZlcmZsb3dlZCgpIHx8IG9mZnNldCA+IG1fYnl0ZUxl
bmd0aCB8fCBjaGVja2VkQnVmZmVyTWF4ID4gbV9ieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTg5LDEyICsxODksMTIgQEAgYm9vbCBXZWJHTEJ1ZmZl
cjo6YXNzb2NpYXRlQ29weUJ1ZmZlclN1YkRhdGEoY29uc3QgV2ViR0xCdWZmZXImIHJlYWRCdWZm
ZXIsIEdDR0wKICAgICAgICAgQ2hlY2tlZDxHQ0dMaW50cHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hl
Y2tlZFJlYWRCdWZmZXJPZmZzZXQocmVhZE9mZnNldCk7CiAgICAgICAgIENoZWNrZWQ8R0NHTHNp
emVpcHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZERhdGFMZW5ndGgoc2l6ZSk7CiAgICAgICAg
IENoZWNrZWQ8R0NHTGludHB0ciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRSZWFkQnVmZmVyTWF4
ID0gY2hlY2tlZFJlYWRCdWZmZXJPZmZzZXQgKyBjaGVja2VkRGF0YUxlbmd0aDsKLSAgICAgICAg
aWYgKGNoZWNrZWRSZWFkQnVmZmVyTWF4Lmhhc092ZXJmbG93ZWQoKSB8fCByZWFkT2Zmc2V0ID4g
cmVhZEJ1ZmZlci5ieXRlTGVuZ3RoKCkgfHwgY2hlY2tlZFJlYWRCdWZmZXJNYXgudW5zYWZlR2V0
KCkgPiByZWFkQnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgaWYgKGNoZWNrZWRSZWFkQnVm
ZmVyTWF4Lmhhc092ZXJmbG93ZWQoKSB8fCByZWFkT2Zmc2V0ID4gcmVhZEJ1ZmZlci5ieXRlTGVu
Z3RoKCkgfHwgY2hlY2tlZFJlYWRCdWZmZXJNYXggPiByZWFkQnVmZmVyLmJ5dGVMZW5ndGgoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBDaGVja2VkPEdDR0xpbnRwdHIs
IFJlY29yZE92ZXJmbG93PiBjaGVja2VkV3JpdGVCdWZmZXJPZmZzZXQod3JpdGVPZmZzZXQpOwog
ICAgICAgICBDaGVja2VkPEdDR0xpbnRwdHIsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkV3JpdGVC
dWZmZXJNYXggPSBjaGVja2VkV3JpdGVCdWZmZXJPZmZzZXQgKyBjaGVja2VkRGF0YUxlbmd0aDsK
LSAgICAgICAgaWYgKGNoZWNrZWRXcml0ZUJ1ZmZlck1heC5oYXNPdmVyZmxvd2VkKCkgfHwgd3Jp
dGVPZmZzZXQgPiBtX2J5dGVMZW5ndGggfHwgY2hlY2tlZFdyaXRlQnVmZmVyTWF4LnVuc2FmZUdl
dCgpID4gbV9ieXRlTGVuZ3RoKQorICAgICAgICBpZiAoY2hlY2tlZFdyaXRlQnVmZmVyTWF4Lmhh
c092ZXJmbG93ZWQoKSB8fCB3cml0ZU9mZnNldCA+IG1fYnl0ZUxlbmd0aCB8fCBjaGVja2VkV3Jp
dGVCdWZmZXJNYXggPiBtX2J5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGNkZTdlODBjMmQ2OGI5OGE4NGNmM2MxYTNmZDhh
MTdkNzgwNDhkNDEuLmFhM2I0OWQwN2JhOWYyMmIzMjcyMTdkMmRlZThlYTQ3YzY5NDY1YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC01MDcsOCArNTA3LDggQEAgc3RhdGljIGJvb2wgY2xpcDJEKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsCiAg
ICAgQ2hlY2tlZDxHQ0dMaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZElucHV0UmlnaHQgPSBD
aGVja2VkPEdDR0xpbnQ+KHgpICsgQ2hlY2tlZDxHQ0dMc2l6ZWk+KHdpZHRoKTsKICAgICBDaGVj
a2VkPEdDR0xpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkSW5wdXRCb3R0b20gPSBDaGVja2Vk
PEdDR0xpbnQ+KHkpICsgQ2hlY2tlZDxHQ0dMc2l6ZWk+KGhlaWdodCk7CiAgICAgaWYgKCFjaGVj
a2VkSW5wdXRSaWdodC5oYXNPdmVyZmxvd2VkKCkgJiYgIWNoZWNrZWRJbnB1dEJvdHRvbS5oYXNP
dmVyZmxvd2VkKCkpIHsKLSAgICAgICAgcmlnaHQgPSBzdGQ6Om1pbihjaGVja2VkSW5wdXRSaWdo
dC51bnNhZmVHZXQoKSwgc291cmNlV2lkdGgpOwotICAgICAgICBib3R0b20gPSBzdGQ6Om1pbihj
aGVja2VkSW5wdXRCb3R0b20udW5zYWZlR2V0KCksIHNvdXJjZUhlaWdodCk7CisgICAgICAgIHJp
Z2h0ID0gc3RkOjptaW4oY2hlY2tlZElucHV0UmlnaHQudmFsdWUoKSwgc291cmNlV2lkdGgpOwor
ICAgICAgICBib3R0b20gPSBzdGQ6Om1pbihjaGVja2VkSW5wdXRCb3R0b20udmFsdWUoKSwgc291
cmNlSGVpZ2h0KTsKICAgICB9CiAKICAgICBpZiAobGVmdCA+PSByaWdodCB8fCB0b3AgPj0gYm90
dG9tKSB7CkBAIC0yNDYwLDEyICsyNDYwLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVEcmF3QXJyYXlzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHCiAg
ICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3RhdGUuCiAgICAgQ2hlY2tl
ZDxHQ0dMaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFN1bSA9IENoZWNrZWQ8R0NHTGludCwg
UmVjb3JkT3ZlcmZsb3c+KGZpcnN0KSArIENoZWNrZWQ8R0NHTGludCwgUmVjb3JkT3ZlcmZsb3c+
KGNvdW50KTsKICAgICBDaGVja2VkPEdDR0xpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJp
bWl0aXZlQ291bnQocHJpbWl0aXZlQ291bnQpOwotICAgIGlmIChjaGVja2VkU3VtLmhhc092ZXJm
bG93ZWQoKSB8fCBjaGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8ICF2YWxp
ZGF0ZVZlcnRleEF0dHJpYnV0ZXMoY2hlY2tlZFN1bS51bnNhZmVHZXQoKSwgY2hlY2tlZFByaW1p
dGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgeworICAgIGlmIChjaGVja2VkU3VtLmhhc092ZXJmbG93
ZWQoKSB8fCBjaGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8ICF2YWxpZGF0
ZVZlcnRleEF0dHJpYnV0ZXMoY2hlY2tlZFN1bSwgY2hlY2tlZFByaW1pdGl2ZUNvdW50KSkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgYXJy
YXlzIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjaWYgIVVTRShBTkdMRSkKLSAg
ICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChjaGVja2VkU3VtLnVuc2FmZUdl
dCgpIC0gMSkpIHsKKyAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChjaGVj
a2VkU3VtLnZhbHVlKCkgLSAxKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8g
YWNjZXNzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgc2ltdWxhdGVkIHZlcnRleEF0dHJpYjAg
YXJyYXkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI1MzcsOCArMjUzNyw4
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxlbWVudHMo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCi0gICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUodHlwZSwgbnVt
RWxlbWVudHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNr
ZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUlu
ZGV4QXJyYXlQcmVjaXNlKGNoZWNrZWRDb3VudC51bnNhZmVHZXQoKSwgdHlwZSwgc3RhdGljX2Nh
c3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0
dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkp
IHsKKyAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZSh0eXBlLCBudW1FbGVt
ZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFBy
aW1pdGl2ZUNvdW50KSkgeworICAgICAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2Uo
Y2hlY2tlZENvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBudW1F
bGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tl
ZFByaW1pdGl2ZUNvdW50KSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRv
IGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5cyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CkBAIC01MzI3LDcgKzUzMjcsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBU
ZQogICAgIHRvdGFsICo9IEpTQzo6ZWxlbWVudFNpemUocGl4ZWxzLT5nZXRUeXBlKCkpOwogICAg
IHRvdGFsICs9IHRvdGFsQnl0ZXNSZXF1aXJlZDsKICAgICB0b3RhbCArPSBza2lwQnl0ZXM7Ci0g
ICAgaWYgKHRvdGFsLmhhc092ZXJmbG93ZWQoKSB8fCBwaXhlbHMtPmJ5dGVMZW5ndGgoKSA8IHRv
dGFsLnVuc2FmZUdldCgpKSB7CisgICAgaWYgKHRvdGFsLmhhc092ZXJmbG93ZWQoKSB8fCBwaXhl
bHMtPmJ5dGVMZW5ndGgoKSA8IHRvdGFsKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiQXJyYXlC
dWZmZXJWaWV3IG5vdCBiaWcgZW5vdWdoIGZvciByZXF1ZXN0Iik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC02ODE5LDcgKzY4MTksNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0
aQogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInRvbyBsYXJnZSBkaW1lbnNpb25zIik7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNo
ZWNrZWRCeXRlc1JlcXVpcmVkLnVuc2FmZUdldCgpOworICAgICAgICBieXRlc1JlcXVpcmVkID0g
Y2hlY2tlZEJ5dGVzUmVxdWlyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKQEAgLTY4MzMsNyArNjgzMyw3IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0Rh
dGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAidG9vIGxhcmdlIGRp
bWVuc2lvbnMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAg
ICBieXRlc1JlcXVpcmVkID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQudW5zYWZlR2V0KCk7CisgICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6
CkBAIC03NDEyLDcgKzc0MTIsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0ZQogCiAgICAgQ2hl
Y2tlZDxHQ0dMc2l6ZWlwdHIsIFJlY29yZE92ZXJmbG93PiBidWZmZXJEYXRhU2l6ZShidWZmZXJT
aXplLnZhbHVlKCkpOwogICAgIGJ1ZmZlckRhdGFTaXplICo9IENoZWNrZWQ8R0NHTHNpemVpcHRy
PihzaXplb2YoR0NHTGZsb2F0KSk7Ci0gICAgcmV0dXJuICFidWZmZXJEYXRhU2l6ZS5oYXNPdmVy
Zmxvd2VkKCkgJiYgYnVmZmVyRGF0YVNpemUudW5zYWZlR2V0KCkgPiAwOworICAgIHJldHVybiAh
YnVmZmVyRGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpICYmIGJ1ZmZlckRhdGFTaXplID4gMDsKIH0K
IAogc3RkOjpvcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0
ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDkyYzE1
NjJkZTI0NTliY2Q5Y2EwNWYxNzczMGI4ZWIyZGU2MWIyMzAuLjg4MDJhNjE0YTY1Y2YyNDY5MTg3
MmZjMzhmZTE5MTNmMTAzMzZhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTg1MSw3ICs4NTEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAobWF4WUFjY2Vzc2VkLnVuc2FmZUdldCgpID4gaW1hZ2VIZWlnaHQp
IHsKKyAgICAgICAgICAgIGlmIChtYXhZQWNjZXNzZWQgPiBpbWFnZUhlaWdodCkgewogICAgICAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgZnVuY3Rpb25OYW1lLAogICAgICAgICAgICAgICAgICAgICAiTm90IGVub3VnaCBk
YXRhIHN1cHBsaWVkIHRvIHVwbG9hZCB0byBhIDNEIHRleHR1cmUgd2l0aCBkZXB0aCA+IDEiKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBpbmxp
bmUgc3RkOjpvcHRpb25hbDxUPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVja2VkQWRk
QW5kTXVsdGlwbHkoVCB2YWx1ZQogICAgIGlmIChjaGVja2VkUmVzdWx0Lmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBjaGVja2VkUmVz
dWx0LnVuc2FmZUdldCgpOworICAgIHJldHVybiBjaGVja2VkUmVzdWx0LnZhbHVlKCk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiNjkxMjdm
ZDFiNjRjMmI0MTJkZDIzYThkYzI4ODRiNGI2MzNhMDc4Li41OWFjMDhkNWU1NzQ2NzdhNTY5MTRh
MzJmMzk1M2E3OTRmOGEyMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTk5NSw3ICs5
OTUsNyBAQCBpbmxpbmUgdm9pZCBGcmFtZVZpZXc6OmluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQ
aXhlbENvdW50KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKFVOTElLRUxZKGFyZWEuaGFz
T3ZlcmZsb3dlZCgpKSkKICAgICAgICAgbV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUobV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCk+
OjptYXgoKTsKICAgICBlbHNlCi0gICAgICAgIG1fdmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQg
PSBhcmVhLnVuc2FmZUdldCgpOworICAgICAgICBtX3Zpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50
ID0gYXJlYTsKIH0KIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IEZyYW1lVmlldyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9I
aXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggMzhmZDdi
MjliNTNlYWI0ODRlMzA5NjNiNTFjOGFlNTI1YzVkN2EzOC4uMjhkMWZjMzI0MjE3NGE2ODA3MTEw
Mjc4NzdkNDE1MzkyMzc5MDIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0yNTMsOSAr
MjUzLDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFF1b3RhRXhjZWVkZWRFcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgbW9yZSBkYXRhIHRoYW4g
YWxsb3dlZCB1c2luZyBoaXN0b3J5LnB1c2hTdGF0ZSgpIl9zIH07CiAgICAgfQogCi0gICAgbV9t
b3N0UmVjZW50U3RhdGVPYmplY3RVc2FnZSA9IHBheWxvYWRTaXplLnVuc2FmZUdldCgpOworICAg
IG1fbW9zdFJlY2VudFN0YXRlT2JqZWN0VXNhZ2UgPSBwYXlsb2FkU2l6ZTsKIAotICAgIG1haW5I
aXN0b3J5Lm1fdG90YWxTdGF0ZU9iamVjdFVzYWdlID0gbmV3VG90YWxVc2FnZS51bnNhZmVHZXQo
KTsKKyAgICBtYWluSGlzdG9yeS5tX3RvdGFsU3RhdGVPYmplY3RVc2FnZSA9IG5ld1RvdGFsVXNh
Z2U7CiAgICAgKyttYWluSGlzdG9yeS5tX2N1cnJlbnRTdGF0ZU9iamVjdFRpbWVTcGFuT2JqZWN0
c0FkZGVkOwogCiAgICAgaWYgKCF1cmxTdHJpbmcuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oCmluZGV4IGIwNzM0ZGQ2MWI4YzQxNzIxYzllOTRj
ODdkODc2MWI0YjFmMTM3ZmEuLjI2NTRiOWExNDAwMDRmZmNiYjZhNTk3N2U3ZDIyMWRlN2Y3NTcx
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmgKQEAgLTYy
LDEwICs2MiwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgZmFzdEFsaWduZWRGcmVlKG1fYWxsb2Nh
dGlvbik7CiAKLSAgICAgICAgbV9hbGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RBbGln
bmVkTWFsbG9jKGFsaWdubWVudCwgaW5pdGlhbFNpemUudW5zYWZlR2V0KCkpKTsKKyAgICAgICAg
bV9hbGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVu
dCwgaW5pdGlhbFNpemUpKTsKICAgICAgICAgaWYgKCFtX2FsbG9jYXRpb24pCiAgICAgICAgICAg
ICBDUkFTSCgpOwotICAgICAgICBtX3NpemUgPSBuLnVuc2FmZUdldCgpOworICAgICAgICBtX3Np
emUgPSBuOwogICAgICAgICB6ZXJvKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAK
aW5kZXggZDc3OWE4ZmQzM2Q3NzgyMzQ3MzIxODZkYTJhYTVlZGNjZTIzMTdlYy4uN2MxYzY0ZWQ3
YzdjNzkyZDA0Y2JiOGNhY2M2NDJiNjRhNjEyZDRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBBdWRpb0J1ZmZlckxpc3QqIHRyeUNyZWF0ZUF1ZGlvQnVmZmVy
TGlzdChzaXplX3QgbnVtYmVyT2ZCdWZmZXJzKQogICAgIGlmIChidWZmZXJMaXN0U2l6ZS5oYXNP
dmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBhbGxvY2F0
ZWQgPSB0cnlGYXN0Q2FsbG9jKDEsIGJ1ZmZlckxpc3RTaXplLnVuc2FmZUdldCgpKTsKKyAgICBh
dXRvIGFsbG9jYXRlZCA9IHRyeUZhc3RDYWxsb2MoMSwgYnVmZmVyTGlzdFNpemUpOwogICAgIEF1
ZGlvQnVmZmVyTGlzdCogYnVmZmVyTGlzdDsKICAgICBpZiAoIWFsbG9jYXRlZC5nZXRWYWx1ZShi
dWZmZXJMaXN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAppbmRleCBhNTgxY2Y2
NTU2Zjk5NzU2ODdjYzUwNTFkYWVmOTNlMmMzMmI4OWI5Li4yZDJiYjJiY2JjMWVmY2RkMjJkNmNh
MmMzZTg5NTI5ZGQxOWMyNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5pcXVlUmVm
PENBUmluZ0J1ZmZlcj4gQ0FSaW5nQnVmZmVyOjphZG9wdFN0b3JhZ2UoVW5pcXVlUmVmPENBUmlu
Z0J1ZmZlclN0b3JhZ2UKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoTWVkaWEsICJDQVJpbmdC
dWZmZXI6OmFkb3B0U3RvcmFnZTogT3ZlcmZsb3dlZCB3aGVuIHRyeWluZyB0byBjb21wdXRlIHRo
ZSBzdG9yYWdlIHNpemUiKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Q0FSaW5nQnVm
ZmVyPigpOwogICAgIH0KLSAgICBpZiAoc3RvcmFnZS0+c2l6ZSgpIDwgZXhwZWN0ZWRTdG9yYWdl
U2l6ZS51bnNhZmVHZXQoKSkgeworICAgIGlmIChzdG9yYWdlLT5zaXplKCkgPCBleHBlY3RlZFN0
b3JhZ2VTaXplKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKE1lZGlhLCAiQ0FSaW5nQnVm
ZmVyOjphZG9wdFN0b3JhZ2U6IFN0b3JhZ2Ugc2l6ZSBpcyBpbnN1ZmZpY2llbnQgZm9yIGZvcm1h
dCBhbmQgZnJhbWVDb3VudCIpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDQVJpbmdC
dWZmZXI+KCk7CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6aW5p
dGlhbGl6ZUFmdGVyQWxsb2NhdGlvbihjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZv
cgogICAgIG1fYnl0ZXNQZXJGcmFtZSA9IGZvcm1hdC5ieXRlc1BlckZyYW1lKCk7CiAgICAgbV9m
cmFtZUNvdW50ID0gZnJhbWVDb3VudDsKICAgICBtX2ZyYW1lQ291bnRNYXNrID0gZnJhbWVDb3Vu
dCAtIDE7Ci0gICAgbV9jYXBhY2l0eUJ5dGVzID0gY29tcHV0ZUNhcGFjaXR5Qnl0ZXMoZm9ybWF0
LCBmcmFtZUNvdW50KS51bnNhZmVHZXQoKTsKKyAgICBtX2NhcGFjaXR5Qnl0ZXMgPSBjb21wdXRl
Q2FwYWNpdHlCeXRlcyhmb3JtYXQsIGZyYW1lQ291bnQpOwogCiAgICAgbV9wb2ludGVycy5yZXNp
emUobV9jaGFubmVsQ291bnQpOwogICAgIEJ5dGUqIGNoYW5uZWxEYXRhID0gc3RhdGljX2Nhc3Q8
Qnl0ZSo+KG1fYnVmZmVycy0+ZGF0YSgpKTsKQEAgLTEyMyw4ICsxMjMsOCBAQCBib29sIENBUmlu
Z0J1ZmZlcjo6YWxsb2NhdGUoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQs
IHNpemVfdCBmcmFtZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKFVO
TElLRUxZKCFtX2J1ZmZlcnMtPmFsbG9jYXRlKHNpemVGb3JCdWZmZXJzLnVuc2FmZUdldCgpLCBm
b3JtYXQsIGZyYW1lQ291bnQpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChNZWRpYSwg
IkNBUmluZ0J1ZmZlcjo6YWxsb2NhdGU6IEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIgb2YgdGhl
IHJlcXVlc3RlZCBzaXplOiAlbHUiLCBzaXplRm9yQnVmZmVycy51bnNhZmVHZXQoKSk7CisgICAg
aWYgKFVOTElLRUxZKCFtX2J1ZmZlcnMtPmFsbG9jYXRlKHNpemVGb3JCdWZmZXJzLCBmb3JtYXQs
IGZyYW1lQ291bnQpKSkgeworICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChNZWRpYSwgIkNBUmlu
Z0J1ZmZlcjo6YWxsb2NhdGU6IEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIgb2YgdGhlIHJlcXVl
c3RlZCBzaXplOiAlbHUiLCBzaXplRm9yQnVmZmVycy52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKaW5kZXggODQ4NTY3M2FmYTUzNTdh
YjNmNGE0Nzc1N2I1MDAwOWE4YzFkYzNkZi4uMmNlZDg4Mzg1N2Q3NjEyNTZhMmE4Y2Y5ZjYwMWJj
ZDI2NTlmNWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdlYkF1
ZGlvQnVmZmVyTGlzdDo6V2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYgZm9ybWF0KQogCiAgICAgQ2hlY2tlZFNpemUgYnVmZmVyTGlzdFNpemUgPSBvZmZz
ZXRvZihBdWRpb0J1ZmZlckxpc3QsIG1CdWZmZXJzKTsKICAgICBidWZmZXJMaXN0U2l6ZSArPSAo
c2l6ZW9mKEF1ZGlvQnVmZmVyKSAqIHN0ZDo6bWF4KDFVLCBidWZmZXJDb3VudCkpOwotICAgIG1f
bGlzdEJ1ZmZlclNpemUgPSBidWZmZXJMaXN0U2l6ZS51bnNhZmVHZXQoKTsKKyAgICBtX2xpc3RC
dWZmZXJTaXplID0gYnVmZmVyTGlzdFNpemU7CiAgICAgbV9jYW5vbmljYWxMaXN0ID0gc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4oc3RhdGljX2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4o
OjpvcGVyYXRvciBuZXcgKG1fbGlzdEJ1ZmZlclNpemUpKSk7CiAgICAgbWVtc2V0KG1fY2Fub25p
Y2FsTGlzdC5nZXQoKSwgMCwgbV9saXN0QnVmZmVyU2l6ZSk7CiAgICAgbV9jYW5vbmljYWxMaXN0
LT5tTnVtYmVyQnVmZmVycyA9IGJ1ZmZlckNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAppbmRleCAwMmM4MGI1MTY5NWNkMDI3
MTA5N2E5YzM5ZGIxZmU5YTNhZTg4MDhlLi5lMWFmOGI0NDJkOWI2MjRiMmM3OWJjYWZjMjA5MDU2
NzYzYjFmZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3JtYXRDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3JtYXRDb252ZXJ0ZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBjb25zdCB1bnNpZ25lZCBNYXhOdW1iZXJPZkNvbXBvbmVudHMgPSA0OwogICAgICAgICBjb25z
dCB1bnNpZ25lZCBNYXhCeXRlc1BlckNvbXBvbmVudCAgPSA0OwotICAgICAgICBtX3VucGFja2Vk
SW50ZXJtZWRpYXRlU3JjRGF0YSA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PigoQ2hlY2tlZDxz
aXplX3Q+KG1fc3JjU3ViUmVjdGFuZ2xlLndpZHRoKCkpICogTWF4TnVtYmVyT2ZDb21wb25lbnRz
ICogTWF4Qnl0ZXNQZXJDb21wb25lbnQpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgbV91bnBhY2tl
ZEludGVybWVkaWF0ZVNyY0RhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oKENoZWNrZWQ8
c2l6ZV90PihtX3NyY1N1YlJlY3RhbmdsZS53aWR0aCgpKSAqIE1heE51bWJlck9mQ29tcG9uZW50
cyAqIE1heEJ5dGVzUGVyQ29tcG9uZW50KS52YWx1ZSgpKTsKIAogICAgICAgICBBU1NFUlQobV91
bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRl
eCBmMmM0YzEwYWUzOWM3ZTM2MjFkYThiODdjNjI5YmZmYjhiYmYyY2EwLi41Mjg5MGQ0OGQ5MzQ4
YWNlYTI1YzVlNTRiNzU5MWRjN2I1N2M1ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC02ODEsMTkgKzY4
MSwxOSBAQCBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUltYWdlU2l6ZUluQnl0
ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eQogICAgICAgICB0bXAgKj0gYnl0ZXNQZXJH
cm91cDsKICAgICAgICAgaWYgKHRtcC5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUU7Ci0gICAgICAgIGxhc3RSb3dTaXpl
ID0gdG1wLnVuc2FmZUdldCgpOworICAgICAgICBsYXN0Um93U2l6ZSA9IHRtcDsKICAgICB9IGVs
c2UKLSAgICAgICAgbGFzdFJvd1NpemUgPSBjaGVja2VkVmFsdWUudW5zYWZlR2V0KCk7CisgICAg
ICAgIGxhc3RSb3dTaXplID0gY2hlY2tlZFZhbHVlOwogCiAgICAgdW5zaWduZWQgcGFkZGluZyA9
IDA7Ci0gICAgdW5zaWduZWQgcmVzaWR1YWwgPSBjaGVja2VkVmFsdWUudW5zYWZlR2V0KCkgJSBw
YXJhbXMuYWxpZ25tZW50OworICAgIHVuc2lnbmVkIHJlc2lkdWFsID0gY2hlY2tlZFZhbHVlLnZh
bHVlKCkgJSBwYXJhbXMuYWxpZ25tZW50OwogICAgIGlmIChyZXNpZHVhbCkgewogICAgICAgICBw
YWRkaW5nID0gcGFyYW1zLmFsaWdubWVudCAtIHJlc2lkdWFsOwogICAgICAgICBjaGVja2VkVmFs
dWUgKz0gcGFkZGluZzsKICAgICB9CiAgICAgaWYgKGNoZWNrZWRWYWx1ZS5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRTsKLSAg
ICB1bnNpZ25lZCBwYWRkZWRSb3dTaXplID0gY2hlY2tlZFZhbHVlLnVuc2FmZUdldCgpOworICAg
IHVuc2lnbmVkIHBhZGRlZFJvd1NpemUgPSBjaGVja2VkVmFsdWU7CiAKICAgICBDaGVja2VkPHVp
bnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcm93cyA9IGltYWdlSGVpZ2h0OwogICAgIHJvd3MgKj0g
KGRlcHRoIC0gMSk7CkBAIC03MDYsNyArNzA2LDcgQEAgR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0
R0w6OmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHkK
ICAgICBjaGVja2VkVmFsdWUgKz0gbGFzdFJvd1NpemU7CiAgICAgaWYgKGNoZWNrZWRWYWx1ZS5o
YXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRTsKLSAgICAqaW1hZ2VTaXplSW5CeXRlcyA9IGNoZWNrZWRWYWx1ZS51bnNhZmVHZXQo
KTsKKyAgICAqaW1hZ2VTaXplSW5CeXRlcyA9IGNoZWNrZWRWYWx1ZTsKICAgICBpZiAocGFkZGlu
Z0luQnl0ZXMpCiAgICAgICAgICpwYWRkaW5nSW5CeXRlcyA9IHBhZGRpbmc7CiAKQEAgLTcxNywy
OCArNzE3LDI4IEBAIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlSW1hZ2VTaXpl
SW5CeXRlcyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5CiAgICAgICAgIHRtcCAqPSBwYXJh
bXMuc2tpcEltYWdlczsKICAgICAgICAgaWYgKHRtcC5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUU7Ci0gICAgICAgIHNr
aXBTaXplICs9IHRtcC51bnNhZmVHZXQoKTsKKyAgICAgICAgc2tpcFNpemUgKz0gdG1wOwogICAg
IH0KICAgICBpZiAocGFyYW1zLnNraXBSb3dzID4gMCkgewogICAgICAgICBDaGVja2VkPHVpbnQz
Ml90LCBSZWNvcmRPdmVyZmxvdz4gdG1wID0gcGFkZGVkUm93U2l6ZTsKICAgICAgICAgdG1wICo9
IHBhcmFtcy5za2lwUm93czsKICAgICAgICAgaWYgKHRtcC5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUU7Ci0gICAgICAg
IHNraXBTaXplICs9IHRtcC51bnNhZmVHZXQoKTsKKyAgICAgICAgc2tpcFNpemUgKz0gdG1wOwog
ICAgIH0KICAgICBpZiAocGFyYW1zLnNraXBQaXhlbHMgPiAwKSB7CiAgICAgICAgIENoZWNrZWQ8
dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiB0bXAgPSBieXRlc1Blckdyb3VwOwogICAgICAgICB0
bXAgKj0gcGFyYW1zLnNraXBQaXhlbHM7CiAgICAgICAgIGlmICh0bXAuaGFzT3ZlcmZsb3dlZCgp
KQogICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFOwot
ICAgICAgICBza2lwU2l6ZSArPSB0bXAudW5zYWZlR2V0KCk7CisgICAgICAgIHNraXBTaXplICs9
IHRtcDsKICAgICB9CiAgICAgaWYgKHNraXBTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFOwogICAgIGlmIChza2lwU2l6
ZUluQnl0ZXMpCi0gICAgICAgICpza2lwU2l6ZUluQnl0ZXMgPSBza2lwU2l6ZS51bnNhZmVHZXQo
KTsKKyAgICAgICAgKnNraXBTaXplSW5CeXRlcyA9IHNraXBTaXplOwogCi0gICAgY2hlY2tlZFZh
bHVlICs9IHNraXBTaXplLnVuc2FmZUdldCgpOworICAgIGNoZWNrZWRWYWx1ZSArPSBza2lwU2l6
ZTsKICAgICBpZiAoY2hlY2tlZFZhbHVlLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFOwogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHRHTDo6Tk9fRVJST1I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCAwYzQ0MTMyNTBlOGRlNjk0Mzc5Y2ZmMGRl
ZDBkZGM5MjdmZWIzOThjLi5hNGJkNDRlNDAwYTcyN2UwZjgxNzBmZGM3YTNhYjY1N2JhNjJiZDQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0gICAgICAgIHNpemVfdCBi
dWZmZXJTaXplID0gc2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkgKiBzaXplb2YodWludDMyX3QpOwor
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUuYXJlYSgpLnZhbHVlKCkgKiBzaXplb2Yo
dWludDMyX3QpOwogCiAgICAgICAgIGlmICghYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShidWZm
ZXJTaXplKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhcigpCiAgICAgewotICAgICAgICBtZW1zZXQobV9waXhlbHNQ
dHIsIDAsIChtX3NpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkpOwor
ICAgICAgICBtZW1zZXQobV9waXhlbHNQdHIsIDAsIChtX3NpemUuYXJlYSgpICogc2l6ZW9mKHVp
bnQzMl90KSkudmFsdWUoKSk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGE2MmIzYzdiZDYzMGRiOThiYzJhY2NhN2I3
YWQ0NWFjYTA5MTZhMDEuLjYyYTY0ZGQ3YmQxYmYwN2JhODk4N2Q4ZGZiZDlkNDc0ZmVlY2VlNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcApAQCAtNDQsOCArNDQsNyBAQCBJbnRTaXplIEltYWdlQnVmZmVyQmFj
a2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHNpemVfdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KQogewogICAgIEFTU0VSVCgh
YmFja2VuZFNpemUuaXNFbXB0eSgpKTsKLSAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENoZWNr
ZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBieXRl
c1BlclJvdzsKLSAgICByZXR1cm4gbnVtQnl0ZXMudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIENo
ZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBi
eXRlc1BlclJvdzsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCAzZjJiMWZjMDk5YTU4ZDU2NGUyMDUzZWVhMzM5
YjU3MTAwY2YzMDEwLi45ODQzYWFjNDBlYjRjMTc4YjZmYjA5NDE2M2ZiNjg4NTdhZjVkMTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJldHVy
biBtX2RlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsgfQogCiAgICAg
SW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsg
cmV0dXJuIGhhc05hdGl2ZUltYWdlKCkgPyAoc2l6ZSgpLmFyZWEoKSAqIHNpemVvZih1aW50MzJf
dCkpLnVuc2FmZUdldCgpIDogMDsgfQorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMoKSBjb25zdCB7
IHJldHVybiBoYXNOYXRpdmVJbWFnZSgpID8gKHNpemUoKS5hcmVhKCkgKiBzaXplb2YodWludDMy
X3QpKS52YWx1ZSgpIDogMDsgfQogICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2FtcGxpbmdMZXZlbDsgfQogCiAgICAgUmVmUHRyPE5h
dGl2ZUltYWdlPiBuYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApp
bmRleCA0NWU0YjNiZjBjYzIxZWFjMmNkMzQzZTA2ZGVhNTViNTAxN2UwYjUxLi4wNDAyZDU2YjAy
NjUwZTZjYjAzYzk4NDc2YTZiOTczMzJjYjg0NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC02MzEsNyArNjMxLDcgQEAgU3Vi
c2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKQogICAg
IFN1YnNhbXBsaW5nTGV2ZWwgbGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpGaXJzdDsKIAogICAg
IGZvciAoOyBsZXZlbCA8IFN1YnNhbXBsaW5nTGV2ZWw6Okxhc3Q7ICsrbGV2ZWwpIHsKLSAgICAg
ICAgaWYgKGZyYW1lU2l6ZUF0SW5kZXgoMCwgbGV2ZWwpLmFyZWEoKS51bnNhZmVHZXQoKSA8IG1h
eGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKKyAgICAgICAgaWYgKGZyYW1lU2l6ZUF0
SW5kZXgoMCwgbGV2ZWwpLmFyZWEoKSA8IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGlu
ZykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDk1NTgwN2ZkM2EwMDFjNjIyZTJm
YjhjYzBiNDk0ZWRhODk0ZmYwMmIuLjQ1ZGNmOWQ0MzVhYmNiY2E5ZmY3MTRhOWYwYTc3MGIxOWM1
Y2VjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZs
b3c+IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmYKIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNp
Z25lZCBkYXRhQnl0ZUxlbmd0aCkKIHsKICAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQo
Zm9ybWF0LnBpeGVsRm9ybWF0KSk7Ci0gICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZvcm1h
dCwgc2l6ZSkudW5zYWZlR2V0KCkgPT0gZGF0YUJ5dGVMZW5ndGgpOworICAgIEFTU0VSVChjb21w
dXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpID09IGRhdGFCeXRlTGVuZ3RoKTsKIAogICAgIGF1
dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KGRhdGFCeXRlTGVuZ3RoKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCkBAIC03NCw3ICs3NCw3IEBA
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1
ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwaXhlbEFycmF5ID0g
VWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZS51bnNh
ZmVHZXQoKSk7CisgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBw
aXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwpAQCAtODcsOSArODcsOSBAQCBzdGQ6Om9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXpl
KGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJTaXplLnVuc2FmZUdldCgp
ICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpCisgICAgaWYgKGJ1ZmZlclNpemUgIT0gYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUo
YXJyYXlCdWZmZXIpLCAwLCBidWZmZXJTaXplLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHBpeGVs
QXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIp
LCAwLCBidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVs
ZWFzZU5vbk51bGwoKSB9IH07CkBAIC0xMDAsNyArMTAwLDcgQEAgUGl4ZWxCdWZmZXI6OlBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNp
emUsIFIKICAgICAsIG1fc2l6ZSB7IHNpemUgfQogICAgICwgbV9kYXRhIHsgV1RGTW92ZShkYXRh
KSB9CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9z
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkgKiA0
KS52YWx1ZSgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCiBQaXhlbEJ1ZmZlcjo6UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBQaXhl
bEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgSgogICAgICwgbV9zaXplIHsgc2l6ZSB9CiAgICAgLCBtX2RhdGEg
eyBkYXRhIH0KIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KChtX3NpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFyZWEo
KSAqIDQpLnZhbHVlKCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKIFBpeGVsQnVmZmVyOjp+
UGl4ZWxCdWZmZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXIuaAppbmRleCAxMmNhM2M4YzcyZDkzNzQ2NDVkYjUxYzBjMDBhOGQ0
YjllODYyZGRjLi42NTQzNTVjMjM3ZTQ4MTJkN2E3MzcyNmE5Y2FlZjA2MWVkMGU5ODQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKQEAgLTc4
LDcgKzc4LDcgQEAgV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBpeGVsQnVmZmVyJikKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKG1fZGF0YS0+Ynl0ZUxlbmd0aCgpID09IChtX3NpemUuYXJlYSgpLnVuc2Fm
ZUdldCgpICogNCkpOworICAgIEFTU0VSVChtX2RhdGEtPmJ5dGVMZW5ndGgoKSA9PSAobV9zaXpl
LmFyZWEoKS52YWx1ZSgpICogNCkpOwogCiAgICAgZW5jb2RlciA8PCBtX2Zvcm1hdDsKICAgICBl
bmNvZGVyIDw8IG1fc2l6ZTsKQEAgLTEwNSw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29k
ZXImCiAgICAgaWYgKGNvbXB1dGVkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlZEJ1
ZmZlclNpemUudW5zYWZlR2V0KCk7CisgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZWRCdWZm
ZXJTaXplOwogICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRl
eCAzMGVlYWFhMzU3NGQ1Y2Y1NzUzMjU2OTZhNWFkZTk4NmQ4OWJmYzRkLi5kM2I5MGRmNTYzMTc0
ZjIwYjc4YTg2YjMwNTAxODJhM2IyZjkxMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU1Niw3ICs1NTYsNyBAQCB1bnNpZ25lZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgcwogICAgICAgICByZXR1cm4gMDsKIAogICAgIEludFNpemUgZnJhbWVTaXplID0g
ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgcmV0dXJuIChm
cmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChmcmFtZVNpemUu
YXJlYSgpICogNCkudmFsdWUoKTsKIH0KIAogUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJB
VkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggMWNhOGVmZWVkMGJmODQzOWQ3M2U2NDQ3NWEyOTkz
NWFhNGFjMDA3OS4uODQxOWZkNzVkOTMxYzdmODc4YjgwZGFiZTVjNTMzMzE5NDk3YmEwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtNDcxLDcg
KzQ3MSw3IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gTWVkaWFTYW1w
bGVBVkZPYmpDOjpieXRlUmFuZ2UoKSBjb25zdAogCiB2b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6
c2V0Qnl0ZVJhbmdlT2Zmc2V0KHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGludDY0X3QgY2hl
Y2tlZE9mZnNldCA9IENoZWNrZWRJbnQ2NChieXRlT2Zmc2V0KS51bnNhZmVHZXQoKTsKKyAgICBp
bnQ2NF90IGNoZWNrZWRPZmZzZXQgPSBDaGVja2VkSW50NjQoYnl0ZU9mZnNldCk7CiAgICAgYXV0
byBvZmZzZXROdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZjaGVja2VkT2Zmc2V0KSk7CiAgICAgUEFMOjpDTVNl
dEF0dGFjaG1lbnQobV9zYW1wbGUuZ2V0KCksIGJ5dGVSYW5nZU9mZnNldEF0dGFjaG1lbnRLZXko
KSwgb2Zmc2V0TnVtYmVyLmdldCgpLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUp
OwogfQpAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVS
YW5nZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2VGb3JBdHRhY2htZW50CiAKICAgICBz
aXplX3Qgc2luZ2xlU2l6ZUVudHJ5ID0gMDsKICAgICBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0U2Ft
cGxlU2l6ZUFycmF5KG1fc2FtcGxlLmdldCgpLCAxLCAmc2luZ2xlU2l6ZUVudHJ5LCBudWxscHRy
KTsKLSAgICByZXR1cm4geyB7IENoZWNrZWRTaXplKGJ5dGVPZmZzZXQpLnVuc2FmZUdldCgpLCBz
aW5nbGVTaXplRW50cnkgfSB9OworICAgIHJldHVybiB7IHsgQ2hlY2tlZFNpemUoYnl0ZU9mZnNl
dCkudmFsdWUoKSwgc2luZ2xlU2l6ZUVudHJ5IH0gfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5k
ZXggZmZhMWM1ODU0MTE1YzY5NWJhZGEzMGNhZmFjNjdjMmI1MDdkZjJkNy4uYjlmOGQ4MTNlNzVl
MWI0MmJlZWY4MjQ4Mjk5Njg1NzEyOWUyNjljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yMzUxLDgg
KzIzNTEsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQmFja2Ryb3BGaWx0ZXJzKENv
bW1pdFN0YXRlJiBjb21taXRTdGF0ZSkKICAgICAgICAgICAgIENoZWNrZWRVbnNpZ25lZCBiYWNr
ZHJvcEZpbHRlckFyZWEgPSBDaGVja2VkVW5zaWduZWQoYmFja2Ryb3BGaWx0ZXJSZWN0LndpZHRo
KCkpICogQ2hlY2tlZFVuc2lnbmVkKGJhY2tkcm9wRmlsdGVyUmVjdC5oZWlnaHQoKSk7CiAgICAg
ICAgICAgICBpZiAoIWJhY2tkcm9wRmlsdGVyQXJlYS5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAg
ICAgICAgICAgICBDaGVja2VkVW5zaWduZWQgbmV3VG90YWxCYWNrZHJvcEZpbHRlckFyZWEgPSBD
aGVja2VkVW5zaWduZWQoY29tbWl0U3RhdGUudG90YWxCYWNrZHJvcEZpbHRlckFyZWEpICsgYmFj
a2Ryb3BGaWx0ZXJBcmVhOwotICAgICAgICAgICAgICAgIGlmICghbmV3VG90YWxCYWNrZHJvcEZp
bHRlckFyZWEuaGFzT3ZlcmZsb3dlZCgpICYmIG5ld1RvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhLnVu
c2FmZUdldCgpIDw9IGNNYXhUb3RhbEJhY2tkcm9wRmlsdGVyQXJlYSkgewotICAgICAgICAgICAg
ICAgICAgICBjb21taXRTdGF0ZS50b3RhbEJhY2tkcm9wRmlsdGVyQXJlYSA9IG5ld1RvdGFsQmFj
a2Ryb3BGaWx0ZXJBcmVhLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIGlmICghbmV3VG90
YWxCYWNrZHJvcEZpbHRlckFyZWEuaGFzT3ZlcmZsb3dlZCgpICYmIG5ld1RvdGFsQmFja2Ryb3BG
aWx0ZXJBcmVhIDw9IGNNYXhUb3RhbEJhY2tkcm9wRmlsdGVyQXJlYSkgeworICAgICAgICAgICAg
ICAgICAgICBjb21taXRTdGF0ZS50b3RhbEJhY2tkcm9wRmlsdGVyQXJlYSA9IG5ld1RvdGFsQmFj
a2Ryb3BGaWx0ZXJBcmVhOwogICAgICAgICAgICAgICAgICAgICBjYW5IYXZlQmFja2Ryb3BGaWx0
ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJQb29sLmNwcAppbmRleCBjMjJk
M2Q3ZmM4N2NlZmRmNDAwNTUyZjBlNGNhY2RiMmU3MGIzNTc3Li4wNWY0YTMxMzE0NmZkOGVhOWNl
MmFhN2ZhOTBiMzJkNGFlZjE5NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9MYXllclBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0xheWVyUG9vbC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSGFzaFNldDxMYXll
clBvb2wqPiYgTGF5ZXJQb29sOjphbGxMYXllclBvb2xzKCkKIAogdW5zaWduZWQgTGF5ZXJQb29s
OjpiYWNraW5nU3RvcmVCeXRlc0ZvclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBy
ZXR1cm4gKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChzaXplLmFy
ZWEoKSAqIDQpLnZhbHVlKCk7CiB9CiAKIExheWVyUG9vbDo6TGF5ZXJMaXN0JiBMYXllclBvb2w6
Omxpc3RPZkxheWVyc1dpdGhTaXplKGNvbnN0IEludFNpemUmIHNpemUsIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggY2QxZDZjMGVhNWQyZTIzMDUwZmNi
NDAxYTQ1Y2VjYTg1YWJmY2Q3Zi4uNDAxYzNiMTllNjE5M2Y2MTBmMGJlMmNiYWNmYTg5YzJmOGJk
MTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTQ4OSw3ICs0ODksNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgaQogICAgIC8vIGJ1dCBpdCB3b3VsZCBwcmVtdWx0aXBseSB0aGUgYWxw
aGEgY2hhbm5lbCBhcyBhIHNpZGUgZWZmZWN0LgogICAgIC8vIFByZWZlciB0byBtYW5udWFsbHkg
Q29udmVydCAxNmJpdCBwZXItY29tcG9uZW50IGZvcm1hdHMgdG8gUkdCQTggZm9ybWF0cyBpbnN0
ZWFkLgogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDE2KSB7Ci0gICAgICAgIG1fZm9ybWFs
aXplZFJHQkE4RGF0YSA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PigoQ2hlY2tlZDxzaXplX3Q+
KG1faW1hZ2VXaWR0aCkgKiBtX2ltYWdlSGVpZ2h0ICogNFUpLnVuc2FmZUdldCgpKTsKKyAgICAg
ICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KChDaGVj
a2VkPHNpemVfdD4obV9pbWFnZVdpZHRoKSAqIG1faW1hZ2VIZWlnaHQgKiA0VSkudmFsdWUoKSk7
CiAgICAgICAgIGNvbnN0IHVpbnQxNl90KiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQxNl90Kj4obV9pbWFnZVBpeGVsRGF0YSk7CiAgICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uID0gbV9mb3JtYWxpemVkUkdCQThEYXRhLmdldCgpOwogICAgICAgICBjb25zdCBwdHJkaWZm
X3Qgc3JjU3RyaWRlSW5FbGVtZW50cyA9IGJ5dGVzUGVyUm93IC8gc2l6ZW9mKHVpbnQxNl90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCBjMTJiMmY4MGMwYjMyMjhjODYxNWYzYjg4N2Fh
MWU4ZWZhMDVhMjY5Li4zNTEwOTdjNmM1ZWUyYmIxNTkyNjZmNjZlODQyOWNkM2M1ZDZiZDdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC02MCw4ICs2MCw3IEBAIHByaXZhdGU6CiB1bnNp
Z25lZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUpCiB7CiAgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkp
OwotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9IChD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUud2lkdGgoKSkgKiA0
KTsKLSAgICByZXR1cm4gYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChDaGVj
a2VkVWludDMyKGJhY2tlbmRTaXplLndpZHRoKCkpICogNCk7CiB9CiAKIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb25z
dCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYjhhZTJmN2ZjNGI3
NTI0NDM3ZWE2M2ZhZDRkZjhhNDdmYzNiZjhlZS4uNDYzZTU1MDVkMjU1MzNiOWM0NGUyY2I2OGZk
NDM3ZWQ3ZWMxZjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIGJvb2wgSW1h
Z2VEZWNvZGVyQ0c6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHVu
c2lnbmVkIEltYWdlRGVjb2RlckNHOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICBJbnRTaXplIGZy
YW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAg
IHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOworICAgIHJldHVybiAo
ZnJhbWVTaXplLmFyZWEoKSAqIDQpLnZhbHVlKCk7CiB9CiAKIFBsYXRmb3JtSW1hZ2VQdHIgSW1h
Z2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29k
aW5nT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IGRiNTkzMTJiOGVmYTkz
NDdmMDg3YzhkOGEyNjZhYzE1YTU5NGZlOWIuLjVhYWRlNzI0Njc0ZDM0MGU1NjUxYjQ2MWE1OGZi
ZWRmZjc0MGUwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtOTYsNyArOTYsNyBA
QCBzaXplX3QgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlv
biwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbgogICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1U
UGx1Z2luQnl0ZVNvdXJjZVJlZj4mIGJ5dGVTb3VyY2UpIC0+IHNpemVfdAogICAgICAgICB7CiAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZVJlYWQgPSAwOwotICAgICAgICAgICAgaWYgKE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlYWQoYnl0ZVNvdXJjZS5nZXQoKSwgc2l6ZVRvUmVhZCwgQ2hlY2tlZEludDY0
KHBvc2l0aW9uKS51bnNhZmVHZXQoKSwgZGVzdGluYXRpb24sICZzaXplUmVhZCkgIT0gbm9FcnIp
CisgICAgICAgICAgICBpZiAoTVRQbHVnaW5CeXRlU291cmNlUmVhZChieXRlU291cmNlLmdldCgp
LCBzaXplVG9SZWFkLCBDaGVja2VkSW50NjQocG9zaXRpb24pLCBkZXN0aW5hdGlvbiwgJnNpemVS
ZWFkKSAhPSBub0VycikKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHJl
dHVybiBzaXplUmVhZDsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDc1ODhk
Y2RhZGNjOWFhMWUyYmFjNGI5ZThhMjU1MDQzMTdjNTljMmYuLjljODRiYWZhZmNiYTU0ZmQ1OTBm
NjA0ZjkwNjg1OGM4YjYxOTNmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMTAwLDcgKzEw
MCw3IEBAIGlubGluZSB2b2lkIGx1bWluYW5jZShmbG9hdCYgcmVkLCBmbG9hdCYgZ3JlZW4sIGZs
b2F0JiBibHVlLCBmbG9hdCYgYWxwaGEpCiB0ZW1wbGF0ZTxDb2xvck1hdHJpeFR5cGUgZmlsdGVy
VHlwZT4KIGJvb2wgZWZmZWN0QXBwbHlBY2NlbGVyYXRlZChVaW50OENsYW1wZWRBcnJheSYgcGl4
ZWxBcnJheSwgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzLCBmbG9hdCBjb21wb25lbnRzWzld
LCBJbnRTaXplIGJ1ZmZlclNpemUpCiB7Ci0gICAgQVNTRVJUKHBpeGVsQXJyYXkubGVuZ3RoKCkg
PT0gYnVmZmVyU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkgKiA0KTsKKyAgICBBU1NFUlQocGl4ZWxB
cnJheS5sZW5ndGgoKSA9PSBidWZmZXJTaXplLmFyZWEoKS52YWx1ZSgpICogNCk7CiAgICAgCiAg
ICAgaWYgKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCkgewogICAgICAg
ICAvLyB2SW1hZ2VNYXRyaXhNdWx0aXBseV9BUkdCODg4OCB0YWtlcyBhIDR4NCBtYXRyaXgsIGlm
IGFueSB2YWx1ZSBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIEZFQ29sb3JNYXRyaXggNXg0IG1h
dHJpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCBhODBlMDE0NTRkYjBkYzZmMTQ0ODA0MmIw
MDFhOTEzM2M1NzllOGNiLi40ZWRkM2ZkZjM0NTJlNGI3ODA4MGUxNjk3NTU5ZjMwZjNiN2I5OWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgRkVHYXVz
c2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbnRTaXplIHBhaW50U2l6
ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwogICAgIHBhaW50U2l6ZS5zY2FsZShmaWx0
ZXIoKS5maWx0ZXJTY2FsZSgpKTsKLSAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUuYXJlYSgpICogNCkudW5z
YWZlR2V0KCkpOworICAgIGF1dG8gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHBhaW50U2l6ZS5hcmVhKCkgKiA0KS52YWx1ZSgpKTsKICAg
ICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAK
aW5kZXggMTVlMTliODgxODgxYmYxZDlkYjNkYWYwYWM4NTc3ZmEwZDMzNWUzNC4uNjI2YmE4Njc4
MmFhNTRkNWY4NTY5NmQwOTcwYTAyODk3NTM5OWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcApAQCAt
NDI2LDcgKzQyNiw3IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIGludCBoZWlnaHQgPSByZXN1bHRTaXplLmhlaWdodCgpOwogCiAgICAgdW5zaWduZWQg
bWF4TnVtVGhyZWFkcyA9IGhlaWdodCAvIDg7Ci0gICAgdW5zaWduZWQgb3B0aW1hbFRocmVhZE51
bWJlciA9IHN0ZDo6bWluPHVuc2lnbmVkPihhcmVhLnVuc2FmZUdldCgpIC8gc19taW5pbWFsUmVj
dERpbWVuc2lvbiwgbWF4TnVtVGhyZWFkcyk7CisgICAgdW5zaWduZWQgb3B0aW1hbFRocmVhZE51
bWJlciA9IHN0ZDo6bWluPHVuc2lnbmVkPihhcmVhLnZhbHVlKCkgLyBzX21pbmltYWxSZWN0RGlt
ZW5zaW9uLCBtYXhOdW1UaHJlYWRzKTsKICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEp
IHsKICAgICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8RmlsbFJlZ2lvblBhcmFtZXRlcnM+IHBhcmFs
bGVsSm9icygmV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2VyLCBvcHRpbWFs
VGhyZWFkTnVtYmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGZkNzc0Y2E5M2FmNjExNDQz
MjNkNjY0MTkzNzczNDQzZjFkMGExOTYuLjVkNjdlYzU0ZDQ2OWU0NmI4ZGViMzNjOTdhNTYzNDMz
ZjM1NDJkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0
IEludFJlY3QmIHJlY3QsCiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJlYTxS
ZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoY2hlY2tlZEFyZWEudW5zYWZlR2V0
KCkpOworICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKGNoZWNrZWRBcmVhKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoKnBpeGVsQXJyYXks
IHJlY3QsIGNvbG9yU3BhY2UpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3Qm
IHJlY3QsCiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJlYTxSZWNvcmRPdmVy
Zmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoY2hlY2tlZEFyZWEudW5zYWZlR2V0KCkpOworICAg
IGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKGNoZWNrZWRBcmVhKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KCpwaXhlbEFycmF5LCByZWN0LCBj
b2xvclNwYWNlKTsKQEAgLTM4NCw3ICszODQsNyBAQCBzdGF0aWMgdm9pZCBjb3B5UHJlbXVsdGlw
bHlpbmdBbHBoYShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZQog
ICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5v
RmxhZ3MpOwogI2Vsc2UKICAgICBjb25zdCB1aW50OF90KiBzb3VyY2VDb21wb25lbnQgPSBzb3Vy
Y2UuZGF0YSgpOwotICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHNvdXJjZUNvbXBvbmVudCArIChp
bnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgY29uc3QgdWludDhfdCogZW5k
ID0gc291cmNlQ29tcG9uZW50ICsgKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS52YWx1ZSgpOwogICAg
IHVpbnQ4X3QqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gZGVzdGluYXRpb24uZGF0YSgpOwogCiAg
ICAgd2hpbGUgKHNvdXJjZUNvbXBvbmVudCA8IGVuZCkgewpAQCAtNDE5LDcgKzQxOSw3IEBAIHN0
YXRpYyB2b2lkIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY29uc3QgVWludDhDbGFtcGVkQXJy
YXkmIHNvdXJjZSwgVWludDhDbGFtCiAgICAgdkltYWdlVW5wcmVtdWx0aXBseURhdGFfUkdCQTg4
ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VOb0ZsYWdzKTsKICNlbHNlCiAgICAgY29uc3QgdWludDhf
dCogc291cmNlQ29tcG9uZW50ID0gc291cmNlLmRhdGEoKTsKLSAgICBjb25zdCB1aW50OF90KiBl
bmQgPSBzb3VyY2VDb21wb25lbnQgKyAoaW5wdXRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgp
OworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHNvdXJjZUNvbXBvbmVudCArIChpbnB1dFNpemUu
YXJlYSgpICogNCkudmFsdWUoKTsKICAgICB1aW50OF90KiBkZXN0aW5hdGlvbkNvbXBvbmVudCA9
IGRlc3RpbmF0aW9uLmRhdGEoKTsKICAgICB3aGlsZSAoc291cmNlQ29tcG9uZW50IDwgZW5kKSB7
CiAgICAgICAgIGludCBhbHBoYSA9IHNvdXJjZUNvbXBvbmVudFszXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxv
Y2F0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQppbmRleCA2MzE0NzRjYTc5OTg3ODdkMDA1
MmY3MTY2YmQ3NWNhOTc0MGFkYzk0Li44NmUzNDhjMjEwZmUwMWNjZmUwMmI2MDU2YjkwZTg2YTgz
NWU3ZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1t
CkBAIC03NCw3ICs3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8R1BVQmluZEdyb3VwQWxsb2NhdG9yOjpB
cmd1bWVudEJ1ZmZlck9mZnNldHM+IEdQVUJpbmRHcm91cEFsbG9jYXRvCiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCi0gICAgYXV0byBuZXdPZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnVuc2Fm
ZUdldCgpOworICAgIGF1dG8gbmV3T2Zmc2V0ID0gY2hlY2tlZE9mZnNldC52YWx1ZSgpOwogCiAg
ICAgaWYgKG1fYXJndW1lbnRCdWZmZXIgJiYgbmV3T2Zmc2V0ID4gbV9hcmd1bWVudEJ1ZmZlci5n
ZXQoKS5sZW5ndGgpIHsKICAgICAgICAgaWYgKCFyZWFsbG9jYXRlKG5ld09mZnNldCkpCkBAIC0x
NDAsNyArMTQwLDcgQEAgYm9vbCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnJlYWxsb2NhdGUoTlNV
SW50ZWdlciBuZXdPZmZzZXQpCiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAot
ICAgIG5ld0J1ZmZlciA9IFttX2FyZ3VtZW50QnVmZmVyLmdldCgpLmRldmljZSBuZXdCdWZmZXJX
aXRoTGVuZ3RoOm5ld0xlbmd0aC51bnNhZmVHZXQoKSBvcHRpb25zOjBdOworICAgIG5ld0J1ZmZl
ciA9IFttX2FyZ3VtZW50QnVmZmVyLmdldCgpLmRldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOm5l
d0xlbmd0aC52YWx1ZSgpIG9wdGlvbnM6MF07CiAgICAgbWVtY3B5KG5ld0J1ZmZlci5jb250ZW50
cywgbV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9hcmd1bWVudEJ1ZmZlci5nZXQo
KS5sZW5ndGgpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZm
ZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVDb21tYW5kQnVmZmVyTWV0YWwubW0KaW5kZXggMzQyZWZkZDBiZGQwMzYxMzhmZTkzZWI2ODlj
YTlmYjdkMDIzZWVkYy4uOWUxZGNjNmIxNmQwMjM0YjNlYzRkMWMzMzA3ZGM4ZGM1ZWFlMWMxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUNvbW1hbmRCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCkBAIC0xMTEsNyArMTExLDcg
QEAgdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoUmVmPEdQVUJ1ZmZl
cj4mJiBzcmMsIHVpbnQ2NF90IHNyY09mZnMKICAgICBhdXRvIHNyY0xlbmd0aCA9IGNoZWNrZWRT
dW08TlNVSW50ZWdlcj4oc2l6ZSwgc3JjT2Zmc2V0KTsKICAgICBhdXRvIGRzdExlbmd0aCA9IGNo
ZWNrZWRTdW08TlNVSW50ZWdlcj4oc2l6ZSwgZHN0T2Zmc2V0KTsKICAgICBpZiAoc3JjTGVuZ3Ro
Lmhhc092ZXJmbG93ZWQoKSB8fCBkc3RMZW5ndGguaGFzT3ZlcmZsb3dlZCgpCi0gICAgICAgIHx8
IHNyY0xlbmd0aC51bnNhZmVHZXQoKSA+IHNyYy0+Ynl0ZUxlbmd0aCgpIHx8IGRzdExlbmd0aC51
bnNhZmVHZXQoKSA+IGRzdC0+Ynl0ZUxlbmd0aCgpKSB7CisgICAgICAgIHx8IHNyY0xlbmd0aCA+
IHNyYy0+Ynl0ZUxlbmd0aCgpIHx8IGRzdExlbmd0aCA+IGRzdC0+Ynl0ZUxlbmd0aCgpKSB7CiAg
ICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIo
KTogSW52YWxpZCBvZmZzZXQgb3IgY29weSBzaXplISIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQppbmRleCBhYzY4
OGRhZWEzZWZkOWIzMDA1MzRkNWFlYjYyYThhYzQyMGEwYzg4Li45YzM1NWUyM2ExODA5NzEwNzdk
MWZhMWJjZDE1OWNkOGZiYmI5NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0Vu
Y29kZXJNZXRhbC5tbQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OmRyYXdJbmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291
CiAgICAgICAgIGluZGV4Q291bnQ6aW5kZXhDb3VudAogICAgICAgICBpbmRleFR5cGU6bXRsSW5k
ZXhUeXBlRm9yR1BVSW5kZXhGb3JtYXQoKm1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0KCkpCiAgICAg
ICAgIGluZGV4QnVmZmVyOm1faW5kZXhCdWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAg
aW5kZXhCdWZmZXJPZmZzZXQ6dG90YWxPZmZzZXQudW5zYWZlR2V0KCkKKyAgICAgICAgaW5kZXhC
dWZmZXJPZmZzZXQ6dG90YWxPZmZzZXQudmFsdWUoKQogICAgICAgICBpbnN0YW5jZUNvdW50Omlu
c3RhbmNlQ291bnQKICAgICAgICAgYmFzZVZlcnRleDpiYXNlVmVydGV4CiAgICAgICAgIGJhc2VJ
bnN0YW5jZTpmaXJzdEluc3RhbmNlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKaW5kZXggZWQxMzVhMjczZTE2MDA5ZTU3OTJkMjFmYjliNWViZTllOGU0Yzc5ZS4uZjg5
ZGY0NWY2MTFmYjJhODQ3YWM5OGQ2MjUxYWJlNzdlYTg3OTg3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB1bnNpZ25lZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEludFNpemUgZnJhbWVTaXplID0g
ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgcmV0dXJuIChm
cmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChmcmFtZVNpemUu
YXJlYSgpICogNCkudmFsdWUoKTsKIH0KIAogUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwCmluZGV4
IGM3OTE1ZmI1NWRlMzNmNjZjYmZhYTkyMTM2MGIxOTk1NjQyZDljYzQuLjU0ZTlkMTliYjE5NTFl
MDAxZjE3ZjNjN2JlNWFhMDg4ZWZjNzIyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBCdWZmZXI6OkJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncykKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiB7CiAgICAgYXV0byBjaGVja2VkQXJl
YSA9IHNpemUuYXJlYSgpICogNDsKLSAgICBtX2RhdGEgPSBNYWxsb2NQdHI8dW5zaWduZWQgY2hh
cj46OnRyeVplcm9lZE1hbGxvYyhjaGVja2VkQXJlYS51bnNhZmVHZXQoKSk7CisgICAgbV9kYXRh
ID0gTWFsbG9jUHRyPHVuc2lnbmVkIGNoYXI+Ojp0cnlaZXJvZWRNYWxsb2MoY2hlY2tlZEFyZWEp
OwogfQogCiBCdWZmZXI6On5CdWZmZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmNwcApp
bmRleCAzMjRhZDlhNzQwYzFjZjgzZWY5NzFlZDNiYmNjM2QxYjRkZGJjZDQ5Li4xOWQ1ZTU2ZDgy
M2IxYzAxNmI4NDA0NTg5MWNkMmQ4NGYzOGJkYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCBDT01QdHI8SVdJQ0JpdG1hcD4gY3JlYXRlRGlyZWN0MkRJbWFnZVN1
cmZhY2VXaXRoRGF0YSh2b2lkKiBkYXRhLCBjb25zdCBJbnRTaXplJgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIENPTVB0cjxJV0lDQml0bWFwPiBzdXJmYWNlOwotICAgIEhSRVNVTFQg
aHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRl
Qml0bWFwRnJvbU1lbW9yeShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIHdpY0JpdG1hcEZv
cm1hdCgpLCBzdHJpZGUsIHN0YXRpY19jYXN0PFVJTlQ+KG51bUJ5dGVzLnVuc2FmZUdldCgpKSwg
cmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0YSksICZzdXJmYWNlKTsKKyAgICBIUkVTVUxUIGhy
ID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJp
dG1hcEZyb21NZW1vcnkoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCB3aWNCaXRtYXBGb3Jt
YXQoKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxVSU5UPihudW1CeXRlcy52YWx1ZSgpKSwgcmVpbnRl
cnByZXRfY2FzdDxCWVRFKj4oZGF0YSksICZzdXJmYWNlKTsKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmNwcAppbmRleCBmYTIwODdlZTIxMWUzOWQ2MzM4MmRlZjgzN2RhMGZiYzQ2YTA2N2Mz
Li45MjI0MzZkMThhMzUyNmFjYzUzMjlhNTYwNDU2MGE0NmFkNmQwY2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQx
UmVuZGVyVGFyZ2V0KgogCiAgICAgQ09NUHRyPElEMkQxQml0bWFwMT4gc291cmNlQ1BVQml0bWFw
OwogICAgIEQyRDFfQklUTUFQX1BST1BFUlRJRVMxIGJpdG1hcFByb3BlcnRpZXMgPSBEMkQxOjpC
aXRtYXBQcm9wZXJ0aWVzMShEMkQxX0JJVE1BUF9PUFRJT05TX0NQVV9SRUFEIHwgRDJEMV9CSVRN
QVBfT1BUSU9OU19DQU5OT1RfRFJBVywgRGlyZWN0MkQ6OnBpeGVsRm9ybWF0KCkpOwotICAgIEhS
RVNVTFQgaHIgPSBzb3VyY2VEZXZpY2VDb250ZXh0LT5DcmVhdGVCaXRtYXAobV9iaXRtYXAtPkdl
dFBpeGVsU2l6ZSgpLCBudWxscHRyLCBieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgYml0bWFwUHJv
cGVydGllcywgJnNvdXJjZUNQVUJpdG1hcCk7CisgICAgSFJFU1VMVCBociA9IHNvdXJjZURldmlj
ZUNvbnRleHQtPkNyZWF0ZUJpdG1hcChtX2JpdG1hcC0+R2V0UGl4ZWxTaXplKCksIG51bGxwdHIs
IGJ5dGVzUGVyUm93LCBiaXRtYXBQcm9wZXJ0aWVzLCAmc291cmNlQ1BVQml0bWFwKTsKICAgICBp
ZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAppbmRleCA5YzEwYTQ2NGEzYTkzMDllN2I1NGNhZTI4YTdiYzU2Nzc1ZGU3
OTI0Li4yNDNiNWQ1ZGM2ZTcxM2U1NTExNGIxYjlkYjZhZjUwMjlkZTg4NGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29k
ZXJEaXJlY3QyRDo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgYXV0byBmcmFtZVNpemUgPSBmcmFtZVNpemVB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICByZXR1cm4gKGZyYW1lU2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0
KS52YWx1ZSgpOwogfQogCiB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJnZXRDb250
ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAKaW5kZXggZGRiMTE0Mzk0NzQ0MGQ3MTdlODMzY2JkM2M3ZDZkYzIxYTIwM2JlYS4u
NmQ0NWVlYzI4NWZiMGU3MjI5NzI1Mjg1NGM0YTNkMTc2OTJlNjQ0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHVuc2lnbmVkIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwpCiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAg
IHJldHVybiAwOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGRpbWVuc2lvbiBvZiB0aGUgcmVxdWVz
dGVkIGZyYW1lLgotICAgIHJldHVybiAobV9zaXplLmFyZWEoKSAqIHNpemVvZih1aW50MzJfdCkp
LnVuc2FmZUdldCgpOworICAgIHJldHVybiAobV9zaXplLmFyZWEoKSAqIHNpemVvZih1aW50MzJf
dCkpLnZhbHVlKCk7CiB9CiAKIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQ
RUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1YTMwYTFmNWYwNDYyNGNhYTY2NGVmOWQyNjA0
ODkxMjRjMjc1NjdhLi5iZWNmNjQ1MDI3N2VlYjc0YjA5ZGU1MmVlMTgyZmY2ZTExZWQyNzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAw
MC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCkBAIC02MCwx
MiArNjAsMTIgQEAgc3RhdGljIHZvaWQgc3ljY1RvUkdCKGludCBvZmZzZXQsIGludCB1cGIsIGlu
dCB5LCBpbnQgY2IsIGludCBjciwgaW50KiByLCBpbnQqIGcKIHN0YXRpYyB2b2lkIHN5Y2M0NDRU
b1JHQihvcGpfaW1hZ2VfdCogaW1nKQogewogICAgIENoZWNrZWQ8aW50PiB1cGIgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGltZy0+Y29tcHNbMF0ucHJlYyk7Ci0gICAgaW50IG9mZnNldCA9IDEgPDwgKHVw
Yi51bnNhZmVHZXQoKSAtIDEpOwotICAgIHVwYiA9ICgxIDw8IHVwYi51bnNhZmVHZXQoKSkgLSAx
OworICAgIGludCBvZmZzZXQgPSAxIDw8ICh1cGIudmFsdWUoKSAtIDEpOworICAgIHVwYiA9ICgx
IDw8IHVwYi52YWx1ZSgpKSAtIDE7CiAKICAgICBDaGVja2VkPHNpemVfdD4gbWF4dyA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oaW1nLT5jb21wc1swXS53KTsKICAgICBDaGVja2VkPHNpemVfdD4gbWF4
aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oaW1nLT5jb21wc1swXS5oKTsKLSAgICBzaXplX3QgbWF4
ID0gKG1heHcgKiBtYXhoKS51bnNhZmVHZXQoKTsKKyAgICBzaXplX3QgbWF4ID0gKG1heHcgKiBt
YXhoKS52YWx1ZSgpOwogCiAgICAgY29uc3QgaW50KiB5ID0gaW1nLT5jb21wc1swXS5kYXRhOwog
ICAgIGNvbnN0IGludCogY2IgPSBpbWctPmNvbXBzWzFdLmRhdGE7CkBAIC04Niw3ICs4Niw3IEBA
IHN0YXRpYyB2b2lkIHN5Y2M0NDRUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogICAgIH0KIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4OyArK2kpIHsKLSAgICAgICAgc3ljY1RvUkdCKG9m
ZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAgICBz
eWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKICAg
ICAgICAgKyt5OwogICAgICAgICArK2NiOwogICAgICAgICArK2NyOwpAQCAtMTA3LDEyICsxMDcs
MTIgQEAgc3RhdGljIHZvaWQgc3ljYzQ0NFRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiBzdGF0aWMg
dm9pZCBzeWNjNDIyVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKIHsKICAgICBDaGVja2VkPGludD4g
dXBiID0gc3RhdGljX2Nhc3Q8aW50PihpbWctPmNvbXBzWzBdLnByZWMpOwotICAgIGludCBvZmZz
ZXQgPSAxIDw8ICh1cGIudW5zYWZlR2V0KCkgLSAxKTsKLSAgICB1cGIgPSAoMSA8PCB1cGIudW5z
YWZlR2V0KCkpIC0gMTsKKyAgICBpbnQgb2Zmc2V0ID0gMSA8PCAodXBiLnZhbHVlKCkgLSAxKTsK
KyAgICB1cGIgPSAoMSA8PCB1cGIudmFsdWUoKSkgLSAxOwogCiAgICAgQ2hlY2tlZDxzaXplX3Q+
IG1heHcgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGltZy0+Y29tcHNbMF0udyk7CiAgICAgQ2hlY2tl
ZDxzaXplX3Q+IG1heGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGltZy0+Y29tcHNbMF0uaCk7Ci0g
ICAgc2l6ZV90IG1heCA9IChtYXh3ICogbWF4aCkudW5zYWZlR2V0KCk7CisgICAgc2l6ZV90IG1h
eCA9IChtYXh3ICogbWF4aCkudmFsdWUoKTsKIAogICAgIGNvbnN0IGludCogeSA9IGltZy0+Y29t
cHNbMF0uZGF0YTsKICAgICBjb25zdCBpbnQqIGNiID0gaW1nLT5jb21wc1sxXS5kYXRhOwpAQCAt
MTM0LDEzICsxMzQsMTMgQEAgc3RhdGljIHZvaWQgc3ljYzQyMlRvUkdCKG9wal9pbWFnZV90KiBp
bWcpCiAKICAgICAvLyBpZiBpbWctPngwIGlzIG9kZCwgdGhlbiBmaXJzdCBjb2x1bW4gc2hhbGwg
dXNlIENiL0NyID0gMC4KICAgICBzaXplX3Qgb2ZmeCA9IGltZy0+eDAgJiAxVTsKLSAgICBzaXpl
X3QgbG9vcG1heHcgPSBtYXh3LnVuc2FmZUdldCgpIC0gb2ZmeDsKKyAgICBzaXplX3QgbG9vcG1h
eHcgPSBtYXh3LnZhbHVlKCkgLSBvZmZ4OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXhoLnVuc2FmZUdldCgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heGgu
dmFsdWUoKTsgKytpKSB7CiAgICAgICAgIHNpemVfdCBqOwogCiAgICAgICAgIGlmIChvZmZ4ID4g
MCkgewotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwg
MCwgMCwgciwgZywgYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUo
KSwgKnksIDAsIDAsIHIsIGcsIGIpOwogICAgICAgICAgICAgKyt5OwogICAgICAgICAgICAgKyty
OwogICAgICAgICAgICAgKytnOwpAQCAtMTQ4LDEyICsxNDgsMTIgQEAgc3RhdGljIHZvaWQgc3lj
YzQyMlRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGog
PSAwOyBqIDwgKGxvb3BtYXh3ICYgfnN0YXRpY19jYXN0PHNpemVfdD4oMVUpKTsgaiArPSAyVSkg
ewotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgKmNi
LCAqY3IsIHIsIGcsIGIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVl
KCksICp5LCAqY2IsICpjciwgciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAgICAgICAg
ICArK3I7CiAgICAgICAgICAgICArK2c7CiAgICAgICAgICAgICArK2I7Ci0gICAgICAgICAgICBz
eWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0KCksICp5LCAqY2IsICpjciwgciwgZywgYik7
CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNy
LCByLCBnLCBiKTsKICAgICAgICAgICAgICsreTsKICAgICAgICAgICAgICsrcjsKICAgICAgICAg
ICAgICsrZzsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCBzeWNjNDIyVG9SR0Iob3Bq
X2ltYWdlX3QqIGltZykKICAgICAgICAgICAgICsrY3I7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGogPCBsb29wbWF4dykgewotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2Fm
ZUdldCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9m
ZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2IsICpjciwgciwgZywgYik7CiAgICAgICAgICAgICAr
K3k7CiAgICAgICAgICAgICArK3I7CiAgICAgICAgICAgICArK2c7CkBAIC0xODksMTIgKzE4OSwx
MiBAQCBzdGF0aWMgdm9pZCBzeWNjNDIyVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKIHN0YXRpYyB2
b2lkIHN5Y2M0MjBUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogewogICAgIENoZWNrZWQ8aW50PiB1
cGIgPSBzdGF0aWNfY2FzdDxpbnQ+KGltZy0+Y29tcHNbMF0ucHJlYyk7Ci0gICAgaW50IG9mZnNl
dCA9IDEgPDwgKHVwYi51bnNhZmVHZXQoKSAtIDEpOwotICAgIHVwYiA9ICgxIDw8IHVwYi51bnNh
ZmVHZXQoKSkgLSAxOworICAgIGludCBvZmZzZXQgPSAxIDw8ICh1cGIudmFsdWUoKSAtIDEpOwor
ICAgIHVwYiA9ICgxIDw8IHVwYi52YWx1ZSgpKSAtIDE7CiAKICAgICBDaGVja2VkPHNpemVfdD4g
bWF4dyA9IHN0YXRpY19jYXN0PHNpemVfdD4oaW1nLT5jb21wc1swXS53KTsKICAgICBDaGVja2Vk
PHNpemVfdD4gbWF4aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oaW1nLT5jb21wc1swXS5oKTsKLSAg
ICBzaXplX3QgbWF4ID0gKG1heHcgKiBtYXhoKS51bnNhZmVHZXQoKTsKKyAgICBzaXplX3QgbWF4
ID0gKG1heHcgKiBtYXhoKS52YWx1ZSgpOwogCiAgICAgY29uc3QgaW50KiB5ID0gaW1nLT5jb21w
c1swXS5kYXRhOwogICAgIGNvbnN0IGludCogY2IgPSBpbWctPmNvbXBzWzFdLmRhdGE7CkBAIC0y
MTYsMTUgKzIxNiwxNSBAQCBzdGF0aWMgdm9pZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3QqIGlt
ZykKIAogICAgIC8vIGlmIGltZy0+eDAgaXMgb2RkLCB0aGVuIGZpcnN0IGNvbHVtbiBzaGFsbCB1
c2UgQ2IvQ3IgPSAwLgogICAgIHNpemVfdCBvZmZ4ID0gaW1nLT54MCAmIDFVOwotICAgIHNpemVf
dCBsb29wbWF4dyA9IG1heHcudW5zYWZlR2V0KCkgLSBvZmZ4OworICAgIHNpemVfdCBsb29wbWF4
dyA9IG1heHcudmFsdWUoKSAtIG9mZng7CiAgICAgLy8gaWYgaW1nLT55MCBpcyBvZGQsIHRoZW4g
Zmlyc3QgbGluZSBzaGFsbCB1c2UgQ2IvQ3IgPSAwLgogICAgIHNpemVfdCBvZmZ5ID0gaW1nLT55
MCAmIDFVOwotICAgIHNpemVfdCBsb29wbWF4aCA9IG1heGgudW5zYWZlR2V0KCkgLSBvZmZ5Owor
ICAgIHNpemVfdCBsb29wbWF4aCA9IG1heGgudmFsdWUoKSAtIG9mZnk7CiAKICAgICBpZiAob2Zm
eSA+IDApIHsKICAgICAgICAgc2l6ZV90IGo7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBtYXh3
LnVuc2FmZUdldCgpOyArK2opIHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51
bnNhZmVHZXQoKSwgKnksIDAsIDAsIHIsIGcsIGIpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwg
bWF4dy52YWx1ZSgpOyArK2opIHsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52
YWx1ZSgpLCAqeSwgMCwgMCwgciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAgICAgICAg
ICArK3I7CiAgICAgICAgICAgICArK2c7CkBAIC0yMzQsMTggKzIzNCwxOCBAQCBzdGF0aWMgdm9p
ZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKIAogICAgIHNpemVfdCBpOwogICAgIGZv
ciAoaSA9IDA7IGkgPCAobG9vcG1heGggJiB+c3RhdGljX2Nhc3Q8c2l6ZV90PigxVSkpOyBpICs9
IDJVKSB7Ci0gICAgICAgIGNvbnN0IGludCogbnkgPSB5ICsgbWF4dy51bnNhZmVHZXQoKTsKLSAg
ICAgICAgaW50KiBuciA9IHIgKyBtYXh3LnVuc2FmZUdldCgpOwotICAgICAgICBpbnQqIG5nID0g
ZyArIG1heHcudW5zYWZlR2V0KCk7Ci0gICAgICAgIGludCogbmIgPSBiICsgbWF4dy51bnNhZmVH
ZXQoKTsKKyAgICAgICAgY29uc3QgaW50KiBueSA9IHkgKyBtYXh3LnZhbHVlKCk7CisgICAgICAg
IGludCogbnIgPSByICsgbWF4dy52YWx1ZSgpOworICAgICAgICBpbnQqIG5nID0gZyArIG1heHcu
dmFsdWUoKTsKKyAgICAgICAgaW50KiBuYiA9IGIgKyBtYXh3LnZhbHVlKCk7CiAKICAgICAgICAg
aWYgKG9mZnggPiAwKSB7Ci0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZl
R2V0KCksICp5LCAwLCAwLCByLCBnLCBiKTsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQs
IHVwYi52YWx1ZSgpLCAqeSwgMCwgMCwgciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAg
ICAgICAgICArK3I7CiAgICAgICAgICAgICArK2c7CiAgICAgICAgICAgICArK2I7Ci0gICAgICAg
ICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0KCksICpueSwgKmNiLCAqY3IsIG5y
LCBuZywgbmIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICpu
eSwgKmNiLCAqY3IsIG5yLCBuZywgbmIpOwogICAgICAgICAgICAgKytueTsKICAgICAgICAgICAg
ICsrbnI7CiAgICAgICAgICAgICArK25nOwpAQCAtMjU0LDIzICsyNTQsMjMgQEAgc3RhdGljIHZv
aWQgc3ljYzQyMFRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiAKICAgICAgICAgc2l6ZV90IGo7CiAg
ICAgICAgIGZvciAoaiA9IDA7IGogPCAobG9vcG1heHcgJiB+c3RhdGljX2Nhc3Q8c2l6ZV90Pigx
VSkpOyBqICs9IDJVKSB7Ci0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZl
R2V0KCksICp5LCAqY2IsICpjciwgciwgZywgYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zm
c2V0LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKICAgICAgICAgICAgICsr
eTsKICAgICAgICAgICAgICsrcjsKICAgICAgICAgICAgICsrZzsKICAgICAgICAgICAgICsrYjsK
LSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKnksICpjYiwg
KmNyLCByLCBnLCBiKTsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgp
LCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOwogICAgICAgICAgICAgKyt5OwogICAgICAgICAgICAg
KytyOwogICAgICAgICAgICAgKytnOwogICAgICAgICAgICAgKytiOwogCi0gICAgICAgICAgICBz
eWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0KCksICpueSwgKmNiLCAqY3IsIG5yLCBuZywg
bmIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICpueSwgKmNi
LCAqY3IsIG5yLCBuZywgbmIpOwogICAgICAgICAgICAgKytueTsKICAgICAgICAgICAgICsrbnI7
CiAgICAgICAgICAgICArK25nOwogICAgICAgICAgICAgKytuYjsKLSAgICAgICAgICAgIHN5Y2NU
b1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKm55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7
CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKm55LCAqY2IsICpj
ciwgbnIsIG5nLCBuYik7CiAgICAgICAgICAgICArK255OwogICAgICAgICAgICAgKytucjsKICAg
ICAgICAgICAgICsrbmc7CkBAIC0yNzksMTMgKzI3OSwxMyBAQCBzdGF0aWMgdm9pZCBzeWNjNDIw
VG9SR0Iob3BqX2ltYWdlX3QqIGltZykKICAgICAgICAgICAgICsrY3I7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGogPCBsb29wbWF4dykgewotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwg
dXBiLnVuc2FmZUdldCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAgICAgICAgc3lj
Y1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2IsICpjciwgciwgZywgYik7CiAgICAg
ICAgICAgICArK3k7CiAgICAgICAgICAgICArK3I7CiAgICAgICAgICAgICArK2c7CiAgICAgICAg
ICAgICArK2I7CiAKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQo
KSwgKm55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zm
c2V0LCB1cGIudmFsdWUoKSwgKm55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7CiAgICAgICAgICAg
ICArK255OwogICAgICAgICAgICAgKytucjsKICAgICAgICAgICAgICsrbmc7CkBAIC0yOTMsMjIg
KzI5MywyMiBAQCBzdGF0aWMgdm9pZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKICAg
ICAgICAgICAgICsrY2I7CiAgICAgICAgICAgICArK2NyOwogICAgICAgICB9Ci0gICAgICAgIHkg
Kz0gbWF4dy51bnNhZmVHZXQoKTsKLSAgICAgICAgciArPSBtYXh3LnVuc2FmZUdldCgpOwotICAg
ICAgICBnICs9IG1heHcudW5zYWZlR2V0KCk7Ci0gICAgICAgIGIgKz0gbWF4dy51bnNhZmVHZXQo
KTsKKyAgICAgICAgeSArPSBtYXh3LnZhbHVlKCk7CisgICAgICAgIHIgKz0gbWF4dy52YWx1ZSgp
OworICAgICAgICBnICs9IG1heHcudmFsdWUoKTsKKyAgICAgICAgYiArPSBtYXh3LnZhbHVlKCk7
CiAgICAgfQogICAgIGlmIChpIDwgbG9vcG1heGgpIHsKICAgICAgICAgc2l6ZV90IGo7Ci0gICAg
ICAgIGZvciAoaiA9IDA7IGogPCAobWF4dy51bnNhZmVHZXQoKSAmIH5zdGF0aWNfY2FzdDxzaXpl
X3Q+KDFVKSk7IGogKz0gMlUpIHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51
bnNhZmVHZXQoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKKyAgICAgICAgZm9yIChqID0gMDsg
aiA8IChtYXh3LnZhbHVlKCkgJiB+c3RhdGljX2Nhc3Q8c2l6ZV90PigxVSkpOyBqICs9IDJVKSB7
CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNy
LCByLCBnLCBiKTsKIAogICAgICAgICAgICAgKyt5OwogICAgICAgICAgICAgKytyOwogICAgICAg
ICAgICAgKytnOwogICAgICAgICAgICAgKytiOwogCi0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zm
c2V0LCB1cGIudW5zYWZlR2V0KCksICp5LCAqY2IsICpjciwgciwgZywgYik7CisgICAgICAgICAg
ICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsK
IAogICAgICAgICAgICAgKyt5OwogICAgICAgICAgICAgKytyOwpAQCAtMzE3LDggKzMxNyw4IEBA
IHN0YXRpYyB2b2lkIHN5Y2M0MjBUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogICAgICAgICAgICAg
KytjYjsKICAgICAgICAgICAgICsrY3I7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGogPCBtYXh3
LnVuc2FmZUdldCgpKQotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdl
dCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAgICBpZiAoaiA8IG1heHcudmFsdWUo
KSkKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqeSwgKmNiLCAq
Y3IsIHIsIGcsIGIpOwogICAgIH0KIAogICAgIG9wal9pbWFnZV9kYXRhX2ZyZWUoaW1nLT5jb21w
c1swXS5kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlTGF5ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllclBvb2wubW0KaW5kZXggMmY0NTI1NmY0ODAzOTAyYmM4MWQyZTk5YzdjZDg0YTcyOGQz
YTIxNi4uYjMwODFmOWQ2YTVlNjc3MDgwOTE3MzA2ZjkyZjJmOTBjYzg3Y2MzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KQEAg
LTUzLDcgKzUzLDcgQEAgTGVnYWN5VGlsZUxheWVyUG9vbCogTGVnYWN5VGlsZUxheWVyUG9vbDo6
c2hhcmVkUG9vbCgpCiAKIHVuc2lnbmVkIExlZ2FjeVRpbGVMYXllclBvb2w6OmJ5dGVzQmFja2lu
Z0xheWVyV2l0aFBpeGVsU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiAo
c2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gKHNpemUuYXJlYSgpICog
NCkudmFsdWUoKTsKIH0KIAogTGVnYWN5VGlsZUxheWVyUG9vbDo6TGF5ZXJMaXN0JiBMZWdhY3lU
aWxlTGF5ZXJQb29sOjpsaXN0T2ZMYXllcnNXaXRoU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjVVRGMTYuY3BwCmluZGV4IGMxYzBkNzU0YzQ4ZGUzMDE4MGQ5Nzk0MzdhOTcwZTA1
YmNmZTUwZTguLmQ4ODllMDMwZmM5MzNiMmQ1M2U1M2IzMTg3YTE0ZmFhNjA4ZDkxNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC0x
NDUsNyArMTQ1LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjE2OjpkZWNvZGUoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wKIAogVmVjdG9yPHVpbnQ4X3Q+
IFRleHRDb2RlY1VURjE2OjplbmNvZGUoU3RyaW5nVmlldyBzdHJpbmcsIFVuZW5jb2RhYmxlSGFu
ZGxpbmcpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChXVEY6OmNoZWNrZWRQ
cm9kdWN0PHNpemVfdD4oc3RyaW5nLmxlbmd0aCgpLCAyKS51bnNhZmVHZXQoKSk7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdChXVEY6OmNoZWNrZWRQcm9kdWN0PHNpemVfdD4oc3RyaW5nLmxl
bmd0aCgpLCAyKS52YWx1ZSgpKTsKICAgICBhdXRvKiBieXRlcyA9IHJlc3VsdC5kYXRhKCk7CiAK
ICAgICBpZiAobV9saXR0bGVFbmRpYW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VURjguY3BwCmluZGV4IDUxZGY2OWM0NTBjODViZGIyODI5YzNlMWRjYTk4
NWMxZGQ4NDM1NjkuLmMxZGQ3NmQwZTM1MGNjYzkzY2I3ZGUzODk2NzM3N2MzZGEzZTRiY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAt
NDQ4LDcgKzQ0OCw3IEBAIFZlY3Rvcjx1aW50OF90PiBUZXh0Q29kZWNVVEY4OjplbmNvZGVVVEY4
KFN0cmluZ1ZpZXcgc3RyaW5nLCBVbmVuY29kYWJsZUhhbmRsaW5nCiAgICAgLy8gVGhlIG1heGlt
dW0gbnVtYmVyIG9mIFVURi04IGJ5dGVzIG5lZWRlZCBwZXIgVVRGLTE2IGNvZGUgdW5pdCBpcyAz
LgogICAgIC8vIEJNUCBjaGFyYWN0ZXJzIHRha2Ugb25seSBvbmUgVVRGLTE2IGNvZGUgdW5pdCBh
bmQgY2FuIHRha2UgdXAgdG8gMyBieXRlcyAoM3gpLgogICAgIC8vIE5vbi1CTVAgY2hhcmFjdGVy
cyB0YWtlIHR3byBVVEYtMTYgY29kZSB1bml0cyBhbmQgY2FuIHRha2UgdXAgdG8gNCBieXRlcyAo
MngpLgotICAgIFZlY3Rvcjx1aW50OF90PiBieXRlcyhXVEY6OmNoZWNrZWRQcm9kdWN0PHNpemVf
dD4oc3RyaW5nLmxlbmd0aCgpLCAzKS51bnNhZmVHZXQoKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ5dGVzKFdURjo6Y2hlY2tlZFByb2R1Y3Q8c2l6ZV90PihzdHJpbmcubGVuZ3RoKCksIDMpLnZh
bHVlKCkpOwogICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSAwOwogICAgIGZvciAoYXV0byBjaGFy
YWN0ZXIgOiBzdHJpbmcuY29kZVBvaW50cygpKQogICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ5
dGVzLmRhdGEoKSwgYnl0ZXNXcml0dGVuLCBjaGFyYWN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBjMDM2ZDg1ODNi
MzNiY2Q3OTU2MjAyMzUxZTM0ZTkxZDdmMDE3ZWY3Li5iN2RhYjFiNjk4MTQ3ODNiMzYyMzc2OWI0
ZTQ2NmZjNDY1YzUzYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMzA2Nyw3ICszMDY3LDcgQEAgYm9vbCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52YXMoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCYKICNpZiAhVVNFKENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykKICAg
ICBhdXRvKiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIuZWxl
bWVudCgpKTsKICAgICBhdXRvIGNhbnZhc0FyZWEgPSBjYW52YXMtPnNpemUoKS5hcmVhPFJlY29y
ZE92ZXJmbG93PigpOwotICAgIGlzQ2FudmFzTGFyZ2VFbm91Z2hUb0ZvcmNlQ29tcG9zaXRpbmcg
PSAhY2FudmFzQXJlYS5oYXNPdmVyZmxvd2VkKCkgJiYgY2FudmFzQXJlYS51bnNhZmVHZXQoKSA+
PSBjYW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29tcG9zaXRpbmc7CisgICAgaXNDYW52YXNM
YXJnZUVub3VnaFRvRm9yY2VDb21wb3NpdGluZyA9ICFjYW52YXNBcmVhLmhhc092ZXJmbG93ZWQo
KSAmJiBjYW52YXNBcmVhID49IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGlu
ZzsKICNlbmRpZgogCiAgICAgQ2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneSBjb21wb3NpdGluZ1N0
cmF0ZWd5ID0gY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDc1OWY0NmEyYjJlNzc5OTI4NmMy
NWIzOTE4YmUyMzJmZjM4ZmU2ZWEuLjZkMzdiZDIwYTVlYTIxMjBiYWE0YTNlYjU4ZGQ4ODlkZGMz
YjkwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0y
MTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVy
U2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBpbnQgbWluQnVmZmVy
WSA9IHN0ZDo6bWF4KDAsIG1hcmdpblJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAgICAgaW50
IG1heEJ1ZmZlclkgPSBzdGQ6Om1pbihpbWFnZVJlY3QuaGVpZ2h0KCksIG1hcmdpblJlY3QubWF4
WSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKLSAgICBpZiAoKGltYWdlUmVjdC5hcmVhKCkgKiA0KS51
bnNhZmVHZXQoKSA9PSBwaXhlbEFycmF5TGVuZ3RoKSB7CisgICAgaWYgKChpbWFnZVJlY3QuYXJl
YSgpICogNCkgPT0gcGl4ZWxBcnJheUxlbmd0aCkgewogICAgICAgICBmb3IgKGludCB5ID0gbWlu
QnVmZmVyWTsgeSA8IG1heEJ1ZmZlclk7ICsreSkgewogICAgICAgICAgICAgaW50IHN0YXJ0WCA9
IC0xOwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBpbWFnZVJlY3Qud2lkdGgoKTsg
Kyt4LCBwaXhlbEFycmF5T2Zmc2V0ICs9IDQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VN
YXAuY3BwCmluZGV4IDMwNDVjNDQ4NTc4ZWUzY2MzZWViYWIyNWVjZjZmM2QwZmUwZWY1OGIuLjUz
NDYyMzY4Nzg1YjAwMmZiMTI3NjIxYWNjN2VjMzhlNmRmN2Y5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTWFwLmNwcApAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBTdG9yYWdlTWFw
OjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTdHJpbmcm
IG9sZFZhbHUKICAgICBuZXdTaXplICs9IHZhbHVlLnNpemVJbkJ5dGVzKCk7CiAgICAgaWYgKG9s
ZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICBuZXdTaXplICs9IGtleS5zaXplSW5CeXRlcygpOwot
ICAgIGlmIChtX3F1b3RhU2l6ZSAhPSBub1F1b3RhICYmIChuZXdTaXplLmhhc092ZXJmbG93ZWQo
KSB8fCBuZXdTaXplLnVuc2FmZUdldCgpID4gbV9xdW90YVNpemUpKSB7CisgICAgaWYgKG1fcXVv
dGFTaXplICE9IG5vUXVvdGEgJiYgKG5ld1NpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IG5ld1NpemUg
PiBtX3F1b3RhU2l6ZSkpIHsKICAgICAgICAgcXVvdGFFeGNlcHRpb24gPSB0cnVlOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIG1faW1wbC0+Y3VycmVudFNpemUgPSBuZXdTaXplLnVuc2Fm
ZUdldCgpOworICAgIG1faW1wbC0+Y3VycmVudFNpemUgPSBuZXdTaXplOwogCiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2ltcGwtPm1hcC5hZGQo
a2V5LCB2YWx1ZSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IGFjZDVhYTcyNjE0NjVkZWU1
M2ZkMGIyYzQ4MmVmZDA0ZGQwNmQxNDguLmQyZjVjMjc5ZTg0MmZiZWZmYjc2MzI3YTBkMDMwYTJk
NDg2MDVjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGli
eHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNw
cApAQCAtMTQ1LDEwICsxNDUsMTAgQEAgYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZykKICAgICBjb25zdCBjaGFyKiBidWZmZXIgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPih1cGNvbnZlcnRlZENoYXJhY3RlcnMuZ2V0KCkpOwogICAgIENo
ZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiB1bnNpZ25lZFNpemUgPSBzdHJpbmcubGVu
Z3RoKCk7CiAgICAgdW5zaWduZWRTaXplICo9IHNpemVvZihVQ2hhcik7Ci0gICAgaWYgKHVuc2ln
bmVkU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgdW5zaWduZWRTaXplLnVuc2FmZUdldCgpID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQorICAg
IGlmICh1bnNpZ25lZFNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IHVuc2lnbmVkU2l6ZSA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHVuc2ln
bmVkU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHVu
c2lnbmVkU2l6ZS52YWx1ZSgpKTsKICAgICB4bWxQYXJzZXJDdHh0UHRyIGN0eHQgPSB4bWxDcmVh
dGVNZW1vcnlQYXJzZXJDdHh0KGJ1ZmZlciwgc2l6ZSk7CiAgICAgaWYgKCFjdHh0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcAppbmRleCBjNzY5YmY4NjgyOTNmZmM5MjU4Y2FiNjIwOWViMWNmZDg2OTVmMDJlLi41N2Vl
NWRlZDI0YmRhMjc1ZTU4NmJkZjYxMzJhNTI0NTVhYmFjYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMg
Y29uc3QgY2hhcioqIHhzbHRQYXJhbUFycmF5RnJvbVBhcmFtZXRlck1hcChYU0xUUHJvY2Vzc29y
OjpQYXJhbWV0ZXJNYXAmCiAgICAgaWYgKHBhcmFtZXRlcnMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIGF1dG8gc2l6ZSA9ICgoKENoZWNrZWQ8c2l6ZV90PihwYXJhbWV0ZXJz
LnNpemUoKSkgKiAyVSkgKyAxVSkgKiBzaXplb2YoY2hhciopKS51bnNhZmVHZXQoKTsKKyAgICBh
dXRvIHNpemUgPSAoKChDaGVja2VkPHNpemVfdD4ocGFyYW1ldGVycy5zaXplKCkpICogMlUpICsg
MVUpICogc2l6ZW9mKGNoYXIqKSkudmFsdWUoKTsKICAgICBhdXRvKiogcGFyYW1ldGVyQXJyYXkg
PSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKio+KGZhc3RNYWxsb2Moc2l6ZSkpOwogCiAgICAgc2l6
ZV90IGluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvQ2hh
cmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgKaW5kZXggMzA4YWQ1NmQyNDRhNzBi
NjljOGJlMjVhOTYyYTgwMzM4Mzg4NzMzZS4uZjc0OTBmNmM1NmMzNjA5YzExZDUwZGI1MWUwOTM2
NWExNjY2ODJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9DaGFyYWN0
ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgKQEAgLTEwOSwxMSArMTA5LDExIEBA
IGJvb2wgY29uc3VtZUNoYXJhY3RlclJlZmVyZW5jZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
U3RyaW5nQnVpbGRlciYgZGVjb2RlZENoCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
Y2hhcmFjdGVyID09ICc7JykgewogICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5v
bk5ld2xpbmUoKTsKLSAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZENoYXJh
Y3RlcihQYXJzZXJGdW5jdGlvbnM6OmxlZ2FsRW50aXR5Rm9yKHJlc3VsdC5oYXNPdmVyZmxvd2Vk
KCkgPyAwIDogcmVzdWx0LnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICAgICAgZGVjb2RlZENo
YXJhY3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihy
ZXN1bHQuaGFzT3ZlcmZsb3dlZCgpID8gMCA6IHJlc3VsdC52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoUGFyc2Vy
RnVuY3Rpb25zOjphY2NlcHRNYWxmb3JtZWQoKSkgewotICAgICAgICAgICAgICAgIGRlY29kZWRD
aGFyYWN0ZXIuYXBwZW5kQ2hhcmFjdGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlGb3Io
cmVzdWx0Lmhhc092ZXJmbG93ZWQoKSA/IDAgOiByZXN1bHQudW5zYWZlR2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZENoYXJhY3RlcihQYXJzZXJGdW5jdGlv
bnM6OmxlZ2FsRW50aXR5Rm9yKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkgPyAwIDogcmVzdWx0LnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25zdW1lZENoYXJhY3RlcnMp
OwpAQCAtMTI3LDExICsxMjcsMTEgQEAgYm9vbCBjb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBTdHJpbmdCdWlsZGVyJiBkZWNvZGVkQ2gKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJzsnKSB7CiAgICAgICAgICAgICAg
ICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwotICAgICAgICAgICAgICAgIGRlY29k
ZWRDaGFyYWN0ZXIuYXBwZW5kQ2hhcmFjdGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlG
b3IocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSA/IDAgOiByZXN1bHQudW5zYWZlR2V0KCkpKTsKKyAg
ICAgICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZENoYXJhY3RlcihQYXJzZXJGdW5j
dGlvbnM6OmxlZ2FsRW50aXR5Rm9yKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkgPyAwIDogcmVzdWx0
LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChQYXJzZXJGdW5jdGlvbnM6OmFjY2VwdE1hbGZvcm1lZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVu
Y3Rpb25zOjpsZWdhbEVudGl0eUZvcihyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpID8gMCA6IHJlc3Vs
dC51bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5k
Q2hhcmFjdGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlGb3IocmVzdWx0Lmhhc092ZXJm
bG93ZWQoKSA/IDAgOiByZXN1bHQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3Vy
Y2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggY2I1
MDExNjdiNGRkNTcyYzRjNWMyOTgxMzgyZjEyNmNiMjk3OGZlNy4uNTAzOTZlZTNlY2I2YWU4OTM0
Y2M1YzcxNTBmOTM4M2MxZjM3NDYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMjM3
LDcgKzIzNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAgICAgICAgIGNoZWNrZWRPZmZz
ZXQgKz0gcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkOwogICAgICAgICBNRVNTQUdFX0NIRUNLX1dJ
VEhfUkVUVVJOX1ZBTFVFKCFjaGVja2VkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSwgbnVsbHB0ciwg
Ik92ZXJmbG93ZWQgd2hlbiBhZHZhbmNpbmcgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUgb2Zm
c2V0Iik7CiAKLSAgICAgICAgb2Zmc2V0ID0gY2hlY2tlZE9mZnNldC51bnNhZmVHZXQoKTsKKyAg
ICAgICAgb2Zmc2V0ID0gY2hlY2tlZE9mZnNldDsKICAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRI
X1JFVFVSTl9WQUxVRShvZmZzZXQgPD0gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSwgbnVs
bHB0ciwgIk91dC1vZi1ib3VuZHMgb2Zmc2V0IGludG8gc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5k
bGUiKTsKIAogICAgICAgICBpZiAocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID09IERpc3BsYXlM
aXN0OjpTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCA1MTg3YmJiNTUyOTJmMTcwOWI3NGJm
MjdmMzRlN2Y5NDZlZWM5OWM4Li5lOGJlNTA1ZjM3ZWZlNzljZDFlMWIzOGRiZGZjOWYzNjQ0Njc4
NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTIzMCwxMSArMjMwLDEx
IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUsIFN0cmluCiAgICAgICAgIG5ld0RhdGFiYXNlU2l6ZSArPSB2
YWx1ZS5zaXplSW5CeXRlcygpOwogICAgICAgICBpZiAob2xkVmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICBuZXdEYXRhYmFzZVNpemUgKz0ga2V5LnNpemVJbkJ5dGVzKCk7Ci0gICAgICAgIGlm
IChuZXdEYXRhYmFzZVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IG5ld0RhdGFiYXNlU2l6ZS51bnNh
ZmVHZXQoKSA+IG1fcXVvdGFJbkJ5dGVzKSB7CisgICAgICAgIGlmIChuZXdEYXRhYmFzZVNpemUu
aGFzT3ZlcmZsb3dlZCgpIHx8IG5ld0RhdGFiYXNlU2l6ZSA+IG1fcXVvdGFJbkJ5dGVzKSB7CiAg
ICAgICAgICAgICBxdW90YUV4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgbV9kYXRhYmFzZVNpemUgPSBuZXdEYXRhYmFzZVNpemUudW5zYWZl
R2V0KCk7CisgICAgICAgIG1fZGF0YWJhc2VTaXplID0gbmV3RGF0YWJhc2VTaXplOwogICAgIH0K
IAogICAgIGF1dG8gaW5zZXJ0U3RhdGVtZW50ID0gc2NvcGVkU3RhdGVtZW50KG1faW5zZXJ0U3Rh
dGVtZW50LCAiSU5TRVJUIElOVE8gSXRlbVRhYmxlIFZBTFVFUyAoPywgPykiX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2NDAxNmIwY2UyMDkwODlhOTgxYmNlMjI0OTc3OGY4
MmFkNjQ4YzgzLi4zN2IyNTRiOTBlMDQxZTdlMDIzMjY2NTNkMDljZjAyY2FhYWQ0ZGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgQ2FjaGU6
OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY2FjaGVzLnJlcXVl
c3RTcGFjZShzcGFjZVJlcXVpcmVkLnVuc2FmZUdldCgpLCBbY2FjaGVzID0gbWFrZVJlZihtX2Nh
Y2hlcyksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29y
ZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPERPTUNhY2hl
RW5naW5lOjpFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgbV9jYWNoZXMucmVxdWVzdFNw
YWNlKHNwYWNlUmVxdWlyZWQsIFtjYWNoZXMgPSBtYWtlUmVmKG1fY2FjaGVzKSwgaWRlbnRpZmll
ciA9IG1faWRlbnRpZmllciwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYm
IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBjYWxs
YmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBjZTA4
ZjFiYmUxNGY2MTBjNDNlZDRmZWEwMTg4NmQzNjVlMjNiMDQ4Li5jOTdhNmY1NzZlZmRhZWFlMDRm
Njk4M2JlMjU5NDJjZTIwMzlmZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXJzLmgKQEAgLTk2LDcgKzk2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWkK
ICAgICAgICAgaWYgKFVOTElLRUxZKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEg
PSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLnVuc2FmZUdldCgp
LCBhbGlnbm9mKFQpKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoZGF0YVNpemUsIGFsaWdub2YoVCkpOwogICAgICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCAxMmQ4NjMyYTk2ZTMzN2RlNWQ1
MzUyYjEzMTJhNzgzOWJhYjYwZjQyLi4zODk4MjAwOTc4ZTQzNTQ5N2QzODA3NDAxZTM2NmExOTI4
NzQ3OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25u
ZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29u
bmVjdGlvbkNvY29hLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5k
T3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc2l6ZV90IHNhZmVNZXNzYWdlU2l6ZSA9IG1l
c3NhZ2VTaXplLnVuc2FmZUdldCgpOworICAgIHNpemVfdCBzYWZlTWVzc2FnZVNpemUgPSBtZXNz
YWdlU2l6ZTsKICAgICBhdXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXIt
Pm1lc3NhZ2VOYW1lKCksIHNhZmVNZXNzYWdlU2l6ZSk7CiAgICAgaWYgKCFtZXNzYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjMsNyArNDIzLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVh
ZGVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICBy
ZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKGJvZHksIGJvZHlTaXplLnVuc2FmZUdldCgpLCBudWxscHRy
LCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKKyAgICAgICAgcmV0dXJuIERlY29kZXI6OmNyZWF0
ZShib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CiAgICAg
fQogCiAgICAgbWFjaF9tc2dfYm9keV90KiBib2R5ID0gcmVpbnRlcnByZXRfY2FzdDxtYWNoX21z
Z19ib2R5X3QqPihoZWFkZXIgKyAxKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90
KiBoZWFkZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBE
ZWNvZGVyOjpjcmVhdGUobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZS51bnNhZmVHZXQoKSwg
bnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBEZWNvZGVyOjpjcmVh
dGUobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2ht
ZW50cykpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91bGQgYWx3YXlzIGlu
Y2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCmluZGV4IGNhMGNkNzdiYzVmOGIwNDQzN2Jj
NTE0N2UwY2ZlODUxMTA2N2E0NDcuLmM1OTRlMDQxOTJjNjBmNDE1MDhhMDI1ZTk5YjI1NGQxY2E4
MmE3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hN
ZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVz
c2FnZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBN
YWNoTWVzc2FnZTo6Y3JlYXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXplX3QKICAgICBh
dXRvIGJ1ZmZlclNpemUgPSBDaGVja2VkU2l6ZShzaXplb2YoTWFjaE1lc3NhZ2UpKSArIHNpemU7
CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB2b2lkKiBtZW1vcnkgPSBXVEY6OmZhc3RaZXJvZWRNYWxsb2MoYnVmZmVyU2l6
ZS51bnNhZmVHZXQoKSk7CisgICAgdm9pZCogbWVtb3J5ID0gV1RGOjpmYXN0WmVyb2VkTWFsbG9j
KGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IHsg
bmV3IChOb3ROdWxsLCBtZW1vcnkpIE1hY2hNZXNzYWdlIHsgbWVzc2FnZU5hbWUsIHNpemUgfSB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCBmNmE1
Yzc1NmUyZjI3ZmNhMDUxNDhmNjZjNjFhYmQ3NDRlNjhhMDExLi4yYTUwYjZmNGVkODVhM2Y4MTY1
YmYxNGZlYzI2MzAwNzE4YzE4MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OkhhbmRs
ZSgpCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
KFdURk1vdmUobV9oYW5kbGUpLCBudW1CeXRlc0ZvclNpemUobV9zaXplLCBtX2NvbmZpZ3VyYXRp
b24pLnVuc2FmZUdldCgpKTsKKyAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGUo
V1RGTW92ZShtX2hhbmRsZSksIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJhdGlv
bikudmFsdWUoKSk7CiAgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CiAgICAgZW5jb2RlciA8PCBt
X3NpemU7CiAgICAgZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247CkBAIC0xMTcsNyArMTE3LDcg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICB2b2lkKiBkYXRhID0gMDsKLSAgICBkYXRhID0gU2hhcmVhYmxlQml0bWFwTWFsbG9jOjp0cnlN
YWxsb2MobnVtQnl0ZXMudW5zYWZlR2V0KCkpOworICAgIGRhdGEgPSBTaGFyZWFibGVCaXRtYXBN
YWxsb2M6OnRyeU1hbGxvYyhudW1CeXRlcyk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXpl
LCBjb25maWd1cmF0aW9uLCBkYXRhKSk7CkBAIC0xMjksNyArMTI5LDcgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgQ28KICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9
IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUobnVtQnl0ZXMudW5zYWZlR2V0KCkpOworICAgIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUobnVt
Qnl0ZXMpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpCiAgICAgYXV0byBu
dW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25maWd1cmF0aW9uKTsKICAgICBpZiAo
bnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBudW1CeXRlcy51bnNhZmVHZXQoKSkgeworICAgIGlm
IChzaGFyZWRNZW1vcnktPnNpemUoKSA8IG51bUJ5dGVzKSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IGU2MzhlODY4MTFkNDc5ZmY3ZTc5OTRlMzM5NGU2
YWQ1NDM0YTZjNzQuLjk5NjI4NTJhOTczODhhMzg5NWQ0NDNkMmZhODZjMTlhMGVhMDZmYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0xNjIsMTAgKzE2MiwxMCBA
QCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIHNpemVf
dCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fc2l6
ZSwgbV9jb25maWd1cmF0aW9uKS51bnNhZmVHZXQoKTsgfQorICAgIHNpemVfdCBieXRlc1BlclJv
dygpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fc2l6ZSwgbV9jb25maWd1
cmF0aW9uKS52YWx1ZSgpOyB9CiAgICAgCiBwcml2YXRlOgotICAgIHNpemVfdCBzaXplSW5CeXRl
cygpIGNvbnN0IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJhdGlv
bikudW5zYWZlR2V0KCk7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBudW1CeXRlc0ZvclNpemUobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pLnZhbHVlKCk7IH0KIAog
ICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAgIENvbmZpZ3VyYXRpb24gbV9jb25maWd1
cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4
IGE0NzNhYmYwOThjNTZhMTRmZmU1YzgyZDI5NjQ4MDc4NDJlMDE3NDEuLmMyNTdmYTExZDYyYTMx
NGMyODYyZGNkNzNiMTZhNzgyYzgxMzUyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBSZWZQdHI8U2hhcmVhYmxlUmVz
b3VyY2U+IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUoUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFy
ZWRNZQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgU2hhcmVhYmxlUmVzb3Vy
Y2UgZnJvbSBTaGFyZWRNZW1vcnkgZHVlIHRvIG92ZXJmbG93LiIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKHRvdGFsU2l6ZS51bnNhZmVHZXQoKSA+IHNoYXJlZE1l
bW9yeS0+c2l6ZSgpKSB7CisgICAgaWYgKHRvdGFsU2l6ZSA+IHNoYXJlZE1lbW9yeS0+c2l6ZSgp
KSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBTaGFyZWFibGVSZXNvdXJj
ZSBmcm9tIFNoYXJlZE1lbW9yeSBkdWUgdG8gbWlzbWF0Y2hlZCBidWZmZXIgc2l6ZS4iKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDFkMDZmNDZjMmYzNDZiOTFjNDgxNzJhMTI2ZTc2
OTlmOWViNDE0ZGEuLjIxMmNmNWIwOGRjY2JiMWRhYzYwYWE2ZDllNTdiOTRlM2VlMmUxY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTc2
LDcgKzc2LDcgQEAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IFNoYXJlYWJsZUJp
dG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coV2ViQ29yZToKICNpZiBIQVZFKElPU1VSRkFDRSkK
ICAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gYnl0
ZXNQZXJSb3c7Ci0gICAgcmV0dXJuIElPU3VyZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUJ5
dGVzUGVyUm93LCBieXRlc1BlclJvdy51bnNhZmVHZXQoKSk7CisgICAgcmV0dXJuIElPU3VyZmFj
ZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCBieXRlc1BlclJvdy52YWx1ZSgp
KTsKICNlbHNlCiAgICAgcmV0dXJuIGJ5dGVzUGVyUm93OwogI2VuZGlmCkBAIC05Nyw3ICs5Nyw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCkKICAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+
IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZVdpdGhEYXRhKGRh
dGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudC51
bnNhZmVHZXQoKSwgYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIGNvbG9yU3BhY2UobV9jb25maWd1
cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCByZWxlYXNlQml0bWFwQ29udGV4
dERhdGEsIHRoaXMpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0
ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVXaXRoRGF0YShkYXRhKCksIG1fc2l6ZS53
aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQudmFsdWUoKSwgYnl0ZXNQ
ZXJSb3cudmFsdWUoKSwgY29sb3JTcGFjZShtX2NvbmZpZ3VyYXRpb24pLCBiaXRtYXBJbmZvKG1f
Y29uZmlndXJhdGlvbiksIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOwogICAgIGlm
ICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2Myw3ICsx
NjMsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0lt
YWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aQogICAgIGlmIChieXRlc1BlclJvdy5oYXNP
dmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCksIGJpdHNQZXJQaXhlbC51bnNhZmVHZXQoKSAvIDQsIGJpdHNQZXJQaXhl
bC51bnNhZmVHZXQoKSwgYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIGNvbG9yU3BhY2UobV9jb25m
aWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCBkYXRhUHJvdmlkZXIsIDAs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIGJpdHNQZXJQaXhlbC52YWx1ZSgpIC8gNCwgYml0c1BlclBpeGVsLnZhbHVl
KCksIGJ5dGVzUGVyUm93LnZhbHVlKCksIGNvbG9yU3BhY2UobV9jb25maWd1cmF0aW9uKSwgYml0
bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCBkYXRhUHJvdmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5k
ZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgcmV0dXJuIGltYWdlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA5YmJiMjJhYTZhNjExOTEzMjM5MjgyYzMwZmIyYzBl
NWFiOGJjYzFjLi5mZjRiMzYyZDE3ZDVmODI5NTA2YTViNjA0NmM0ZmIyMjU0MzkxZmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCBPU1N0YXR1
cyBNZWRpYUZvcm1hdFJlYWRlcjo6Y29weVRyYWNrQXJyYXkoQ0ZBcnJheVJlZiogdHJhY2tBcnJh
eUNvcHkpCiAgICAgaWYgKCptX3BhcnNlVHJhY2tzU3RhdHVzICE9IG5vRXJyKQogICAgICAgICBy
ZXR1cm4gKm1fcGFyc2VUcmFja3NTdGF0dXM7CiAKLSAgICBhdXRvIG11dGFibGVBcnJheSA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoYWxsb2NhdG9yKCksIENoZWNrZWQ8Q0ZJbmRleD4o
bV90cmFja1JlYWRlcnMuc2l6ZSgpKS51bnNhZmVHZXQoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOworICAgIGF1dG8gbXV0YWJsZUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJs
ZShhbGxvY2F0b3IoKSwgQ2hlY2tlZDxDRkluZGV4PihtX3RyYWNrUmVhZGVycy5zaXplKCkpLnZh
bHVlKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrUmVh
ZGVyIDogbV90cmFja1JlYWRlcnMpCiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShtdXRhYmxl
QXJyYXkuZ2V0KCksIHRyYWNrUmVhZGVyLT53cmFwcGVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2Ft
cGxlQ3Vyc29yLmNwcAppbmRleCBmMjQ5NzViMTlhMDk1ZWRhNzBjNzRhMjNjZTkzNzc3ZjVlNjUw
ZmMzLi45NGQ4ODA1Yzg1NWIzYWZlM2UyMWQyZjg1M2U0MTAwZTgzN2RjYTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCBPU1N0YXR1cyBNZWRp
YVNhbXBsZUN1cnNvcjo6Y29weVNhbXBsZUxvY2F0aW9uKE1UUGx1Z2luU2FtcGxlQ3Vyc29yU3Rv
cmFnZVJhbmdlKgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkJ5dGVS
YW5nZVNhbXBsZVR5cGUpOwogICAgICAgICBhdXRvIGJ5dGVSYW5nZSA9ICpzYW1wbGUuYnl0ZVJh
bmdlKCk7CiAgICAgICAgICpzdG9yYWdlUmFuZ2UgPSB7Ci0gICAgICAgICAgICAub2Zmc2V0ID0g
Q2hlY2tlZEludDY0KGJ5dGVSYW5nZS5ieXRlT2Zmc2V0KS51bnNhZmVHZXQoKSwKLSAgICAgICAg
ICAgIC5sZW5ndGggPSBDaGVja2VkSW50NjQoYnl0ZVJhbmdlLmJ5dGVMZW5ndGgpLnVuc2FmZUdl
dCgpLAorICAgICAgICAgICAgLm9mZnNldCA9IENoZWNrZWRJbnQ2NChieXRlUmFuZ2UuYnl0ZU9m
ZnNldCkudmFsdWUoKSwKKyAgICAgICAgICAgIC5sZW5ndGggPSBDaGVja2VkSW50NjQoYnl0ZVJh
bmdlLmJ5dGVMZW5ndGgpLnZhbHVlKCksCiAgICAgICAgIH07CiAgICAgICAgICpieXRlU291cmNl
ID0gcmV0YWluUHRyKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5ieXRlUmFuZ2VTYW1w
bGUuZmlyc3QpLmxlYWtSZWYoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHAKaW5kZXggOGZmMzY1Y2QzNDJhODI2ZGEwNDQ5M2JiNjcyOTRjMmM1MWZhMDQzNy4uOTAy
ZTllODQyZGZlOWI2N2I2NWJhNDBjMDhlZWQyNWFhYWY5MzUyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5jcHAKQEAgLTMzLDggKzMzLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIHNpemVfdCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1v
dW50KQogewotICAgIG1fd3JpdGFibGVPZmZzZXQgPSAoQ2hlY2tlZFNpemUgeyBtX3dyaXRhYmxl
T2Zmc2V0IH0gKyBhbW91bnQpLnVuc2FmZUdldCgpOwotICAgIHJldHVybiAoQ2hlY2tlZFNpemUg
eyBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNoYW5nZUFkZChhbW91bnQpIH0gKyBhbW91bnQpLnVu
c2FmZUdldCgpOworICAgIG1fd3JpdGFibGVPZmZzZXQgPSAoQ2hlY2tlZFNpemUgeyBtX3dyaXRh
YmxlT2Zmc2V0IH0gKyBhbW91bnQpLnZhbHVlKCk7CisgICAgcmV0dXJuIChDaGVja2VkU2l6ZSB7
IGhlYWRlcigpLnVucmVhZEJ5dGVzLmV4Y2hhbmdlQWRkKGFtb3VudCkgfSArIGFtb3VudCkudmFs
dWUoKTsKIH0KIAogc2l6ZV90IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBh
Y2l0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAKaW5kZXggZTNiM2Y3ZGNlNThmMzI3MTM0MzhkZmJiYmUwNGI3MDhmMDljMTZjNi4u
ZjViMWZhMGZlZTU5NTAwZmNiNGU5YWYwZGE1YzI3MjA0YTg3NDhmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtNjgsOCArNjgsNyBA
QCBJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2Fm
ZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZQogdW5zaWduZWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSkKIHsKICAgICBBU1NFUlQoIWJhY2tl
bmRTaXplLmlzRW1wdHkoKSk7Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
IGJ5dGVzUGVyUm93ID0gU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhiYWNr
ZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7Ci0gICAgcmV0dXJuIGJ5dGVzUGVy
Um93LnVuc2FmZUdldCgpOworICAgIHJldHVybiBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5
dGVzUGVyUm93KGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKIH0KIAog
c2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5
Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
CmluZGV4IDUzZDAxNTc4MWM0ZGI2NmFhNjQ5MTIwYTdjOGRhYWFmYjM4NDA4YjQuLmFmOGZmZGJj
ZDc0MjhjZTc3NzI1ODQ5ODA3NThjNGY0YWMyYzhmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6ZnJhbWVB
bGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAKIHVuc2lnbmVkIFJl
bW90ZUltYWdlRGVjb2RlckFWRjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsKSBjb25zdAogewotICAgIHJldHVybiAoc2l6ZSgpLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpOworICAgIHJldHVybiAoc2l6ZSgpLmFyZWEoKSAqIDQpLnZhbHVlKCk7CiB9CiAKIFBsYXRm
b3JtSW1hZ2VQdHIgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDk0MjUxNDg2MTc3YzU1MTBjNTdmNTYxMjljNDI1OTZkMzM2OTJkYTUu
LmQwY2I3OWU1ZDFlNjVmOGUxYmQxOTljNTQzZGVkMDkxOGU4NGY1MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0xMzMsNyArMTMzLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjppbmNyZWFzZUJ1ZmZlcmVk
QW1vdW50KHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgbV9idWZmZXJlZEFtb3VudCA9IGNoZWNrZWROZXdCdWZmZXJlZEFtb3VudC51bnNhZmVH
ZXQoKTsKKyAgICBtX2J1ZmZlcmVkQW1vdW50ID0gY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50Owog
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1v
dW50KG1fYnVmZmVyZWRBbW91bnQpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBkNWE1MDE3
NmZmNGIyYmZiZGI1MjMxYzU1YjgxYzU3NDlkMzRkZDZlLi45ZWVlZDQ4ZDZkNDEwMzU0NjRlOGE5
NjI3OTIxMjMwOWVjYzU2YzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvdWJsZSBjb250
ZXh0TWVudUFyZWFMaW1pdCA9IGZhY3Rvck9mQ29udGVudEFyZWEgKiBzY2FsZUZhY3RvciAqIHVu
b2JzY3VyZWRDb250ZW50QXJlYS51bnNhZmVHZXQoKTsKKyAgICBkb3VibGUgY29udGV4dE1lbnVB
cmVhTGltaXQgPSBmYWN0b3JPZkNvbnRlbnRBcmVhICogc2NhbGVGYWN0b3IgKiB1bm9ic2N1cmVk
Q29udGVudEFyZWEudmFsdWUoKTsKIAogICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25Cb3VuZHNJblJv
b3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpCkBAIC0yMDMx
LDcgKzIwMzEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVj
dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlYwogCiAgICAgICAgIGF1dG8gYm91
bmRzID0gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCkpOwogICAgICAgICBhdXRvIGFyZWEgPSBib3VuZHMuYXJlYSgpOwotICAg
ICAgICBpZiAoYXJlYS5oYXNPdmVyZmxvd2VkKCkgfHwgYXJlYS51bnNhZmVHZXQoKSA+IGNvbnRl
eHRNZW51QXJlYUxpbWl0KQorICAgICAgICBpZiAoYXJlYS5oYXNPdmVyZmxvd2VkKCkgfHwgYXJl
YSA+IGNvbnRleHRNZW51QXJlYUxpbWl0KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaWYgKGJvdW5kcy5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kc0lu
Um9vdFZpZXdDb29yZGluYXRlcykpKQpAQCAtNDMxNSw3ICs0MzE1LDcgQEAgdm9pZCBXZWJQYWdl
Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90
IGxlbmd0aERlbHQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbmV3U2VsZWN0
aW9uUmFuZ2UgPSBDaGFyYWN0ZXJSYW5nZShuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQo
KSwgbmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIG5ld1NlbGVjdGlv
blJhbmdlID0gQ2hhcmFjdGVyUmFuZ2UobmV3U2VsZWN0aW9uTG9jYXRpb24sIG5ld1NlbGVjdGlv
bkxlbmd0aCk7CiAgICAgYXV0byB1cGRhdGVkU2VsZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgbmV3U2VsZWN0
aW9uUmFuZ2UpOwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHVwZGF0
ZWRTZWxlY3Rpb25SYW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDk3ZTkwYTdmYzMxYTVkZjgzMGE4MDkwN2Y2MzZiNWZiZWY4MGRhMzguLmRh
MjdiMjZiZDc3NzdlNDVlOWFmZWY5ZjhiYjAxNzliMzY2YTJlODIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0w
Ni0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBD
aGVja2VkOjp1bnNhZmVHZXQoKSB0byBDaGVja2VkOjp2YWx1ZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0
KCkgdG8gQ2hlY2tlZDo6dmFsdWUoKS4gVGhlICJ1bnNhZmVHZXQiIG5hbWluZyBpcyBjb25mdXNp
bmcgYXMgdGhpcworICAgICAgICBmdW5jdGlvbiBpc24ndCByZWFsbHkgdW5zYWZlIHNpbmNlIGl0
IHdpbGwgY3Jhc2ggaWYgdGhlIHZhbHVlIGhhcyBvdmVyZmxvd2VkLiBBbHNvIGFkZCBhbgorICAg
ICAgICBgb3BlcmF0b3IgVCgpYCB0byBpbXBsaWNpdGx5IGNvbnZlcnQgYSBDaGVja2VkIHRvIGl0
cyB1bmRlcmx5aW5nIHR5cGUgd2l0aG91dCBuZWVkaW5nIHRvCisgICAgICAgIGNhbGwgdmFsdWUo
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGlj
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDaGVja2VkQXJpdGhtZXRp
Y1Rlc3Rlcjo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkFsbG93TWl4ZWRTaWduZWRu
ZXNzVGVzdDo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVzdHMuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ludFNpemVUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAyMS0wNi0wMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBTeW5jIFRvb2xzL3dpbi9ETExMYXVuY2hlci9ETExMYXVuY2hlck1haW4uY3BwIHdp
dGggU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0RMTExhdW5jaGVyTWFpbi5jcHAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkQXJpdGht
ZXRpY09wZXJhdGlvbnMuY3BwCmluZGV4IDZkOTc3MmM5NjBhYzQwNjk4OTRjYTc1ODA1ZTVkNzNi
YjkxYmU0MzguLmM0NGE3MGI3NTVlOWMxNTY3NDkxMjQ3OGM3ZGQ2OThmMTU0ODdiZTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZEFy
aXRobWV0aWNPcGVyYXRpb25zLmNwcApAQCAtODgsMzIgKzg4LDMyIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBydW4oKQogICAgIHsKICAgICAgICAgQ2hlY2tlZDx0eXBlLCBSZWNvcmRPdmVy
Zmxvdz4gdmFsdWU7Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCB2YWx1ZS51
bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+
OjptYXgoKSwgKHZhbHVlICsgc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWF4KCkpLnVuc2Fm
ZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1h
eCgpLCAoc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWF4KCkgKyB2YWx1ZSkudW5zYWZlR2V0
KCkpOwotICAgICAgICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCks
ICh2YWx1ZSArIHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1pbigpKS51bnNhZmVHZXQoKSk7
Ci0gICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptaW4oKSwgKHN0
ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1pbigpICsgdmFsdWUpLnVuc2FmZUdldCgpKTsKLQot
ICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKHZhbHVlICogY29lcmNlTGl0ZXJh
bCgwKSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwg
KGNvZXJjZUxpdGVyYWwoMCkgKiB2YWx1ZSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoY29lcmNlTGl0ZXJhbCgwKSwgKHZhbHVlICogdmFsdWUpLnVuc2FmZUdldCgpKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtIGNvZXJjZUxpdGVyYWwoMCkp
LnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIChjb2Vy
Y2VMaXRlcmFsKDApIC0gdmFsdWUpLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNv
ZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtIHZhbHVlKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVY
UEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUrKykudW5zYWZlR2V0KCkpOwotICAgICAg
ICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxKSwgKHZhbHVlLS0pLnVuc2FmZUdldCgpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMSksICgrK3ZhbHVlKS51bnNhZmVHZXQoKSk7
Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAoLS12YWx1ZSkudW5zYWZlR2V0
KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxMCksICh2YWx1ZSArPSBjb2Vy
Y2VMaXRlcmFsKDEwKSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0
ZXJhbCgxMCksIHZhbHVlLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxp
dGVyYWwoMTAwKSwgKHZhbHVlICo9IGNvZXJjZUxpdGVyYWwoMTApKS51bnNhZmVHZXQoKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEwMCksIHZhbHVlLnVuc2FmZUdldCgpKTsK
LSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtPSBjb2VyY2VMaXRl
cmFsKDEwMCkpLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwo
MCksIHZhbHVlLnVuc2FmZUdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwo
MCksIHZhbHVlLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0
czx0eXBlPjo6bWF4KCksICh2YWx1ZSArIHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1heCgp
KS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46
Om1heCgpLCAoc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWF4KCkgKyB2YWx1ZSkudmFsdWUo
KSk7CisgICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptaW4oKSwg
KHZhbHVlICsgc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCkpLnZhbHVlKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCksIChzdGQ6Om51
bWVyaWNfbGltaXRzPHR5cGU+OjptaW4oKSArIHZhbHVlKS52YWx1ZSgpKTsKKworICAgICAgICBF
WFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKHZhbHVlICogY29lcmNlTGl0ZXJhbCgwKSkudmFs
dWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAoY29lcmNlTGl0ZXJh
bCgwKSAqIHZhbHVlKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwo
MCksICh2YWx1ZSAqIHZhbHVlKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxp
dGVyYWwoMCksICh2YWx1ZSAtIGNvZXJjZUxpdGVyYWwoMCkpLnZhbHVlKCkpOworICAgICAgICBF
WFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKGNvZXJjZUxpdGVyYWwoMCkgLSB2YWx1ZSkudmFs
dWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUgLSB2YWx1
ZSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUr
KykudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEpLCAodmFsdWUt
LSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEpLCAoKyt2YWx1
ZSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAoLS12YWx1
ZSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEwKSwgKHZhbHVl
ICs9IGNvZXJjZUxpdGVyYWwoMTApKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJj
ZUxpdGVyYWwoMTApLCB2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxp
dGVyYWwoMTAwKSwgKHZhbHVlICo9IGNvZXJjZUxpdGVyYWwoMTApKS52YWx1ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMTAwKSwgdmFsdWUudmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUgLT0gY29lcmNlTGl0ZXJhbCgxMDAp
KS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIHZhbHVlLnZh
bHVlKCkpOwogICAgICAgICB2YWx1ZSA9IDEwOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0
ZXJhbCgxMCksIHZhbHVlLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxp
dGVyYWwoMCksICh2YWx1ZSAtIGNvZXJjZUxpdGVyYWwoMTApKS51bnNhZmVHZXQoKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEwKSwgdmFsdWUudW5zYWZlR2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxMCksIHZhbHVlLnZhbHVlKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKHZhbHVlIC0gY29lcmNlTGl0ZXJhbCgxMCkp
LnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxMCksIHZhbHVlLnZh
bHVlKCkpOwogCiAgICAgICAgIHZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWlu
KCk7CiAgICAgICAgIEVYUEVDVF9FUSh0cnVlLCAoQ2hlY2tlZDx0eXBlLCBSZWNvcmRPdmVyZmxv
dz4odmFsdWUgLSBjb2VyY2VMaXRlcmFsKDEpKSkuaGFzT3ZlcmZsb3dlZCgpKTsKQEAgLTM3NCwx
MCArMzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQ2hlY2tlZDx0eXBlLCBSZWNvcmRPdmVyZmxv
dz4gdmFsdWU7CiAgICAgICAgIHZhbHVlID0gMTA7CiAKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJj
ZUxpdGVyYWwoMCksICh2YWx1ZSArIC0xMCkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoMFUsICh2YWx1ZSAtIDEwVSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29l
cmNlTGl0ZXJhbCgwKSwgKC0xMCArIHZhbHVlKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUSgwVSwgKDEwVSAtIHZhbHVlKS51bnNhZmVHZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShj
b2VyY2VMaXRlcmFsKDApLCAodmFsdWUgKyAtMTApLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMFUsICh2YWx1ZSAtIDEwVSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VM
aXRlcmFsKDApLCAoLTEwICsgdmFsdWUpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUs
ICgxMFUgLSB2YWx1ZSkudmFsdWUoKSk7CiAgICAgICAgIHZhbHVlID0gc3RkOjpudW1lcmljX2xp
bWl0czx0eXBlPjo6bWluKCk7CiAgICAgICAgIEVYUEVDVF9FUSh0cnVlLCAoQ2hlY2tlZDx0eXBl
LCBSZWNvcmRPdmVyZmxvdz4odmFsdWUgLSAxKSkuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICAgICAg
RVhQRUNUX0VRKHRydWUsICEodmFsdWUtLSkuaGFzT3ZlcmZsb3dlZCgpKTsKQEAgLTQ4OSwxNCAr
NDg5LDE0IEBAIFRFU1QoQ2hlY2tlZEFyaXRobWV0aWNUZXN0LCBJc0luQm91bmRzKQogVEVTVChD
aGVja2VkQXJpdGhtZXRpY1Rlc3QsIERpdmlzaW9uKQogewogICAgIENoZWNrZWRTaXplIHNpemUg
PSAxMDA7Ci0gICAgRVhQRUNUX0VRKDEwMFUsIHNpemUudW5zYWZlR2V0KCkpOworICAgIEVYUEVD
VF9FUSgxMDBVLCBzaXplLnZhbHVlKCkpOwogICAgIHNpemUgLz0gMTBVOwogICAgIEVYUEVDVF9G
QUxTRShzaXplLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgRVhQRUNUX0VRKDEwVSwgc2l6ZS51bnNh
ZmVHZXQoKSk7CisgICAgRVhQRUNUX0VRKDEwVSwgc2l6ZS52YWx1ZSgpKTsKIAogICAgIHNpemUg
Lz0gMTFVOwogICAgIEVYUEVDVF9GQUxTRShzaXplLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgRVhQ
RUNUX0VRKDBVLCBzaXplLnVuc2FmZUdldCgpKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHNpemUudmFs
dWUoKSk7CiAKICAgICBzaXplID0gMTAwOwogICAgIEVYUEVDVF9GQUxTRShzaXplLmhhc092ZXJm
bG93ZWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgVEVTVChDaGVja2VkQXJpdGhtZXRpY1Rlc3Qs
IERpdmlzaW9uKQogCiAgICAgc2l6ZSA9IDEwMDsKICAgICBFWFBFQ1RfRkFMU0Uoc2l6ZS5oYXNP
dmVyZmxvd2VkKCkpOwotICAgIEVYUEVDVF9FUSgxMDBVLCBzaXplLnVuc2FmZUdldCgpKTsKKyAg
ICBFWFBFQ1RfRVEoMTAwVSwgc2l6ZS52YWx1ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ludFJlY3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50
UmVjdFRlc3RzLmNwcAppbmRleCAwNzkzZWFhOGFmOTc2NGQzNTIyYmYxNzdkZDA3M2IyYjU5YjM2
YTQwLi43ZDViMmUwMzA4ZmRhZDI5NDM3NTQyNTRmNWZlN2RmZGJlM2Q4NzNkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UmVjdFRlc3RzLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UmVjdFRlc3RzLmNwcApAQCAt
NjEzLDcgKzYxMyw3IEBAIFRFU1QoSW50UmVjdCwgQXJlYUFuZERpc3RhbmNlcykKIHsKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QoMTAsIDIwLCAxMDAsIDEwMCk7CiAKLSAgICBFWFBFQ1RfRVEo
MTAwMDBVLCByZWN0LmFyZWEoKS51bnNhZmVHZXQoKSk7CisgICAgRVhQRUNUX0VRKDEwMDAwVSwg
cmVjdC5hcmVhKCkudmFsdWUoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRTaXplVGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHAKaW5kZXggYTU1OTQyZjc0ZTRhYzkxOGZk
ZjQ5NTI1OTU2MDhkYzdiY2UxYTVjNC4uNjIyZjBhODhjZGRhZWFkYmU2YmQ0NTZjNTZlOGM0ZDgy
MjlmNWRiZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0lu
dFNpemVUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0lu
dFNpemVUZXN0cy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgVEVTVChJbnRTaXplLCBEaWFnb25hbExl
bmd0aEFuZEFyZWEpCiAgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0KDEwMjQsIDc2OCk7CiAKICAg
ICBFWFBFQ1RfRVEoMTYzODQwMCwgdGVzdC5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSk7Ci0gICAg
RVhQRUNUX0VRKDc4NjQzMlUsIHRlc3QuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBFWFBFQ1Rf
RVEoNzg2NDMyVSwgdGVzdC5hcmVhKCkudmFsdWUoKSk7CiB9CiAKIFRFU1QoSW50U2l6ZSwgU2Nh
bGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430314</attachid>
            <date>2021-06-01 20:14:15 -0700</date>
            <delta_ts>2021-06-01 22:21:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226514-20210601201414.patch</filename>
            <type>text/plain</type>
            <size>229659</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi4xMjVmZWZlMzllYzY2NzZk
NjUwYjExOWIwYzk4YzY1YjdkZDMzZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVuYW1lIENo
ZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRoZSAidW5zYWZlR2V0IiBu
YW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXNuJ3QgcmVhbGx5
IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dlZC4g
QWxzbyBhZGQgYW4KKyAgICAgICAgYG9wZXJhdG9yIFQoKWAgdG8gaW1wbGljaXRseSBjb252ZXJ0
IGEgQ2hlY2tlZCB0byBpdHMgdW5kZXJseWluZyB0eXBlIHdpdGhvdXQgbmVlZGluZyB0bworICAg
ICAgICBjYWxsIHZhbHVlKCkuCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmNoZWNrQWRkQ29uc3RhbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpjaGVja1N1YkNvbnN0YW50IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6Y2hlY2tNdWxDb25zdGFudCBjb25zdCk6
CisgICAgICAgICogYjMvQjNDb25zdDY0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3Q2NFZhbHVlOjpjaGVja0FkZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNv
bnN0NjRWYWx1ZTo6Y2hlY2tTdWJDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpD
b25zdDY0VmFsdWU6OmNoZWNrTXVsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpGaW5hbGx5Q29udGV4dDo6
bnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcyBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQ
aGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRm9yd2FyZFZhcmFyZ3NX
aXRoU3ByZWFkKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBoZWFwL0hlYXAu
Y3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmV4dHJhTWVtb3J5U2l6ZSk6CisgICAgICAgIChK
U0M6OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpy
ZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6cHJvcGFnYXRlRXh0ZXJuYWxNZW1vcnlWaXNp
dGVkSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjpzbG93RW5zdXJlQ2FwYWNpdHkpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpjb25jYXRBcHBlbmRP
bmUpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
T01NT05fU0xPV19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6SGFzaE1hcEJ1
ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpIYXNoTWFwSW1wbDo6SGFzaE1h
cEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6Om5leHRDYXBhY2l0eSk6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsPEhhc2hNYXBC
dWNrZXRUeXBlPjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQu
Y3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJbW11dGFibGVCdXR0
ZXJmbHk6OnRyeUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6b2Zmc2V0T2ZWYXJpYWJs
ZSk6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZUZv
clNjb3BlU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcu
aDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OlNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3Mp
OgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6
U2NyYXRjaEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01h
cEltcGwuaDoKKyAgICAgICAgKEpTQzo6V2Vha01hcEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUpOgor
ICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QWlySVJHZW5lcmF0b3I6OmVtaXRDYWxsUGF0Y2hwb2ludCk6CisgICAgICAgICogd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIz
SVJHZW5lcmF0b3IpOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6YWxs
b2NhdGlvblNpemUpOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OnB1c2gpOgorICAgICAgICAoSlNDOjpX
YXNtOjpMTEludEdlbmVyYXRvcjo6Z2V0RHJvcEtlZXBDb3VudCk6CisgICAgICAgIChKU0M6Oldh
c206OkxMSW50R2VuZXJhdG9yOjp3YWxrRXhwcmVzc2lvblN0YWNrKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChKU0M6Oldh
c206OkxMSW50R2VuZXJhdG9yOjphZGRMb29wKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmFkZFRvcExldmVsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0
b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZElm
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEVsc2VUb1VucmVhY2hh
YmxlKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlOjphbGxvY2F0ZWRTaXplKToKKyAgICAgICAgKiB3YXNtL1dhc21TdHJlYW1p
bmdQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OmFkZEJ5
dGVzKToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OlRhYmxlOjpUYWJsZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpncm93KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY1JlZlRhYmxlOjpGdW5jUmVmVGFibGUpOgorICAgICAgICAqIHlh
cnIvWWFyckludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6
OkRpc2p1bmN0aW9uQ29udGV4dDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpZYXJy
OjpJbnRlcnByZXRlcjo6UGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OmFsbG9jYXRpb25T
aXplKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmFsbG9jUGFyZW50aGVzZXNE
aXNqdW5jdGlvbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0
b21DaGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRv
bUJhY2tSZWZlcmVuY2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21Q
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBp
bGVyOjphdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kKToKKyAgICAgICAgKEpTQzo6WWFycjo6
Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNPbmNlRW5kKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNUZXJtaW5hbEVuZCk6CisgICAgICAgIChK
U0M6OllhcnI6OkJ5dGVDb21waWxlcjo6ZW1pdERpc2p1bmN0aW9uKToKKyAgICAgICAgKiB5YXJy
L1lhcnJJbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Qnl0ZVRl
cm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Q2hlY2tJbnB1dCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJ5dGVUZXJtOjpVbmNoZWNrSW5wdXQpOgorICAgICAgICAqIHlhcnIvWWFy
ckpJVC5jcHA6CisgICAgICAgICogeWFyci9ZYXJyUGFyc2VyLmg6CisgICAgICAgIChKU0M6Ollh
cnI6OlBhcnNlcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcik6CisK
IDIwMjEtMDYtMDEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1BFXVtHVEtdIFN1cHBvcnQgYnVpbGRpbmcgYWdhaW5zdCB1Q2xpYmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggZGVhN2NiZGNhODI5YWE3MTNjODUxODQ4ZWIyMjFmNjJkZGE3N2U5Ni4uNWI2ZTZkNWZmM2Qw
NWU0YzhlYTJlYzgxMDE2ODMyYmVmY2FiZThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAyMS0w
Ni0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBD
aGVja2VkOjp1bnNhZmVHZXQoKSB0byBDaGVja2VkOjp2YWx1ZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkg
dG8gQ2hlY2tlZDo6dmFsdWUoKS4gVGhlICJ1bnNhZmVHZXQiIG5hbWluZyBpcyBjb25mdXNpbmcg
YXMgdGhpcworICAgICAgICBmdW5jdGlvbiBpc24ndCByZWFsbHkgdW5zYWZlIHNpbmNlIGl0IHdp
bGwgY3Jhc2ggaWYgdGhlIHZhbHVlIGhhcyBvdmVyZmxvd2VkLiBBbHNvIGFkZCBhbgorICAgICAg
ICBgb3BlcmF0b3IgVCgpYCB0byBpbXBsaWNpdGx5IGNvbnZlcnQgYSBDaGVja2VkIHRvIGl0cyB1
bmRlcmx5aW5nIHR5cGUgd2l0aG91dCBuZWVkaW5nIHRvCisgICAgICAgIGNhbGwgdmFsdWUoKS4K
KworICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjpDaGVj
a2VkOjpvcGVyYXRvciEgY29uc3QpOgorICAgICAgICAoV1RGOjpDaGVja2VkOjpvcGVyYXRvciBi
b29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q2hlY2tlZDo6b3BlcmF0b3IgVCBjb25zdCk6Cisg
ICAgICAgIChXVEY6OkNoZWNrZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q2hlY2tl
ZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OkNoZWNrZWQ6Om9wZXJhdG9yPCBjb25zdCk6
CisgICAgICAgIChXVEY6OkNoZWNrZWQ6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RG
OjpDaGVja2VkOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoV1RGOjpDaGVja2VkOjpvcGVy
YXRvcj49IGNvbnN0KToKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudEJ1ZmZlci5oOgorICAgICAg
ICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6ZmFzdENhbGxvYyk6CisgICAg
ICAgIChXVEY6OnRyeUZhc3RDYWxsb2MpOgorICAgICAgICAqIHd0Zi9HaWdhY2FnZS5jcHA6Cisg
ICAgICAgIChHaWdhY2FnZTo6dHJ5TWFsbG9jQXJyYXkpOgorICAgICAgICAqIHd0Zi9VUkxIZWxw
ZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6dXNlclZpc2libGVVUkwpOgorICAg
ICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnBhcnNl
SVB2NFBpZWNlKToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3Ry
aW5nKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdURjo6U29ja2V0Q29ubmVjdGlvbjo6cmVhZE1lc3NhZ2UpOgorICAgICAgICAoV1RGOjpTb2Nr
ZXRDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5j
cHA6CisgICAgICAgIChXVEY6OkNTdHJpbmdCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdC
dWZmZXI6OlN0cmluZ0J1ZmZlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlckpT
T04uY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRRdW90ZWRKU09OU3Ry
aW5nKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAo
V1RGOjp0cnlNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmFsbG9jYXRpb25TaXplKToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg6CisgICAgICAgIChX
VEY6OnBhcnNlSW50ZWdlcik6CisKIDIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjc3ODgxLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDBmZjcxMTJhYzI4OTBjMzU5Yjg1NDcwYmVjMzBiYmY2YmMyYjk3OTQuLmIz
NzRmZTUzYzlhMzEyODI1MWU1M2E1ZjBlZjFiMGE0ZmM2ZmVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkgdG8gQ2hlY2tlZDo6dmFsdWUo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVuYW1lIENo
ZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRoZSAidW5zYWZlR2V0IiBu
YW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXNuJ3QgcmVhbGx5
IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dlZC4g
QWxzbyBhZGQgYW4KKyAgICAgICAgYG9wZXJhdG9yIFQoKWAgdG8gaW1wbGljaXRseSBjb252ZXJ0
IGEgQ2hlY2tlZCB0byBpdHMgdW5kZXJseWluZyB0eXBlIHdpdGhvdXQgbmVlZGluZyB0bworICAg
ICAgICBjYWxsIHZhbHVlKCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRU
ZXJtaW5hbCk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmVuY29kZSk6CisgICAg
ICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3Vw
QWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3Rh
dGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFtZSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpzbGljZUFycmF5QnVmZmVyVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb3B5QnVmZmVyU3Vi
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ2xlYXJCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZmZXJTdWJEYXRh
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQ29weUJ1ZmZl
clN1YkRhdGEpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcDJEKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0FycmF5cyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRl
eEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhJbWFnZVN1
YlJlY3RhbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjaGVja2VkQWRkQW5kTXVsdGlwbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhl
bENvdW50KToKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9BcnJheS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9BcnJheTo6cmVzaXplKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0cnlDcmVhdGVBdWRpb0J1ZmZlckxpc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQVJp
bmdCdWZmZXI6OmFkb3B0U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6
OmluaXRpYWxpemVBZnRlckFsbG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyOjphbGxvY2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9C
dWZmZXJMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6V2Vi
QXVkaW9CdWZmZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1hdENvbnZlcnRlcjo6Rm9ybWF0Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUltYWdlU2l6ZUlu
Qnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZy
YW1lQnl0ZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdM
ZXZlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFt
ZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTYW1wbGVBVkZPYmpDOjpzZXRCeXRlUmFuZ2VPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2VGb3JBdHRhY2htZW50IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVCYWNrZHJvcEZpbHRlcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclBvb2w6OmJhY2tpbmdTdG9yZUJ5dGVzRm9yU2l6ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmZyYW1lQnl0ZXNBdEluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWZmZWN0QXBwbHlBY2NlbGVyYXRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlQcmVtdWx0aXBseWluZ0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlVbnBy
ZW11bHRpcGx5aW5nQWxwaGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJp
bmRHcm91cEFsbG9jYXRvcjo6YWxsb2NhdGVBbmRTZXRFbmNvZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnJlYWxsb2NhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06CisgICAgICAg
IChXZWJDb3JlOjpHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFs
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJh
bWVCeXRlc0F0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUJ1ZmZlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCdWZmZXI6OkJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVEaXJlY3QyREltYWdlU3VyZmFjZVdp
dGhEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNvbXBhdGlibGVCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJEaXJlY3QyRDo6ZnJhbWVCeXRlc0F0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ljYzQ0NFRvUkdCKToKKyAgICAgICAgKFdlYkNv
cmU6OnN5Y2M0MjJUb1JHQik6CisgICAgICAgIChXZWJDb3JlOjpzeWNjNDIwVG9SR0IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6Ynl0ZXNCYWNraW5nTGF5ZXJXaXRoUGl4ZWxTaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDb2RlY1VURjE2OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNV
VEY4OjplbmNvZGVVVEY4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWly
ZXNDb21wb3NpdGluZ0ZvckNhbnZhcyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlTWFwOjpzZXRJdGVtKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorICAg
ICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4
c2x0UGFyYW1BcnJheUZyb21QYXJhbWV0ZXJNYXApOgorICAgICAgICAqIHhtbC9wYXJzZXIvQ2hh
cmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3Vt
ZUNoYXJhY3RlclJlZmVyZW5jZSk6CisKIDIwMjEtMDYtMDEgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gUmVtb3ZlIHVudXNlZCBHcmFw
aGljc0NvbnRleHQ6OmhkYygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzYzExNDY3ZjdmZmNhZmNiYzZiMjE1ZTZl
YTQ3Mjg2NWEwMDBkYzkuLjU4MjU3MjAzZjI4NDc4N2FjOTU5YTQwNTg2ODhlNTQ3Y2JkMTZkMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQ2hlY2tlZDo6dW5zYWZlR2V0KCkgdG8g
Q2hlY2tlZDo6dmFsdWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgUmVuYW1lIENoZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkuIFRo
ZSAidW5zYWZlR2V0IiBuYW1pbmcgaXMgY29uZnVzaW5nIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rp
b24gaXNuJ3QgcmVhbGx5IHVuc2FmZSBzaW5jZSBpdCB3aWxsIGNyYXNoIGlmIHRoZSB2YWx1ZSBo
YXMgb3ZlcmZsb3dlZC4gQWxzbyBhZGQgYW4KKyAgICAgICAgYG9wZXJhdG9yIFQoKWAgdG8gaW1w
bGljaXRseSBjb252ZXJ0IGEgQ2hlY2tlZCB0byBpdHMgdW5kZXJseWluZyB0eXBlIHdpdGhvdXQg
bmVlZGluZyB0bworICAgICAgICBjYWxsIHZhbHVlKCkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBw
bHlpbmdEaXNwbGF5TGlzdHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VE
YXRhYmFzZTo6c2V0SXRlbSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlOjpwdXQpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpjcmVh
dGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNz
YWdlLmNwcDoKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6CisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Ynl0ZXNQZXJSb3cgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVS
ZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVy
Um93KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNHSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6Y29weVRy
YWNrQXJyYXkpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVDdXJzb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBsZUN1cnNvcjo6Y29w
eVNhbXBsZUxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlM
aXN0V3JpdGVySGFuZGxlOjphZHZhbmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVy
Um93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkY6OmZyYW1lQnl0
ZXNBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmluY3JlYXNl
QnVmZmVyZWRBbW91bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEV2YXNpb25SZWN0c0Fi
b3ZlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9u
V2l0aERlbHRhKToKKwogMjAyMS0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyNzgyNTMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAppbmRleCBiMGIwYjM3NDVjYzNm
NThiNDE0MGE0YjAyNDc1NTEzODc4ZjZkNDYxLi4wM2JhYmE2OTU5OTU1MTkwYTZkNjBmZTFkMWMx
Zjk0ZTM5MzQ2MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDMyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1
ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6Y2hlY2tBZGRDb25z
dGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICBDaGVj
a2VkSW50MzIgcmVzdWx0ID0gQ2hlY2tlZEludDMyKG1fdmFsdWUpICsgQ2hlY2tlZEludDMyKG90
aGVyLT5hc0ludDMyKCkpOwogICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmln
aW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZh
bHVlPihvcmlnaW4oKSwgcmVzdWx0KTsKIH0KIAogVmFsdWUqIENvbnN0MzJWYWx1ZTo6Y2hlY2tT
dWJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKQEAg
LTg1LDcgKzg1LDcgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6Y2hlY2tTdWJDb25zdGFudChQcm9j
ZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICBDaGVja2VkSW50MzIg
cmVzdWx0ID0gQ2hlY2tlZEludDMyKG1fdmFsdWUpIC0gQ2hlY2tlZEludDMyKG90aGVyLT5hc0lu
dDMyKCkpOwogICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgcmVz
dWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmln
aW4oKSwgcmVzdWx0KTsKIH0KIAogVmFsdWUqIENvbnN0MzJWYWx1ZTo6Y2hlY2tNdWxDb25zdGFu
dChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk1
LDcgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6Y2hlY2tNdWxDb25zdGFudChQcm9jZWR1cmUmIHBy
b2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICBDaGVja2VkSW50MzIgcmVzdWx0ID0g
Q2hlY2tlZEludDMyKG1fdmFsdWUpICogQ2hlY2tlZEludDMyKG90aGVyLT5hc0ludDMyKCkpOwog
ICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnVuc2Fm
ZUdldCgpKTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgcmVz
dWx0KTsKIH0KIAogVmFsdWUqIENvbnN0MzJWYWx1ZTo6Y2hlY2tOZWdDb25zdGFudChQcm9jZWR1
cmUmIHByb2MpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdDY0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVl
LmNwcAppbmRleCBkM2UyYTQyNzM1OTAxYmYwYjU2MjI3ZDEzOWNmYzU1MTVhZWE1NTg5Li5jOWE0
MDJmYTNjMzZlNGJjM2EyMDEwZGIxNjEzMjEwMGVjZWI5MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgVmFsdWUqIENv
bnN0NjRWYWx1ZTo6Y2hlY2tBZGRDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3QKICAgICBDaGVja2VkSW50NjQgcmVzdWx0ID0gQ2hlY2tlZEludDY0KG1f
dmFsdWUpICsgQ2hlY2tlZEludDY0KG90aGVyLT5hc0ludDY0KCkpOwogICAgIGlmIChyZXN1bHQu
aGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJv
Yy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICBy
ZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0KTsKIH0KIAogVmFs
dWUqIENvbnN0NjRWYWx1ZTo6Y2hlY2tTdWJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3QKQEAgLTg1LDcgKzg1LDcgQEAgVmFsdWUqIENvbnN0NjRWYWx1
ZTo6Y2hlY2tTdWJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3QKICAgICBDaGVja2VkSW50NjQgcmVzdWx0ID0gQ2hlY2tlZEludDY0KG1fdmFsdWUpIC0g
Q2hlY2tlZEludDY0KG90aGVyLT5hc0ludDY0KCkpOwogICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZs
b3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3Q2NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gcHJv
Yy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0KTsKIH0KIAogVmFsdWUqIENvbnN0
NjRWYWx1ZTo6Y2hlY2tNdWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKQEAgLTk1LDcgKzk1LDcgQEAgVmFsdWUqIENvbnN0NjRWYWx1ZTo6Y2hlY2tN
dWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAg
ICBDaGVja2VkSW50NjQgcmVzdWx0ID0gQ2hlY2tlZEludDY0KG1fdmFsdWUpICogQ2hlY2tlZElu
dDY0KG90aGVyLT5hc0ludDY0KCkpOwogICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVl
PihvcmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3Q2NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0KTsKIH0KIAogVmFsdWUqIENvbnN0NjRWYWx1ZTo6
Y2hlY2tOZWdDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
Y2I5NjkzNDJhZGQ4ZGY2MmM2NTZkNDA0Yjg1ZDRmYTdmMzM5NzhkOC4uMGJjMWVlMTVjOGYzMTdm
OGJlMWE3MGM4OTgzOWNmMDkyZTk3NmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjA3LDcgKzIwNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBjb21wbGV0aW9uVHlwZVJl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wbGV0aW9uUmVjb3JkLnR5cGVSZWdpc3Rlci5n
ZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBjb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29tcGxldGlvblJlY29yZC52YWx1ZVJlZ2lzdGVyLmdldCgpOyB9CiAK
LSAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcy51bnNhZmVHZXQoKTsgfQorICAgICAgICB1
aW50MzJfdCBudW1iZXJPZkJyZWFrc09yQ29udGludWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1i
ZXJPZkJyZWFrc09yQ29udGludWVzOyB9CiAgICAgICAgIHZvaWQgaW5jTnVtYmVyT2ZCcmVha3NP
ckNvbnRpbnVlcygpIHsgbV9udW1iZXJPZkJyZWFrc09yQ29udGludWVzKys7IH0KIAogICAgICAg
ICBib29sIGhhbmRsZXNSZXR1cm5zKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVzUmV0dXJuczsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAppbmRleCAyZWRkOWFlNWFkNzliNGMyMjlhNjM3OTZhMmZhM2Q3MmRmOGE3YTc0
Li5jNDdkNDkzMDgzMjU2ZDM0NTE5ODZkODEzMDNlYTZmM2M3MjRmOTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApA
QCAtMzk0LDEyICszOTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIWluZGV4
VmFsdWUgfHwgIWluZGV4VmFsdWUuaXNVSW50MzIoKSkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4g
Y2hlY2tlZEluZGV4ID0gaW5kZXhWYWx1ZS5hc1VJbnQzMigpOworICAgICAgICAgICAgICAgIENo
ZWNrZWRVaW50MzIgY2hlY2tlZEluZGV4ID0gaW5kZXhWYWx1ZS5hc1VJbnQzMigpOwogICAgICAg
ICAgICAgICAgIGNoZWNrZWRJbmRleCArPSBub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgp
OwogICAgICAgICAgICAgICAgIGlmIChjaGVja2VkSW5kZXguaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IGNoZWNrZWRJbmRleC51bnNhZmVHZXQoKTsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IGNoZWNrZWRJbmRleDsKICAgICAgICAgICAgICAgICBOb2Rl
KiBhcmd1bWVudHMgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBhcmd1bWVudHMtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWUoKTsKICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGZjYjA0NDYwYTNmZDA3MTVkOTQ3NWZi
YWFmMDM4MTM3MGY3OGQyODQuLmIxNzIzZGZmOTUyNzlhNWViYjJjY2NkY2FjZjZhODhlNDg4YWNm
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
MzAzMyw3ICszMDMzLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Fy
cmF5V2l0aFNwcmVhZFNsb3csIEpTQ2VsbCosIChKU0dsb2JhbE9iamUKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBFbmNvZGVkSlNWYWx1ZSogdmFsdWVz
ID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihidWZmZXIpOwotICAgIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkTGVuZ3RoID0gMDsKKyAgICBDaGVja2VkVWlu
dDMyIGNoZWNrZWRMZW5ndGggPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1J
dGVtczsgaSsrKSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodmFs
dWVzW2ldKTsKICAgICAgICAgaWYgKEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBhcnJheSA9IGpzRHlu
YW1pY0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPih2bSwgdmFsdWUpKQpAQCAtMzA0Nyw3ICsz
MDQ3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNw
cmVhZFNsb3csIEpTQ2VsbCosIChKU0dsb2JhbE9iamUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gY2hlY2tlZExlbmd0aC51bnNhZmVHZXQo
KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjaGVja2VkTGVuZ3RoOwogICAgIGlmIChVTkxJS0VM
WShsZW5ndGggPj0gTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpIHsKICAg
ICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCA4MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZmYmNmZDYyM2NhNWM1Yzdk
Li4yM2JlN2U3NzVkM2E4NWI4N2FkNzZmNjE4YTJkYTc0OTgyOTk3NjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03Mjg0LDcgKzcyODQs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmNvbnN0SW50MzIoc3RhcnRMZW5ndGgu
dW5zYWZlR2V0KCkpOworICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmNvbnN0SW50
MzIoc3RhcnRMZW5ndGgpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9ub2RlLT5udW1DaGlsZHJlbigpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoYml0VmVj
dG9yLT5nZXQoaSkpIHsKQEAgLTczMzEsNyArNzMzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgcmVzdWx0ZWQgYXJyYXkgZnJvbSBOZXdB
cnJheVdpdGhTcHJlYWQgaXMgYWx3YXlzIGNvbnRpZ3VvdXMsIHdlIHNob3VsZCBub3QgZ2VuZXJh
dGUgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gRG91YmxlIGZv
cm0gZXZlbiBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGluZ1R5cGUgaXMgQXJyYXlX
aXRoRG91YmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVl
ID0gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQodmFsdWUpLCBtX291dC5i
YXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIEpTVmFsdWUoKSwgKENoZWNrZWQ8aW50MzJf
dD4oc2l6ZW9mKEpTVmFsdWUpKSAqIGkpLnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSksIG1f
b3V0LmJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgSlNWYWx1ZSgpLCBDaGVja2VkPGlu
dDMyX3Q+KHNpemVvZihKU1ZhbHVlKSkgKiBpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gbV9vdXQuYWRkKGluZGV4
LCBtX291dC5jb25zdEludFB0cihhcnJheS0+bGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC03NjI1LDcgKzc2MjUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgQVNTRVJUKGltbXV0YWJsZUJ1dHRlcmZseS0+bGVuZ3RoKCkgPD0gTUFYX1NUT1JBR0VfVkVD
VE9SX0xFTkdUSCk7CiAKICAgICAgICAgICAgIExWYWx1ZSBmYXN0SW1tdXRhYmxlQnV0dGVyZmx5
VmFsdWUgPSBhbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTSW1tdXRhYmxlQnV0dGVyZmx5PigK
LSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
YWxsb2NhdGlvblNpemUoaW1tdXRhYmxlQnV0dGVyZmx5LT5sZW5ndGgoKSkudW5zYWZlR2V0KCkp
LAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKEpTSW1tdXRhYmxlQnV0dGVyZmx5
OjphbGxvY2F0aW9uU2l6ZShpbW11dGFibGVCdXR0ZXJmbHktPmxlbmd0aCgpKSksCiAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJ
bmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51
bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCBzbG93QWxsb2NhdGlvbik7CiAgICAgICAgICAg
ICBMVmFsdWUgZmFzdEltbXV0YWJsZUJ1dHRlcmZseVN0b3JhZ2UgPSB0b0J1dHRlcmZseShmYXN0
SW1tdXRhYmxlQnV0dGVyZmx5VmFsdWUpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291
dC5jb25zdEludDMyKGltbXV0YWJsZUJ1dHRlcmZseS0+bGVuZ3RoKCkpLCBmYXN0SW1tdXRhYmxl
QnV0dGVyZmx5U3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKQEAgLTEw
MjM3LDcgKzEwMjM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ2hlY2tlZDxpbnQzMl90PiBjdXJyZW50U3RvcmVPZmZzZXQgeyBzdG9yZU9mZnNldCB9Owog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RvcmVPZmZzZXQgLT0gKG9m
ZnNldENvdW50ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4
KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBjdXJy
ZW50U3RvcmVPZmZzZXQudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BS
MiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBjdXJyZW50U3RvcmVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90Pihh
cnJheS0+bGVuZ3RoKCkpKSwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEwODg1LDcgKzEwODg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgLy8gQmVjYXVzZSBmb3J3YXJkZWQgdmFsdWVzIGFyZSBkcmFpbmVkIGFzIEpTVmFs
dWUsIHdlIHNob3VsZCBub3QgZ2VuZXJhdGUgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgLy8g
aW4gRG91YmxlIGZvcm0gZXZlbiBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGluZ1R5
cGUgaXMgQXJyYXlXaXRoRG91YmxlLgogICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVl
ID0gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOwotICAgICAgICAgICAgICAgICAgICBt
X291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQodmFsdWUpLCBtX291dC5iYXNlSW5kZXgobV9o
ZWFwcy52YXJpYWJsZXMsIHRhcmdldFN0YXJ0LCBzdG9yZUluZGV4LCBKU1ZhbHVlKCksIChDaGVj
a2VkPGludDMyX3Q+KHNpemVvZihSZWdpc3RlcikpICogaSkudW5zYWZlR2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KHZhbHVlKSwgbV9v
dXQuYmFzZUluZGV4KG1faGVhcHMudmFyaWFibGVzLCB0YXJnZXRTdGFydCwgc3RvcmVJbmRleCwg
SlNWYWx1ZSgpLCBDaGVja2VkPGludDMyX3Q+KHNpemVvZihSZWdpc3RlcikpICogaSkpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0LmNv
bnN0SW50UHRyKGFycmF5LT5sZW5ndGgoKSksIHN0b3JlSW5kZXgpOwogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMjU4MDRh
MTUyOTQwNzA4OTMyMTQ3NDRjMjVkMjZlOWE1ZDdlNDcxYi4uMjAyZDhkNDcwNjUzMTU4Y2QzMWFj
OWVlMWJhMDBiNjIxODBiMmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwCkBAIC02MjgsNyArNjI4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IsIEpTQ2VsbCosIChKU0dsb2JhbE9iamUK
IAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJy
b3IgaGVyZSBpZiBjaGVja2VkQXJyYXlTaXplIGhhcyBoYXNPdmVyZmxvd2VkKCkgb3IgdHJ5Q3Jl
YXRlKCkgZmFpbHMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjk3ODQKLSAgICAgICAgdW5zaWduZWQgYXJyYXlTaXplID0gY2hlY2tlZEFycmF5
U2l6ZS51bnNhZmVHZXQoKTsgLy8gQ3Jhc2hlcyBpZiBvdmVyZmxvd2VkLgorICAgICAgICB1bnNp
Z25lZCBhcnJheVNpemUgPSBjaGVja2VkQXJyYXlTaXplOyAvLyBDcmFzaGVzIGlmIG92ZXJmbG93
ZWQuCiAgICAgICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgc3Ry
dWN0dXJlLCBhcnJheVNpemUpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGNiMDc5YmY3NWExZDc0ODRjOGIyODc3
YjQyNDgzNWQ0NjcyYzA5OGEuLjhmYWFmZmM2NWQ1YmI5ZjFmN2Y5ZjUzNGY2ZWU1N2Y3MTllMTg5
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAg
dm9pZCBIZWFwOjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlTbG93Q2FzZShzaXplX3Qgc2l6
ZSkKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDEx
CiAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE5ld1NpemUgPSBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9y
eVNpemU7CiAgICAgY2hlY2tlZE5ld1NpemUgKz0gc2l6ZTsKLSAgICBtX2RlcHJlY2F0ZWRFeHRy
YU1lbW9yeVNpemUgPSBVTkxJS0VMWShjaGVja2VkTmV3U2l6ZS5oYXNPdmVyZmxvd2VkKCkpID8g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSA6IGNoZWNrZWROZXdTaXplLnVuc2Fm
ZUdldCgpOworICAgIG1fZGVwcmVjYXRlZEV4dHJhTWVtb3J5U2l6ZSA9IFVOTElLRUxZKGNoZWNr
ZWROZXdTaXplLmhhc092ZXJmbG93ZWQoKSkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpIDogY2hlY2tlZE5ld1NpemUudmFsdWUoKTsKICAgICByZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZFNsb3dDYXNlKHNpemUpOwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgc2l6ZV90IEhl
YXA6OmV4dHJhTWVtb3J5U2l6ZSgpCiAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZFRvdGFsID0gbV9l
eHRyYU1lbW9yeVNpemU7CiAgICAgY2hlY2tlZFRvdGFsICs9IG1fZGVwcmVjYXRlZEV4dHJhTWVt
b3J5U2l6ZTsKICAgICBjaGVja2VkVG90YWwgKz0gbV9hcnJheUJ1ZmZlcnMuc2l6ZSgpOwotICAg
IHNpemVfdCB0b3RhbCA9IFVOTElLRUxZKGNoZWNrZWRUb3RhbC5oYXNPdmVyZmxvd2VkKCkpID8g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSA6IGNoZWNrZWRUb3RhbC51bnNhZmVH
ZXQoKTsKKyAgICBzaXplX3QgdG90YWwgPSBVTkxJS0VMWShjaGVja2VkVG90YWwuaGFzT3ZlcmZs
b3dlZCgpKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgOiBjaGVja2VkVG90
YWwudmFsdWUoKTsKIAogICAgIEFTU0VSVChtX29iamVjdFNwYWNlLmNhcGFjaXR5KCkgPj0gbV9v
YmplY3RTcGFjZS5zaXplKCkpOwogICAgIHJldHVybiBzdGQ6Om1pbih0b3RhbCwgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIG1fb2JqZWN0U3BhY2UuY2FwYWNpdHkoKSk7CkBA
IC0yMjU1LDcgKzIyNTUsNyBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQog
ICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkQ3Vy
cmVudEhlYXBTaXplID0gbV90b3RhbEJ5dGVzVmlzaXRlZDsKICAgICAgICAgY2hlY2tlZEN1cnJl
bnRIZWFwU2l6ZSArPSBleHRyYU1lbW9yeVNpemUoKTsKLSAgICAgICAgQVNTRVJUKCFjaGVja2Vk
Q3VycmVudEhlYXBTaXplLmhhc092ZXJmbG93ZWQoKSAmJiBjaGVja2VkQ3VycmVudEhlYXBTaXpl
LnVuc2FmZUdldCgpID09IGN1cnJlbnRIZWFwU2l6ZSk7CisgICAgICAgIEFTU0VSVCghY2hlY2tl
ZEN1cnJlbnRIZWFwU2l6ZS5oYXNPdmVyZmxvd2VkKCkgJiYgY2hlY2tlZEN1cnJlbnRIZWFwU2l6
ZSA9PSBjdXJyZW50SGVhcFNpemUpOwogICAgIH0KIAogICAgIGlmICh2ZXJib3NlKQpAQCAtMjU1
OCw3ICsyNTU4LDcgQEAgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQoc2l6ZV90
IHNpemUpCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzA0MTEKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE5ld1NpemUgPSBvbGRTaXplOwog
ICAgICAgICBjaGVja2VkTmV3U2l6ZSArPSBzaXplOwotICAgICAgICBzaXplX3QgbmV3U2l6ZSA9
IFVOTElLRUxZKGNoZWNrZWROZXdTaXplLmhhc092ZXJmbG93ZWQoKSkgPyBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpIDogY2hlY2tlZE5ld1NpemUudW5zYWZlR2V0KCk7CisgICAg
ICAgIHNpemVfdCBuZXdTaXplID0gVU5MSUtFTFkoY2hlY2tlZE5ld1NpemUuaGFzT3ZlcmZsb3dl
ZCgpKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgOiBjaGVja2VkTmV3U2l6
ZS52YWx1ZSgpOwogICAgICAgICBpZiAoV1RGOjphdG9taWNDb21wYXJlRXhjaGFuZ2VXZWFrUmVs
YXhlZChjb3VudGVyLCBvbGRTaXplLCBuZXdTaXplKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKaW5kZXggYzVm
MzdkYTVlNzZlYjUzZTJkYjg5YWRhNDYxOTQ4ZDFlNzk4MDlkZi4uNDk4MTc5NTc0NTI0MGM4NDgy
YzI5ZjlhMWM0ZDRlYTJmYmJjYzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9y
Ojpwcm9wYWdhdGVFeHRlcm5hbE1lbW9yeVZpc2l0ZWRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGlm
IChtX2V4dHJhTWVtb3J5U2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgICBoZWFwKCkt
PnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKICAgICAgICAgZWxzZSBpZiAobV9leHRyYU1lbW9yeVNpemUpCi0gICAgICAgICAgICBo
ZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2V4dHJhTWVtb3J5U2l6ZS51bnNhZmVH
ZXQoKSk7CisgICAgICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2V4
dHJhTWVtb3J5U2l6ZSk7CiAgICAgICAgIG1fZXh0cmFNZW1vcnlTaXplID0gMDsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCmluZGV4IGY4NGM1YTY5
NDc2MDJlZWViZGZhNTRhODk3ZWRjMmZmMzczNmZlMTAuLjUxYWJjNWExM2NiNmY5ZWMwZDgyNTVm
NTFlYzBkZjliMzRhZDE2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ0xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xp
c3QuY3BwCkBAIC02OCwxOSArNjgsMTkgQEAgdGVtcGxhdGUgdm9pZCBNYXJrZWRBcmd1bWVudEJ1
ZmZlcjo6bWFya0xpc3RzKFNsb3RWaXNpdG9yJiwgTGlzdFNldCYpOwogdm9pZCBNYXJrZWRBcmd1
bWVudEJ1ZmZlcjo6c2xvd0Vuc3VyZUNhcGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRDYXBhY2l0eSkK
IHsKICAgICBzZXROZWVkc092ZXJmbG93Q2hlY2soKTsKLSAgICBhdXRvIGNoZWNrZWROZXdDYXBh
Y2l0eSA9IENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4ocmVxdWVzdGVkQ2FwYWNpdHkpOwor
ICAgIGF1dG8gY2hlY2tlZE5ld0NhcGFjaXR5ID0gQ2hlY2tlZEludDMyKHJlcXVlc3RlZENhcGFj
aXR5KTsKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE5ld0NhcGFjaXR5Lmhhc092ZXJmbG93ZWQo
KSkpCiAgICAgICAgIHJldHVybiB0aGlzLT5vdmVyZmxvd2VkKCk7Ci0gICAgZXhwYW5kQ2FwYWNp
dHkoY2hlY2tlZE5ld0NhcGFjaXR5LnVuc2FmZUdldCgpKTsKKyAgICBleHBhbmRDYXBhY2l0eShj
aGVja2VkTmV3Q2FwYWNpdHkpOwogfQogCiB2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjpleHBh
bmRDYXBhY2l0eSgpCiB7CiAgICAgc2V0TmVlZHNPdmVyZmxvd0NoZWNrKCk7Ci0gICAgYXV0byBj
aGVja2VkTmV3Q2FwYWNpdHkgPSBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1fY2FwYWNp
dHkpICogMjsKKyAgICBhdXRvIGNoZWNrZWROZXdDYXBhY2l0eSA9IENoZWNrZWRJbnQzMihtX2Nh
cGFjaXR5KSAqIDI7CiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWROZXdDYXBhY2l0eS5oYXNPdmVy
Zmxvd2VkKCkpKQogICAgICAgICByZXR1cm4gdGhpcy0+b3ZlcmZsb3dlZCgpOwotICAgIGV4cGFu
ZENhcGFjaXR5KGNoZWNrZWROZXdDYXBhY2l0eS51bnNhZmVHZXQoKSk7CisgICAgZXhwYW5kQ2Fw
YWNpdHkoY2hlY2tlZE5ld0NhcGFjaXR5KTsKIH0KIAogdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZl
cjo6ZXhwYW5kQ2FwYWNpdHkoaW50IG5ld0NhcGFjaXR5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lk
IE1hcmtlZEFyZ3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eShpbnQgbmV3Q2FwYWNpdHkpCiAg
ICAgYXV0byBjaGVja2VkU2l6ZSA9IENoZWNrZWRTaXplKG5ld0NhcGFjaXR5KSAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRTaXplLmhhc092ZXJmbG93
ZWQoKSkpCiAgICAgICAgIHJldHVybiB0aGlzLT5vdmVyZmxvd2VkKCk7Ci0gICAgRW5jb2RlZEpT
VmFsdWUqIG5ld0J1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6SlNWYWx1ZSwgY2hlY2tlZFNpemUudW5zYWZlR2V0KCkpKTsK
KyAgICBFbmNvZGVkSlNWYWx1ZSogbmV3QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpKU1ZhbHVlLCBjaGVja2VkU2l6ZSkp
OwogICAgIGlmICghbmV3QnVmZmVyKQogICAgICAgICByZXR1cm4gdGhpcy0+b3ZlcmZsb3dlZCgp
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3OTA2ODU2MTY1
MjE5OWZiYjdlNzQ4NmU5MzU0NzkyNDQ3Nzc2OGZmLi41YjJhMjE0MGY2ZDc4MzNlMThkYjZiYTNi
NzRjN2EwMmIxZTNkYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNDc4LDE0ICsxNDc4LDE0IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBjb25jYXRBcHBlbmRPbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBKU0FyCiAgICAgQnV0dGVyZmx5KiBmaXJzdEJ1dHRlcmZseSA9IGZpcnN0LT5idXR0ZXJm
bHkoKTsKICAgICB1bnNpZ25lZCBmaXJzdEFycmF5U2l6ZSA9IGZpcnN0QnV0dGVyZmx5LT5wdWJs
aWNMZW5ndGgoKTsKIAotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjaGVj
a2VkUmVzdWx0U2l6ZSA9IGZpcnN0QXJyYXlTaXplOworICAgIENoZWNrZWRVaW50MzIgY2hlY2tl
ZFJlc3VsdFNpemUgPSBmaXJzdEFycmF5U2l6ZTsKICAgICBjaGVja2VkUmVzdWx0U2l6ZSArPSAx
OwogICAgIGlmIChVTkxJS0VMWShjaGVja2VkUmVzdWx0U2l6ZS5oYXNPdmVyZmxvd2VkKCkpKSB7
CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVz
dWx0U2l6ZSA9IGNoZWNrZWRSZXN1bHRTaXplLnVuc2FmZUdldCgpOworICAgIHVuc2lnbmVkIHJl
c3VsdFNpemUgPSBjaGVja2VkUmVzdWx0U2l6ZTsKICAgICBJbmRleGluZ1R5cGUgdHlwZSA9IGZp
cnN0LT5tZXJnZUluZGV4aW5nVHlwZUZvckNvcHlpbmcoaW5kZXhpbmdUeXBlRm9yVmFsdWUoc2Vj
b25kKSB8IElzQXJyYXkpOwogICAgIAogICAgIGlmICh0eXBlID09IE5vbkFycmF5KQpAQCAtMTU3
MSw3ICsxNTcxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9Qcml2YXRl
RnVuY0NvbmNhdE1lbWNweSwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICB1bnNpZ25lZCBmaXJz
dEFycmF5U2l6ZSA9IGZpcnN0QnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICB1bnNpZ25l
ZCBzZWNvbmRBcnJheVNpemUgPSBzZWNvbmRCdXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogCi0g
ICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRSZXN1bHRTaXplID0g
Zmlyc3RBcnJheVNpemU7CisgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkUmVzdWx0U2l6ZSA9IGZp
cnN0QXJyYXlTaXplOwogICAgIGNoZWNrZWRSZXN1bHRTaXplICs9IHNlY29uZEFycmF5U2l6ZTsK
IAogICAgIGlmIChVTkxJS0VMWShjaGVja2VkUmVzdWx0U2l6ZS5oYXNPdmVyZmxvd2VkKCkpKSB7
CkBAIC0xNTc5LDcgKzE1NzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90
b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5LCAoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHRTaXpl
ID0gY2hlY2tlZFJlc3VsdFNpemUudW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgcmVzdWx0U2l6
ZSA9IGNoZWNrZWRSZXN1bHRTaXplOwogICAgIEluZGV4aW5nVHlwZSBmaXJzdFR5cGUgPSBmaXJz
dEFycmF5LT5pbmRleGluZ1R5cGUoKTsKICAgICBJbmRleGluZ1R5cGUgc2Vjb25kVHlwZSA9IHNl
Y29uZEFycmF5LT5pbmRleGluZ1R5cGUoKTsKICAgICBJbmRleGluZ1R5cGUgdHlwZSA9IGZpcnN0
QXJyYXktPm1lcmdlSW5kZXhpbmdUeXBlRm9yQ29weWluZyhzZWNvbmRUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDJl
YzZlYzRhZTAxMWIwOTA4ZTdiOTg5MTU0MDkwYzU5NmUzZDQyY2IuLjY0Yzg2ZTYxMTYyODBjOTJj
NDc0MDdmMWU3MjMwNzdjZGI5NmUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTQwMyw3ICsxNDAzLDcgQEAgSlNDX0RF
RklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4g
Y2hlY2tlZEFycmF5U2l6ZSA9IDA7CisgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQXJyYXlTaXpl
ID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUl0ZW1zOyBpKyspIHsKICAgICAgICAg
aWYgKGJpdFZlY3Rvci5nZXQoaSkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2YWx1
ZXNbLWldOwpAQCAtMTQxNSw3ICsxNDE1LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpCiAgICAgaWYgKFVOTElLRUxZKGNoZWNr
ZWRBcnJheVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgVEhST1coY3JlYXRlT3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKIAotICAgIHVuc2lnbmVkIGFycmF5U2l6ZSA9IGNo
ZWNrZWRBcnJheVNpemUudW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgYXJyYXlTaXplID0gY2hl
Y2tlZEFycmF5U2l6ZTsKICAgICBpZiAoVU5MSUtFTFkoYXJyYXlTaXplID49IE1JTl9BUlJBWV9T
VE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKQogICAgICAgICBUSFJPVyhjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCmluZGV4IGJlOTUwZjE1NmFlNzM3N2JlODhiOGY0ZGJh
ZDkxYjc1YjM2ZWJjN2UuLmQ4YTY4MDIwMzhmNDc2Yjk0ZjRhMTM3MjIzOWFlYWQ2MTI2NjMxYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5o
CkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZTbG90KENoZWNrZWQ8c2l6ZV90PiBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiAo
c3RvcmFnZU9mZnNldCgpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBpbmRleCku
dW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiBzdG9yYWdlT2Zmc2V0KCkgKyBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSAqIGluZGV4OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6
ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBjYXBhY2l0eSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCmluZGV4IGQ4MTVhMzIwYzJlMTgxMWZi
NWRiMjljY2Q5ZmVjZjBiYWI5ZjYwNGYuLmM3ZGNmNDNkNzMzOWUwNjQ3ZTNiYjlkMjY0ODk3Y2M3
Y2NhODBiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hN
YXBJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwu
aApAQCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGNhcGFjaXR5KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IChjYXBhY2l0eSAqIHNpemVvZihCdWNrZXRUeXBlKikpLnVuc2FmZUdldCgpOworICAgICAgICBy
ZXR1cm4gY2FwYWNpdHkgKiBzaXplb2YoQnVja2V0VHlwZSopOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgQnVja2V0VHlwZSoqIGJ1ZmZlcigpIGNvbnN0CkBAIC0yNjcsNyArMjY3LDcgQEAg
cHVibGljOgogICAgICAgICAsIG1fa2V5Q291bnQoMCkKICAgICAgICAgLCBtX2RlbGV0ZUNvdW50
KDApCiAgICAgewotICAgICAgICB1aW50MzJfdCBjYXBhY2l0eSA9ICgoQ2hlY2tlZDx1aW50MzJf
dD4oc2l6ZUhpbnQpICogMikgKyAxKS51bnNhZmVHZXQoKTsKKyAgICAgICAgdWludDMyX3QgY2Fw
YWNpdHkgPSAoQ2hlY2tlZDx1aW50MzJfdD4oc2l6ZUhpbnQpICogMikgKyAxOwogICAgICAgICBj
YXBhY2l0eSA9IHN0ZDo6bWF4PHVpbnQzMl90PihXVEY6OnJvdW5kVXBUb1Bvd2VyT2ZUd28oY2Fw
YWNpdHkpLCA0VSk7CiAgICAgICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oCmlu
ZGV4IDUxNjBlODE4YzAxOWJlZDcyNjE4M2EzNDllNjY3ODE2MWQ2MjAxMDYuLjhmNTMyMzQ3YTYz
ZmVkOTMwYzU2NWY3ZjY5MGVmMTlkYTY5ZDJkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oCkBAIC0xNjksNyArMTY5LDcgQEAg
QUxXQVlTX0lOTElORSB1aW50MzJfdCBuZXh0Q2FwYWNpdHkodWludDMyX3QgY2FwYWNpdHksIHVp
bnQzMl90IGtleUNvdW50KQogICAgICAgICAvLyBhdCB0aGUgc2FtZSBjYXBhY2l0eSkuCiAgICAg
ICAgIHJldHVybiBjYXBhY2l0eTsKICAgICB9Ci0gICAgcmV0dXJuIChDaGVja2VkPHVpbnQzMl90
PihjYXBhY2l0eSkgKiAyKS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gQ2hlY2tlZDx1aW50MzJf
dD4oY2FwYWNpdHkpICogMjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBCdWNrZXRU
eXBlPgpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldFR5
cGU+OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgLy8gVGhpcyBzaXplIHNob3VsZCBiZSB0aGUg
c2FtZSB0byB0aGUgY2FzZSB3aGVuIHlvdSBjbG9uZSB0aGUgbWFwIGJ5IGNhbGxpbmcgYWRkKCkg
cmVwZWF0ZWRseS4KLSAgICB1aW50MzJfdCBjYXBhY2l0eSA9ICgoQ2hlY2tlZDx1aW50MzJfdD4o
YmFzZS0+bV9rZXlDb3VudCkgKiAyKSArIDEpLnVuc2FmZUdldCgpOworICAgIHVpbnQzMl90IGNh
cGFjaXR5ID0gKENoZWNrZWQ8dWludDMyX3Q+KGJhc2UtPm1fa2V5Q291bnQpICogMikgKyAxOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGNhcGFjaXR5IDw9ICgxVSA8PCAzMSkpOwogICAgIGNhcGFjaXR5
ID0gc3RkOjptYXg8dWludDMyX3Q+KFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhjYXBhY2l0eSks
IDRVKTsKICAgICBtX2NhcGFjaXR5ID0gY2FwYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggMTc1MzcxMWY0YmI2OTBiZTNhOTIzM2MwYjMyMzJh
ODMxNjkyMTEyYy4uMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFlZGU1NDMwY2JmMmYyNDFiMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMjUyNyw4ICsy
NTI3LDggQEAgSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIG51bGxP
ckdsb2JhbE9iamVjdEZvck9PTSwgVk0mIHZtLCBDaGEKIAogICAgICAgICBpZiAoIWhlYXBSZXN1
bHQpIHsKICAgICAgICAgICAgIGlmIChwID09IGxlbmd0aCkgewotICAgICAgICAgICAgICAgIEFT
U0VSVChkaWdpdC51bnNhZmVHZXQoKSA8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKTsKLSAgICAgICAgICAgICAgICBpbnQ2NF90IG1h
eWJlUmVzdWx0ID0gZGlnaXQudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRp
Z2l0IDw9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkpOworICAgICAgICAgICAgICAgIGludDY0X3QgbWF5YmVSZXN1bHQgPSBkaWdpdDsK
ICAgICAgICAgICAgICAgICBBU1NFUlQobWF5YmVSZXN1bHQgPj0gMCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpCiAgICAgICAgICAgICAgICAgICAg
IG1heWJlUmVzdWx0ICo9IC0xOwpAQCAtMjU0Nyw5ICsyNTQ3LDkgQEAgSlNWYWx1ZSBKU0JpZ0lu
dDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2JhbE9iamVjdEZvck9PTSwgVk0m
IHZtLCBDaGEKICAgICAgICAgICAgIGhlYXBSZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRp
b25UeXBlOjpXaXRoWmVybyk7CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PERpZ2l0PihtdWx0aXBsaWVyLnVuc2FmZUdldCgpKSkg
PT0gbXVsdGlwbGllci51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0LnVuc2FmZUdldCgpKSkgPT0gZGlnaXQu
dW5zYWZlR2V0KCkpOwotICAgICAgICBoZWFwUmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3Rh
dGljX2Nhc3Q8RGlnaXQ+KG11bHRpcGxpZXIudW5zYWZlR2V0KCkpLCBzdGF0aWNfY2FzdDxEaWdp
dD4oZGlnaXQudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllcikpID09IG11bHRpcGxpZXIpOworICAg
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PERpZ2l0PihkaWdp
dCkpID09IGRpZ2l0KTsKKyAgICAgICAgaGVhcFJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0
YXRpY19jYXN0PERpZ2l0PihtdWx0aXBsaWVyKSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7
CiAgICAgfQogCiAgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6
U2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1t
dXRhYmxlQnV0dGVyZmx5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0
YWJsZUJ1dHRlcmZseS5oCmluZGV4IDkwNjVjMjQwMzViZjU0OWE0YWJhYzM3NGU3MzM1M2VhODRm
MTQ2M2MuLjhlODNjNGFkNTYyYzRmNDJjYjIzNmIyZTExNDA5YTVjOGI2MzgzZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHku
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgICAgICAvLyBCZWNhdXNlIG9mIHRoZSBhYm92ZSBtYXhpbXVtTGVuZ3RoIHJlcXVpcmVt
ZW50LCBhbGxvY2F0aW9uU2l6ZSBjYW4gbmV2ZXIgb3ZlcmZsb3cuCi0gICAgICAgIHZvaWQqIGJ1
ZmZlciA9IHRyeUFsbG9jYXRlQ2VsbDxKU0ltbXV0YWJsZUJ1dHRlcmZseT4odm0uaGVhcCwgYWxs
b2NhdGlvblNpemUobGVuZ3RoKS51bnNhZmVHZXQoKSk7CisgICAgICAgIHZvaWQqIGJ1ZmZlciA9
IHRyeUFsbG9jYXRlQ2VsbDxKU0ltbXV0YWJsZUJ1dHRlcmZseT4odm0uaGVhcCwgYWxsb2NhdGlv
blNpemUobGVuZ3RoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogcmVzdWx0
ID0gbmV3IChOb3ROdWxsLCBidWZmZXIpIEpTSW1tdXRhYmxlQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1
cmUsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5MDEyM2EyZThlNDI5ZDZiZmFiZjk2NWU3ZThmYWIy
MzI4ZTNmNTlkLi45NGQ3MWRkYzE3NzI2MjExNTYxYWZiMzQyM2VhMTBlZDgyODQ3MjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmgKQEAgLTc0LDEyICs3NCwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZlZhcmlhYmxlKFNjb3BlT2Zmc2V0IG9mZnNldCkKICAgICB7CiAgICAgICAgIENoZWNrZWQ8
c2l6ZV90PiBzY29wZU9mZnNldCA9IG9mZnNldC5vZmZzZXQoKTsKLSAgICAgICAgcmV0dXJuIChv
ZmZzZXRPZlZhcmlhYmxlcygpICsgc2NvcGVPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlZhcmlhYmxlcygp
ICsgc2NvcGVPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKICAgICB9CiAK
ICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yU2NvcGVTaXplKENoZWNrZWQ8c2l6
ZV90PiBzY29wZVNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gKG9mZnNldE9mVmFyaWFibGVz
KCkgKyBzY29wZVNpemUgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkudW5zYWZlR2V0
KCk7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlZhcmlhYmxlcygpICsgc2NvcGVTaXplICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2YzAyMjkwNTVlODM3MjYzZTQwZDUwYTFkOTE2
MDY1ZGQ0Yjg4OWI2Li5iZjViMmRkZGY5NzE3NzVkNWI4OTM0NmZiNDAzZjU4NWUzOWVlYTQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTExODYsNyArMTE4
Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tl
ZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzaXplb2Yo
SlNPYmplY3QpICsgaW5saW5lQ2FwYWNpdHkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPikpLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTT2JqZWN0KSArIGlu
bGluZUNhcGFjaXR5ICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pOwogICAgIH0K
IAogICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgVHlwZUluZm8gdHlwZUluZm8oKSB7IHJldHVybiBU
eXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5jcHAKaW5kZXggOGE1YjY5YzVlOTVkMDJmZTRhNWJhYzdiZWNlODcxMTdlZmE0ZDg3NC4uMjFj
NzBhMjdiNjkxYmUwNTY5MGEyZmFlNzdjNjk5MTJhZWVjMTE5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
Y3BwCkBAIC0zNSw3ICszNSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OnNfaW5mbyA9IHsgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvciIsCiBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGluZGV4ZWRMZW5ndGgsIHVpbnQzMl90IG51
bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIFByb3BlcnR5TmFtZUFycmF5JiYgcHJvcGVydHlOYW1l
cykKIHsKICAgICB1bnNpZ25lZCBwcm9wZXJ0eU5hbWVzU2l6ZSA9IHByb3BlcnR5TmFtZXMuc2l6
ZSgpOwotICAgIHVuc2lnbmVkIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcyA9IChDaGVj
a2VkPHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVzU2l6ZSkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpT
U3RyaW5nPikpLnVuc2FmZUdldCgpOworICAgIHVuc2lnbmVkIHByb3BlcnR5TmFtZXNCdWZmZXJT
aXplSW5CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KTsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KiBw
cm9wZXJ0eU5hbWVzQnVmZmVyID0gbnVsbHB0cjsKICAgICBpZiAocHJvcGVydHlOYW1lc0J1ZmZl
clNpemVJbkJ5dGVzKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA2NjkyZjA1NWIzZjhhZTA1MTcyZDhjODhj
NDk5MjFmOWE0ZWYxNzJlLi5lNDgyMDE4N2MwMmQ2MTEzMGQzYWE1MTE0OWJmZTMwZTU4YTZlNmQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTM5NSw5ICsz
OTUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VtLnVuc2FmZUdldCgpKSA8PSBNYXhMZW5ndGgp
OworICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdW0pIDw9IE1heExl
bmd0aCk7CiAgICAgICAgICAgICBtX3N0cmluZ3MuYXBwZW5kKGpzU3RyaW5nKTsKLSAgICAgICAg
ICAgIG1fbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1bS51bnNhZmVHZXQoKSk7Cisg
ICAgICAgICAgICBtX2xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdW0pOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKaW5kZXggNTgzZTllMzZmMzAyMTJmYjAx
NTY1YjgwMWE4MWUzMWJlYTkyN2NhNi4uYzgxYTRmMDJmYTNkOTI4NjRkNGE5ZjNhYTA0ZDI3YWQ5
MDBjOTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRB
cmd1bWVudHMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFNjb3BlZEFyZ3VtZW50cyogU2NvcGVkQXJn
dW1lbnRzOjpjcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1CiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzdG9yYWdlID0gbnVsbHB0cjsKICAgICBpZiAodG90
YWxMZW5ndGggPiB0YWJsZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4g
b3ZlcmZsb3dMZW5ndGggPSB0b3RhbExlbmd0aCAtIHRhYmxlLT5sZW5ndGgoKTsKLSAgICAgICAg
c3RvcmFnZSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgKG92ZXJmbG93TGVu
Z3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLnVuc2FmZUdldCgpLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgICAgICBzdG9yYWdlID0gc3Rh
dGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFz
c2VydCkpOwogICAgIH0KIAogICAgIFNjb3BlZEFyZ3VtZW50cyogcmVzdWx0ID0gbmV3ICgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmlu
ZGV4IGY1ZmI3ODVkYmExZjRkMzViNDNiYjI3NmQxMjQxYjFiNTAxOTg5YWUuLmM4MzJhYjQ2ZDdm
YmZiNTRjNTBkODU5NTQ3Njg5NmI1MTExODcxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3MoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDaGVja2VkPGludCwgQXNzZXJ0Tm9PdmVyZmxvdz4g
dG90YWxMZW5ndGggPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsr
KQogICAgICAgICB0b3RhbExlbmd0aCArPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoOwotICAg
IEFTU0VSVCh0b3RhbExlbmd0aCA8PSBTdHJpbmc6Ok1heExlbmd0aCk7CisgICAgQVNTRVJUKHRv
dGFsTGVuZ3RoIDw9IHN0YXRpY19jYXN0PGludD4oU3RyaW5nOjpNYXhMZW5ndGgpKTsKIAogICAg
IGlmICghdG90YWxMZW5ndGgpCiAgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKHZtKTsKQEAg
LTMyMCw3ICszMjAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VT
dWJzdHJpbmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKHNvdXJjZS5p
czhCaXQoKSkgewogICAgICAgICBMQ2hhciogYnVmZmVyOwogICAgICAgICBjb25zdCBMQ2hhciog
c291cmNlRGF0YSA9IHNvdXJjZS5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBhdXRvIGltcGwgPSBT
dHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnVuc2FmZUdldCgp
LCBidWZmZXIpOworICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHRvdGFsTGVuZ3RoLCBidWZmZXIpOwogICAgICAgICBpZiAoIWltcGwpIHsKICAg
ICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3MoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICAgICAgQ2hlY2tlZDxpbnQsIEFzc2VydE5vT3ZlcmZsb3c+IGJ1ZmZl
clBvcyA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7
CiAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBi
dWZmZXJQb3MudW5zYWZlR2V0KCksIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9z
aXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoYnVmZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5n
ZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNy
Y0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzQwLDcgKzM0MCw3IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3MoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBVQ2hhciogYnVmZmVyOwogICAgIGNvbnN0IFVDaGFyKiBz
b3VyY2VEYXRhID0gc291cmNlLmNoYXJhY3RlcnMxNigpOwogCi0gICAgYXV0byBpbXBsID0gU3Ry
aW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aC51bnNhZmVHZXQoKSwg
YnVmZmVyKTsKKyAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHRvdGFsTGVuZ3RoLCBidWZmZXIpOwogICAgIGlmICghaW1wbCkgewogICAgICAgICB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5n
KiBqc1NwbGljZVN1YnN0cmluZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBD
aGVja2VkPGludCwgQXNzZXJ0Tm9PdmVyZmxvdz4gYnVmZmVyUG9zID0gMDsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewogICAgICAgICBpZiAoaW50IHNyY0xlbiA9
IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy51bnNhZmVHZXQoKSwgc291cmNlRGF0YSAr
IHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAgIFN0cmlu
Z0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzb3VyY2VE
YXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAg
YnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgfQogICAgIH0KQEAgLTM5OSw3ICszOTksNyBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNl
cGFyYXRvcnMoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIExDaGFyKiBidWZmZXI7CiAgICAgICAg
IGNvbnN0IExDaGFyKiBzb3VyY2VEYXRhID0gc291cmNlLmNoYXJhY3RlcnM4KCk7CiAKLSAgICAg
ICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExl
bmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKKyAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1w
bDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aCwgYnVmZmVyKTsKICAgICAgICAg
aWYgKCFpbXBsKSB7CiAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQxMCwxMyArNDEw
LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3NX
aXRoU2VwYXJhdG9ycyhKU0dsb2JhbE9iamVjdCoKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBtYXhDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaSA8IHJhbmdlQ291bnQpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVy
ICsgYnVmZmVyUG9zLnVuc2FmZUdldCgpLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ld
LnBvc2l0aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MudmFsdWUoKSwgc291cmNlRGF0YSArIHN1YnN0
cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGlu
dCBzZXBMZW4gPSBzZXBhcmF0b3JzW2ldLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy51bnNhZmVHZXQo
KSwgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOworICAgICAgICAgICAgICAg
ICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MudmFsdWUo
KSwgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOwogICAgICAgICAgICAgICAg
ICAgICBidWZmZXJQb3MgKz0gc2VwTGVuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTQyNiw3ICs0MjYsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNT
cGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoSlNHbG9iYWxPYmplY3QqCiAgICAgfQogCiAg
ICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLnVuc2FmZUdldCgpLCBidWZmZXIpOworICAgIGF1dG8g
aW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1
ZmZlcik7CiAgICAgaWYgKCFpbXBsKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00MzgsMTgg
KzQzOCwxOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJp
bmdzV2l0aFNlcGFyYXRvcnMoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIGlmIChpIDwgcmFuZ2VD
b3VudCkgewogICAgICAgICAgICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0u
bGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9z
LnVuc2FmZUdldCgpLCBzb3VyY2UuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5w
b3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNo
YXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnZhbHVlKCksIHNvdXJjZS5jaGFyYWN0ZXJzOCgp
ICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVm
ZmVyICsgYnVmZmVyUG9zLnVuc2FmZUdldCgpLCBzb3VyY2UuY2hhcmFjdGVyczE2KCkgKyBzdWJz
dHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzb3Vy
Y2UuY2hhcmFjdGVyczE2KCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7
CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICBp
ZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoc2VwYXJhdG9yc1tpXS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLnVuc2FmZUdldCgpLCBzZXBh
cmF0b3JzW2ldLmNoYXJhY3RlcnM4KCksIHNlcExlbik7CisgICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzZXBh
cmF0b3JzW2ldLmNoYXJhY3RlcnM4KCksIHNlcExlbik7CiAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBi
dWZmZXJQb3MudW5zYWZlR2V0KCksIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczE2KCksIHNlcExl
bik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZl
ciArIGJ1ZmZlclBvcy52YWx1ZSgpLCBzZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnMxNigpLCBzZXBM
ZW4pOwogICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBzZXBMZW47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmNwcAppbmRleCBkY2VjYTU2YTRkZGFkZDRlZDY3MjhkYmNmOTg4ZTZhYmMwMTI3NzFj
Li5lZGMxODIzOWZhMTFjZDJlNjZjMGY2NGJhMjIyMzE2MjY3Mjg0YTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFZNJiB2bSwgSlNP
YmplY3QqIGhlYWQpCiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGVPYmplY3Qo
Y3VycmVudCkpCiAgICAgICAgICsrc2l6ZTsKICAgICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxw
dHIuCi0gICAgc2l6ZV90IGJ5dGVzID0gKENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihT
dHJ1Y3R1cmVJRCkpLnVuc2FmZUdldCgpOworICAgIHNpemVfdCBieXRlcyA9IENoZWNrZWQ8c2l6
ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJRCk7CiAgICAgU3RydWN0dXJlSUQqIHZlY3Rv
ciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICBtZW1zZXQodmVjdG9yLCAwLCBieXRlcyk7CiAgICAg
U3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0
dXJlQ2hhaW4+KHZtLmhlYXApKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3RydWN0dXJlQ2hhaW5T
dHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRl
eCA5OGE3NWM2ZjhiOGRiMjc5ZDAyNmYzMmViZjNiYmNjNTQxYmFiMGY5Li5lOWUwNmE3NjVhYzZi
YjBjZGEyM2I0ZTVmYTZmNjdkMGYyYTYxZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBzdHJ1Y3QgU2NyYXRjaEJ1ZmZlciB7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShD
aGVja2VkPHNpemVfdD4gYnVmZmVyU2l6ZSkgeyByZXR1cm4gKHNpemVvZihTY3JhdGNoQnVmZmVy
KSArIGJ1ZmZlclNpemUpLnVuc2FmZUdldCgpOyB9CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKFNjcmF0
Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAgIHZvaWQgc2V0QWN0aXZlTGVuZ3RoKHNpemVf
dCBhY3RpdmVMZW5ndGgpIHsgdS5tX2FjdGl2ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAg
IHNpemVfdCBhY3RpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiB1Lm1fYWN0aXZlTGVuZ3RoOyB9
OwogICAgIHNpemVfdCogYWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkgeyByZXR1cm4gJnUubV9hY3Rp
dmVMZW5ndGg7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwSW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwu
aAppbmRleCA2YmJhMmNkNDZiMWQ1ODY0ZWIxOTMxNmJjY2FjODcwZDE4MTJiNDA1Li5jMGRmMzIw
OGZjY2MzMWFkOWRhMzg5MzFkNGZiMjFmY2QwMTY4OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBjYXBhY2l0
eSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoY2FwYWNpdHkgKiBzaXplb2YoQnVja2V0VHlwZSkp
LnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gY2FwYWNpdHkgKiBzaXplb2YoQnVja2V0VHlw
ZSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBCdWNrZXRUeXBlKiBidWZmZXIoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKaW5kZXggZjRhNmRhOTY5MjU1MDliZjE1NzkzYzI0NTIzNWY1MzM5ZmQ5ODIyNi4uOGY0NWIx
YWQxZWVkNGJlMTFkOGFmMTE4NDcwOTBiN2Y0MmI3Y2MwZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC04NTAsMTEgKzg1MCwx
MSBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAgICAgICAgICAgICAgIC8vIFRoaXMgYWxs
b3dzIHVzIHRvIGVsaWRlIHN0YWNrIGNoZWNrcyBpbiB0aGUgV2FzbSAtPiBFbWJlZGRlciBjYWxs
IElDIHN0dWIuIFNpbmNlIHRoZXNlIHdpbGwKICAgICAgICAgICAgICAgICAvLyBzcGlsbCBhbGwg
YXJndW1lbnRzIHRvIHRoZSBzdGFjaywgd2UgZW5zdXJlIHRoYXQgYSBzdGFjayBjaGVjayBoZXJl
IGNvdmVycyB0aGUKICAgICAgICAgICAgICAgICAvLyBzdGFjayB0aGF0IHN1Y2ggYSBzdHViIHdv
dWxkIHVzZS4KLSAgICAgICAgICAgICAgICAoQ2hlY2tlZDx1aW50MzJfdD4obV9tYXhOdW1KU0Nh
bGxBcmd1bWVudHMpICogc2l6ZW9mKFJlZ2lzdGVyKSArIGpzQ2FsbGluZ0NvbnZlbnRpb24oKS5o
ZWFkZXJTaXplSW5CeXRlcykudW5zYWZlR2V0KCkKKyAgICAgICAgICAgICAgICBDaGVja2VkPHVp
bnQzMl90PihtX21heE51bUpTQ2FsbEFyZ3VtZW50cykgKiBzaXplb2YoUmVnaXN0ZXIpICsganND
YWxsaW5nQ29udmVudGlvbigpLmhlYWRlclNpemVJbkJ5dGVzCiAgICAgICAgICAgICApKTsKLSAg
ICAgICAgICAgIGNvbnN0IGludDMyX3QgY2hlY2tTaXplID0gbV9tYWtlc0NhbGxzID8gKHdhc21G
cmFtZVNpemUgKyBleHRyYUZyYW1lU2l6ZSkudW5zYWZlR2V0KCkgOiB3YXNtRnJhbWVTaXplLnVu
c2FmZUdldCgpOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCBjaGVja1NpemUgPSBtX21ha2Vz
Q2FsbHMgPyAod2FzbUZyYW1lU2l6ZSArIGV4dHJhRnJhbWVTaXplKS52YWx1ZSgpIDogd2FzbUZy
YW1lU2l6ZS52YWx1ZSgpOwogICAgICAgICAgICAgYm9vbCBuZWVkVW5kZXJmbG93Q2hlY2sgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hlY2tTaXplKSA+IE9wdGlvbnM6OnJlc2VydmVkWm9uZVNp
emUoKTsKLSAgICAgICAgICAgIGJvb2wgbmVlZHNPdmVyZmxvd0NoZWNrID0gbV9tYWtlc0NhbGxz
IHx8IHdhc21GcmFtZVNpemUgPj0gbWluaW11bVBhcmVudENoZWNrU2l6ZSB8fCBuZWVkVW5kZXJm
bG93Q2hlY2s7CisgICAgICAgICAgICBib29sIG5lZWRzT3ZlcmZsb3dDaGVjayA9IG1fbWFrZXND
YWxscyB8fCB3YXNtRnJhbWVTaXplID49IHN0YXRpY19jYXN0PGludDMyX3Q+KG1pbmltdW1QYXJl
bnRDaGVja1NpemUpIHx8IG5lZWRVbmRlcmZsb3dDaGVjazsKIAogICAgICAgICAgICAgLy8gVGhp
cyBhbGxvd3MgbGVhZiBmdW5jdGlvbnMgdG8gbm90IGRvIHN0YWNrIGNoZWNrcyBpZiB0aGVpciBm
cmFtZSBzaXplIGlzIHdpdGhpbgogICAgICAgICAgICAgLy8gY2VydGFpbiBsaW1pdHMgc2luY2Ug
dGhlaXIgY2FsbGVyIHdvdWxkIGhhdmUgYWxyZWFkeSBkb25lIHRoZSBjaGVjay4KQEAgLTMxNTUs
NyArMzE1NSw3IEBAIEIzOjpQYXRjaHBvaW50VmFsdWUqIEFpcklSR2VuZXJhdG9yOjplbWl0Q2Fs
bFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0CiAgICAgQ2hlY2tlZDxzaXplX3Q+
IG5ld1NpemUgPSBjaGVja2VkU3VtPHNpemVfdD4ocGF0Y2hBcmdzLnNpemUoKSwgYXJncy5zaXpl
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFuZXdTaXplLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAg
ICBwYXRjaEFyZ3MuZ3JvdyhuZXdTaXplLnVuc2FmZUdldCgpKTsKKyAgICBwYXRjaEFyZ3MuZ3Jv
dyhuZXdTaXplKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsr
aSkKICAgICAgICAgcGF0Y2hBcmdzW2kgKyBvZmZzZXRdID0gQ29uc3RyYWluZWRUbXAoYXJnc1tp
XSwgbG9jYXRpb25zLnBhcmFtc1tpXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAxMDZjYTVmZDU1ZDZkYmQyYTNhZjE4Mzg0
NWNhNGE3OTg3N2JkNmMyLi5iMmVjMzM0OGMyZWJjZjgwMjM4MzI0MjgxMzlhZTZmYzJjODk5OTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCkBAIC01MjEsMTEgKzUyMSwxMSBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGVsaWRlIHN0YWNrIGNoZWNrcyBpbiB0aGUg
V2FzbSAtPiBFbWJlZGRlciBjYWxsIElDIHN0dWIuIFNpbmNlIHRoZXNlIHdpbGwKICAgICAgICAg
ICAgICAgICAvLyBzcGlsbCBhbGwgYXJndW1lbnRzIHRvIHRoZSBzdGFjaywgd2UgZW5zdXJlIHRo
YXQgYSBzdGFjayBjaGVjayBoZXJlIGNvdmVycyB0aGUKICAgICAgICAgICAgICAgICAvLyBzdGFj
ayB0aGF0IHN1Y2ggYSBzdHViIHdvdWxkIHVzZS4KLSAgICAgICAgICAgICAgICAoQ2hlY2tlZDx1
aW50MzJfdD4obV9tYXhOdW1KU0NhbGxBcmd1bWVudHMpICogc2l6ZW9mKFJlZ2lzdGVyKSArIEpT
Q2FsbGluZ0NvbnZlbnRpb246OmhlYWRlclNpemVJbkJ5dGVzKS51bnNhZmVHZXQoKQorICAgICAg
ICAgICAgICAgIENoZWNrZWQ8dWludDMyX3Q+KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzKSAqIHNp
emVvZihSZWdpc3RlcikgKyBKU0NhbGxpbmdDb252ZW50aW9uOjpoZWFkZXJTaXplSW5CeXRlcwog
ICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBjb25zdCBpbnQzMl90IGNoZWNrU2l6ZSA9IG1f
bWFrZXNDYWxscyA/ICh3YXNtRnJhbWVTaXplICsgZXh0cmFGcmFtZVNpemUpLnVuc2FmZUdldCgp
IDogd2FzbUZyYW1lU2l6ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3Qg
Y2hlY2tTaXplID0gbV9tYWtlc0NhbGxzID8gKHdhc21GcmFtZVNpemUgKyBleHRyYUZyYW1lU2l6
ZSkudmFsdWUoKSA6IHdhc21GcmFtZVNpemUudmFsdWUoKTsKICAgICAgICAgICAgIGJvb2wgbmVl
ZFVuZGVyZmxvd0NoZWNrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoZWNrU2l6ZSkgPiBPcHRp
b25zOjpyZXNlcnZlZFpvbmVTaXplKCk7Ci0gICAgICAgICAgICBib29sIG5lZWRzT3ZlcmZsb3dD
aGVjayA9IG1fbWFrZXNDYWxscyB8fCB3YXNtRnJhbWVTaXplID49IG1pbmltdW1QYXJlbnRDaGVj
a1NpemUgfHwgbmVlZFVuZGVyZmxvd0NoZWNrOworICAgICAgICAgICAgYm9vbCBuZWVkc092ZXJm
bG93Q2hlY2sgPSBtX21ha2VzQ2FsbHMgfHwgd2FzbUZyYW1lU2l6ZSA+PSBzdGF0aWNfY2FzdDxp
bnQzMl90PihtaW5pbXVtUGFyZW50Q2hlY2tTaXplKSB8fCBuZWVkVW5kZXJmbG93Q2hlY2s7CiAK
ICAgICAgICAgICAgIEdQUlJlZyBjb250ZXh0SW5zdGFuY2UgPSBDb250ZXh0Ojp1c2VGYXN0VExT
KCkgPyBwYXJhbXNbMF0uZ3ByKCkgOiBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCmluZGV4IDg1NzU0NTczMGNj
YzMwZDYzNGYzNGI0YzJiNGM5YTY0MTBiOWRiN2MuLmZmZDc1YzhkMGM4ZjlhYjczMWY3Y2I0OWE4
NDJkOTA2NWI4MjgzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3Rh
bmNlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogbmFtZXNwYWNlIHsKIHNpemVfdCBnbG9iYWxNZW1vcnlCeXRlU2l6ZShNb2R1bGUmIG1vZHVs
ZSkKIHsKLSAgICByZXR1cm4gKENoZWNrZWQ8c2l6ZV90Pihtb2R1bGUubW9kdWxlSW5mb3JtYXRp
b24oKS5nbG9iYWxzLnNpemUoKSkgKiBzaXplb2YoUmVnaXN0ZXIpKS51bnNhZmVHZXQoKTsKKyAg
ICByZXR1cm4gQ2hlY2tlZDxzaXplX3Q+KG1vZHVsZS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2Jh
bHMuc2l6ZSgpKSAqIHNpemVvZihSZWdpc3Rlcik7CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUluc3RhbmNlLmgKaW5kZXggN2VjYzE0YTMzYjMzNmMxYzA2N2UyYTNiOThl
MWJjY2MzNzAyMzNkOC4uNjBlMTRjYjVhYzA2NTgyNDQzNDM3ODA5ZDU0NjMzZWRmNzFjYzhiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKQEAgLTIxNSw3ICsy
MTUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
Q2hlY2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucywgQ2hlY2tlZDxzaXplX3Q+IG51bVRh
YmxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1w
b3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSopICog
bnVtVGFibGVzKS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mVGFpbCgpICsg
c2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBvcnRGdW5jdGlvbnMgKyBzaXplb2Yo
VGFibGUqKSAqIG51bVRhYmxlczsKICAgICB9CiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIg
fTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
LgogICAgIENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IGQ1ZjUwN2NkYTYz
MzVhNjE2YTA4YzhlZmUyMWVkNzMzNDFkNDJlYjMuLjIwYzQzMDAyNmFhNTUxNWIwOTdiZjcwY2Q5
ZWZkZjBjY2EzYzU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHB1YmxpYzoKICAgICBFeHBy
ZXNzaW9uVHlwZSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVja1RhZykKICAgICB7CiAgICAgICAgIG1f
bWF4U3RhY2tTaXplID0gc3RkOjptYXgobV9tYXhTdGFja1NpemUsICsrbV9zdGFja1NpemUpOwot
ICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoKG1fc3RhY2tTaXplIC0gMSku
dW5zYWZlR2V0KCkpOworICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9z
dGFja1NpemUgLSAxKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uVHlwZSBwdXNoKCkKQEAgLTMx
Niw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc3RhcnRPZmZzZXQgPSB0YXJn
ZXQuc3RhY2tTaXplKCkgKyAxOwogICAgICAgICBrZWVwID0gdGFyZ2V0LmJyYW5jaFRhcmdldEFy
aXR5KCk7Ci0gICAgICAgIGRyb3AgPSAobV9zdGFja1NpemUgLSB0YXJnZXQuc3RhY2tTaXplKCkg
LSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKSkudW5zYWZlR2V0KCk7CisgICAgICAgIGRyb3Ag
PSBtX3N0YWNrU2l6ZSAtIHRhcmdldC5zdGFja1NpemUoKSAtIHRhcmdldC5icmFuY2hUYXJnZXRB
cml0eSgpOwogICAgIH0KIAogICAgIHZvaWQgZHJvcEtlZXAoU3RhY2smIHZhbHVlcywgY29uc3Qg
Q29udHJvbFR5cGUmIHRhcmdldCwgYm9vbCBkcm9wVmFsdWVzKQpAQCAtMzQ5LDcgKzM0OSw3IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGtF
eHByZXNzaW9uU3RhY2soU3RhY2smIGV4cHJlc3Npb25TdGFjaywgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNr
LCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgZnVuY3Rvcik7CisgICAgICAgIHdhbGtFeHByZXNz
aW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBtX3N0YWNrU2l6ZSwgZnVuY3Rvcik7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTQ4Myw3ICs0ODMsNyBAQCBMTElu
dEdlbmVyYXRvcjo6TExJbnRHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IHVuc2lnbmVkIGZ1bmN0aW9uSQogc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBM
TEludEdlbmVyYXRvcjo6ZmluYWxpemUoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29kZUJs
b2NrKTsKLSAgICBzaXplX3QgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbWF4U3RhY2tTaXplLnVuc2FmZUdldCgp
KTsKKyAgICBzaXplX3QgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbWF4U3RhY2tTaXplKTsKICAgICBtX2NvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHMgPSBudW1DYWxsZWVMb2NhbHM7CiAgICAgUkVMRUFTRV9B
U1NFUlQobnVtQ2FsbGVlTG9jYWxzID09IG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7
CiAKQEAgLTU3NCw3ICs1NzQsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRp
b25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgIC8vIEZJ
WE1FOiB3ZSBhcmUgYWxsb2NhdGluZyB0aGUgZXh0cmEgc3BhY2UgZm9yIHRoZSBhcmd1bWVudC9y
ZXR1cm4gY291bnQgaW4gb3JkZXIgdG8gYXZvaWQgaW50ZXJmZXJlbmNlLCBidXQgd2UgY291bGQg
ZG8gYmV0dGVyCiAgICAgLy8gTk9URTogV2UgaW5jcmVhc2UgYXJnIGNvdW50IGJ5IDEgZm9yIHRo
ZSBjYXNlIG9mIGluZGlyZWN0IGNhbGxzCiAgICAgbV9zdGFja1NpemUgKz0gc3RkOjptYXgoc2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpKSArIGdw
ckNvdW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnM7Ci0gICAgaWYgKG1fc3RhY2tTaXplLnVuc2FmZUdldCgpICUgc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSkKKyAgICBpZiAobV9zdGFja1NpemUudmFsdWUoKSAlIHN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCkpCiAgICAgICAgICsrbV9zdGFja1NpemU7CiAgICAgaWYgKG1fbWF4U3Rh
Y2tTaXplIDwgbV9zdGFja1NpemUpCiAgICAgICAgIG1fbWF4U3RhY2tTaXplID0gbV9zdGFja1Np
emU7CkBAIC01ODMsNyArNTgzLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0
aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICBSZXN1
bHRMaXN0IGFyZ3VtZW50cyhzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKICAgICBSZXN1bHRM
aXN0IHRlbXBvcmFyeVJlc3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkpOwogCi0gICAgY29u
c3QgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKTsKKyAgICBj
b25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9IG1fc3RhY2tTaXplOwogICAgIGNvbnN0IHVuc2ln
bmVkIGJhc2UgPSBzdGFja09mZnNldCAtIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
OwogCiAgICAgY29uc3QgdWludDMyX3QgZ3ByTGltaXQgPSBiYXNlIC0gc3RhY2tDb3VudCAtIGdw
ckNvdW50OwpAQCAtODc2LDcgKzg3Niw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvb3Ao
QmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAgICAg
UmVmPExhYmVsPiBib2R5ID0gbmV3RW1pdHRlZExhYmVsKCk7CiAgICAgUmVmPExhYmVsPiBjb250
aW51YXRpb24gPSBuZXdMYWJlbCgpOwogCi0gICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9vcChz
aWduYXR1cmUsIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3Zl
KGNvbnRpbnVhdGlvbikpOworICAgIGJsb2NrID0gQ29udHJvbFR5cGU6Omxvb3Aoc2lnbmF0dXJl
LCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKIAog
ICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IG9zckVudHJ5RGF0YTsKICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzOyBpKyspCkBAIC05MDQs
MTMgKzkwNCwxMyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRMb29wKEJsb2NrU2lnbmF0dXJl
IHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBDbwogCiBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRUb3BMZXZlbChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUpIC0+IENvbnRyb2xUeXBl
CiB7Ci0gICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZlbChzaWduYXR1cmUsIG1fc3RhY2tT
aXplLnVuc2FmZUdldCgpLCBuZXdMYWJlbCgpKTsKKyAgICByZXR1cm4gQ29udHJvbFR5cGU6OnRv
cExldmVsKHNpZ25hdHVyZSwgbV9zdGFja1NpemUsIG5ld0xhYmVsKCkpOwogfQogCiBhdXRvIExM
SW50R2VuZXJhdG9yOjphZGRCbG9jayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBl
bmNsb3NpbmdTdGFjaywgQ29udHJvbFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3Rh
Y2ssIG5ld1N0YWNrKTsKLSAgICBuZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1
cmUsIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBuZXdMYWJlbCgpKTsKKyAgICBuZXdCbG9jayA9
IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBuZXdMYWJlbCgpKTsK
ICAgICByZXR1cm4geyB9OwogfQogCkBAIC05MjMsNyArOTIzLDcgQEAgYXV0byBMTEludEdlbmVy
YXRvcjo6YWRkSWYoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBCbG9ja1NpZ25hdHVyZSBzaWdu
YXR1cmUsIFMKIAogICAgIFdhc21KZmFsc2U6OmVtaXQodGhpcywgY29uZGl0aW9uLCBhbHRlcm5h
dGUtPmJpbmQodGhpcykpOwogCi0gICAgcmVzdWx0ID0gQ29udHJvbFR5cGU6OmlmXyhzaWduYXR1
cmUsIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBXVEZNb3ZlKGFsdGVybmF0ZSksIFdURk1vdmUo
Y29udGludWF0aW9uKSk7CisgICAgcmVzdWx0ID0gQ29udHJvbFR5cGU6OmlmXyhzaWduYXR1cmUs
IG1fc3RhY2tTaXplLCBXVEZNb3ZlKGFsdGVybmF0ZSksIFdURk1vdmUoY29udGludWF0aW9uKSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtOTQxLDcgKzk0MSw3IEBAIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmFkZEVsc2VUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJiBkYXRhKSAtPiBQYXJ0aWFs
UmVzdWx0CiAKICAgICBDb250cm9sSWYmIGNvbnRyb2wgPSBXVEY6OmdldDxDb250cm9sSWY+KGRh
dGEpOwogICAgIGVtaXRMYWJlbChjb250cm9sLm1fYWx0ZXJuYXRlLmdldCgpKTsKLSAgICBkYXRh
ID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWduYXR1cmUsIG1fc3RhY2tTaXplLnVuc2Fm
ZUdldCgpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKKyAgICBkYXRhID0gQ29udHJv
bFR5cGU6OmJsb2NrKGRhdGEubV9zaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGRhdGEu
bV9jb250aW51YXRpb24pKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5kZXggZjBkZWFiYjA5NGY3NGIxYjU3MDgwMjcy
NWY0MjNkNWQxOTY0NThiNC4uMjJlOWVlMDZjZTllYjIzNmRjNDc4ZjdmZTc3N2VjMTM4MGVlMmZh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaApAQCAtNjMs
NyArNjMsNyBAQCBjbGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2lnbmF0dXJlPiB7CiAgICAgVHlwZSogc3RvcmFnZShTaWduYXR1cmVBcmdDb3VudCBpKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PFNpZ25hdHVyZSo+KHRoaXMpLT5zdG9yYWdlKGkpOyB9CiAg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0ZWRTaXplKENoZWNrZWQ8U2lnbmF0dXJlQXJnQ291bnQ+
IHJldENvdW50LCBDaGVja2VkPFNpZ25hdHVyZUFyZ0NvdW50PiBhcmdDb3VudCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAoc2l6ZW9mKFNpZ25hdHVyZSkgKyAocmV0Q291bnQgKyBhcmdDb3VudCkg
KiBzaXplb2YoVHlwZSkpLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gc2l6ZW9mKFNpZ25h
dHVyZSkgKyAocmV0Q291bnQgKyBhcmdDb3VudCkgKiBzaXplb2YoVHlwZSk7CiAgICAgfQogCiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFt
aW5nUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQ
YXJzZXIuY3BwCmluZGV4IDg4YzYyN2MxNjBjNjliNmE3NThjNzJjZDMxMTk4N2U1NDgxNWYxOTAu
LjJmNjA0MGFkZmQ1NzUwZjczZDg2YjFhNzZiNTc4M2I4NjRkNWFkNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCkBAIC0yNTYs
NyArMjU2LDcgQEAgYXV0byBTdHJlYW1pbmdQYXJzZXI6OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBJc0VuZE9mU3QKICAgICAgICAgcmV0dXJuIG1fc3Rh
dGU7CiAKICAgICBtX3RvdGFsU2l6ZSArPSBieXRlc1NpemU7Ci0gICAgaWYgKFVOTElLRUxZKG1f
dG90YWxTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBtX3RvdGFsU2l6ZS51bnNhZmVHZXQoKSA+IG1h
eE1vZHVsZVNpemUpKSB7CisgICAgaWYgKFVOTElLRUxZKG1fdG90YWxTaXplLmhhc092ZXJmbG93
ZWQoKSB8fCBtX3RvdGFsU2l6ZSA+IG1heE1vZHVsZVNpemUpKSB7CiAgICAgICAgIG1fc3RhdGUg
PSBmYWlsKCJtb2R1bGUgc2l6ZSBpcyB0b28gbGFyZ2UsIG1heGltdW0gIiwgbWF4TW9kdWxlU2l6
ZSk7CiAgICAgICAgIHJldHVybiBtX3N0YXRlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtVGFibGUuY3BwCmluZGV4IDhhNTQ3NjE4NTRjYzYxZTVkZWU4YjBmNDAzMjRmMjgz
NDk1NDFjMjEuLmM2YzA3OGRjZjljMzc1NDRlZWUzODA4NDJjNzNhN2Y1ZGJmODcxNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBU
YWJsZTo6VGFibGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4
aW11bSwgVGFibGVFbGVtZW50VHlwZQogICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSB3b3J0aCB0
cnlpbmcgdG8gcHJlLWFsbG9jYXRlIG1heGltdW0gaGVyZS4gVGhlIHNwZWMgcmVjb21tZW5kcyBk
b2luZyBzby4KICAgICAvLyBCdXQgZm9yIG5vdywgd2UncmUgbm90IGRvaW5nIHRoYXQuCiAgICAg
Ly8gRklYTUUgdGhpcyBvdmVyLWFsbG9jYXRlcyBhbmQgY291bGQgYmUgc21hcnRlciBhYm91dCBu
b3QgY29tbWl0dGluZyBhbGwgb2YgdGhhdCBtZW1vcnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTQyNQotICAgIG1fanNWYWx1ZXMgPSBNYWxsb2NQdHI8V3JpdGVC
YXJyaWVyPFVua25vd24+LCBWTU1hbGxvYz46Om1hbGxvYygoc2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPikgKiBDaGVja2VkPHNpemVfdD4oYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKSkpLnVu
c2FmZUdldCgpKTsKKyAgICBtX2pzVmFsdWVzID0gTWFsbG9jUHRyPFdyaXRlQmFycmllcjxVbmtu
b3duPiwgVk1NYWxsb2M+OjptYWxsb2Moc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBD
aGVja2VkPHNpemVfdD4oYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKSkpOwogICAgIGZvciAodWlu
dDMyX3QgaSA9IDA7IGkgPCBhbGxvY2F0ZWRMZW5ndGgobV9sZW5ndGgpOyArK2kpIHsKICAgICAg
ICAgbmV3ICgmbV9qc1ZhbHVlcy5nZXQoKVtpXSkgV3JpdGVCYXJyaWVyPFVua25vd24+KCk7CiAg
ICAgICAgIG1fanNWYWx1ZXMuZ2V0KClbaV0uc2V0U3RhcnRpbmdWYWx1ZShqc051bGwoKSk7CkBA
IC0xMDAsOCArMTAwLDggQEAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWlu
dDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBjaGVja2VkR3JvdyA9IFsmXSAoYXV0byYgY29udGFpbmVyLCBh
dXRvIGluaXRpYWxpemVyKSB7Ci0gICAgICAgIGlmIChuZXdMZW5ndGhDaGVja2VkLnVuc2FmZUdl
dCgpID4gYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3RoKSkgewotICAgICAgICAgICAgQ2hlY2tlZCBy
ZWFsbG9jU2l6ZUNoZWNrZWQgPSBhbGxvY2F0ZWRMZW5ndGgobmV3TGVuZ3RoQ2hlY2tlZC51bnNh
ZmVHZXQoKSk7CisgICAgICAgIGlmIChuZXdMZW5ndGhDaGVja2VkID4gYWxsb2NhdGVkTGVuZ3Ro
KG1fbGVuZ3RoKSkgeworICAgICAgICAgICAgQ2hlY2tlZCByZWFsbG9jU2l6ZUNoZWNrZWQgPSBh
bGxvY2F0ZWRMZW5ndGgobmV3TGVuZ3RoQ2hlY2tlZCk7CiAgICAgICAgICAgICByZWFsbG9jU2l6
ZUNoZWNrZWQgKj0gc2l6ZW9mKCpjb250YWluZXIuZ2V0KCkpOwogICAgICAgICAgICAgdWludDMy
X3QgcmVhbGxvY1NpemU7CiAgICAgICAgICAgICBpZiAocmVhbGxvY1NpemVDaGVja2VkLnNhZmVH
ZXQocmVhbGxvY1NpemUpID09IENoZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3cpCkBAIC0xOTUsOSAr
MTk1LDkgQEAgRnVuY1JlZlRhYmxlOjpGdW5jUmVmVGFibGUodWludDMyX3QgaW5pdGlhbCwgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSkKIHsKICAgICAvLyBGSVhNRTogSXQgbWlnaHQg
YmUgd29ydGggdHJ5aW5nIHRvIHByZS1hbGxvY2F0ZSBtYXhpbXVtIGhlcmUuIFRoZSBzcGVjIHJl
Y29tbWVuZHMgZG9pbmcgc28uCiAgICAgLy8gQnV0IGZvciBub3csIHdlJ3JlIG5vdCBkb2luZyB0
aGF0LgotICAgIG1faW1wb3J0YWJsZUZ1bmN0aW9ucyA9IE1hbGxvY1B0cjxXYXNtVG9XYXNtSW1w
b3J0YWJsZUZ1bmN0aW9uLCBWTU1hbGxvYz46Om1hbGxvYygoc2l6ZW9mKFdhc21Ub1dhc21JbXBv
cnRhYmxlRnVuY3Rpb24pICogQ2hlY2tlZDxzaXplX3Q+KGFsbG9jYXRlZExlbmd0aChtX2xlbmd0
aCkpKS51bnNhZmVHZXQoKSk7CisgICAgbV9pbXBvcnRhYmxlRnVuY3Rpb25zID0gTWFsbG9jUHRy
PFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIFZNTWFsbG9jPjo6bWFsbG9jKHNpemVvZihX
YXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uKSAqIENoZWNrZWQ8c2l6ZV90PihhbGxvY2F0ZWRM
ZW5ndGgobV9sZW5ndGgpKSk7CiAgICAgLy8gRklYTUUgdGhpcyBvdmVyLWFsbG9jYXRlcyBhbmQg
Y291bGQgYmUgc21hcnRlciBhYm91dCBub3QgY29tbWl0dGluZyBhbGwgb2YgdGhhdCBtZW1vcnkg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTQyNQotICAgIG1faW5z
dGFuY2VzID0gTWFsbG9jUHRyPEluc3RhbmNlKiwgVk1NYWxsb2M+OjptYWxsb2MoKHNpemVvZihJ
bnN0YW5jZSopICogQ2hlY2tlZDxzaXplX3Q+KGFsbG9jYXRlZExlbmd0aChtX2xlbmd0aCkpKS51
bnNhZmVHZXQoKSk7CisgICAgbV9pbnN0YW5jZXMgPSBNYWxsb2NQdHI8SW5zdGFuY2UqLCBWTU1h
bGxvYz46Om1hbGxvYyhzaXplb2YoSW5zdGFuY2UqKSAqIENoZWNrZWQ8c2l6ZV90PihhbGxvY2F0
ZWRMZW5ndGgobV9sZW5ndGgpKSk7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGFsbG9j
YXRlZExlbmd0aChtX2xlbmd0aCk7ICsraSkgewogICAgICAgICBuZXcgKCZtX2ltcG9ydGFibGVG
dW5jdGlvbnMuZ2V0KClbaV0pIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24oKTsKICAgICAg
ICAgQVNTRVJUKG1faW1wb3J0YWJsZUZ1bmN0aW9ucy5nZXQoKVtpXS5zaWduYXR1cmVJbmRleCA9
PSBXYXNtOjpTaWduYXR1cmU6OmludmFsaWRJbmRleCk7IC8vIFdlIHJlbHkgb24gdGhpcyBpbiBj
b21waWxlZCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5jcHAKaW5kZXggM2IzNDliZTgzYjQ0YzAwMzZmMDEwNmY3NTkyNTJlNmI5Njc3ZWYxZS4u
YmNhNDIxMzQ1Y2EyYzU5NmFjOGU5NjFjZGI3Y2I5ZGU0ZjU4NzQzZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSh1bnNpZ25lZCBu
dW1iZXJPZkZyYW1lcykKICAgICAgICAgewogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChhbGln
bm9mKERpc2p1bmN0aW9uQ29udGV4dCkgPD0gc2l6ZW9mKHZvaWQqKSwgIiIpOwotICAgICAgICAg
ICAgc2l6ZV90IHJhd1NpemUgPSAoc2l6ZW9mKERpc2p1bmN0aW9uQ29udGV4dCkgLSBzaXplb2Yo
dWludHB0cl90KSArIENoZWNrZWQ8c2l6ZV90PihudW1iZXJPZkZyYW1lcykgKiBzaXplb2YodWlu
dHB0cl90KSkudW5zYWZlR2V0KCk7CisgICAgICAgICAgICBzaXplX3QgcmF3U2l6ZSA9IHNpemVv
ZihEaXNqdW5jdGlvbkNvbnRleHQpIC0gc2l6ZW9mKHVpbnRwdHJfdCkgKyBDaGVja2VkPHNpemVf
dD4obnVtYmVyT2ZGcmFtZXMpICogc2l6ZW9mKHVpbnRwdHJfdCk7CiAgICAgICAgICAgICBzaXpl
X3Qgcm91bmRlZFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJhd1Np
emUpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRlZFNpemUgPj0gcmF3U2l6ZSk7
CiAgICAgICAgICAgICByZXR1cm4gcm91bmRlZFNpemU7CkBAIC0xMzYsNyArMTM2LDcgQEAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHVuc2lnbmVkIG51bWJl
ck9mU3VicGF0dGVybnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoYWxp
Z25vZihQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCkgPD0gc2l6ZW9mKHZvaWQqKSwgIiIp
OwotICAgICAgICAgICAgc2l6ZV90IHJhd1NpemUgPSAoc2l6ZW9mKFBhcmVudGhlc2VzRGlzanVu
Y3Rpb25Db250ZXh0KSAtIHNpemVvZih1bnNpZ25lZCkgKyAoQ2hlY2tlZDxzaXplX3Q+KG51bWJl
ck9mU3VicGF0dGVybnMpICogMlUpICogc2l6ZW9mKHVuc2lnbmVkKSkudW5zYWZlR2V0KCk7Cisg
ICAgICAgICAgICBzaXplX3QgcmF3U2l6ZSA9IHNpemVvZihQYXJlbnRoZXNlc0Rpc2p1bmN0aW9u
Q29udGV4dCkgLSBzaXplb2YodW5zaWduZWQpICsgKENoZWNrZWQ8c2l6ZV90PihudW1iZXJPZlN1
YnBhdHRlcm5zKSAqIDJVKSAqIHNpemVvZih1bnNpZ25lZCk7CiAgICAgICAgICAgICBzaXplX3Qg
cm91bmRlZFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJhd1NpemUp
OwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRlZFNpemUgPj0gcmF3U2l6ZSk7CiAg
ICAgICAgICAgICByZXR1cm4gcm91bmRlZFNpemU7CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGlj
OgogCiAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGFsbG9jUGFyZW50aGVzZXNE
aXNqdW5jdGlvbkNvbnRleHQoQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgdW5zaWduZWQq
IG91dHB1dCwgQnl0ZVRlcm0mIHRlcm0pCiAgICAgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IChD
aGVja2VkPHNpemVfdD4oUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OmFsbG9jYXRpb25T
aXplKHRlcm0uYXRvbS5wYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5tX251bVN1YnBhdHRlcm5zKSkg
KyBEaXNqdW5jdGlvbkNvbnRleHQ6OmFsbG9jYXRpb25TaXplKGRpc2p1bmN0aW9uLT5tX2ZyYW1l
U2l6ZSkpLnVuc2FmZUdldCgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IENoZWNrZWQ8c2l6ZV90
PihQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dDo6YWxsb2NhdGlvblNpemUodGVybS5hdG9t
LnBhcmVudGhlc2VzRGlzanVuY3Rpb24tPm1fbnVtU3VicGF0dGVybnMpKSArIERpc2p1bmN0aW9u
Q29udGV4dDo6YWxsb2NhdGlvblNpemUoZGlzanVuY3Rpb24tPm1fZnJhbWVTaXplKTsKICAgICAg
ICAgYWxsb2NhdG9yUG9vbCA9IGFsbG9jYXRvclBvb2wtPmVuc3VyZUNhcGFjaXR5KHNpemUpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChhbGxvY2F0b3JQb29sKTsKICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdG9yUG9vbC0+YWxsb2Moc2l6ZSkpIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250
ZXh0KG91dHB1dCwgdGVybSk7CkBAIC0xNzg2LDcgKzE3ODYsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKGNoYXJhY3Rl
ckNsYXNzLCBpbnZlcnQsIGlucHV0UG9zaXRpb24pKTsKIAotICAgICAgICBtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXMubGFzdCgpLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291
bnQudW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5sYXN0KCku
YXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudDsKICAgICAgICAgbV9ib2R5
RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5hdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlw
ZTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5mcmFtZUxvY2F0aW9u
ID0gZnJhbWVMb2NhdGlvbjsKICAgICB9CkBAIC0xNzk3LDcgKzE3OTcsNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6QmFja1Jl
ZmVyZW5jZShzdWJwYXR0ZXJuSWQsIGlucHV0UG9zaXRpb24pKTsKIAotICAgICAgICBtX2JvZHlE
aXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5
TWF4Q291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5s
YXN0KCkuYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudDsKICAgICAgICAg
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5hdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50
aXR5VHlwZTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5mcmFtZUxv
Y2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKICAgICB9CkBAIC0xODc0LDkgKzE4NzQsOSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnBhcmVu
dGhlc2VzV2lkdGggPSBlbmRUZXJtIC0gYmVnaW5UZXJtOwogICAgICAgICBtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXNbZW5kVGVybV0uZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CiAKLSAg
ICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1h
eENvdW50ID0gcXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKTsKKyAgICAgICAgbV9ib2R5RGlz
anVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRp
dHlNYXhDb3VudDsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0u
YXRvbS5xdWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0
aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENv
dW50LnVuc2FmZUdldCgpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVy
bV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRpdHlNYXhDb3VudDsKICAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRp
dHlUeXBlOwogICAgIH0KIApAQCAtMTk3NCw4ICsxOTc0LDggQEAgcHVibGljOgogICAgICAgICBt
X2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24u
Z2V0KCksIGNhcHR1cmUsIGlucHV0UG9zaXRpb24pKTsKICAgICAgICAgbV9hbGxQYXJlbnRoZXNl
c0luZm8uYXBwZW5kKFdURk1vdmUocGFyZW50aGVzZXNEaXNqdW5jdGlvbikpOwogCi0gICAgICAg
IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3Vu
dCA9IHF1YW50aXR5TWluQ291bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0
aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4
Q291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdp
blRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291bnQ7CisgICAgICAg
IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3Vu
dCA9IHF1YW50aXR5TWF4Q291bnQ7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1ti
ZWdpblRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwogICAgICAgICBtX2Jv
ZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2Nh
dGlvbjsKICAgICB9CkBAIC0xOTk2LDExICsxOTk2LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucGFyZW50aGVzZXNXaWR0aCA9IGVu
ZFRlcm0gLSBiZWdpblRlcm07CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRU
ZXJtXS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKIAotICAgICAgICBtX2JvZHlEaXNq
dW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0
eU1pbkNvdW50LnVuc2FmZUdldCgpOwotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNb
YmVnaW5UZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50LnVuc2Fm
ZUdldCgpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9t
LnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eU1pbkNvdW50OworICAgICAgICBtX2JvZHlEaXNq
dW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0
eU1heENvdW50OwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5h
dG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291
bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJt
XS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eU1heENvdW50LnVuc2FmZUdldCgpOwor
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eU1p
bkNvdW50ID0gcXVhbnRpdHlNaW5Db3VudDsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRl
cm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQ7CiAg
ICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnF1YW50aXR5VHlw
ZSA9IHF1YW50aXR5VHlwZTsKICAgICB9CiAKQEAgLTIwMjAsMTEgKzIwMjAsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5wYXJlbnRo
ZXNlc1dpZHRoID0gZW5kVGVybSAtIGJlZ2luVGVybTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zW2VuZFRlcm1dLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwogCi0gICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNaW5D
b3VudCA9IHF1YW50aXR5TWluQ291bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIG1fYm9keURpc2p1
bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5
TWF4Q291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1ti
ZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291bnQ7CisgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlNYXhD
b3VudCA9IHF1YW50aXR5TWF4Q291bnQ7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
c1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwotICAgICAgICBt
X2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0g
cXVhbnRpdHlNaW5Db3VudC51bnNhZmVHZXQoKTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24t
PnRlcm1zW2VuZFRlcm1dLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5h
dG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eU1pbkNvdW50OworICAgICAgICBtX2JvZHlE
aXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5xdWFudGl0eU1heENvdW50ID0gcXVhbnRp
dHlNYXhDb3VudDsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0
b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwogICAgIH0KIApAQCAtMjA5MCwyNyArMjA5
MCwyNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHRlcm0gOiBhbHRlcm5hdGl2
ZS0+bV90ZXJtcykgewogICAgICAgICAgICAgICAgIHN3aXRjaCAodGVybS50eXBlKSB7CiAgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkJPTDoKLSAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0aW9uQk9MKChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRl
cm0uaW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCkpOworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRpb25CT0woY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24p
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgUGF0
dGVyblRlcm06OlR5cGVBc3NlcnRpb25FT0w6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydGlv
bkVPTCgoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24pLnVu
c2FmZUdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uRU9MKGN1cnJlbnRDb3Vu
dEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0
aW9uV29yZEJvdW5kYXJ5OgotICAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25Xb3JkQm91bmRh
cnkodGVybS5pbnZlcnQoKSwgKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1
dFBvc2l0aW9uKS51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbldv
cmRCb3VuZGFyeSh0ZXJtLmludmVydCgpLCBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRl
cm0uaW5wdXRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXI6Ci0gICAgICAg
ICAgICAgICAgICAgIGF0b21QYXR0ZXJuQ2hhcmFjdGVyKHRlcm0ucGF0dGVybkNoYXJhY3Rlciwg
KGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKS51bnNhZmVH
ZXQoKSwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRlcm0ucXVh
bnRpdHlUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgYXRvbVBhdHRlcm5DaGFyYWN0ZXIodGVy
bS5wYXR0ZXJuQ2hhcmFjdGVyLCBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5w
dXRQb3NpdGlvbiwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRl
cm0ucXVhbnRpdHlUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3M6Ci0gICAgICAgICAg
ICAgICAgICAgIGF0b21DaGFyYWN0ZXJDbGFzcyh0ZXJtLmNoYXJhY3RlckNsYXNzLCB0ZXJtLmlu
dmVydCgpLCAoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24p
LnVuc2FmZUdldCgpLCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNYXhDb3VudCwg
dGVybS5xdWFudGl0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBhdG9tQ2hhcmFjdGVyQ2xh
c3ModGVybS5jaGFyYWN0ZXJDbGFzcywgdGVybS5pbnZlcnQoKSwgY3VycmVudENvdW50QWxyZWFk
eUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24sIHRlcm0uZnJhbWVMb2NhdGlvbiwgdGVybS5x
dWFudGl0eU1heENvdW50LCB0ZXJtLnF1YW50aXR5VHlwZSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUJhY2tSZWZl
cmVuY2U6Ci0gICAgICAgICAgICAgICAgICAgIGF0b21CYWNrUmVmZXJlbmNlKHRlcm0uYmFja1Jl
ZmVyZW5jZVN1YnBhdHRlcm5JZCwgKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5p
bnB1dFBvc2l0aW9uKS51bnNhZmVHZXQoKSwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLnF1YW50
aXR5TWF4Q291bnQsIHRlcm0ucXVhbnRpdHlUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgYXRv
bUJhY2tSZWZlcmVuY2UodGVybS5iYWNrUmVmZXJlbmNlU3VicGF0dGVybklkLCBjdXJyZW50Q291
bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbiwgdGVybS5mcmFtZUxvY2F0aW9u
LCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRlcm0ucXVhbnRpdHlUeXBlKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
Rm9yd2FyZFJlZmVyZW5jZToKQEAgLTIxMjUsMTkgKzIxMjUsMTkgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc2p1bmN0aW9uQWxyZWFkeUNoZWNrZWRDb3VudCA9IHRl
cm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVG
cmFtZUxvY2F0aW9uICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhlc2Vz
T25jZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRlbGVnYXRlRW5kSW5wdXRP
ZmZzZXQgPSAoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24p
LnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZWdhdGVF
bmRJbnB1dE9mZnNldCA9IGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBv
c2l0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgYXRvbVBhcmVudGhlc2VzT25jZUJlZ2lu
KHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkLCB0ZXJtLmNhcHR1cmUoKSwgZGlzanVuY3Rp
b25BbHJlYWR5Q2hlY2tlZENvdW50ICsgZGVsZWdhdGVFbmRJbnB1dE9mZnNldCwgdGVybS5mcmFt
ZUxvY2F0aW9uLCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gZXJyb3IgPSBlbWl0RGlzanVuY3Rpb24odGVybS5wYXJlbnRoZXNlcy5k
aXNqdW5jdGlvbiwgY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQsIGRpc2p1bmN0aW9uQWxyZWFk
eUNoZWNrZWRDb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwogICAgICAgICAgICAgICAgICAgICAgICAgYXRvbVBhcmVudGhlc2VzT25jZUVuZChkZWxlZ2F0
ZUVuZElucHV0T2Zmc2V0LCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNaW5Db3Vu
dCwgdGVybS5xdWFudGl0eU1heENvdW50LCB0ZXJtLnF1YW50aXR5VHlwZSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWxlZ2F0ZUVuZElucHV0T2Zmc2V0ID0gKGN1
cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKS51bnNhZmVHZXQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRlbGVnYXRlRW5kSW5wdXRPZmZz
ZXQgPSBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGF0b21QYXJlbnRoZXNlc1Rlcm1pbmFsQmVnaW4odGVybS5w
YXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQsIHRlcm0uY2FwdHVyZSgpLCBkaXNqdW5jdGlvbkFscmVh
ZHlDaGVja2VkQ291bnQgKyBkZWxlZ2F0ZUVuZElucHV0T2Zmc2V0LCB0ZXJtLmZyYW1lTG9jYXRp
b24sIHRlcm0uZnJhbWVMb2NhdGlvbiArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1Bh
cmVudGhlc2VzVGVybWluYWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJy
b3IgPSBlbWl0RGlzanVuY3Rpb24odGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVu
dENvdW50QWxyZWFkeUNoZWNrZWQsIGRpc2p1bmN0aW9uQWxyZWFkeUNoZWNrZWRDb3VudCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYXRvbVBhcmVudGhlc2VzVGVybWluYWxFbmQoZGVsZWdhdGVFbmRJbnB1dE9mZnNl
dCwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLnF1YW50aXR5TWluQ291bnQsIHRlcm0ucXVhbnRp
dHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZWdhdGVFbmRJbnB1dE9m
ZnNldCA9IChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbiku
dW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWxlZ2F0ZUVu
ZElucHV0T2Zmc2V0ID0gY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9z
aXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJu
QmVnaW4odGVybS5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQsIHRlcm0uY2FwdHVyZSgpLCBkaXNq
dW5jdGlvbkFscmVhZHlDaGVja2VkQ291bnQgKyBkZWxlZ2F0ZUVuZElucHV0T2Zmc2V0LCB0ZXJt
LmZyYW1lTG9jYXRpb24sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJy
b3IgPSBlbWl0RGlzanVuY3Rpb24odGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVu
dENvdW50QWxyZWFkeUNoZWNrZWQsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKQEAgLTIxNDgsNyArMjE0OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOiB7CiAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsdGVybmF0aXZlRnJhbWVMb2NhdGlvbiA9IHRlcm0u
ZnJhbWVMb2NhdGlvbiArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhldGlj
YWxBc3NlcnRpb247Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aXZlSW5wdXRP
ZmZzZXQgPSAoY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24p
LnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwb3NpdGl2ZUlucHV0
T2Zmc2V0ID0gY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb247
CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHVuY2hlY2tBbW91bnQgPSAwOwogICAgICAg
ICAgICAgICAgICAgICBpZiAocG9zaXRpdmVJbnB1dE9mZnNldCA+IHRlcm0ucGFyZW50aGVzZXMu
ZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVu
Y2hlY2tBbW91bnQgPSBwb3NpdGl2ZUlucHV0T2Zmc2V0IC0gdGVybS5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJJbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmgKaW5kZXggY2U5MTI1M2EzODU4ZDFhOWViMjc5MDRkZjE1OTc2MGYyNmMx
YzZmYy4uYTVjNjk1YzU4YjliZGY2Njg2NmY0ZjQ5OTBhMGNhNGFiY2JmY2RlMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKQEAgLTExNSw4ICsxMTUs
OCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAgICAgYXRvbS5wYXR0ZXJuQ2hhcmFj
dGVyID0gY2g7CiAgICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwotICAg
ICAgICBhdG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOwot
ICAgICAgICBhdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgp
OworICAgICAgICBhdG9tLnF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eUNvdW50OworICAgICAg
ICBhdG9tLnF1YW50aXR5TWF4Q291bnQgPSBxdWFudGl0eUNvdW50OwogICAgICAgICBpbnB1dFBv
c2l0aW9uID0gaW5wdXRQb3M7CiAKICAgICAgICAgc3dpdGNoIChxdWFudGl0eVR5cGUpIHsKQEAg
LTE1Miw4ICsxNTIsOCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgICAgICBhdG9tLmNhc2VkQ2hh
cmFjdGVyLmxvID0gbG87CiAgICAgICAgIGF0b20uY2FzZWRDaGFyYWN0ZXIuaGkgPSBoaTsKICAg
ICAgICAgYXRvbS5xdWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7Ci0gICAgICAgIGF0b20ucXVh
bnRpdHlNaW5Db3VudCA9IHF1YW50aXR5Q291bnQudW5zYWZlR2V0KCk7Ci0gICAgICAgIGF0b20u
cXVhbnRpdHlNYXhDb3VudCA9IHF1YW50aXR5Q291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIGF0
b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5Q291bnQ7CisgICAgICAgIGF0b20ucXVhbnRp
dHlNYXhDb3VudCA9IHF1YW50aXR5Q291bnQ7CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1
dFBvczsKICAgICB9CiAKQEAgLTIxNCwxNCArMjE0LDE0IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAg
ICAgc3RhdGljIEJ5dGVUZXJtIENoZWNrSW5wdXQoQ2hlY2tlZDx1bnNpZ25lZD4gY291bnQpCiAg
ICAgewogICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGVDaGVja0lucHV0KTsKLSAgICAgICAgdGVy
bS5jaGVja0lucHV0Q291bnQgPSBjb3VudC51bnNhZmVHZXQoKTsKKyAgICAgICAgdGVybS5jaGVj
a0lucHV0Q291bnQgPSBjb3VudDsKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQogCiAgICAg
c3RhdGljIEJ5dGVUZXJtIFVuY2hlY2tJbnB1dChDaGVja2VkPHVuc2lnbmVkPiBjb3VudCkKICAg
ICB7CiAgICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZVVuY2hlY2tJbnB1dCk7Ci0gICAgICAgIHRl
cm0uY2hlY2tJbnB1dENvdW50ID0gY291bnQudW5zYWZlR2V0KCk7CisgICAgICAgIHRlcm0uY2hl
Y2tJbnB1dENvdW50ID0gY291bnQ7CiAgICAgICAgIHJldHVybiB0ZXJtOwogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggM2I1MzY5ZWE4YjIwYTdm
YmRkNDkzMmZmMjA2OTc1ODIyZjlhNmQ1ZS4uZjRiY2MxYWM2ZWQ3MTcyMWM3NmM3ZmUzZjkxZjIx
NjFmMzczM2VjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTU0
MiwxMCArNTQyLDEwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBhcyBhIHRlbXAgYWRk
cmVzcyByZWdpc3Rlci4KICAgICAgICAgdW5zaWduZWQgbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9y
Q2hhcmFjdGVyU2l6ZSA9IG1fY2hhclNpemUgPT0gQ2hhcjggPyAweDdmZmZmZmZmIDogMHgzZmZm
ZmZmZjsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0QWRqdXN0QW1vdW50ID0gMHg0MDAwMDAwMDsK
LSAgICAgICAgaWYgKG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0LnVuc2FmZUdldCgpID4gbWF4aW11
bU5lZ2F0aXZlT2Zmc2V0Rm9yQ2hhcmFjdGVyU2l6ZSkgeworICAgICAgICBpZiAobmVnYXRpdmVD
aGFyYWN0ZXJPZmZzZXQgPiBtYXhpbXVtTmVnYXRpdmVPZmZzZXRGb3JDaGFyYWN0ZXJTaXplKSB7
CiAgICAgICAgICAgICBiYXNlID0gdGVtcFJlZzsKICAgICAgICAgICAgIG1vdmUoaW5wdXQsIGJh
c2UpOwotICAgICAgICAgICAgd2hpbGUgKG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0LnVuc2FmZUdl
dCgpID4gbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9yQ2hhcmFjdGVyU2l6ZSkgeworICAgICAgICAg
ICAgd2hpbGUgKG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0ID4gbWF4aW11bU5lZ2F0aXZlT2Zmc2V0
Rm9yQ2hhcmFjdGVyU2l6ZSkgewogICAgICAgICAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIo
b2Zmc2V0QWRqdXN0QW1vdW50KSwgYmFzZSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fY2hhclNp
emUgIT0gQ2hhcjgpCiAgICAgICAgICAgICAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIob2Zm
c2V0QWRqdXN0QW1vdW50KSwgYmFzZSk7CkBAIC01NTMsMTIgKzU1MywxMiBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIENoZWNrZWQ8aW50MzJf
dD4gY2hhcmFjdGVyT2Zmc2V0KC1zdGF0aWNfY2FzdDxpbnQzMl90PihuZWdhdGl2ZUNoYXJhY3Rl
ck9mZnNldC51bnNhZmVHZXQoKSkpOworICAgICAgICBDaGVja2VkPGludDMyX3Q+IGNoYXJhY3Rl
ck9mZnNldCgtc3RhdGljX2Nhc3Q8aW50MzJfdD4obmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQpKTsK
IAogICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKLSAgICAgICAgICAgIHJldHVybiBC
YXNlSW5kZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc09uZSwgKGNoYXJhY3Rlck9mZnNldCAqIHN0
YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihjaGFyKSkpLnVuc2FmZUdldCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBCYXNlSW5kZXgoaW5wdXQsIGluZGV4UmVnLCBUaW1lc09uZSwgY2hhcmFjdGVy
T2Zmc2V0ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGNoYXIpKSk7CiAKLSAgICAgICAg
cmV0dXJuIEJhc2VJbmRleChpbnB1dCwgaW5kZXhSZWcsIFRpbWVzVHdvLCAoY2hhcmFjdGVyT2Zm
c2V0ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKFVDaGFyKSkpLnVuc2FmZUdldCgpKTsK
KyAgICAgICAgcmV0dXJuIEJhc2VJbmRleChpbnB1dCwgaW5kZXhSZWcsIFRpbWVzVHdvLCBjaGFy
YWN0ZXJPZmZzZXQgKiBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoVUNoYXIpKSk7CiAgICAg
fQogCiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMKQEAgLTEwMDIsNyArMTAwMiw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaERlc3Q7CiAgICAg
ICAgICAgICBpZiAoIXRlcm0tPmlucHV0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgbWF0Y2hE
ZXN0LmFwcGVuZChicmFuY2gzMihFcXVhbCwgaW5kZXgsIEltbTMyKG1fY2hlY2tlZE9mZnNldC51
bnNhZmVHZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBtYXRjaERlc3QuYXBwZW5kKGJyYW5jaDMy
KEVxdWFsLCBpbmRleCwgSW1tMzIobV9jaGVja2VkT2Zmc2V0KSkpOwogCiAgICAgICAgICAgICBy
ZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gKyAxLCBj
aGFyYWN0ZXIpOwogICAgICAgICAgICAgbWF0Y2hDaGFyYWN0ZXJDbGFzcyhjaGFyYWN0ZXIsIG1h
dGNoRGVzdCwgbV9wYXR0ZXJuLm5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpKTsKQEAgLTEwMTQsNyAr
MTAxNCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9z
aXRpb24pCiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcCgpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChicmFuY2gzMihO
b3RFcXVhbCwgaW5kZXgsIEltbTMyKG1fY2hlY2tlZE9mZnNldC51bnNhZmVHZXQoKSkpKTsKKyAg
ICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgaW5kZXgs
IEltbTMyKG1fY2hlY2tlZE9mZnNldCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICB2b2lkIGJh
Y2t0cmFja0Fzc2VydGlvbkJPTChzaXplX3Qgb3BJbmRleCkKQEAgLTEwMzEsNyArMTAzMSw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBjaGFyYWN0ZXIg
PSByZWdUMDsKIAogICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICAgICAg
aWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpKQor
ICAgICAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zmc2V0KQog
ICAgICAgICAgICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwogCiAgICAg
ICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRp
b24sIGNoYXJhY3Rlcik7CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAog
ICAgICAgICAgICAgbWF0Y2hEZXN0LmxpbmsodGhpcyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAodGVybS0+aW5wdXRQb3NpdGlvbiA9PSBtX2NoZWNrZWRPZmZzZXQudW5zYWZl
R2V0KCkpCisgICAgICAgICAgICBpZiAodGVybS0+aW5wdXRQb3NpdGlvbiA9PSBtX2NoZWNrZWRP
ZmZzZXQpCiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQobm90QXRFbmRPZklucHV0
KCkpOwogICAgICAgICAgICAgLy8gRXJrLCByZWFsbHkgc2hvdWxkIHBvaXNvbiBvdXQgdGhlc2Ug
YWx0ZXJuYXRpdmVzIGVhcmx5LiA6LS8KICAgICAgICAgICAgIGVsc2UKQEAgLTEwNjAsNyArMTA2
MCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgY2hhcmFj
dGVyID0gcmVnVDA7CiAKLSAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVj
a2VkT2Zmc2V0LnVuc2FmZUdldCgpKQorICAgICAgICBpZiAodGVybS0+aW5wdXRQb3NpdGlvbiA9
PSBtX2NoZWNrZWRPZmZzZXQpCiAgICAgICAgICAgICBuZXh0SXNOb3RXb3JkQ2hhci5hcHBlbmQo
YXRFbmRPZklucHV0KCkpOwogCiAgICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0
IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKTsKQEAgLTEwODUsNyArMTA4NSw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBKdW1wIGF0QmVnaW47CiAgICAgICAgIEp1bXBMaXN0
IG1hdGNoRGVzdDsKICAgICAgICAgaWYgKCF0ZXJtLT5pbnB1dFBvc2l0aW9uKQotICAgICAgICAg
ICAgYXRCZWdpbiA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleCwgSW1tMzIobV9jaGVja2VkT2Zmc2V0
LnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICBhdEJlZ2luID0gYnJhbmNoMzIoRXF1YWwsIGlu
ZGV4LCBJbW0zMihtX2NoZWNrZWRPZmZzZXQpKTsKICAgICAgICAgcmVhZENoYXJhY3RlcihtX2No
ZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uICsgMSwgY2hhcmFjdGVyKTsKIAogICAg
ICAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJDbGFzczsKQEAgLTEyMjUsNyAr
MTIyNSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGxvYWRGcm9tRnJhbWUo
cGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1h
dGNoQW1vdW50SW5kZXgoKSwgY2hhcmFjdGVyT3JUZW1wKTsKICAgICAgICAgICAgICAgICBhZGQz
MihUcnVzdGVkSW1tMzIoMSksIGNoYXJhY3Rlck9yVGVtcCk7CiAgICAgICAgICAgICAgICAgc3Rv
cmVUb0ZyYW1lKGNoYXJhY3Rlck9yVGVtcCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFj
a1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSk7Ci0gICAgICAgICAg
ICAgICAgbWF0Y2hlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5
TWF4Q291bnQudW5zYWZlR2V0KCkpLCBjaGFyYWN0ZXJPclRlbXApKTsKKyAgICAgICAgICAgICAg
ICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhD
b3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwogICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNz
KG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4
KTsKICAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklk
IDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKICAgICAgICAgICAgICAg
ICBqdW1wKG91dGVyTG9vcCk7CkBAIC0xMjQ5LDcgKzEyNDksNyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JUZW1wKTsKICAg
ICAgICAgICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVM
b2NhdGlvbiArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkp
OwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZp
bml0ZSkKLSAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1t
MzIodGVybS0+cXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSksIGNoYXJhY3Rlck9yVGVtcCkp
OworICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0
ZXJtLT5xdWFudGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7CiAgICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSks
IHBhdHRlcm5JbmRleCk7CiAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3Vi
cGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKIApAQCAt
MTM0NCw3ICsxMzQ0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQoYXRFbmRPZklucHV0KCkpOwogICAgICAgICAgICAgbG9hZEZyb21GcmFtZShwYXJlbnRo
ZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91
bnRJbmRleCgpLCBtYXRjaEFtb3VudCk7CiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlN
YXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQotICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFw
cGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCkpLCBtYXRjaEFtb3VudCkpOworICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFw
cGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQp
LCBtYXRjaEFtb3VudCkpOwogICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBtYXRj
aEFtb3VudCk7CiAgICAgICAgICAgICBzdG9yZVRvRnJhbWUobWF0Y2hBbW91bnQsIHBhcmVudGhl
c2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3Vu
dEluZGV4KCkpOwogICAgICAgICAgICAganVtcChvcC5tX3JlZW50cnkpOwpAQCAtMTU4Myw3ICsx
NTgzLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIG1vdmUoaW5kZXgsIGNvdW50UmVnaXN0
ZXIpOwogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzY2FsZWRNYXhDb3VudCA9IHRlcm0tPnF1
YW50aXR5TWF4Q291bnQ7CiAgICAgICAgIHNjYWxlZE1heENvdW50ICo9IFVfSVNfQk1QKGNoKSA/
IDEgOiAyOwotICAgICAgICBzdWIzMihJbW0zMihzY2FsZWRNYXhDb3VudC51bnNhZmVHZXQoKSks
IGNvdW50UmVnaXN0ZXIpOworICAgICAgICBzdWIzMihJbW0zMihzY2FsZWRNYXhDb3VudCksIGNv
dW50UmVnaXN0ZXIpOwogCiAgICAgICAgIExhYmVsIGxvb3AodGhpcyk7CiAgICAgICAgIHJlYWRD
aGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiAtIHNjYWxlZE1h
eENvdW50LCBjaGFyYWN0ZXIsIGNvdW50UmVnaXN0ZXIpOwpAQCAtMTY0Miw3ICsxNjQyLDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9
PSBxdWFudGlmeUluZmluaXRlKQogICAgICAgICAgICAgICAgIGp1bXAobG9vcCk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnJhbmNoMzIoTm90RXF1YWwsIGNvdW50UmVnaXN0
ZXIsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCkpKS5saW5rVG8obG9v
cCwgdGhpcyk7CisgICAgICAgICAgICAgICAgYnJhbmNoMzIoTm90RXF1YWwsIGNvdW50UmVnaXN0
ZXIsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQpKS5saW5rVG8obG9vcCwgdGhpcyk7CiAK
ICAgICAgICAgICAgIGZhaWx1cmVzLmxpbmsodGhpcyk7CiAgICAgICAgIH0KQEAgLTE2OTgsNyAr
MTY5OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgSnVtcExpc3Qgbm9uR3JlZWR5
RmFpbHVyZXM7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQoYXRFbmRPZklu
cHV0KCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRp
ZnlJbmZpbml0ZSkKLSAgICAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQoYnJh
bmNoMzIoRXF1YWwsIGNvdW50UmVnaXN0ZXIsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5k
KGJyYW5jaDMyKEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENv
dW50KSkpOwogICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5kKGp1bXBJZkNoYXJO
b3RFcXVhbHMoY2gsIG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJh
Y3RlcikpOwogCiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIGluZGV4KTsKQEAg
LTE3OTUsNyArMTc5NSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAobV9kZWNvZGVT
dXJyb2dhdGVQYWlycyAmJiB0ZXJtLT5jaGFyYWN0ZXJDbGFzcy0+aGFzT25seU5vbkJNUENoYXJh
Y3RlcnMoKSAmJiAhdGVybS0+aW52ZXJ0KCkpCiAgICAgICAgICAgICBzY2FsZWRNYXhDb3VudCAq
PSAyOwogI2VuZGlmCi0gICAgICAgIHN1YjMyKEltbTMyKHNjYWxlZE1heENvdW50LnVuc2FmZUdl
dCgpKSwgY291bnRSZWdpc3Rlcik7CisgICAgICAgIHN1YjMyKEltbTMyKHNjYWxlZE1heENvdW50
KSwgY291bnRSZWdpc3Rlcik7CiAKICAgICAgICAgTGFiZWwgbG9vcCh0aGlzKTsKICAgICAgICAg
SnVtcExpc3QgbWF0Y2hEZXN0OwpAQCAtMTg4Miw3ICsxODgyLDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY291bnRSZWdpc3Rlcik7CiAKICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkgewotICAg
ICAgICAgICAgYnJhbmNoMzIoTm90RXF1YWwsIGNvdW50UmVnaXN0ZXIsIEltbTMyKHRlcm0tPnF1
YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCkpKS5saW5rVG8obG9vcCwgdGhpcyk7CisgICAgICAg
ICAgICBicmFuY2gzMihOb3RFcXVhbCwgY291bnRSZWdpc3RlciwgSW1tMzIodGVybS0+cXVhbnRp
dHlNYXhDb3VudCkpLmxpbmtUbyhsb29wLCB0aGlzKTsKICAgICAgICAgICAgIGZhaWx1cmVzLmFw
cGVuZChqdW1wKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGp1bXAobG9vcCk7CkBA
IC0xOTg2LDcgKzE5ODYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbG9hZEZyb21GcmFt
ZSh0ZXJtLT5mcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0NoYXJhY3RlckNsYXNzOjptYXRj
aEFtb3VudEluZGV4KCksIGNvdW50UmVnaXN0ZXIpOwogCiAgICAgICAgIG5vbkdyZWVkeUZhaWx1
cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7Ci0gICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFw
cGVuZChicmFuY2gzMihFcXVhbCwgY291bnRSZWdpc3RlciwgSW1tMzIodGVybS0+cXVhbnRpdHlN
YXhDb3VudC51bnNhZmVHZXQoKSkpKTsKKyAgICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5k
KGJyYW5jaDMyKEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENv
dW50KSkpOwogCiAgICAgICAgIEp1bXBMaXN0IG1hdGNoRGVzdDsKICAgICAgICAgcmVhZENoYXJh
Y3RlcihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOwpA
QCAtMjM3Myw3ICsyMzczLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgaWYg
KCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpICYmICh0ZXJtLT50
eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbikpCiAgICAgICAg
ICAgICAgICAgICAgIG9wLm1fY2hlY2tBZGp1c3QgLT0gZGlzanVuY3Rpb24tPm1fbWluaW11bVNp
emU7CiAgICAgICAgICAgICAgICAgaWYgKG9wLm1fY2hlY2tBZGp1c3QpCi0gICAgICAgICAgICAg
ICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQob3AubV9jaGVj
a0FkanVzdC51bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFw
cGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KG9wLm1fY2hlY2tBZGp1c3QpKTsKIAogICAgICAg
ICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBvcC5tX2NoZWNrQWRqdXN0OwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjQyMCw3ICsyNDIwLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICAgICAgaWYgKCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291
bnQpICYmICh0ZXJtLT50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbikpCiAgICAgICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tBZGp1c3QgLT0gZGlzanVuY3Rp
b24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgaWYgKG9wLm1fY2hlY2tBZGp1c3Qp
Ci0gICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxl
SW5wdXQob3AubV9jaGVja0FkanVzdC51bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAgICAg
ICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KG9wLm1fY2hlY2tBZGp1
c3QpKTsKIAogICAgICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbb3AubV9wcmV2
aW91c09wXTsKICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gbGFzdE9wLm1fY2hl
Y2tBZGp1c3Q7CkBAIC0yNDk0LDcgKzI0OTQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgICAgICAvLyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRoZSByZXN1
bHRzIGFycmF5IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCiAgICAgICAg
ICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRlU3Vi
cGF0dGVybnMpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSAo
bV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gbV9jaGVja2VkT2Zmc2V0IC0g
dGVybS0+aW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50
aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGlucHV0T2Zmc2V0ICs9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1T
aXplOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKQEAgLTI1MjQsNyAr
MjUyNCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIG9mZnNldHMgb25s
eSBhZnRlcndhcmRzLCBhdCB0aGUgcG9pbnQgdGhlIHJlc3VsdHMgYXJyYXkgaXMKICAgICAgICAg
ICAgICAgICAvLyBiZWluZyBhY2Nlc3NlZC4KICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2Fw
dHVyZSgpICYmIGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykgewotICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IChtX2NoZWNrZWRPZmZzZXQgLSB0ZXJt
LT5pbnB1dFBvc2l0aW9uKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW5wdXRPZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vdmUoaW5kZXgsIGluZGV4VGVtcG9yYXJ5KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YjMyKEltbTMyKGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOwpAQCAtMjYzMSw3
ICsyNjMxLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNj
ZXNzZWQuCiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9k
ZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVn
aXN0ZXJJRCBpbmRleFRlbXBvcmFyeSA9IHJlZ1QwOwotICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnB1dE9mZnNldCA9IChtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9u
KS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQg
PSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAg
ICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50KQogICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGVybS0+cGFyZW50aGVzZXMuZGlz
anVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9m
ZnNldCkgewpAQCAtMjY3Myw3ICsyNjczLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAg
ICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0
dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBpbmRleFRlbXBv
cmFyeSA9IHJlZ1QwOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zm
c2V0ID0gbV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtb3Zl
KGluZGV4LCBpbmRleFRlbXBvcmFyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJ
bW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKQEAgLTI2ODcsNyArMjY4Nyw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIHBhcmVudGhlc2VzLCBsaW5rIHRo
ZSBqdW1wIGZyb20gYmVmb3JlIHRoZSBzdWJwYXR0ZXJuIHRvIGhlcmUuCiAgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5p
dGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmFuY2gzMihCZWxvdywgY291bnRUZW1wb3Jh
cnksIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCkpKS5saW5rVG8oYmVn
aW5PcC5tX3JlZW50cnksIHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoMzIo
QmVsb3csIGNvdW50VGVtcG9yYXJ5LCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50KSkubGlu
a1RvKGJlZ2luT3AubV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAganVtcChiZWdpbk9wLm1fcmVlbnRyeSk7CiAgICAgICAg
ICAgICAgICAgICAgIApAQCAtMjcxNSw3ICsyNzE1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgCiAgICAgICAgICAgICAgICAgb3AubV9jaGVja0FkanVzdCA9
IG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAg
aWYgKG9wLm1fY2hlY2tBZGp1c3QpCi0gICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKG9w
Lm1fY2hlY2tBZGp1c3QudW5zYWZlR2V0KCkpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAg
IHN1YjMyKEltbTMyKG9wLm1fY2hlY2tBZGp1c3QpLCBpbmRleCk7CiAKICAgICAgICAgICAgICAg
ICBtX2NoZWNrZWRPZmZzZXQgLT0gb3AubV9jaGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTMwNTMsNyArMzA1Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgIGlmIChvcC5tX2NoZWNrQWRqdXN0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRs
ZSB0aGUgY2FzZXMgd2hlcmUgd2UgbmVlZCB0byBsaW5rIHRoZSBiYWNrdHJhY2tzIGhlcmUuCiAg
ICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0aGlzKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIob3AubV9jaGVja0FkanVzdC51bnNhZmVHZXQoKSks
IGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIob3AubV9jaGVja0FkanVz
dCksIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0xhc3RBbHRlcm5hdGl2ZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgdGhhdCBpcyBub3Qg
dGhlIGxhc3Qgc2hvdWxkIGp1bXAgdG8gaXRzIHN1Y2Nlc3Nvci4KICAgICAgICAgICAgICAgICAg
ICAgICAgIGp1bXAobmV4dE9wLm1fcmVlbnRyeSk7CkBAIC0zMzM2LDcgKzMzMzYsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5
TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzOjptYXRjaEFtb3VudEluZGV4KCksIGNvdW50VGVtcG9yYXJ5KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRlZE1hdGNoTGltaXQuYXBwZW5kKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgY291bnRUZW1wb3JhcnksIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291
bnQudW5zYWZlR2V0KCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZWVkZWRN
YXRjaExpbWl0LmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIGNvdW50VGVtcG9yYXJ5LCBJ
bW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2gzMihBYm92ZSwgaW5kZXgsIGJlZ2lu
VGVtcG9yYXJ5KS5saW5rVG8oYmVnaW5PcC5tX3JlZW50cnksIHRoaXMpOwpAQCAtMzM2Niw3ICsz
MzY2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFj
a2luZ1N0YXRlLmxpbmsodGhpcyk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9wLm1fY2hl
Y2tBZGp1c3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihvcC5tX2NoZWNr
QWRqdXN0LnVuc2FmZUdldCgpKSwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRk
MzIoSW1tMzIob3AubV9jaGVja0FkanVzdCksIGluZGV4KTsKIAogICAgICAgICAgICAgICAgICAg
ICAvLyBJbiBhbiBpbnZlcnRlZCBhc3NlcnRpb24gZmFpbHVyZSB0byBtYXRjaCB0aGUgc3VicGF0
dGVybgogICAgICAgICAgICAgICAgICAgICAvLyBpcyB0cmVhdGVkIGFzIGEgc3VjY2Vzc2Z1bCBt
YXRjaCAtIGp1bXAgdG8gdGhlIGVuZCBvZiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJQYXJzZXIuaAppbmRleCBmMDc3N2Q0YWZlYWRmOTBhMzEyNTdlNjJmNmZkYTcyZTBjYjA3NmMw
Li40NjI5ZGM4NzQzMzYyNDdhNmVmNWViZDdmZWVhYTdkNWVhYzdjYWUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC0xMDgzLDcgKzEwODMsNyBAQCBwcml2YXRl
OgogICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbiA9IGNvbnN1bWVE
aWdpdCgpOwogICAgICAgICB3aGlsZSAocGVla0lzRGlnaXQoKSkKICAgICAgICAgICAgIG4gPSBu
ICogMTAgKyBjb25zdW1lRGlnaXQoKTsKLSAgICAgICAgcmV0dXJuIG4uaGFzT3ZlcmZsb3dlZCgp
ID8gcXVhbnRpZnlJbmZpbml0ZSA6IG4udW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiBuLmhh
c092ZXJmbG93ZWQoKSA/IHF1YW50aWZ5SW5maW5pdGUgOiBuLnZhbHVlKCk7CiAgICAgfQogCiAg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3Byb2QtYW5uZXhCLUxlZ2FjeU9jdGFsRXNj
YXBlU2VxdWVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApp
bmRleCAyMWQ3NWIxNTlhYTdkZTM5ODk3YjQ4M2YxNzk0ZGUyYzczNWFmMjFmLi5iOGE2ODkyMzc3
MThjMmQ4ZTdjMmY0NzFlYjQ4ZmUwMjQ4MGJiZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uY3BwCkBAIC04MDEsMTEgKzgwMSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKICAgICAgICAgICAgIGNhc2UgUGF0
dGVyblRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAgICAgICAgICAgICAgdGVy
bS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAg
ICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb247CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVCYWNrUmVmZXJlbmNlOgotICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1
cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIHRlcm0uaW5w
dXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgIHRlcm0u
ZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAgICAgICAgICAgIGN1
cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb0JhY2tS
ZWZlcmVuY2U7CiAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0g
ZmFsc2U7CkBAIC04MTUsNyArODE1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlcjoK
LSAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlv
bi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJy
ZW50SW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUg
IT0gUXVhbnRpZmllckZpeGVkQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5mcmFt
ZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhdHRl
cm5DaGFyYWN0ZXI7CkBAIC04MzEsNyArODMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xh
c3M6Ci0gICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9z
aXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0g
Y3VycmVudElucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlU
eXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIHRlcm0u
ZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9D
aGFyYWN0ZXJDbGFzczsKQEAgLTg1OCwyMyArODU4LDIzIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAg
ICAgICAgICBpZiAodGVybS5xdWFudGl0eU1heENvdW50ID09IDEgJiYgIXRlcm0ucGFyZW50aGVz
ZXMuaXNDb3B5KSB7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9
IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZTsKLSAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhl
c2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgY3VycmVudElucHV0UG9zaXRp
b24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1
bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgY3VycmVudElucHV0UG9zaXRpb24sIGN1cnJl
bnRDYWxsRnJhbWVTaXplKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9y
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgcXVhbnRpdHkgaXMgZml4ZWQsIHRoZW4gcHJlLWNoZWNrIGl0cyBtaW5pbXVt
IHNpemUuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFu
dGlmaWVyRml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnB1dFBv
c2l0aW9uICs9IHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7Ci0g
ICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0
aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24g
PSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlcm0u
cGFyZW50aGVzZXMuaXNUZXJtaW5hbCkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2Fs
bEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rl
cm1pbmFsOwotICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZz
ZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBj
dXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwor
ICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0u
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJyZW50SW5w
dXRQb3NpdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQ
b3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0
aW9uID0gY3VycmVudElucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRp
b24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9
IGN1cnJlbnRJbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZy
YW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlczsKLSAg
ICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBh
cmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgY3VycmVudElucHV0
UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2Vz
LmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgY3VycmVudElucHV0UG9zaXRpb24s
IGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9y
KGVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAg
ICAgICAgICB9CkBAIC04ODMsOSArODgzLDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFz
c2VydGlvbjoKLSAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRp
b24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9j
YXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKLSAgICAgICAgICAgICAgICBlcnJvciA9IHNl
dHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJl
bnRDYWxsRnJhbWVTaXplICsgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0
aWNhbEFzc2VydGlvbiwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRD
YWxsRnJhbWVTaXplKTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25P
ZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXpl
ICsgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiwg
Y3VycmVudElucHV0UG9zaXRpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKICAgICAgICAgICAg
ICAgICBpZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3I7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MDMsNyArOTAzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGU6Ok9mZnNldFRvb0xhcmdlOwogICAgICAg
ICB9CiAKLSAgICAgICAgYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPSAoY3VycmVudElucHV0
UG9zaXRpb24gLSBpbml0aWFsSW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgIGFs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplID0gY3VycmVudElucHV0UG9zaXRpb24gLSBpbml0aWFs
SW5wdXRQb3NpdGlvbjsKICAgICAgICAgbmV3Q2FsbEZyYW1lU2l6ZSA9IGN1cnJlbnRDYWxsRnJh
bWVTaXplOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQpAQCAtMTI1OSwxMiArMTI1OSwx
MiBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcihQcmludFN0cmVhbSYgb3V0KQog
ewogICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQgJiYgcXVhbnRp
dHlNaW5Db3VudCA9PSAxICYmIHF1YW50aXR5TWF4Q291bnQgPT0gMSkKICAgICAgICAgcmV0dXJu
OwotICAgIG91dC5wcmludCgiIHsiLCBxdWFudGl0eU1pbkNvdW50LnVuc2FmZUdldCgpKTsKKyAg
ICBvdXQucHJpbnQoIiB7IiwgcXVhbnRpdHlNaW5Db3VudC52YWx1ZSgpKTsKICAgICBpZiAocXVh
bnRpdHlNaW5Db3VudCAhPSBxdWFudGl0eU1heENvdW50KSB7CiAgICAgICAgIGlmIChxdWFudGl0
eU1heENvdW50ID09IFVJTlRfTUFYKQogICAgICAgICAgICAgb3V0LnByaW50KCIsLi4uIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludCgiLCIsIHF1YW50aXR5TWF4Q291bnQu
dW5zYWZlR2V0KCkpOworICAgICAgICAgICAgb3V0LnByaW50KCIsIiwgcXVhbnRpdHlNYXhDb3Vu
dC52YWx1ZSgpKTsKICAgICB9CiAgICAgb3V0LnByaW50KCJ9Iik7CiAgICAgaWYgKHF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5k
ZXggNzNhY2RjNzJkNWNiY2M2MWRhN2VjNjIzM2MyYzVjZTc2NDgyOWQyNS4uOTJkZDNmODRiNjk5
MDljMzI5YmM2MjM5Yjg1MjI5YzZjODM3MDk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCkBAIC03MjcsMjMgKzcyNywzMCBAQCBwdWJsaWM6CiAgICAgLy8gQm9vbGVhbiBvcGVyYXRv
cnMKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAodGhpcy0+
aGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICBpZiAoVU5MSUtFTFkodGhpcy0+aGFzT3ZlcmZsb3dl
ZCgpKSkKICAgICAgICAgICAgIHRoaXMtPmNyYXNoKCk7CiAgICAgICAgIHJldHVybiAhbV92YWx1
ZTsKICAgICB9CiAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIGlmIChVTkxJS0VMWSh0
aGlzLT5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgdGhpcy0+Y3Jhc2goKTsKKyAgICAg
ICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorCisgICAgb3BlcmF0b3IgVCgpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoVU5MSUtFTFkodGhpcy0+aGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAg
ICAgIHRoaXMtPmNyYXNoKCk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KIAotICAg
IC8vIFZhbHVlIGFjY2Vzc29ycy4gdW5zYWZlR2V0KCkgd2lsbCBjcmFzaCBpZiB0aGVyZSdzIGJl
ZW4gYW4gb3ZlcmZsb3cuCisgICAgLy8gVmFsdWUgYWNjZXNzb3JzLiB2YWx1ZSgpIHdpbGwgY3Jh
c2ggaWYgdGhlcmUncyBiZWVuIGFuIG92ZXJmbG93LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSBUPgotICAgIFUgdW5zYWZlR2V0KCkgY29uc3QKKyAgICBVIHZhbHVlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIGlmIChVTkxJS0VM
WSh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpKQogICAgICAgICAgICAgdGhpcy0+Y3Jhc2goKTsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFU+KG1fdmFsdWUpOwogICAgIH0KQEAgLTgwOSw3ICs4
MTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gRXF1YWxpdHkgY29tcGFyaXNvbnMKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcj09KENoZWNrZWQ8VCwgVj4gcmhzKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpID09IHJocy51bnNhZmVHZXQoKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlKCkgPT0gcmhzLnZhbHVlKCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIHJocykKQEAgLTgyMSw3ICs4MjgsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGJvb2wgb3Bl
cmF0b3I9PShDaGVja2VkPFUsIFY+IHJocykKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVH
ZXQoKSA9PSBDaGVja2VkKHJocy51bnNhZmVHZXQoKSk7CisgICAgICAgIHJldHVybiB2YWx1ZSgp
ID09IENoZWNrZWQocmhzLnZhbHVlKCkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVPiBib29sIG9wZXJhdG9yIT0oVSByaHMpCkBAIC04MzIsNDIgKzgzOSwyMiBAQCBwdWJsaWM6
CiAgICAgLy8gT3RoZXIgY29tcGFyaXNvbnMKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4gYm9v
bCBvcGVyYXRvcjwoQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gdW5zYWZlR2V0KCkgPCByaHMudW5zYWZlR2V0KCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvcjwoVCByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPCBy
aHM7CisgICAgICAgIHJldHVybiB2YWx1ZSgpIDwgcmhzLnZhbHVlKCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFY+IGJvb2wgb3BlcmF0b3I8PShDaGVja2VkPFQsIFY+IHJocykg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA8PSByaHMudW5zYWZlR2V0
KCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcjw9KFQgcmhzKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHVuc2FmZUdldCgpIDw9IHJoczsKKyAgICAgICAgcmV0dXJuIHZhbHVlKCkg
PD0gcmhzLnZhbHVlKCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+IGJvb2wg
b3BlcmF0b3I+KENoZWNrZWQ8VCwgVj4gcmhzKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IHVuc2FmZUdldCgpID4gcmhzLnVuc2FmZUdldCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3I+KFQgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpID4gcmhz
OworICAgICAgICByZXR1cm4gdmFsdWUoKSA+IHJocy52YWx1ZSgpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPj0oQ2hlY2tlZDxULCBWPiByaHMpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPj0gcmhzLnVuc2FmZUdldCgp
OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I+PShUIHJocykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB1bnNhZmVHZXQoKSA+PSByaHM7CisgICAgICAgIHJldHVybiB2YWx1ZSgpID49
IHJocy52YWx1ZSgpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NvbmN1cnJlbnRCdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRCdWZmZXIu
aAppbmRleCAyYzAyOTZkNTU5NmExNDhhZmM2NjEyZDI1ZjQ2NTQyOGRmODQ3NDI2Li44NTk3NmI1
NGEwNDM5NzVhODQwYjFlNDIxMzgyMGZmNTc2OTE3MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9Db25jdXJyZW50QnVmZmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudEJ1
ZmZlci5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ2hlY2tlZDxzaXpl
X3Q+IG9iamVjdFNpemUgPSBzaXplb2YoVCk7CiAgICAgICAgIG9iamVjdFNpemUgKj0gc2l6ZTsK
ICAgICAgICAgb2JqZWN0U2l6ZSArPSBzdGF0aWNfY2FzdDxzaXplX3Q+KE9CSkVDVF9PRkZTRVRP
RihBcnJheSwgZGF0YSkpOwotICAgICAgICBBcnJheSogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QXJy
YXkqPihDb25jdXJyZW50QnVmZmVyTWFsbG9jOjptYWxsb2Mob2JqZWN0U2l6ZS51bnNhZmVHZXQo
KSkpOworICAgICAgICBBcnJheSogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QXJyYXkqPihDb25jdXJy
ZW50QnVmZmVyTWFsbG9jOjptYWxsb2Mob2JqZWN0U2l6ZSkpOwogICAgICAgICByZXN1bHQtPnNp
emUgPSBzaXplOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5j
cHAKaW5kZXggZTRlYjg0MzVmMTlhOTk4ZGQyN2U2ZGY3ZThmYWJkZWMxMzVkZTJiMy4uMmU1ZjVi
ZDM0NGVjOTI0YTlkMWY5ZWYyMTdkZjg0ZmEyNDc0YWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmFzdE1hbGxvYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAK
QEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywg
c2l6ZV90IGVsZW1lbnRTaXplKQogICAgIEFTU0VSVF9JU19XSVRISU5fTElNSVQobnVtRWxlbWVu
dHMgKiBlbGVtZW50U2l6ZSk7CiAgICAgQ2hlY2tlZDxzaXplX3Q+IGNoZWNrZWRTaXplID0gZWxl
bWVudFNpemU7CiAgICAgY2hlY2tlZFNpemUgKj0gbnVtRWxlbWVudHM7Ci0gICAgdm9pZCogcmVz
dWx0ID0gZmFzdFplcm9lZE1hbGxvYyhjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgdm9p
ZCogcmVzdWx0ID0gZmFzdFplcm9lZE1hbGxvYyhjaGVja2VkU2l6ZSk7CiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIENSQVNIKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxOCw3ICs2MTgs
NyBAQCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50
cywgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIGNoZWNrZWRTaXplICo9IG51bUVsZW1lbnRzOwog
ICAgIGlmIChjaGVja2VkU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiB0cnlGYXN0WmVyb2VkTWFsbG9jKGNoZWNrZWRTaXplLnVuc2FmZUdl
dCgpKTsKKyAgICByZXR1cm4gdHJ5RmFzdFplcm9lZE1hbGxvYyhjaGVja2VkU2l6ZSk7CiB9CiAK
IFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIG9iamVjdCwgc2l6ZV90
IG5ld1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAKaW5kZXggYTYxYWRmMjRkMmY2NjY3MTVkMTY3NjgxMTMx
MzBkMmQ1Yzc3OWJkOC4uYjc5MTEzNGMwMTk3NDNmMGNlMmEwZDliOTIwOGM5OGIxODMxYTNlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0dpZ2FjYWdlLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQqIHRyeU1hbGxvY0FycmF5
KEtpbmQga2luZCwgc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAg
Y2hlY2tlZFNpemUgKj0gbnVtRWxlbWVudHM7CiAgICAgaWYgKGNoZWNrZWRTaXplLmhhc092ZXJm
bG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHRyeU1hbGxvYyhr
aW5kLCBjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgcmV0dXJuIHRyeU1hbGxvYyhraW5k
LCBjaGVja2VkU2l6ZSk7CiB9CiAKIHZvaWQqIG1hbGxvYyhLaW5kIGtpbmQsIHNpemVfdCBzaXpl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkxIZWxwZXJzLmNwcAppbmRleCA5YzE1ZTdmMWYwOTA0Y2IxNDkwNjc1MmJlN2I3NmE2
ODBjZmY3NWUxLi44MTRlNjc0OTM3NTA5OGFiNTQ2NzgyMmNiYzZmODEyMzhlY2E5YTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9VUkxIZWxwZXJzLmNwcApAQCAtODM1LDcgKzgzNSw3IEBAIFN0cmluZyB1c2VyVmlzaWJsZVVS
TChjb25zdCBDU3RyaW5nJiB1cmwpCiAgICAgYnVmZmVyTGVuZ3RoID0gYnVmZmVyTGVuZ3RoICog
MyArIDE7IC8vIFRoZSBidWZmZXIgc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byAlLWVzY2FwZSBl
dmVyeSBjaGFyYWN0ZXIuCiAgICAgaWYgKGJ1ZmZlckxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCiAg
ICAgICAgIHJldHVybiB7IH07Ci0gICAgVmVjdG9yPGNoYXIsIHVybEJ5dGVzQnVmZmVyTGVuZ3Ro
PiBhZnRlcihidWZmZXJMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIFZlY3RvcjxjaGFyLCB1cmxC
eXRlc0J1ZmZlckxlbmd0aD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsKIAogICAgIGNoYXIqIHEgPSBh
ZnRlci5kYXRhKCk7CiAgICAgewpAQCAtODc1LDcgKzg3NSw3IEBAIFN0cmluZyB1c2VyVmlzaWJs
ZVVSTChjb25zdCBDU3RyaW5nJiB1cmwpCiAgICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJh
Y2sgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCiAgICAgICAgIC8vIGFzIHdlIGNv
bnZlcnQuCiAgICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAg
ICAgIGNoYXIqIHAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGgudW5zYWZlR2V0KCkgLSBh
ZnRlcmxlbmd0aCAtIDE7CisgICAgICAgIGNoYXIqIHAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJM
ZW5ndGgudmFsdWUoKSAtIGFmdGVybGVuZ3RoIC0gMTsKICAgICAgICAgbWVtbW92ZShwLCBhZnRl
ci5kYXRhKCksIGFmdGVybGVuZ3RoICsgMSk7IC8vIGNvcGllcyB0cmFpbGluZyAnXDAnCiAgICAg
ICAgIGNoYXIqIHEgPSBhZnRlci5kYXRhKCk7CiAgICAgICAgIHdoaWxlICgqcCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBh
cnNlci5jcHAKaW5kZXggYmUxYTdlNjcxMGMwMDMyNjUyZTQ4MzgwOTRlZTBlYzdmMmM4OTk3Yy4u
MTVhNjhiMzMxZmEwMDFmNWY5MTEwYTM1MjYxNDE2YTViMTJjMWRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIu
Y3BwCkBAIC0yMTY1LDcgKzIxNjUsNyBAQCBFeHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJ
UHY0UGllY2VQYXJzaW5nRXJyb3I+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UoQwogICAgICAg
ICB9CiAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7CiAgICAgICAgICAgICBBU1NFUlQo
IXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZl
R2V0KCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKICAgICAgICAgfQogICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CiAgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgpA
QCAtMjIxNyw3ICsyMjE3LDcgQEAgRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBp
ZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlKEMKICAgICAgICAgfQog
ICAgIH0KICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgcmV0dXJuIHZh
bHVlLnVuc2FmZUdldCgpOworICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwogfQogCiBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB1aW50NjRfdCBwb3cyNTYoc2l6ZV90IGV4cG9uZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFy
cmF5LmgKaW5kZXggNTQ0YjhkZmY4MGQyYWZmNzQ2MjEyNTYxN2EzYjllN2E4NTYxZjdlZS4uMGU3
Zjc5ZmU1NWJmZjU2Yjk0YzA3NTA4ZThjMGQxODNkNThiYjY3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVW5pcXVlQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5o
CkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBVbmlxdWVBcnJheU1ha2VyPHRydWUsIFQ+IHsKICAg
ICAgICAgLy8gRG8gbm90IHVzZSBwbGFjZW1lbnQgbmV3IGxpa2UgYG5ldyAoc3RvcmFnZSkgVFtz
aXplXSgpYC4gYG5ldyBUW3NpemVdKClgIHJlcXVpcmVzCiAgICAgICAgIC8vIGxhcmdlciBzdG9y
YWdlIHRoYW4gdGhlIGBzaXplb2YoVCkgKiBzaXplYCBzdG9yYWdlIHNpbmNlIGl0IHdhbnQgdG8g
c3RvcmUgYHNpemVgCiAgICAgICAgIC8vIHRvIHNvbWV3aGVyZS4KLSAgICAgICAgVCogc3RvcmFn
ZSA9IHN0YXRpY19jYXN0PFQqPihVbmlxdWVBcnJheU1hbGxvYzo6bWFsbG9jKChDaGVja2VkPHNp
emVfdD4oc2l6ZW9mKFQpKSAqIHNpemUpLnVuc2FmZUdldCgpKSk7CisgICAgICAgIFQqIHN0b3Jh
Z2UgPSBzdGF0aWNfY2FzdDxUKj4oVW5pcXVlQXJyYXlNYWxsb2M6Om1hbGxvYyhDaGVja2VkPHNp
emVfdD4oc2l6ZW9mKFQpKSAqIHNpemUpKTsKICAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8
VD46OmluaXRpYWxpemUoc3RvcmFnZSwgc3RvcmFnZSArIHNpemUpOwogICAgICAgICByZXR1cm4g
UmVzdWx0VHlwZShzdG9yYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1t
CmluZGV4IDQ1ZDJiNGRjNGI4YThkZmYyYTVmMTllODZiZjA4MTJiZDA0NDYxYjQuLjMwNjNmODUx
YWY0ZWIxZjM1YWMzYjE5NTZlMDhhMjc5YWNiNmZiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJM
RXh0cmFzLm1tCkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIE5TRGF0YSAqZGF0YVdpdGhVc2Vy
VHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKICAgICBpZiAobWFsbG9jTGVuZ3RoLmhhc092
ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBjaGFyKiBvdXRCeXRl
cyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKG1hbGxvY0xlbmd0aC51bnNhZmVHZXQoKSkp
OworICAgIGNoYXIqIG91dEJ5dGVzID0gc3RhdGljX2Nhc3Q8Y2hhciAqPihtYWxsb2MobWFsbG9j
TGVuZ3RoKSk7CiAgICAgY2hhciogcCA9IG91dEJ5dGVzOwogICAgIGludCBvdXRMZW5ndGggPSAw
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5MZW5ndGg7IGkrKykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvU29ja2V0Q29ubmVjdGlvbi5jcHAKaW5kZXggM2FmYjU0YTQxY2I1YjhkZTExMzliMDNk
YjMxMzY0M2MyNDMyMGQ5Mi4uY2NjZWI0OWM1ZDFlOGUwNWJkZGZkZjM1MmFhM2E2YzFiZTgyNDYw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rpb24uY3BwCkBAIC0xMjQsMjMg
KzEyNCwyMyBAQCBib29sIFNvY2tldENvbm5lY3Rpb246OnJlYWRNZXNzYWdlKCkKICAgICBtZW1j
cHkoJmZsYWdzLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKE1lc3NhZ2VGbGFncykpOwogICAgIG1lc3Nh
Z2VEYXRhICs9IHNpemVvZihNZXNzYWdlRmxhZ3MpOwogICAgIGF1dG8gbWVzc2FnZVNpemUgPSBz
aXplb2YodWludDMyX3QpICsgc2l6ZW9mKE1lc3NhZ2VGbGFncykgKyBib2R5U2l6ZTsKLSAgICBp
ZiAobV9yZWFkQnVmZmVyLnNpemUoKSA8IG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpKQorICAgIGlm
IChtX3JlYWRCdWZmZXIuc2l6ZSgpIDwgbWVzc2FnZVNpemUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIENoZWNrZWQ8c2l6ZV90PiBtZXNzYWdlTmFtZUxlbmd0aCA9IHN0cmxlbihtZXNz
YWdlRGF0YSk7CiAgICAgbWVzc2FnZU5hbWVMZW5ndGgrKzsKLSAgICBpZiAobV9yZWFkQnVmZmVy
LnNpemUoKSA8IG1lc3NhZ2VOYW1lTGVuZ3RoLnVuc2FmZUdldCgpKSB7CisgICAgaWYgKG1fcmVh
ZEJ1ZmZlci5zaXplKCkgPCBtZXNzYWdlTmFtZUxlbmd0aCkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNvbnN0IGF1
dG8gaXQgPSBtX21lc3NhZ2VIYW5kbGVycy5maW5kKG1lc3NhZ2VEYXRhKTsKICAgICBpZiAoaXQg
IT0gbV9tZXNzYWdlSGFuZGxlcnMuZW5kKCkpIHsKLSAgICAgICAgbWVzc2FnZURhdGEgKz0gbWVz
c2FnZU5hbWVMZW5ndGgudW5zYWZlR2V0KCk7CisgICAgICAgIG1lc3NhZ2VEYXRhICs9IG1lc3Nh
Z2VOYW1lTGVuZ3RoLnZhbHVlKCk7CiAgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHBhcmFtZXRl
cnM7CiAgICAgICAgIGlmICghaXQtPnZhbHVlLmZpcnN0LmlzTnVsbCgpKSB7CiAgICAgICAgICAg
ICBHVW5pcXVlUHRyPEdWYXJpYW50VHlwZT4gdmFyaWFudFR5cGUoZ192YXJpYW50X3R5cGVfbmV3
KGl0LT52YWx1ZS5maXJzdC5kYXRhKCkpKTsKLSAgICAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJz
U2l6ZSA9IGJvZHlTaXplLnVuc2FmZUdldCgpIC0gbWVzc2FnZU5hbWVMZW5ndGgudW5zYWZlR2V0
KCk7CisgICAgICAgICAgICBzaXplX3QgcGFyYW1ldGVyc1NpemUgPSBib2R5U2l6ZS52YWx1ZSgp
IC0gbWVzc2FnZU5hbWVMZW5ndGgudmFsdWUoKTsKICAgICAgICAgICAgIC8vIGdfdmFyaWFudF9u
ZXdfZnJvbV9kYXRhKCkgcmVxdWlyZXMgdGhlIG1lbW9yeSB0byBiZSBwcm9wZXJseSBhbGlnbmVk
IGZvciB0aGUgdHlwZSBiZWluZyBsb2FkZWQsCiAgICAgICAgICAgICAvLyBidXQgaXQncyBub3Qg
cG9zc2libGUgdG8ga25vdyB0aGUgYWxpZ25tZW50IGJlY2F1c2UgZ192YXJpYW50X3R5cGVfaW5m
b19xdWVyeSgpIGlzIG5vdCBwdWJsaWMgQVBJLgogICAgICAgICAgICAgLy8gU2luY2UgR0xpYiAy
LjYwIGdfdmFyaWFudF9uZXdfZnJvbV9kYXRhKCkgYWxyZWFkeSBjaGVja3MgdGhlIGFsaWdubWVu
dCBhbmQgcmVhbGxvY2F0ZXMgdGhlIGJ1ZmZlcgpAQCAtMTYzLDkgKzE2Myw5IEBAIGJvb2wgU29j
a2V0Q29ubmVjdGlvbjo6cmVhZE1lc3NhZ2UoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChtX3JlYWRCdWZmZXIuc2l6ZSgpID4gbWVzc2FnZVNpemUudW5zYWZl
R2V0KCkpIHsKLSAgICAgICAgc3RkOjptZW1tb3ZlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVh
ZEJ1ZmZlci5kYXRhKCkgKyBtZXNzYWdlU2l6ZS51bnNhZmVHZXQoKSwgbV9yZWFkQnVmZmVyLnNp
emUoKSAtIG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpKTsKLSAgICAgICAgbV9yZWFkQnVmZmVyLnNo
cmluayhtX3JlYWRCdWZmZXIuc2l6ZSgpIC0gbWVzc2FnZVNpemUudW5zYWZlR2V0KCkpOworICAg
IGlmIChtX3JlYWRCdWZmZXIuc2l6ZSgpID4gbWVzc2FnZVNpemUpIHsKKyAgICAgICAgc3RkOjpt
ZW1tb3ZlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5kYXRhKCkgKyBtZXNzYWdl
U2l6ZS52YWx1ZSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpIC0gbWVzc2FnZVNpemUudmFsdWUoKSk7
CisgICAgICAgIG1fcmVhZEJ1ZmZlci5zaHJpbmsobV9yZWFkQnVmZmVyLnNpemUoKSAtIG1lc3Nh
Z2VTaXplLnZhbHVlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3JlYWRCdWZmZXIuc2hyaW5r
KDApOwogCkBAIC0xOTEsMTAgKzE5MSwxMCBAQCB2b2lkIFNvY2tldENvbm5lY3Rpb246OnNlbmRN
ZXNzYWdlKGNvbnN0IGNoYXIqIG1lc3NhZ2VOYW1lLCBHVmFyaWFudCogcGFyYW1ldGVycwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIHNpemVfdCBwcmV2aW91c0J1ZmZlclNpemUgPSBtX3dy
aXRlQnVmZmVyLnNpemUoKTsKLSAgICBtX3dyaXRlQnVmZmVyLmdyb3cocHJldmlvdXNCdWZmZXJT
aXplICsgc2l6ZW9mKHVpbnQzMl90KSArIHNpemVvZihNZXNzYWdlRmxhZ3MpICsgYm9keVNpemUu
dW5zYWZlR2V0KCkpOworICAgIG1fd3JpdGVCdWZmZXIuZ3JvdyhwcmV2aW91c0J1ZmZlclNpemUg
KyBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKE1lc3NhZ2VGbGFncykgKyBib2R5U2l6ZS52YWx1
ZSgpKTsKIAogICAgIGF1dG8qIG1lc3NhZ2VEYXRhID0gbV93cml0ZUJ1ZmZlci5kYXRhKCkgKyBw
cmV2aW91c0J1ZmZlclNpemU7Ci0gICAgdWludDMyX3QgYm9keVNpemVIZWFkZXIgPSBodG9ubChi
b2R5U2l6ZS51bnNhZmVHZXQoKSk7CisgICAgdWludDMyX3QgYm9keVNpemVIZWFkZXIgPSBodG9u
bChib2R5U2l6ZS52YWx1ZSgpKTsKICAgICBtZW1jcHkobWVzc2FnZURhdGEsICZib2R5U2l6ZUhl
YWRlciwgc2l6ZW9mKHVpbnQzMl90KSk7CiAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKHVpbnQz
Ml90KTsKICAgICBNZXNzYWdlRmxhZ3MgZmxhZ3MgPSAwOwpAQCAtMjAzLDggKzIwMyw4IEBAIHZv
aWQgU29ja2V0Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoY29uc3QgY2hhciogbWVzc2FnZU5hbWUs
IEdWYXJpYW50KiBwYXJhbWV0ZXJzCiAjZW5kaWYKICAgICBtZW1jcHkobWVzc2FnZURhdGEsICZm
bGFncywgc2l6ZW9mKE1lc3NhZ2VGbGFncykpOwogICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihN
ZXNzYWdlRmxhZ3MpOwotICAgIG1lbWNweShtZXNzYWdlRGF0YSwgbWVzc2FnZU5hbWUsIG1lc3Nh
Z2VOYW1lTGVuZ3RoLnVuc2FmZUdldCgpKTsKLSAgICBtZXNzYWdlRGF0YSArPSBtZXNzYWdlTmFt
ZUxlbmd0aC51bnNhZmVHZXQoKTsKKyAgICBtZW1jcHkobWVzc2FnZURhdGEsIG1lc3NhZ2VOYW1l
LCBtZXNzYWdlTmFtZUxlbmd0aCk7CisgICAgbWVzc2FnZURhdGEgKz0gbWVzc2FnZU5hbWVMZW5n
dGgudmFsdWUoKTsKICAgICBpZiAocGFyYW1ldGVycykKICAgICAgICAgbWVtY3B5KG1lc3NhZ2VE
YXRhLCBnX3ZhcmlhbnRfZ2V0X2RhdGEocGFyYW1ldGVycyksIHBhcmFtZXRlcnNTaXplKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQ1N0cmluZy5jcHAKaW5kZXggYjU4ZDllYTU0OWMwN2FjMjYyNzAyZGQ3ZmMxMjRi
ODIyMTdmYzRkNC4uZjllOWU2NTFlMGFkZjMyZjVhZjkzMTcyMTU2NDY4YjNhM2MyNDI4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0NTdHJpbmcuY3BwCkBAIC0zOSw3ICszOSw3IEBAIERFRklORV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoQ1N0cmluZ0J1ZmZlcik7CiBSZWY8Q1N0cmluZ0J1ZmZlcj4g
Q1N0cmluZ0J1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAg
IC8vIFRoZSArMSBpcyBmb3IgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyLgotICAgIGF1
dG8gc2l6ZSA9IChDaGVja2VkPHNpemVfdD4oc2l6ZW9mKENTdHJpbmdCdWZmZXIpKSArIGxlbmd0
aCArIDFVKS51bnNhZmVHZXQoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IENoZWNrZWQ8c2l6ZV90Pihz
aXplb2YoQ1N0cmluZ0J1ZmZlcikpICsgbGVuZ3RoICsgMVU7CiAgICAgYXV0byogc3RyaW5nQnVm
ZmVyID0gc3RhdGljX2Nhc3Q8Q1N0cmluZ0J1ZmZlcio+KENTdHJpbmdCdWZmZXJNYWxsb2M6Om1h
bGxvYyhzaXplKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0J1
ZmZlcikgQ1N0cmluZ0J1ZmZlcihsZW5ndGgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1ZmZl
ci5oCmluZGV4IGZjZjM5MjQ0MWJmYWYyNTkxNDkzYzRhOTc1N2MyNmE2ZjhkYTY1ZmQuLmZlMGQ3
NGJhYmY2NjQwMDBjNTg2MWUyYjk4NzJiNDAwYzEyZGJmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdCdWZmZXIuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBTdHJpbmdCdWZmZXIgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IFN0cmluZ0J1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIDog
bV9sZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0YShtX2xlbmd0aCA/IHN0YXRpY19jYXN0
PENoYXJUeXBlKj4oU3RyaW5nQnVmZmVyTWFsbG9jOjptYWxsb2MoKENoZWNrZWQ8c2l6ZV90Piht
X2xlbmd0aCkgKiBzaXplb2YoQ2hhclR5cGUpKS51bnNhZmVHZXQoKSkpIDogbnVsbHB0cikKKyAg
ICAgICAgLCBtX2RhdGEobV9sZW5ndGggPyBzdGF0aWNfY2FzdDxDaGFyVHlwZSo+KFN0cmluZ0J1
ZmZlck1hbGxvYzo6bWFsbG9jKENoZWNrZWQ8c2l6ZV90PihtX2xlbmd0aCkgKiBzaXplb2YoQ2hh
clR5cGUpKSkgOiBudWxscHRyKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlckpTT04uY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdCdWlsZGVySlNPTi5jcHAKaW5kZXggODNlZDM4YjE5ODE5NGEwNDY5MmViZTFhNjI4YmU4
M2YzNzMxYWI0Zi4uZTZhYTYyMDc5MDFjYTFmM2M0NzNiYjhkMGZmODRiMzdkZTNlN2QxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGJ1ZmZlciBzcGFj
ZSB0byBhcHBlbmQgdGhpcyBzdHJpbmcgZm9yIHdvcnN0IGNhc2Ugd2l0aG91dCByZWFsbG9jYXRp
bmcuCiAgICAgLy8gVGhlIDIgaXMgZm9yIHRoZSAnIicgcXVvdGVzIG9uIGVhY2ggZW5kLgogICAg
IC8vIFRoZSA2IGlzIHRoZSB3b3JzdCBjYXNlIGZvciBhIHNpbmdsZSBjb2RlIHVuaXQgdGhhdCBj
b3VsZCBiZSBlbmNvZGVkIGFzIFx1Tk5OTi4KLSAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gc3RyaW5nTGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIENoZWNrZWRVaW50
MzIgc3RyaW5nTGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAgIGF1dG8gbWF4aW11bUNhcGFj
aXR5UmVxdWlyZWQgPSBtX2xlbmd0aCArIDIgKyBzdHJpbmdMZW5ndGggKiA2OwogICAgIGlmICht
YXhpbXVtQ2FwYWNpdHlSZXF1aXJlZC5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgZGlkT3Zl
cmZsb3coKTsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFF1
b3RlZEpTT05TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgLy8gV2UgbmVlZCB0byBj
aGVjayBtYXhpbXVtIGxlbmd0aCBiZWZvcmUgY2FsbGluZyByb3VuZFVwUG93ZXJPZlR3byBiZWNh
dXNlIHRoYXQgZnVuY3Rpb24gcmV0dXJucyAwIGZvciB2YWx1ZXMgaW4gdGhlIHJhbmdlIFsyXjMx
LCAyXjMyLTJdLgogICAgIC8vIEZJWE1FOiBJbnN0ZWFkLCByb3VuZFVwVG9Qb3dlck9mVHdvIHNo
b3VsZCBiZSBmaXhlZCB0byBkbyBzb21ldGhpbmcgbW9yZSB1c2VmdWwgaW4gdGhvc2UgY2FzZXMs
IHBlcmhhcHMgdXNpbmcgY2hlY2tlZCBvciBzYXR1cmF0ZWQgYXJpdGhtZXRpYy4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDg2Ci0gICAgYXV0byBh
bGxvY2F0aW9uU2l6ZSA9IG1heGltdW1DYXBhY2l0eVJlcXVpcmVkLnVuc2FmZUdldCgpOworICAg
IGF1dG8gYWxsb2NhdGlvblNpemUgPSBtYXhpbXVtQ2FwYWNpdHlSZXF1aXJlZC52YWx1ZSgpOwog
ICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA+IFN0cmluZzo6TWF4TGVuZ3RoKSB7CiAgICAgICAgIGRp
ZE92ZXJmbG93KCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaAppbmRleCAyZTM4ZWY3Nzg5OWEzYzNlYmFmZWI1MWRhOTQwNmNmYWJkZGY3Mzcx
Li5iZDc4MGIwZGU4OGJhMjMxOWIzMDYxNDA4ODY5N2ZhZTdmNDk3YmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCkBAIC00MzQsNyArNDM0LDcgQEAgU3RyaW5nIHRy
eU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXIgYWRhcHRlciwgU3RyaW5n
VHlwZUFkYXB0ZXJzIC4KICAgICBpZiAoc3VtLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3VtLnVuc2FmZUdldCgpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN1bTsKICAgICBBU1NFUlQobGVuZ3RoIDw9IFN0cmluZzo6
TWF4TGVuZ3RoKTsKICAgICBpZiAoYXJlOEJpdChhZGFwdGVyLCBhZGFwdGVycy4uLikpIHsKICAg
ICAgICAgTENoYXIqIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMDJhNWRh
ZDI3M2JjYjIzMmVhYzhiMTBiZDU5MzBhNTVhZjVlY2ZmMC4uYjAzZjk2OGVlZWM5NmRjNjcyMzE1
MzMyMDg4MTE2ZmVkZWViMzA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTExNjEs
NyArMTE2MSw3IEBAIGlubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRh
ZykKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjphbGxv
Y2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gdGFpbEVsZW1lbnRDb3VudCkKIHsKLSAgICByZXR1
cm4gKHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2YoVCkpLnVuc2Fm
ZUdldCgpOworICAgIHJldHVybiB0YWlsT2Zmc2V0PFQ+KCkgKyB0YWlsRWxlbWVudENvdW50ICog
c2l6ZW9mKFQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAppbmRleCBlMTlh
ZmVkZjVjYWJhYzY0YzZlMDA1MzE4MjA2ODk3MGRjNzI5N2U5Li4zNzhmZjE1NjBhNTkzNWJiOTNm
N2NlMjZhMTNjMDhlNWNiNGY5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtOTMsNyArOTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8SW50
ZWdyYWxUeQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBy
ZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5
cGU+IHBhcnNlSW50ZWdlcihTdHJpbmdWaWV3IHN0cmluZywgdWludDhfdCBiYXNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggNWE1MGZmZDEzZjUwOWNlYmMyNWM5ZTZkMmFlYzIzMDc5YmZhZDFiYS4uNmM2NGEwNDRm
NTYwZmY0MjkwOGM5MGNmNGM3YzI0NmFkNjdhYzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zNDE5LDcgKzM0
MTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobGVuZ3RoICYmIChJbnRTaXplKHdpZHRo
LCBoZWlnaHQpLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpICE9IGxlbmd0aCkgeworICAgICAgICAg
ICAgaWYgKGxlbmd0aCAmJiAoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KS5hcmVhKCkgKiA0KSAhPSBs
ZW5ndGgpIHsKICAgICAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
bmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggMzBmZTA3ZGU1NThlYWJjZTMzNjk2MzUwMTA1
NDkyNWJkNzI0ZjJmMi4uM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThjYmE5ZjZiZjI4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5j
b2Rlcjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgaWYgKCF2aWV3Lmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBieXRlcyhX
VEY6OmNoZWNrZWRQcm9kdWN0PHNpemVfdD4odmlldy5sZW5ndGgoKSArIDEsIDMpLnVuc2FmZUdl
dCgpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMoV1RGOjpjaGVja2VkUHJvZHVjdDxzaXpl
X3Q+KHZpZXcubGVuZ3RoKCkgKyAxLCAzKSk7CiAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IDA7
CiAKICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHZpZXcubGVuZ3RoKCk7IGNwdHIr
KykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDhhZTQ4OTE1NjNlYTc3ZTYwZDEz
ZTU0OTFkYmQ1NTA3MDlhZjE5MTMuLjY0MDMwZWI4N2JmOTUxYzBiYjcxNWQ5NDhjNDljNGI4MWJl
MThmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQxNSw3ICs0MTUsNyBAQCBT
dHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKCkKICAgICBmb3IgKGF1
dG8mIHN0cmluZyA6IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXApCiAgICAgICAgIGxlbmd0aCAr
PSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LnJlc2VydmVDYXBhY2l0eShsZW5ndGgudW5zYWZlR2V0KCkpOworICAgIHJlc3VsdC5yZXNlcnZl
Q2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IG1ha2VSZXZlcnNlZFJh
bmdlKG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXApKQogICAgICAgICByZXN1bHQuYXBwZW5kKHN0
cmluZyk7CiAgICAgcmVzdWx0LmFwcGVuZCh0YWtlTWFya3VwKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKaW5kZXggMDZjODQzMjFiYjI5MWZiMTc4NjI1ZjNkNzgzNDM4ZWU4
ODg0NmY5My4uYmI4Y2E4NzNlMzRiMzY3ZTkxYjQ5MjdiNzhiN2NlMzhlZjY0MTI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgRm9ybUNv
bnRyb2xTdGF0ZSBGaWxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0CiAg
ICAgYXV0byBsZW5ndGggPSBDaGVja2VkPHNpemVfdD4obV9maWxlTGlzdC0+ZmlsZXMoKS5zaXpl
KCkpICogQ2hlY2tlZDxzaXplX3Q+KDIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gc3RhdGVWZWN0
b3I7Ci0gICAgc3RhdGVWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgudW5zYWZl
R2V0KCkpOworICAgIHN0YXRlVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsK
ICAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2ZpbGVMaXN0LT5maWxlcygpKSB7CiAgICAgICAgIHN0
YXRlVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChmaWxlLT5wYXRoKCkpOwogICAgICAgICBzdGF0ZVZl
Y3Rvci51bmNoZWNrZWRBcHBlbmQoZmlsZS0+bmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmNwcAppbmRleCA5MTZkZmIwZjJiOGZlMjllNWYzZmMyODE1NjM4YzY0MDFiNTcxNGQ2Li5iN2Q1
M2IzNDA1MDNiMmVmNmNhMDk4OGY2ZDc0ZTBiNDg4NmY3N2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVE
YXRhU2l6ZShzaXplKTsKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKKyAgICBhdXRv
IGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRh
dGFTaXplKTsKICAgICBpZiAoIWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNl
Tm9uTnVsbCgpLCBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQikpOwpAQCAtNzcsNyArNzcsNyBA
QCBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
KQogUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgUHJlZGVmaW5lZENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNp
emUpOwotICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgZGF0YVNpemUudW5zYWZl
R2V0KCkgIT0gYnl0ZUFycmF5LT5sZW5ndGgoKSkKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZs
b3dlZCgpIHx8IGRhdGFTaXplICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdU
Rk1vdmUoYnl0ZUFycmF5KSwgY29sb3JTcGFjZSkpOwpAQCAtOTAsNyArOTAsNyBAQCBFeGNlcHRp
b25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIHJvd3MsIHVuc2lnbgogICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiQ2Fubm90IGFsbG9jYXRlIGEgYnVm
ZmVyIG9mIHRoaXMgc2l6ZSJfcyB9OwogCi0gICAgYXV0byBieXRlQXJyYXkgPSBVaW50OENsYW1w
ZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS51bnNhZmVHZXQoKSk7Cisg
ICAgYXV0byBieXRlQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZChkYXRhU2l6ZSk7CiAgICAgaWYgKCFieXRlQXJyYXkpIHsKICAgICAgICAgLy8gRklYTUU6
IERvZXMgdGhpcyBuZWVkIHRvIGJlIGEgInJlYWwiIG91dCBvZiBtZW1vcnkgZXJyb3Igd2l0aCBz
ZXRPdXRPZk1lbW9yeUVycm9yIGNhbGxlZCBvbiBpdD8KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFJhbmdlRXJyb3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CkBAIC0xMTAsNyArMTEwLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgc3RkOjpvcHQKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0
ZSBhIGJ1ZmZlciBvZiB0aGlzIHNpemUiX3MgfTsKIAotICAgIGF1dG8gYnl0ZUFycmF5ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0
KCkpOworICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoZGF0YVNpemUpOwogICAgIGlmICghYnl0ZUFycmF5KSB7CiAgICAgICAgIC8v
IEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFsIiBvdXQgb2YgbWVtb3J5IGVycm9y
IHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24gaXQ/CiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9yeSJfcyB9OwpAQCAtMTM3LDcgKzEz
Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8
VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5CiAKICAgICBJbnRTaXplIHNpemUoc3csIGhl
aWdodCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKLSAgICBp
ZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgpICE9IGJ5
dGVBcnJheS0+bGVuZ3RoKCkpCisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBk
YXRhU2l6ZSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUmFuZ2VFcnJvciB9OwogCiAgICAgYXV0byBjb2xvclNwYWNlID0gY29tcHV0ZUNvbG9yU3Bh
Y2Uoc2V0dGluZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHAKaW5kZXggN2EyNzVkN2MzMTU3NWJmZjgwOThjMmQ5YjI2ZWQ4ZWFmMzZlZmE5OC4uOWExZDQ3
MjE1MTFjZjllMDU0YjZkOGVlOWEyZDJiYWViMmUyMTAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC05OTYsNyArOTk2LDcgQEAgc3RhdGljIGJv
b2wgaXNFbGVtZW50UmVjdE1vc3RseUluTWFpbkZyYW1lKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQpCiAKICAgICBlbGVtZW50UmVjdEluTWFpbkZyYW1lLmludGVyc2VjdChtYWluRnJh
bWVSZWN0QWRqdXN0ZWRGb3JTY3JvbGxQb3NpdGlvbik7CiAKLSAgICByZXR1cm4gZWxlbWVudFJl
Y3RJbk1haW5GcmFtZS5hcmVhKCkudW5zYWZlR2V0KCkgPiB0b3RhbEVsZW1lbnRBcmVhLnVuc2Fm
ZUdldCgpIC8gMjsKKyAgICByZXR1cm4gZWxlbWVudFJlY3RJbk1haW5GcmFtZS5hcmVhKCkgPiB0
b3RhbEVsZW1lbnRBcmVhIC8gMjsKIH0KIAogc3RhdGljIGJvb2wgaXNFbGVtZW50TGFyZ2VSZWxh
dGl2ZVRvTWFpbkZyYW1lKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDJiMWIwZjFlZWNiNTE1M2VlYjUyOWJjNzk0OWNhYTNhM2E4NTcwNzAuLmVjNzc1OWQw
YTlhZDJlMDE2OTBmNDY0Yzc1MmYwNDBkZjI0MDFkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MDksNyAr
NTA5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
c2xpY2VBcnJheUJ1ZmZlclZpZXcoY29uc3QgY2hhcioKICAgICBDaGVja2VkPEdDR0x1aW50LCBS
ZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFNyY09mZnNldChzcmNPZmZzZXQpOwogICAgIENoZWNrZWQ8
R0NHTHVpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQnl0ZVNyY09mZnNldCA9IGNoZWNrZWRT
cmNPZmZzZXQgKiBjaGVja2VkRWxlbWVudFNpemU7CiAgICAgQ2hlY2tlZDxHQ0dMdWludCwgUmVj
b3JkT3ZlcmZsb3c+IGNoZWNrZWRMZW5ndGgobGVuZ3RoKTsKLSAgICBpZiAoIWNoZWNrZWRMZW5n
dGgudW5zYWZlR2V0KCkpIHsKKyAgICBpZiAoIWNoZWNrZWRMZW5ndGgpIHsKICAgICAgICAgLy8g
RGVmYXVsdCB0byB0aGUgcmVtYWluZGVyIG9mIHRoZSBidWZmZXIuCiAgICAgICAgIGNoZWNrZWRM
ZW5ndGggPSBkYXRhLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgY2hlY2tlZExlbmd0aCAvPSBlbGVt
ZW50U2l6ZTsKQEAgLTUxOSwxMyArNTE5LDEzIEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnNsaWNlQXJyYXlCdWZmZXJWaWV3KGNvbnN0IGNoYXIqCiAK
ICAgICBpZiAoY2hlY2tlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tlZEJ5dGVTcmNP
ZmZzZXQuaGFzT3ZlcmZsb3dlZCgpCiAgICAgICAgIHx8IGNoZWNrZWRCeXRlTGVuZ3RoLmhhc092
ZXJmbG93ZWQoKQotICAgICAgICB8fCBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSA+
IGRhdGEuYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGNoZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdl
dCgpID4gZGF0YS5ieXRlTGVuZ3RoKCkgLSBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQo
KSkgeworICAgICAgICB8fCBjaGVja2VkQnl0ZVNyY09mZnNldCA+IGRhdGEuYnl0ZUxlbmd0aCgp
CisgICAgICAgIHx8IGNoZWNrZWRCeXRlTGVuZ3RoID4gZGF0YS5ieXRlTGVuZ3RoKCkgLSBjaGVj
a2VkQnl0ZVNyY09mZnNldC52YWx1ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJzcmNPZmZzZXQg
b3IgbGVuZ3RoIGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgcmV0dXJuIGFycmF5QnVmZmVyVmlld1NsaWNlRmFjdG9yeShmdW5jdGlvbk5h
bWUsIGRhdGEsIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5zYWZl
R2V0KCksIGNoZWNrZWRMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIHJldHVybiBhcnJheUJ1ZmZl
clZpZXdTbGljZUZhY3RvcnkoZnVuY3Rpb25OYW1lLCBkYXRhLCBkYXRhLmJ5dGVPZmZzZXQoKSAr
IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnZhbHVlKCksIGNoZWNrZWRMZW5ndGgpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50IHBhcmFtKQpAQCAtNjExLDE0ICs2MTEsMTQgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cmkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghd3JpdGVCdWZmZXItPmFzc29jaWF0
ZUNvcHlCdWZmZXJTdWJEYXRhKCpyZWFkQnVmZmVyLCBjaGVja2VkUmVhZE9mZnNldC51bnNhZmVH
ZXQoKSwgY2hlY2tlZFdyaXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkU2l6ZS51bnNhZmVH
ZXQoKSkpIHsKKyAgICBpZiAoIXdyaXRlQnVmZmVyLT5hc3NvY2lhdGVDb3B5QnVmZmVyU3ViRGF0
YSgqcmVhZEJ1ZmZlciwgY2hlY2tlZFJlYWRPZmZzZXQsIGNoZWNrZWRXcml0ZU9mZnNldCwgY2hl
Y2tlZFNpemUpKSB7CiAgICAgICAgIHRoaXMtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiY29weUJ1ZmZlclN1YkRhdGEiLCAib2Zmc2V0IG91dCBv
ZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb250ZXh0LT5tb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBt
X2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBjaGVj
a2VkUmVhZE9mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZFdyaXRlT2Zmc2V0LnVuc2FmZUdldCgp
LCBjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3Vi
RGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgY2hlY2tlZFJlYWRPZmZzZXQsIGNoZWNrZWRX
cml0ZU9mZnNldCwgY2hlY2tlZFNpemUpOwogI2VuZGlmCiAgICAgaWYgKG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAgLy8gVGhlIGJ1ZmZlclN1
YkRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZmZXIgaXQgZG9lc24ndCBoYXZlIHRo
ZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgpAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcg
bG9uZyBzcmNCeXRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY2hlY2tlZERl
c3RpbmF0aW9uRW5kLnVuc2FmZUdldCgpID4gZHN0RGF0YUxlbmd0aCkgeworICAgIGlmIChjaGVj
a2VkRGVzdGluYXRpb25FbmQgPiBkc3REYXRhTGVuZ3RoKSB7CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0
YSIsICJlbmQgb2Ygd3JpdHRlbiBkZXN0aW5hdGlvbiBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1
ZmZlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBzcmNCeXRlCiAgICAgQ2hlY2tlZDxHQ0dMaW50cHRyLCBSZWNvcmRPdmVyZmxv
dz4gY2hlY2tlZENvcHlMZW5ndGhQdHIoY29weUxlbmd0aCk7CiAgICAgQ2hlY2tlZDxHQ0dMaW50
cHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZEVsZW1lbnRTaXplKGVsZW1lbnRTaXplKTsKICAg
ICBhdXRvIGNoZWNrZWRTb3VyY2VFbmQgPSBjaGVja2VkU3JjQnl0ZU9mZnNldCArIGNoZWNrZWRD
b3B5TGVuZ3RoUHRyICogY2hlY2tlZEVsZW1lbnRTaXplOwotICAgIGlmIChjaGVja2VkU291cmNl
RW5kLmhhc092ZXJmbG93ZWQoKSB8fCBjaGVja2VkU291cmNlRW5kLnVuc2FmZUdldCgpID4gYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpIHsKKyAgICBpZiAoY2hlY2tlZFNvdXJjZUVuZC5oYXNPdmVyZmxv
d2VkKCkgfHwgY2hlY2tlZFNvdXJjZUVuZCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAi
Z2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQgb3V0c2lkZSB0aGUgYm91
bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
NDQ0LDE0ICszNDQ0LDE0IEBAIHN0ZDo6b3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uCiAgICAgfQogICAgIHN3
aXRjaCAoYnVmZmVyKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1I6Ci0gICAg
ICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8IDQpIHsKKyAgICAgICAgaWYgKGNoZWNr
ZWRTaXplIDwgNCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkgc2l6ZSAv
IHNyY09mZnNldCIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDQpOwogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlNURU5DSUw6Ci0gICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8IDEpIHsK
KyAgICAgICAgaWYgKGNoZWNrZWRTaXplIDwgMSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImlu
dmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCmlu
ZGV4IDNlMzJmMTUxNjY1Y2JmYTg0MGM1ZjVkMjMxZTg5Yjg1ZTZkMDQxOGEuLjM5NmQ5NmZlMGU2
NmQ4ZjhhYzVmMzVlYmY2ZGIwNWNjNzA0ZmY4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIFdlYkdMQnVmZmVy
Ojphc3NvY2lhdGVCdWZmZXJTdWJEYXRhSW1wbChHQ0dMaW50cHRyIG9mZnNldCwgY29uc3Qgdm9p
ZCogZGF0YQogICAgICAgICBDaGVja2VkPEdDR0xpbnRwdHIsIFJlY29yZE92ZXJmbG93PiBjaGVj
a2VkQnVmZmVyT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIENoZWNrZWQ8R0NHTHNpemVpcHRyLCBS
ZWNvcmRPdmVyZmxvdz4gY2hlY2tlZERhdGFMZW5ndGgoYnl0ZUxlbmd0aCk7CiAgICAgICAgIENo
ZWNrZWQ8R0NHTGludHB0ciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRCdWZmZXJNYXggPSBjaGVj
a2VkQnVmZmVyT2Zmc2V0ICsgY2hlY2tlZERhdGFMZW5ndGg7Ci0gICAgICAgIGlmIChjaGVja2Vk
QnVmZmVyTWF4Lmhhc092ZXJmbG93ZWQoKSB8fCBvZmZzZXQgPiBtX2J5dGVMZW5ndGggfHwgY2hl
Y2tlZEJ1ZmZlck1heC51bnNhZmVHZXQoKSA+IG1fYnl0ZUxlbmd0aCkKKyAgICAgICAgaWYgKGNo
ZWNrZWRCdWZmZXJNYXguaGFzT3ZlcmZsb3dlZCgpIHx8IG9mZnNldCA+IG1fYnl0ZUxlbmd0aCB8
fCBjaGVja2VkQnVmZmVyTWF4ID4gbV9ieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtMTg5LDEyICsxODksMTIgQEAgYm9vbCBXZWJHTEJ1ZmZlcjo6YXNz
b2NpYXRlQ29weUJ1ZmZlclN1YkRhdGEoY29uc3QgV2ViR0xCdWZmZXImIHJlYWRCdWZmZXIsIEdD
R0wKICAgICAgICAgQ2hlY2tlZDxHQ0dMaW50cHRyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFJl
YWRCdWZmZXJPZmZzZXQocmVhZE9mZnNldCk7CiAgICAgICAgIENoZWNrZWQ8R0NHTHNpemVpcHRy
LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZERhdGFMZW5ndGgoc2l6ZSk7CiAgICAgICAgIENoZWNr
ZWQ8R0NHTGludHB0ciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRSZWFkQnVmZmVyTWF4ID0gY2hl
Y2tlZFJlYWRCdWZmZXJPZmZzZXQgKyBjaGVja2VkRGF0YUxlbmd0aDsKLSAgICAgICAgaWYgKGNo
ZWNrZWRSZWFkQnVmZmVyTWF4Lmhhc092ZXJmbG93ZWQoKSB8fCByZWFkT2Zmc2V0ID4gcmVhZEJ1
ZmZlci5ieXRlTGVuZ3RoKCkgfHwgY2hlY2tlZFJlYWRCdWZmZXJNYXgudW5zYWZlR2V0KCkgPiBy
ZWFkQnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgaWYgKGNoZWNrZWRSZWFkQnVmZmVyTWF4
Lmhhc092ZXJmbG93ZWQoKSB8fCByZWFkT2Zmc2V0ID4gcmVhZEJ1ZmZlci5ieXRlTGVuZ3RoKCkg
fHwgY2hlY2tlZFJlYWRCdWZmZXJNYXggPiByZWFkQnVmZmVyLmJ5dGVMZW5ndGgoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBDaGVja2VkPEdDR0xpbnRwdHIsIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkV3JpdGVCdWZmZXJPZmZzZXQod3JpdGVPZmZzZXQpOwogICAgICAg
ICBDaGVja2VkPEdDR0xpbnRwdHIsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkV3JpdGVCdWZmZXJN
YXggPSBjaGVja2VkV3JpdGVCdWZmZXJPZmZzZXQgKyBjaGVja2VkRGF0YUxlbmd0aDsKLSAgICAg
ICAgaWYgKGNoZWNrZWRXcml0ZUJ1ZmZlck1heC5oYXNPdmVyZmxvd2VkKCkgfHwgd3JpdGVPZmZz
ZXQgPiBtX2J5dGVMZW5ndGggfHwgY2hlY2tlZFdyaXRlQnVmZmVyTWF4LnVuc2FmZUdldCgpID4g
bV9ieXRlTGVuZ3RoKQorICAgICAgICBpZiAoY2hlY2tlZFdyaXRlQnVmZmVyTWF4Lmhhc092ZXJm
bG93ZWQoKSB8fCB3cml0ZU9mZnNldCA+IG1fYnl0ZUxlbmd0aCB8fCBjaGVja2VkV3JpdGVCdWZm
ZXJNYXggPiBtX2J5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCmluZGV4IGNkZTdlODBjMmQ2OGI5OGE4NGNmM2MxYTNmZDhhMTdkNzgw
NDhkNDEuLmFhM2I0OWQwN2JhOWYyMmIzMjcyMTdkMmRlZThlYTQ3YzY5NDY1YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCkBAIC01MDcsOCArNTA3LDggQEAgc3RhdGljIGJvb2wgY2xpcDJEKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsCiAgICAgQ2hl
Y2tlZDxHQ0dMaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZElucHV0UmlnaHQgPSBDaGVja2Vk
PEdDR0xpbnQ+KHgpICsgQ2hlY2tlZDxHQ0dMc2l6ZWk+KHdpZHRoKTsKICAgICBDaGVja2VkPEdD
R0xpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkSW5wdXRCb3R0b20gPSBDaGVja2VkPEdDR0xp
bnQ+KHkpICsgQ2hlY2tlZDxHQ0dMc2l6ZWk+KGhlaWdodCk7CiAgICAgaWYgKCFjaGVja2VkSW5w
dXRSaWdodC5oYXNPdmVyZmxvd2VkKCkgJiYgIWNoZWNrZWRJbnB1dEJvdHRvbS5oYXNPdmVyZmxv
d2VkKCkpIHsKLSAgICAgICAgcmlnaHQgPSBzdGQ6Om1pbihjaGVja2VkSW5wdXRSaWdodC51bnNh
ZmVHZXQoKSwgc291cmNlV2lkdGgpOwotICAgICAgICBib3R0b20gPSBzdGQ6Om1pbihjaGVja2Vk
SW5wdXRCb3R0b20udW5zYWZlR2V0KCksIHNvdXJjZUhlaWdodCk7CisgICAgICAgIHJpZ2h0ID0g
c3RkOjptaW4oY2hlY2tlZElucHV0UmlnaHQudmFsdWUoKSwgc291cmNlV2lkdGgpOworICAgICAg
ICBib3R0b20gPSBzdGQ6Om1pbihjaGVja2VkSW5wdXRCb3R0b20udmFsdWUoKSwgc291cmNlSGVp
Z2h0KTsKICAgICB9CiAKICAgICBpZiAobGVmdCA+PSByaWdodCB8fCB0b3AgPj0gYm90dG9tKSB7
CkBAIC0yNDYwLDEyICsyNDYwLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVEcmF3QXJyYXlzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHCiAgICAgLy8g
RW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3RhdGUuCiAgICAgQ2hlY2tlZDxHQ0dM
aW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFN1bSA9IENoZWNrZWQ8R0NHTGludCwgUmVjb3Jk
T3ZlcmZsb3c+KGZpcnN0KSArIENoZWNrZWQ8R0NHTGludCwgUmVjb3JkT3ZlcmZsb3c+KGNvdW50
KTsKICAgICBDaGVja2VkPEdDR0xpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJpbWl0aXZl
Q291bnQocHJpbWl0aXZlQ291bnQpOwotICAgIGlmIChjaGVja2VkU3VtLmhhc092ZXJmbG93ZWQo
KSB8fCBjaGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8ICF2YWxpZGF0ZVZl
cnRleEF0dHJpYnV0ZXMoY2hlY2tlZFN1bS51bnNhZmVHZXQoKSwgY2hlY2tlZFByaW1pdGl2ZUNv
dW50LnVuc2FmZUdldCgpKSkgeworICAgIGlmIChjaGVja2VkU3VtLmhhc092ZXJmbG93ZWQoKSB8
fCBjaGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8ICF2YWxpZGF0ZVZlcnRl
eEF0dHJpYnV0ZXMoY2hlY2tlZFN1bSwgY2hlY2tlZFByaW1pdGl2ZUNvdW50KSkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04s
IGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgYXJyYXlzIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjaWYgIVVTRShBTkdMRSkKLSAgICBpZiAo
IXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChjaGVja2VkU3VtLnVuc2FmZUdldCgpIC0g
MSkpIHsKKyAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChjaGVja2VkU3Vt
LnZhbHVlKCkgLSAxKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNz
IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgc2ltdWxhdGVkIHZlcnRleEF0dHJpYjAgYXJyYXki
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI1MzcsOCArMjUzNyw4IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxlbWVudHMoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBHCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUodHlwZSwgbnVtRWxlbWVu
dHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmlt
aXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJy
YXlQcmVjaXNlKGNoZWNrZWRDb3VudC51bnNhZmVHZXQoKSwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSwgbnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0
ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKKyAg
ICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZSh0eXBlLCBudW1FbGVtZW50cykg
fHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2
ZUNvdW50KSkgeworICAgICAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UoY2hlY2tl
ZENvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBudW1FbGVtZW50
cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1p
dGl2ZUNvdW50KSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2Vz
cyBvdXQgb2YgYm91bmRzIGFycmF5cyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC01MzI3LDcgKzUzMjcsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBUZQogICAg
IHRvdGFsICo9IEpTQzo6ZWxlbWVudFNpemUocGl4ZWxzLT5nZXRUeXBlKCkpOwogICAgIHRvdGFs
ICs9IHRvdGFsQnl0ZXNSZXF1aXJlZDsKICAgICB0b3RhbCArPSBza2lwQnl0ZXM7Ci0gICAgaWYg
KHRvdGFsLmhhc092ZXJmbG93ZWQoKSB8fCBwaXhlbHMtPmJ5dGVMZW5ndGgoKSA8IHRvdGFsLnVu
c2FmZUdldCgpKSB7CisgICAgaWYgKHRvdGFsLmhhc092ZXJmbG93ZWQoKSB8fCBwaXhlbHMtPmJ5
dGVMZW5ndGgoKSA8IHRvdGFsKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiQXJyYXlCdWZmZXJW
aWV3IG5vdCBiaWcgZW5vdWdoIGZvciByZXF1ZXN0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC02ODE5LDcgKzY4MTksNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFM
VUUsIGZ1bmN0aW9uTmFtZSwgInRvbyBsYXJnZSBkaW1lbnNpb25zIik7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRC
eXRlc1JlcXVpcmVkLnVuc2FmZUdldCgpOworICAgICAgICBieXRlc1JlcXVpcmVkID0gY2hlY2tl
ZEJ5dGVzUmVxdWlyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKQEAgLTY4MzMsNyArNjgzMyw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29u
c3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAidG9vIGxhcmdlIGRpbWVuc2lv
bnMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBieXRl
c1JlcXVpcmVkID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQudW5zYWZlR2V0KCk7CisgICAgICAgIGJ5
dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6CkBAIC03
NDEyLDcgKzc0MTIsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
U2ltdWxhdGVkVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0ZQogCiAgICAgQ2hlY2tlZDxH
Q0dMc2l6ZWlwdHIsIFJlY29yZE92ZXJmbG93PiBidWZmZXJEYXRhU2l6ZShidWZmZXJTaXplLnZh
bHVlKCkpOwogICAgIGJ1ZmZlckRhdGFTaXplICo9IENoZWNrZWQ8R0NHTHNpemVpcHRyPihzaXpl
b2YoR0NHTGZsb2F0KSk7Ci0gICAgcmV0dXJuICFidWZmZXJEYXRhU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkgJiYgYnVmZmVyRGF0YVNpemUudW5zYWZlR2V0KCkgPiAwOworICAgIHJldHVybiAhYnVmZmVy
RGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpICYmIGJ1ZmZlckRhdGFTaXplID4gMDsKIH0KIAogc3Rk
OjpvcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRl
eEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDkyYzE1NjJkZTI0
NTliY2Q5Y2EwNWYxNzczMGI4ZWIyZGU2MWIyMzAuLjg4MDJhNjE0YTY1Y2YyNDY5MTg3MmZjMzhm
ZTE5MTNmMTAzMzZhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTg1MSw3ICs4NTEsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAobWF4WUFjY2Vzc2VkLnVuc2FmZUdldCgpID4gaW1hZ2VIZWlnaHQpIHsKKyAg
ICAgICAgICAgIGlmIChtYXhZQWNjZXNzZWQgPiBpbWFnZUhlaWdodCkgewogICAgICAgICAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElP
TiwgZnVuY3Rpb25OYW1lLAogICAgICAgICAgICAgICAgICAgICAiTm90IGVub3VnaCBkYXRhIHN1
cHBsaWVkIHRvIHVwbG9hZCB0byBhIDNEIHRleHR1cmUgd2l0aCBkZXB0aCA+IDEiKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxUPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVja2VkQWRkQW5kTXVs
dGlwbHkoVCB2YWx1ZQogICAgIGlmIChjaGVja2VkUmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBjaGVja2VkUmVzdWx0LnVu
c2FmZUdldCgpOworICAgIHJldHVybiBjaGVja2VkUmVzdWx0LnZhbHVlKCk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiNjkxMjdmZDFiNjRj
MmI0MTJkZDIzYThkYzI4ODRiNGI2MzNhMDc4Li41OWFjMDhkNWU1NzQ2NzdhNTY5MTRhMzJmMzk1
M2E3OTRmOGEyMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTk5NSw3ICs5OTUsNyBA
QCBpbmxpbmUgdm9pZCBGcmFtZVZpZXc6OmluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENv
dW50KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKFVOTElLRUxZKGFyZWEuaGFzT3ZlcmZs
b3dlZCgpKSkKICAgICAgICAgbV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZGVjbHR5cGUobV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCk+OjptYXgo
KTsKICAgICBlbHNlCi0gICAgICAgIG1fdmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQgPSBhcmVh
LnVuc2FmZUdldCgpOworICAgICAgICBtX3Zpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50ID0gYXJl
YTsKIH0KIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IEZyYW1lVmlldyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggMzhmZDdiMjliNTNl
YWI0ODRlMzA5NjNiNTFjOGFlNTI1YzVkN2EzOC4uMjhkMWZjMzI0MjE3NGE2ODA3MTEwMjc4Nzdk
NDE1MzkyMzc5MDIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0yNTMsOSArMjUzLDkg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFF1
b3RhRXhjZWVkZWRFcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgbW9yZSBkYXRhIHRoYW4gYWxsb3dl
ZCB1c2luZyBoaXN0b3J5LnB1c2hTdGF0ZSgpIl9zIH07CiAgICAgfQogCi0gICAgbV9tb3N0UmVj
ZW50U3RhdGVPYmplY3RVc2FnZSA9IHBheWxvYWRTaXplLnVuc2FmZUdldCgpOworICAgIG1fbW9z
dFJlY2VudFN0YXRlT2JqZWN0VXNhZ2UgPSBwYXlsb2FkU2l6ZTsKIAotICAgIG1haW5IaXN0b3J5
Lm1fdG90YWxTdGF0ZU9iamVjdFVzYWdlID0gbmV3VG90YWxVc2FnZS51bnNhZmVHZXQoKTsKKyAg
ICBtYWluSGlzdG9yeS5tX3RvdGFsU3RhdGVPYmplY3RVc2FnZSA9IG5ld1RvdGFsVXNhZ2U7CiAg
ICAgKyttYWluSGlzdG9yeS5tX2N1cnJlbnRTdGF0ZU9iamVjdFRpbWVTcGFuT2JqZWN0c0FkZGVk
OwogCiAgICAgaWYgKCF1cmxTdHJpbmcuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9BcnJheS5oCmluZGV4IGIwNzM0ZGQ2MWI4YzQxNzIxYzllOTRjODdkODc2
MWI0YjFmMTM3ZmEuLjI2NTRiOWExNDAwMDRmZmNiYjZhNTk3N2U3ZDIyMWRlN2Y3NTcxNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmgKQEAgLTYyLDEwICs2
MiwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgZmFzdEFsaWduZWRGcmVlKG1fYWxsb2NhdGlvbik7
CiAKLSAgICAgICAgbV9hbGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RBbGlnbmVkTWFs
bG9jKGFsaWdubWVudCwgaW5pdGlhbFNpemUudW5zYWZlR2V0KCkpKTsKKyAgICAgICAgbV9hbGxv
Y2F0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVudCwgaW5p
dGlhbFNpemUpKTsKICAgICAgICAgaWYgKCFtX2FsbG9jYXRpb24pCiAgICAgICAgICAgICBDUkFT
SCgpOwotICAgICAgICBtX3NpemUgPSBuLnVuc2FmZUdldCgpOworICAgICAgICBtX3NpemUgPSBu
OwogICAgICAgICB6ZXJvKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXgg
ZDc3OWE4ZmQzM2Q3NzgyMzQ3MzIxODZkYTJhYTVlZGNjZTIzMTdlYy4uN2MxYzY0ZWQ3YzdjNzky
ZDA0Y2JiOGNhY2M2NDJiNjRhNjEyZDRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBBdWRpb0J1ZmZlckxpc3QqIHRyeUNyZWF0ZUF1ZGlvQnVmZmVyTGlzdChz
aXplX3QgbnVtYmVyT2ZCdWZmZXJzKQogICAgIGlmIChidWZmZXJMaXN0U2l6ZS5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBhbGxvY2F0ZWQgPSB0
cnlGYXN0Q2FsbG9jKDEsIGJ1ZmZlckxpc3RTaXplLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIGFs
bG9jYXRlZCA9IHRyeUZhc3RDYWxsb2MoMSwgYnVmZmVyTGlzdFNpemUpOwogICAgIEF1ZGlvQnVm
ZmVyTGlzdCogYnVmZmVyTGlzdDsKICAgICBpZiAoIWFsbG9jYXRlZC5nZXRWYWx1ZShidWZmZXJM
aXN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAppbmRleCBhNTgxY2Y2NTU2Zjk5
NzU2ODdjYzUwNTFkYWVmOTNlMmMzMmI4OWI5Li4yZDJiYjJiY2JjMWVmY2RkMjJkNmNhMmMzZTg5
NTI5ZGQxOWMyNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5pcXVlUmVmPENBUmlu
Z0J1ZmZlcj4gQ0FSaW5nQnVmZmVyOjphZG9wdFN0b3JhZ2UoVW5pcXVlUmVmPENBUmluZ0J1ZmZl
clN0b3JhZ2UKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoTWVkaWEsICJDQVJpbmdCdWZmZXI6
OmFkb3B0U3RvcmFnZTogT3ZlcmZsb3dlZCB3aGVuIHRyeWluZyB0byBjb21wdXRlIHRoZSBzdG9y
YWdlIHNpemUiKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Q0FSaW5nQnVmZmVyPigp
OwogICAgIH0KLSAgICBpZiAoc3RvcmFnZS0+c2l6ZSgpIDwgZXhwZWN0ZWRTdG9yYWdlU2l6ZS51
bnNhZmVHZXQoKSkgeworICAgIGlmIChzdG9yYWdlLT5zaXplKCkgPCBleHBlY3RlZFN0b3JhZ2VT
aXplKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKE1lZGlhLCAiQ0FSaW5nQnVmZmVyOjph
ZG9wdFN0b3JhZ2U6IFN0b3JhZ2Ugc2l6ZSBpcyBpbnN1ZmZpY2llbnQgZm9yIGZvcm1hdCBhbmQg
ZnJhbWVDb3VudCIpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXI+
KCk7CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6aW5pdGlhbGl6
ZUFmdGVyQWxsb2NhdGlvbihjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcgogICAg
IG1fYnl0ZXNQZXJGcmFtZSA9IGZvcm1hdC5ieXRlc1BlckZyYW1lKCk7CiAgICAgbV9mcmFtZUNv
dW50ID0gZnJhbWVDb3VudDsKICAgICBtX2ZyYW1lQ291bnRNYXNrID0gZnJhbWVDb3VudCAtIDE7
Ci0gICAgbV9jYXBhY2l0eUJ5dGVzID0gY29tcHV0ZUNhcGFjaXR5Qnl0ZXMoZm9ybWF0LCBmcmFt
ZUNvdW50KS51bnNhZmVHZXQoKTsKKyAgICBtX2NhcGFjaXR5Qnl0ZXMgPSBjb21wdXRlQ2FwYWNp
dHlCeXRlcyhmb3JtYXQsIGZyYW1lQ291bnQpOwogCiAgICAgbV9wb2ludGVycy5yZXNpemUobV9j
aGFubmVsQ291bnQpOwogICAgIEJ5dGUqIGNoYW5uZWxEYXRhID0gc3RhdGljX2Nhc3Q8Qnl0ZSo+
KG1fYnVmZmVycy0+ZGF0YSgpKTsKQEAgLTEyMyw4ICsxMjMsOCBAQCBib29sIENBUmluZ0J1ZmZl
cjo6YWxsb2NhdGUoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNpemVf
dCBmcmFtZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKFVOTElLRUxZ
KCFtX2J1ZmZlcnMtPmFsbG9jYXRlKHNpemVGb3JCdWZmZXJzLnVuc2FmZUdldCgpLCBmb3JtYXQs
IGZyYW1lQ291bnQpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChNZWRpYSwgIkNBUmlu
Z0J1ZmZlcjo6YWxsb2NhdGU6IEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIgb2YgdGhlIHJlcXVl
c3RlZCBzaXplOiAlbHUiLCBzaXplRm9yQnVmZmVycy51bnNhZmVHZXQoKSk7CisgICAgaWYgKFVO
TElLRUxZKCFtX2J1ZmZlcnMtPmFsbG9jYXRlKHNpemVGb3JCdWZmZXJzLCBmb3JtYXQsIGZyYW1l
Q291bnQpKSkgeworICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChNZWRpYSwgIkNBUmluZ0J1ZmZl
cjo6YWxsb2NhdGU6IEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIgb2YgdGhlIHJlcXVlc3RlZCBz
aXplOiAlbHUiLCBzaXplRm9yQnVmZmVycy52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKaW5kZXggODQ4NTY3M2FmYTUzNTdhYjNmNGE0
Nzc1N2I1MDAwOWE4YzFkYzNkZi4uMmNlZDg4Mzg1N2Q3NjEyNTZhMmE4Y2Y5ZjYwMWJjZDI2NTlm
NWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2Vi
QXVkaW9CdWZmZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdlYkF1ZGlvQnVm
ZmVyTGlzdDo6V2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZm9ybWF0KQogCiAgICAgQ2hlY2tlZFNpemUgYnVmZmVyTGlzdFNpemUgPSBvZmZzZXRvZihB
dWRpb0J1ZmZlckxpc3QsIG1CdWZmZXJzKTsKICAgICBidWZmZXJMaXN0U2l6ZSArPSAoc2l6ZW9m
KEF1ZGlvQnVmZmVyKSAqIHN0ZDo6bWF4KDFVLCBidWZmZXJDb3VudCkpOwotICAgIG1fbGlzdEJ1
ZmZlclNpemUgPSBidWZmZXJMaXN0U2l6ZS51bnNhZmVHZXQoKTsKKyAgICBtX2xpc3RCdWZmZXJT
aXplID0gYnVmZmVyTGlzdFNpemU7CiAgICAgbV9jYW5vbmljYWxMaXN0ID0gc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvQnVmZmVyTGlzdD4oc3RhdGljX2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oOjpvcGVy
YXRvciBuZXcgKG1fbGlzdEJ1ZmZlclNpemUpKSk7CiAgICAgbWVtc2V0KG1fY2Fub25pY2FsTGlz
dC5nZXQoKSwgMCwgbV9saXN0QnVmZmVyU2l6ZSk7CiAgICAgbV9jYW5vbmljYWxMaXN0LT5tTnVt
YmVyQnVmZmVycyA9IGJ1ZmZlckNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAppbmRleCAwMmM4MGI1MTY5NWNkMDI3MTA5N2E5
YzM5ZGIxZmU5YTNhZTg4MDhlLi40MDFiZGEyYjIwMzg4OWFlMGQ1Mzk4YjBlMjVmOGU0NWFlZTFi
ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRD
b252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRD
b252ZXJ0ZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25z
dCB1bnNpZ25lZCBNYXhOdW1iZXJPZkNvbXBvbmVudHMgPSA0OwogICAgICAgICBjb25zdCB1bnNp
Z25lZCBNYXhCeXRlc1BlckNvbXBvbmVudCAgPSA0OwotICAgICAgICBtX3VucGFja2VkSW50ZXJt
ZWRpYXRlU3JjRGF0YSA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PigoQ2hlY2tlZDxzaXplX3Q+
KG1fc3JjU3ViUmVjdGFuZ2xlLndpZHRoKCkpICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4
Qnl0ZXNQZXJDb21wb25lbnQpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgbV91bnBhY2tlZEludGVy
bWVkaWF0ZVNyY0RhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oQ2hlY2tlZDxzaXplX3Q+
KG1fc3JjU3ViUmVjdGFuZ2xlLndpZHRoKCkpICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4
Qnl0ZXNQZXJDb21wb25lbnQpOwogCiAgICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50ZXJtZWRp
YXRlU3JjRGF0YS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGYyYzRjMTBhZTM5Yzdl
MzYyMWRhOGI4N2M2MjliZmZiOGJiZjJjYTAuLjUyODkwZDQ4ZDkzNDhhY2VhMjVjNWU1NGI3NTkx
ZGM3YjU3YzVmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTY4MSwxOSArNjgxLDE5IEBAIEdDR0xlbnVt
IEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5CiAgICAgICAgIHRtcCAqPSBieXRlc1Blckdyb3VwOwogICAgICAgICBp
ZiAodG1wLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9WQUxVRTsKLSAgICAgICAgbGFzdFJvd1NpemUgPSB0bXAudW5zYWZlR2V0
KCk7CisgICAgICAgIGxhc3RSb3dTaXplID0gdG1wOwogICAgIH0gZWxzZQotICAgICAgICBsYXN0
Um93U2l6ZSA9IGNoZWNrZWRWYWx1ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgbGFzdFJvd1NpemUg
PSBjaGVja2VkVmFsdWU7CiAKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gMDsKLSAgICB1bnNpZ25l
ZCByZXNpZHVhbCA9IGNoZWNrZWRWYWx1ZS51bnNhZmVHZXQoKSAlIHBhcmFtcy5hbGlnbm1lbnQ7
CisgICAgdW5zaWduZWQgcmVzaWR1YWwgPSBjaGVja2VkVmFsdWUudmFsdWUoKSAlIHBhcmFtcy5h
bGlnbm1lbnQ7CiAgICAgaWYgKHJlc2lkdWFsKSB7CiAgICAgICAgIHBhZGRpbmcgPSBwYXJhbXMu
YWxpZ25tZW50IC0gcmVzaWR1YWw7CiAgICAgICAgIGNoZWNrZWRWYWx1ZSArPSBwYWRkaW5nOwog
ICAgIH0KICAgICBpZiAoY2hlY2tlZFZhbHVlLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0
dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFOwotICAgIHVuc2lnbmVkIHBhZGRl
ZFJvd1NpemUgPSBjaGVja2VkVmFsdWUudW5zYWZlR2V0KCk7CisgICAgdW5zaWduZWQgcGFkZGVk
Um93U2l6ZSA9IGNoZWNrZWRWYWx1ZTsKIAogICAgIENoZWNrZWQ8dWludDMyX3QsIFJlY29yZE92
ZXJmbG93PiByb3dzID0gaW1hZ2VIZWlnaHQ7CiAgICAgcm93cyAqPSAoZGVwdGggLSAxKTsKQEAg
LTcwNiw3ICs3MDYsNyBAQCBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUltYWdl
U2l6ZUluQnl0ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eQogICAgIGNoZWNrZWRWYWx1
ZSArPSBsYXN0Um93U2l6ZTsKICAgICBpZiAoY2hlY2tlZFZhbHVlLmhhc092ZXJmbG93ZWQoKSkK
ICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFOwotICAgICpp
bWFnZVNpemVJbkJ5dGVzID0gY2hlY2tlZFZhbHVlLnVuc2FmZUdldCgpOworICAgICppbWFnZVNp
emVJbkJ5dGVzID0gY2hlY2tlZFZhbHVlOwogICAgIGlmIChwYWRkaW5nSW5CeXRlcykKICAgICAg
ICAgKnBhZGRpbmdJbkJ5dGVzID0gcGFkZGluZzsKIApAQCAtNzE3LDI4ICs3MTcsMjggQEAgR0NH
TGVudW0gR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHkKICAgICAgICAgdG1wICo9IHBhcmFtcy5za2lwSW1hZ2VzOwog
ICAgICAgICBpZiAodG1wLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRTsKLSAgICAgICAgc2tpcFNpemUgKz0gdG1wLnVu
c2FmZUdldCgpOworICAgICAgICBza2lwU2l6ZSArPSB0bXA7CiAgICAgfQogICAgIGlmIChwYXJh
bXMuc2tpcFJvd3MgPiAwKSB7CiAgICAgICAgIENoZWNrZWQ8dWludDMyX3QsIFJlY29yZE92ZXJm
bG93PiB0bXAgPSBwYWRkZWRSb3dTaXplOwogICAgICAgICB0bXAgKj0gcGFyYW1zLnNraXBSb3dz
OwogICAgICAgICBpZiAodG1wLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRTsKLSAgICAgICAgc2tpcFNpemUgKz0gdG1w
LnVuc2FmZUdldCgpOworICAgICAgICBza2lwU2l6ZSArPSB0bXA7CiAgICAgfQogICAgIGlmIChw
YXJhbXMuc2tpcFBpeGVscyA+IDApIHsKICAgICAgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3Jk
T3ZlcmZsb3c+IHRtcCA9IGJ5dGVzUGVyR3JvdXA7CiAgICAgICAgIHRtcCAqPSBwYXJhbXMuc2tp
cFBpeGVsczsKICAgICAgICAgaWYgKHRtcC5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUU7Ci0gICAgICAgIHNraXBTaXpl
ICs9IHRtcC51bnNhZmVHZXQoKTsKKyAgICAgICAgc2tpcFNpemUgKz0gdG1wOwogICAgIH0KICAg
ICBpZiAoc2tpcFNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUU7CiAgICAgaWYgKHNraXBTaXplSW5CeXRlcykKLSAgICAg
ICAgKnNraXBTaXplSW5CeXRlcyA9IHNraXBTaXplLnVuc2FmZUdldCgpOworICAgICAgICAqc2tp
cFNpemVJbkJ5dGVzID0gc2tpcFNpemU7CiAKLSAgICBjaGVja2VkVmFsdWUgKz0gc2tpcFNpemUu
dW5zYWZlR2V0KCk7CisgICAgY2hlY2tlZFZhbHVlICs9IHNraXBTaXplOwogICAgIGlmIChjaGVj
a2VkVmFsdWUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfVkFMVUU7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJP
UjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oCmluZGV4IDBjNDQxMzI1MGU4ZGU2OTQzNzljZmYwZGVkMGRkYzkyN2ZlYjM5OGMu
LmUxZTVjMzA0MzU2YzBhYTlkOWMwNTQ1ZDk2YTM1YTY2M2NkYjc4M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAt
NjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzaXpl
LmFyZWEoKS51bnNhZmVHZXQoKSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIHNpemVfdCBi
dWZmZXJTaXplID0gc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpOwogCiAgICAgICAgIGlm
ICghYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhcigp
CiAgICAgewotICAgICAgICBtZW1zZXQobV9waXhlbHNQdHIsIDAsIChtX3NpemUuYXJlYSgpICog
c2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkpOworICAgICAgICBtZW1zZXQobV9waXhlbHNQ
dHIsIDAsIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKTsKICAgICB9CiAKICAgICB2
b2lkIGNsZWFyUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggYTYy
YjNjN2JkNjMwZGI5OGJjMmFjY2E3YjdhZDQ1YWNhMDkxNmEwMS4uYWQ1ZDNlNGYzMjdlZWY0ODc4
NTljYmM0MTViNzU2ZDExZTA0NWZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC00NCw4ICs0NCw3IEBA
IEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogc2l6ZV90IEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3Vs
YXRlTWVtb3J5Q29zdChjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgdW5zaWduZWQgYnl0ZXNQ
ZXJSb3cpCiB7CiAgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpOwotICAgIENoZWNr
ZWRTaXplIG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tl
bmRTaXplLmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93OwotICAgIHJldHVybiBudW1CeXRlcy51bnNh
ZmVHZXQoKTsKKyAgICByZXR1cm4gQ2hlY2tlZFVpbnQzMihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkg
KiBieXRlc1BlclJvdzsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tl
bmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCAzZjJiMWZjMDk5YTU4ZDU2NGUyMDUzZWVh
MzM5YjU3MTAwY2YzMDEwLi45ODQzYWFjNDBlYjRjMTc4YjZmYjA5NDE2M2ZiNjg4NTdhZjVkMTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBA
IC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsgfQogCiAg
ICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0
IHsgcmV0dXJuIGhhc05hdGl2ZUltYWdlKCkgPyAoc2l6ZSgpLmFyZWEoKSAqIHNpemVvZih1aW50
MzJfdCkpLnVuc2FmZUdldCgpIDogMDsgfQorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMoKSBjb25z
dCB7IHJldHVybiBoYXNOYXRpdmVJbWFnZSgpID8gKHNpemUoKS5hcmVhKCkgKiBzaXplb2YodWlu
dDMyX3QpKS52YWx1ZSgpIDogMDsgfQogICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2FtcGxpbmdMZXZlbDsgfQogCiAgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAppbmRleCA0NWU0YjNiZjBjYzIxZWFjMmNkMzQzZTA2ZGVhNTViNTAxN2UwYjUxLi4wNDAyZDU2
YjAyNjUwZTZjYjAzYzk4NDc2YTZiOTczMzJjYjg0NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC02MzEsNyArNjMxLDcgQEAg
U3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKQog
ICAgIFN1YnNhbXBsaW5nTGV2ZWwgbGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpGaXJzdDsKIAog
ICAgIGZvciAoOyBsZXZlbCA8IFN1YnNhbXBsaW5nTGV2ZWw6Okxhc3Q7ICsrbGV2ZWwpIHsKLSAg
ICAgICAgaWYgKGZyYW1lU2l6ZUF0SW5kZXgoMCwgbGV2ZWwpLmFyZWEoKS51bnNhZmVHZXQoKSA8
IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKKyAgICAgICAgaWYgKGZyYW1lU2l6
ZUF0SW5kZXgoMCwgbGV2ZWwpLmFyZWEoKSA8IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1w
bGluZykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDk1NTgwN2ZkM2EwMDFjNjIy
ZTJmYjhjYzBiNDk0ZWRhODk0ZmYwMmIuLjdlMmVhNmJhZmQwNzA0YzBmNWYzYjFhYzhhNDM0OGY2
MTY1ZjJkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3Zl
cmZsb3c+IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmYKIHN0
ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGlu
Zyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1
bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCkKIHsKICAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3Jt
YXQoZm9ybWF0LnBpeGVsRm9ybWF0KSk7Ci0gICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZv
cm1hdCwgc2l6ZSkudW5zYWZlR2V0KCkgPT0gZGF0YUJ5dGVMZW5ndGgpOworICAgIEFTU0VSVChj
b21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpID09IGRhdGFCeXRlTGVuZ3RoKTsKIAogICAg
IGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKGRhdGFCeXRlTGVuZ3RoKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCkBAIC03NCw3ICs3NCw3
IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0
ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwaXhlbEFycmF5
ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZS51
bnNhZmVHZXQoKSk7CisgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXpl
LCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwpAQCAtODcsOSArODcsOSBAQCBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJT
aXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJTaXplLnVuc2FmZUdl
dCgpICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpCisgICAgaWYgKGJ1ZmZlclNpemUgIT0g
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1v
dmUoYXJyYXlCdWZmZXIpLCAwLCBidWZmZXJTaXplLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHBp
eGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCAwLCBidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXku
cmVsZWFzZU5vbk51bGwoKSB9IH07CkBAIC0xMDAsNyArMTAwLDcgQEAgUGl4ZWxCdWZmZXI6OlBp
eGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUm
IHNpemUsIFIKICAgICAsIG1fc2l6ZSB7IHNpemUgfQogICAgICwgbV9kYXRhIHsgV1RGTW92ZShk
YXRhKSB9CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigo
bV9zaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkg
KiA0KSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKIH0KIAogUGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVy
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIEpT
Qzo6VWludDhDbGFtcGVkQXJyYXkmIGRhdGEpCkBAIC0xMDgsNyArMTA4LDcgQEAgUGl4ZWxCdWZm
ZXI6OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IElu
dFNpemUmIHNpemUsIEoKICAgICAsIG1fc2l6ZSB7IHNpemUgfQogICAgICwgbV9kYXRhIHsgZGF0
YSB9CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9z
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkgKiA0
KSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKIH0KIAogUGl4ZWxCdWZmZXI6On5QaXhlbEJ1ZmZlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5oCmluZGV4IDEyY2EzYzhjNzJkOTM3NDY0NWRiNTFjMGMwMGE4ZDRiOWU4NjJkZGMuLmNh
MTVlNzNmZmZiMzJiZTQ2MTZkM2RkMjM3ODYzY2NmOTY3OGYwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaApAQCAtNzgsNyArNzgsNyBAQCBX
RUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgUGl4ZWxCdWZmZXImKQogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBp
eGVsQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9kYXRhLT5ieXRlTGVuZ3RoKCkgPT0gKG1fc2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkgKiA0KSk7
CisgICAgQVNTRVJUKG1fZGF0YS0+Ynl0ZUxlbmd0aCgpID09IChtX3NpemUuYXJlYSgpICogNCkp
OwogCiAgICAgZW5jb2RlciA8PCBtX2Zvcm1hdDsKICAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKQEAg
LTEwNSw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKGNvbXB1dGVk
QnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlZEJ1ZmZlclNpemUudW5zYWZlR2V0KCk7
CisgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZWRCdWZmZXJTaXplOwogICAgIGlmICghZGVj
b2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZl
clNpemUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAzMGVlYWFhMzU3NGQ1Y2Y1NzUz
MjU2OTZhNWFkZTk4NmQ4OWJmYzRkLi5jZGQ3MzU3Yzg2YzY0NDlhNWNkMDZkMDI3YTFiOTgwNWQz
ODc1MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KQEAgLTU1Niw3ICs1NTYsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCku
dW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkgKiA0OwogfQogCiBQbGF0
Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAxY2E4
ZWZlZWQwYmY4NDM5ZDczZTY0NDc1YTI5OTM1YWE0YWMwMDc5Li4yZjQ5ODM4NzY1ZDNjOTQ0MWI2
OWJiOTUxOGIzYjFmOWE4Nzk1MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLm1tCkBAIC00NzEsNyArNDcxLDcgQEAgc3RkOjpvcHRpb25hbDxNZWRpYVNh
bXBsZTo6Qnl0ZVJhbmdlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmJ5dGVSYW5nZSgpIGNvbnN0CiAK
IHZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRCeXRlUmFuZ2VPZmZzZXQoc2l6ZV90IGJ5dGVP
ZmZzZXQpCiB7Ci0gICAgaW50NjRfdCBjaGVja2VkT2Zmc2V0ID0gQ2hlY2tlZEludDY0KGJ5dGVP
ZmZzZXQpLnVuc2FmZUdldCgpOworICAgIGludDY0X3QgY2hlY2tlZE9mZnNldCA9IENoZWNrZWRJ
bnQ2NChieXRlT2Zmc2V0KTsKICAgICBhdXRvIG9mZnNldE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmNoZWNr
ZWRPZmZzZXQpKTsKICAgICBQQUw6OkNNU2V0QXR0YWNobWVudChtX3NhbXBsZS5nZXQoKSwgYnl0
ZVJhbmdlT2Zmc2V0QXR0YWNobWVudEtleSgpLCBvZmZzZXROdW1iZXIuZ2V0KCksIGtDTUF0dGFj
aG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CiB9CkBAIC00OTMsNyArNDkzLDcgQEAgc3RkOjpv
cHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmJ5dGVS
YW5nZUZvckF0dGFjaG1lbnQKIAogICAgIHNpemVfdCBzaW5nbGVTaXplRW50cnkgPSAwOwogICAg
IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXkobV9zYW1wbGUuZ2V0KCksIDEs
ICZzaW5nbGVTaXplRW50cnksIG51bGxwdHIpOwotICAgIHJldHVybiB7IHsgQ2hlY2tlZFNpemUo
Ynl0ZU9mZnNldCkudW5zYWZlR2V0KCksIHNpbmdsZVNpemVFbnRyeSB9IH07CisgICAgcmV0dXJu
IHsgeyBDaGVja2VkU2l6ZShieXRlT2Zmc2V0KSwgc2luZ2xlU2l6ZUVudHJ5IH0gfTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKaW5kZXggZmZhMWM1ODU0MTE1YzY5NWJhZGEzMGNhZmFjNjdjMmI1MDdk
ZjJkNy4uYjlmOGQ4MTNlNzVlMWI0MmJlZWY4MjQ4Mjk5Njg1NzEyOWUyNjljYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCkBAIC0yMzUxLDggKzIzNTEsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRl
QmFja2Ryb3BGaWx0ZXJzKENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZSkKICAgICAgICAgICAgIENo
ZWNrZWRVbnNpZ25lZCBiYWNrZHJvcEZpbHRlckFyZWEgPSBDaGVja2VkVW5zaWduZWQoYmFja2Ry
b3BGaWx0ZXJSZWN0LndpZHRoKCkpICogQ2hlY2tlZFVuc2lnbmVkKGJhY2tkcm9wRmlsdGVyUmVj
dC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBpZiAoIWJhY2tkcm9wRmlsdGVyQXJlYS5oYXNPdmVy
Zmxvd2VkKCkpIHsKICAgICAgICAgICAgICAgICBDaGVja2VkVW5zaWduZWQgbmV3VG90YWxCYWNr
ZHJvcEZpbHRlckFyZWEgPSBDaGVja2VkVW5zaWduZWQoY29tbWl0U3RhdGUudG90YWxCYWNrZHJv
cEZpbHRlckFyZWEpICsgYmFja2Ryb3BGaWx0ZXJBcmVhOwotICAgICAgICAgICAgICAgIGlmICgh
bmV3VG90YWxCYWNrZHJvcEZpbHRlckFyZWEuaGFzT3ZlcmZsb3dlZCgpICYmIG5ld1RvdGFsQmFj
a2Ryb3BGaWx0ZXJBcmVhLnVuc2FmZUdldCgpIDw9IGNNYXhUb3RhbEJhY2tkcm9wRmlsdGVyQXJl
YSkgewotICAgICAgICAgICAgICAgICAgICBjb21taXRTdGF0ZS50b3RhbEJhY2tkcm9wRmlsdGVy
QXJlYSA9IG5ld1RvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhLnVuc2FmZUdldCgpOworICAgICAgICAg
ICAgICAgIGlmICghbmV3VG90YWxCYWNrZHJvcEZpbHRlckFyZWEuaGFzT3ZlcmZsb3dlZCgpICYm
IG5ld1RvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhIDw9IGNNYXhUb3RhbEJhY2tkcm9wRmlsdGVyQXJl
YSkgeworICAgICAgICAgICAgICAgICAgICBjb21taXRTdGF0ZS50b3RhbEJhY2tkcm9wRmlsdGVy
QXJlYSA9IG5ld1RvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhOwogICAgICAgICAgICAgICAgICAgICBj
YW5IYXZlQmFja2Ryb3BGaWx0ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9M
YXllclBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJQ
b29sLmNwcAppbmRleCBjMjJkM2Q3ZmM4N2NlZmRmNDAwNTUyZjBlNGNhY2RiMmU3MGIzNTc3Li41
ZDRmMDk2ZTY2M2QwYzQwOTg4ZGU5NDBkOGIyZDRlYTE3YTY1MTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgSGFzaFNldDxMYXllclBvb2wqPiYgTGF5ZXJQb29sOjphbGxMYXllclBvb2xzKCkKIAog
dW5zaWduZWQgTGF5ZXJQb29sOjpiYWNraW5nU3RvcmVCeXRlc0ZvclNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7Cisg
ICAgcmV0dXJuIHNpemUuYXJlYSgpICogNDsKIH0KIAogTGF5ZXJQb29sOjpMYXllckxpc3QmIExh
eWVyUG9vbDo6bGlzdE9mTGF5ZXJzV2l0aFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCBjZDFkNmMwZWE1ZDJl
MjMwNTBmY2I0MDFhNDVjZWNhODVhYmZjZDdmLi5mNTc5ODQ0NmI4YTNjN2U5YjFiMGJjNmRhNjdk
ZmQ4NzcyMGVhM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtNDg5LDcgKzQ4OSw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgLy8gYnV0IGl0IHdvdWxkIHByZW11bHRpcGx5
IHRoZSBhbHBoYSBjaGFubmVsIGFzIGEgc2lkZSBlZmZlY3QuCiAgICAgLy8gUHJlZmVyIHRvIG1h
bm51YWxseSBDb252ZXJ0IDE2Yml0IHBlci1jb21wb25lbnQgZm9ybWF0cyB0byBSR0JBOCBmb3Jt
YXRzIGluc3RlYWQuCiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gMTYpIHsKLSAgICAgICAg
bV9mb3JtYWxpemVkUkdCQThEYXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KChDaGVja2Vk
PHNpemVfdD4obV9pbWFnZVdpZHRoKSAqIG1faW1hZ2VIZWlnaHQgKiA0VSkudW5zYWZlR2V0KCkp
OworICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhf
dD4oQ2hlY2tlZDxzaXplX3Q+KG1faW1hZ2VXaWR0aCkgKiBtX2ltYWdlSGVpZ2h0ICogNFUpOwog
ICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAgICAgICB1aW50OF90KiBkZXN0aW5hdGlv
biA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsKICAgICAgICAgY29uc3QgcHRyZGlmZl90
IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJvdyAvIHNpemVvZih1aW50MTZfdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggYzEyYjJmODBjMGIzMjI4Yzg2MTVmM2I4ODdhYTFl
OGVmYTA1YTI2OS4uZTRkOWI3YzJmZmU5NjAyZWVhNmViNzI4NjBjZGM3ZjUzNGI4MTIxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtNjAsOCArNjAsNyBAQCBwcml2YXRlOgogdW5zaWdu
ZWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplKQogewogICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsK
LSAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cgPSAoQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLndpZHRoKCkpICogNCk7
Ci0gICAgcmV0dXJuIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpOworICAgIHJldHVybiBDaGVja2Vk
VWludDMyKGJhY2tlbmRTaXplLndpZHRoKCkpICogNDsKIH0KIAogUmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBiOGFlMmY3ZmM0Yjc1MjQ0
MzdlYTYzZmFkNGRmOGE0N2ZjM2JmOGVlLi5lZjVlNWZiOWUxMzY0YWY2NzU3ZTUwZjhiOGVmMTcy
YmZjMGQ2MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC01MTMsOCArNTEzLDcgQEAgYm9vbCBJbWFnZURl
Y29kZXJDRzo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogCiB1bnNp
Z25lZCBJbWFnZURlY29kZXJDRzo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBmcmFt
ZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICBy
ZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gZnJh
bWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkuYXJlYSgpICogNDsKIH0KIAog
UGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAK
aW5kZXggZGI1OTMxMmI4ZWZhOTM0N2YwODdjOGQ4YTI2NmFjMTVhNTk0ZmU5Yi4uNWFhZGU3MjQ2
NzRkMzQwZTU2NTFiNDYxYTU4ZmJlZGZmNzQwZTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwCkBAIC05Niw3ICs5Niw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWluCiAgICAgICAgIFsm
XShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYgYnl0ZVNvdXJjZSkgLT4g
c2l6ZV90CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBzaXplUmVhZCA9IDA7Ci0gICAg
ICAgICAgICBpZiAoTVRQbHVnaW5CeXRlU291cmNlUmVhZChieXRlU291cmNlLmdldCgpLCBzaXpl
VG9SZWFkLCBDaGVja2VkSW50NjQocG9zaXRpb24pLnVuc2FmZUdldCgpLCBkZXN0aW5hdGlvbiwg
JnNpemVSZWFkKSAhPSBub0VycikKKyAgICAgICAgICAgIGlmIChNVFBsdWdpbkJ5dGVTb3VyY2VS
ZWFkKGJ5dGVTb3VyY2UuZ2V0KCksIHNpemVUb1JlYWQsIENoZWNrZWRJbnQ2NChwb3NpdGlvbiks
IGRlc3RpbmF0aW9uLCAmc2l6ZVJlYWQpICE9IG5vRXJyKQogICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgcmV0dXJuIHNpemVSZWFkOwogICAgICAgICB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKaW5kZXggNzU4OGRjZGFkY2M5YWExZTJiYWM0YjllOGEyNTUwNDMxN2M1OWMyZi4u
MzgwNjVjYjk2YzdiNGI0YjAzZmM2YjBlZWQ4NWFjNGI2Yzk2OGE1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgaW5saW5lIHZvaWQgbHVtaW5hbmNlKGZsb2F0JiBy
ZWQsIGZsb2F0JiBncmVlbiwgZmxvYXQmIGJsdWUsIGZsb2F0JiBhbHBoYSkKIHRlbXBsYXRlPENv
bG9yTWF0cml4VHlwZSBmaWx0ZXJUeXBlPgogYm9vbCBlZmZlY3RBcHBseUFjY2VsZXJhdGVkKFVp
bnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMs
IGZsb2F0IGNvbXBvbmVudHNbOV0sIEludFNpemUgYnVmZmVyU2l6ZSkKIHsKLSAgICBBU1NFUlQo
cGl4ZWxBcnJheS5sZW5ndGgoKSA9PSBidWZmZXJTaXplLmFyZWEoKS51bnNhZmVHZXQoKSAqIDQp
OworICAgIEFTU0VSVChwaXhlbEFycmF5Lmxlbmd0aCgpID09IGJ1ZmZlclNpemUuYXJlYSgpICog
NCk7CiAgICAgCiAgICAgaWYgKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJ
WCkgewogICAgICAgICAvLyB2SW1hZ2VNYXRyaXhNdWx0aXBseV9BUkdCODg4OCB0YWtlcyBhIDR4
NCBtYXRyaXgsIGlmIGFueSB2YWx1ZSBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIEZFQ29sb3JN
YXRyaXggNXg0IG1hdHJpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCBhODBlMDE0NTRkYjBk
YzZmMTQ0ODA0MmIwMDFhOTEzM2M1NzllOGNiLi4wOGU4NWEwOGFhMDFiMDgxMjIzZjM2ZWJiNmJi
YjhhYjM2Mzk0MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtNTQxLDcgKzU0MSw3IEBA
IHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbnRT
aXplIHBhaW50U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwogICAgIHBhaW50U2l6
ZS5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKLSAgICBhdXRvIHRtcEltYWdlRGF0YSA9
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUuYXJl
YSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIGF1dG8gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFt
cGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQocGFpbnRTaXplLmFyZWEoKSAqIDQpOwog
ICAgIGlmICghdG1wSW1hZ2VEYXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNw
cAppbmRleCAxNWUxOWI4ODE4ODFiZjFkOWRiM2RhZjBhYzg1NzdmYTBkMzM1ZTM0Li5hYzIzNDZl
OGE0YmE1OGFhYTkyNGE2ZDY3YmQ1ZTRiNzdkZDIyNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBA
IC00MjYsNyArNDI2LDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgaW50IGhlaWdodCA9IHJlc3VsdFNpemUuaGVpZ2h0KCk7CiAKICAgICB1bnNpZ25l
ZCBtYXhOdW1UaHJlYWRzID0gaGVpZ2h0IC8gODsKLSAgICB1bnNpZ25lZCBvcHRpbWFsVGhyZWFk
TnVtYmVyID0gc3RkOjptaW48dW5zaWduZWQ+KGFyZWEudW5zYWZlR2V0KCkgLyBzX21pbmltYWxS
ZWN0RGltZW5zaW9uLCBtYXhOdW1UaHJlYWRzKTsKKyAgICB1bnNpZ25lZCBvcHRpbWFsVGhyZWFk
TnVtYmVyID0gc3RkOjptaW48dW5zaWduZWQ+KGFyZWEgLyBzX21pbmltYWxSZWN0RGltZW5zaW9u
LCBtYXhOdW1UaHJlYWRzKTsKICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEpIHsKICAg
ICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8RmlsbFJlZ2lvblBhcmFtZXRlcnM+IHBhcmFsbGVsSm9i
cygmV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2VyLCBvcHRpbWFsVGhyZWFk
TnVtYmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGZkNzc0Y2E5M2FmNjExNDQzMjNkNjY0
MTkzNzczNDQzZjFkMGExOTYuLjVkNjdlYzU0ZDQ2OWU0NmI4ZGViMzNjOTdhNTYzNDMzZjM1NDJk
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJl
Y3QmIHJlY3QsCiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJlYTxSZWNvcmRP
dmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoY2hlY2tlZEFyZWEudW5zYWZlR2V0KCkpOwor
ICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKGNoZWNrZWRBcmVhKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoKnBpeGVsQXJyYXksIHJlY3Qs
IGNvbG9yU3BhY2UpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3Qs
CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4o
KSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoY2hlY2tlZEFyZWEudW5zYWZlR2V0KCkpOworICAgIGF1dG8g
cGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGNo
ZWNrZWRBcmVhKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KCpwaXhlbEFycmF5LCByZWN0LCBjb2xvclNw
YWNlKTsKQEAgLTM4NCw3ICszODQsNyBAQCBzdGF0aWMgdm9pZCBjb3B5UHJlbXVsdGlwbHlpbmdB
bHBoYShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZQogICAgIHZJ
bWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5vRmxhZ3Mp
OwogI2Vsc2UKICAgICBjb25zdCB1aW50OF90KiBzb3VyY2VDb21wb25lbnQgPSBzb3VyY2UuZGF0
YSgpOwotICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHNvdXJjZUNvbXBvbmVudCArIChpbnB1dFNp
emUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CisgICAgY29uc3QgdWludDhfdCogZW5kID0gc291
cmNlQ29tcG9uZW50ICsgKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS52YWx1ZSgpOwogICAgIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gZGVzdGluYXRpb24uZGF0YSgpOwogCiAgICAgd2hp
bGUgKHNvdXJjZUNvbXBvbmVudCA8IGVuZCkgewpAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRpYyB2
b2lkIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dXJjZSwgVWludDhDbGFtCiAgICAgdkltYWdlVW5wcmVtdWx0aXBseURhdGFfUkdCQTg4ODgoJnNy
YywgJmRlc3QsIGt2SW1hZ2VOb0ZsYWdzKTsKICNlbHNlCiAgICAgY29uc3QgdWludDhfdCogc291
cmNlQ29tcG9uZW50ID0gc291cmNlLmRhdGEoKTsKLSAgICBjb25zdCB1aW50OF90KiBlbmQgPSBz
b3VyY2VDb21wb25lbnQgKyAoaW5wdXRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOworICAg
IGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHNvdXJjZUNvbXBvbmVudCArIChpbnB1dFNpemUuYXJlYSgp
ICogNCkudmFsdWUoKTsKICAgICB1aW50OF90KiBkZXN0aW5hdGlvbkNvbXBvbmVudCA9IGRlc3Rp
bmF0aW9uLmRhdGEoKTsKICAgICB3aGlsZSAoc291cmNlQ29tcG9uZW50IDwgZW5kKSB7CiAgICAg
ICAgIGludCBhbHBoYSA9IHNvdXJjZUNvbXBvbmVudFszXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVC
aW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQppbmRleCA2MzE0NzRjYTc5OTg3ODdkMDA1MmY3MTY2
YmQ3NWNhOTc0MGFkYzk0Li44NmUzNDhjMjEwZmUwMWNjZmUwMmI2MDU2YjkwZTg2YTgzNWU3ZDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCkBAIC03
NCw3ICs3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8R1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVu
dEJ1ZmZlck9mZnNldHM+IEdQVUJpbmRHcm91cEFsbG9jYXRvCiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCi0gICAgYXV0byBuZXdPZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgp
OworICAgIGF1dG8gbmV3T2Zmc2V0ID0gY2hlY2tlZE9mZnNldC52YWx1ZSgpOwogCiAgICAgaWYg
KG1fYXJndW1lbnRCdWZmZXIgJiYgbmV3T2Zmc2V0ID4gbV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5s
ZW5ndGgpIHsKICAgICAgICAgaWYgKCFyZWFsbG9jYXRlKG5ld09mZnNldCkpCkBAIC0xNDAsNyAr
MTQwLDcgQEAgYm9vbCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnJlYWxsb2NhdGUoTlNVSW50ZWdl
ciBuZXdPZmZzZXQpCiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIG5l
d0J1ZmZlciA9IFttX2FyZ3VtZW50QnVmZmVyLmdldCgpLmRldmljZSBuZXdCdWZmZXJXaXRoTGVu
Z3RoOm5ld0xlbmd0aC51bnNhZmVHZXQoKSBvcHRpb25zOjBdOworICAgIG5ld0J1ZmZlciA9IFtt
X2FyZ3VtZW50QnVmZmVyLmdldCgpLmRldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOm5ld0xlbmd0
aC52YWx1ZSgpIG9wdGlvbnM6MF07CiAgICAgbWVtY3B5KG5ld0J1ZmZlci5jb250ZW50cywgbV9h
cmd1bWVudEJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5sZW5n
dGgpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21t
YW5kQnVmZmVyTWV0YWwubW0KaW5kZXggMzQyZWZkZDBiZGQwMzYxMzhmZTkzZWI2ODljYTlmYjdk
MDIzZWVkYy4uOWUxZGNjNmIxNmQwMjM0YjNlYzRkMWMzMzA3ZGM4ZGM1ZWFlMWMxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1h
bmRCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCkBAIC0xMTEsNyArMTExLDcgQEAgdm9p
ZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBz
cmMsIHVpbnQ2NF90IHNyY09mZnMKICAgICBhdXRvIHNyY0xlbmd0aCA9IGNoZWNrZWRTdW08TlNV
SW50ZWdlcj4oc2l6ZSwgc3JjT2Zmc2V0KTsKICAgICBhdXRvIGRzdExlbmd0aCA9IGNoZWNrZWRT
dW08TlNVSW50ZWdlcj4oc2l6ZSwgZHN0T2Zmc2V0KTsKICAgICBpZiAoc3JjTGVuZ3RoLmhhc092
ZXJmbG93ZWQoKSB8fCBkc3RMZW5ndGguaGFzT3ZlcmZsb3dlZCgpCi0gICAgICAgIHx8IHNyY0xl
bmd0aC51bnNhZmVHZXQoKSA+IHNyYy0+Ynl0ZUxlbmd0aCgpIHx8IGRzdExlbmd0aC51bnNhZmVH
ZXQoKSA+IGRzdC0+Ynl0ZUxlbmd0aCgpKSB7CisgICAgICAgIHx8IHNyY0xlbmd0aCA+IHNyYy0+
Ynl0ZUxlbmd0aCgpIHx8IGRzdExlbmd0aCA+IGRzdC0+Ynl0ZUxlbmd0aCgpKSB7CiAgICAgICAg
IExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52
YWxpZCBvZmZzZXQgb3IgY29weSBzaXplISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJl
bmRlclBhc3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQppbmRleCBhYzY4OGRhZWEz
ZWZkOWIzMDA1MzRkNWFlYjYyYThhYzQyMGEwYzg4Li45YzM1NWUyM2ExODA5NzEwNzdkMWZhMWJj
ZDE1OWNkOGZiYmI5NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJN
ZXRhbC5tbQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRy
YXdJbmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291CiAgICAg
ICAgIGluZGV4Q291bnQ6aW5kZXhDb3VudAogICAgICAgICBpbmRleFR5cGU6bXRsSW5kZXhUeXBl
Rm9yR1BVSW5kZXhGb3JtYXQoKm1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0KCkpCiAgICAgICAgIGlu
ZGV4QnVmZmVyOm1faW5kZXhCdWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAgaW5kZXhC
dWZmZXJPZmZzZXQ6dG90YWxPZmZzZXQudW5zYWZlR2V0KCkKKyAgICAgICAgaW5kZXhCdWZmZXJP
ZmZzZXQ6dG90YWxPZmZzZXQudmFsdWUoKQogICAgICAgICBpbnN0YW5jZUNvdW50Omluc3RhbmNl
Q291bnQKICAgICAgICAgYmFzZVZlcnRleDpiYXNlVmVydGV4CiAgICAgICAgIGJhc2VJbnN0YW5j
ZTpmaXJzdEluc3RhbmNlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
aW5kZXggZWQxMzVhMjczZTE2MDA5ZTU3OTJkMjFmYjliNWViZTllOGU0Yzc5ZS4uOTUxNGJjMzZi
NTg1ZTNlMjY1MDI1MjAzZjE2ZDFiODEwNGJjYTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVj
b2RlckdTdHJlYW1lci5jcHAKQEAgLTE4Myw4ICsxODMsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbAogICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51
bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkuYXJlYSgpICogNDsKIH0KIAogUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwCmluZGV4
IGM3OTE1ZmI1NWRlMzNmNjZjYmZhYTkyMTM2MGIxOTk1NjQyZDljYzQuLjU0ZTlkMTliYjE5NTFl
MDAxZjE3ZjNjN2JlNWFhMDg4ZWZjNzIyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBCdWZmZXI6OkJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncykKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiB7CiAgICAgYXV0byBjaGVja2VkQXJl
YSA9IHNpemUuYXJlYSgpICogNDsKLSAgICBtX2RhdGEgPSBNYWxsb2NQdHI8dW5zaWduZWQgY2hh
cj46OnRyeVplcm9lZE1hbGxvYyhjaGVja2VkQXJlYS51bnNhZmVHZXQoKSk7CisgICAgbV9kYXRh
ID0gTWFsbG9jUHRyPHVuc2lnbmVkIGNoYXI+Ojp0cnlaZXJvZWRNYWxsb2MoY2hlY2tlZEFyZWEp
OwogfQogCiBCdWZmZXI6On5CdWZmZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmNwcApp
bmRleCAzMjRhZDlhNzQwYzFjZjgzZWY5NzFlZDNiYmNjM2QxYjRkZGJjZDQ5Li4xOWQ1ZTU2ZDgy
M2IxYzAxNmI4NDA0NTg5MWNkMmQ4NGYzOGJkYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCBDT01QdHI8SVdJQ0JpdG1hcD4gY3JlYXRlRGlyZWN0MkRJbWFnZVN1
cmZhY2VXaXRoRGF0YSh2b2lkKiBkYXRhLCBjb25zdCBJbnRTaXplJgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIENPTVB0cjxJV0lDQml0bWFwPiBzdXJmYWNlOwotICAgIEhSRVNVTFQg
aHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRl
Qml0bWFwRnJvbU1lbW9yeShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIHdpY0JpdG1hcEZv
cm1hdCgpLCBzdHJpZGUsIHN0YXRpY19jYXN0PFVJTlQ+KG51bUJ5dGVzLnVuc2FmZUdldCgpKSwg
cmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0YSksICZzdXJmYWNlKTsKKyAgICBIUkVTVUxUIGhy
ID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJp
dG1hcEZyb21NZW1vcnkoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCB3aWNCaXRtYXBGb3Jt
YXQoKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxVSU5UPihudW1CeXRlcy52YWx1ZSgpKSwgcmVpbnRl
cnByZXRfY2FzdDxCWVRFKj4oZGF0YSksICZzdXJmYWNlKTsKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmNwcAppbmRleCBmYTIwODdlZTIxMWUzOWQ2MzM4MmRlZjgzN2RhMGZiYzQ2YTA2N2Mz
Li45MjI0MzZkMThhMzUyNmFjYzUzMjlhNTYwNDU2MGE0NmFkNmQwY2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQx
UmVuZGVyVGFyZ2V0KgogCiAgICAgQ09NUHRyPElEMkQxQml0bWFwMT4gc291cmNlQ1BVQml0bWFw
OwogICAgIEQyRDFfQklUTUFQX1BST1BFUlRJRVMxIGJpdG1hcFByb3BlcnRpZXMgPSBEMkQxOjpC
aXRtYXBQcm9wZXJ0aWVzMShEMkQxX0JJVE1BUF9PUFRJT05TX0NQVV9SRUFEIHwgRDJEMV9CSVRN
QVBfT1BUSU9OU19DQU5OT1RfRFJBVywgRGlyZWN0MkQ6OnBpeGVsRm9ybWF0KCkpOwotICAgIEhS
RVNVTFQgaHIgPSBzb3VyY2VEZXZpY2VDb250ZXh0LT5DcmVhdGVCaXRtYXAobV9iaXRtYXAtPkdl
dFBpeGVsU2l6ZSgpLCBudWxscHRyLCBieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgYml0bWFwUHJv
cGVydGllcywgJnNvdXJjZUNQVUJpdG1hcCk7CisgICAgSFJFU1VMVCBociA9IHNvdXJjZURldmlj
ZUNvbnRleHQtPkNyZWF0ZUJpdG1hcChtX2JpdG1hcC0+R2V0UGl4ZWxTaXplKCksIG51bGxwdHIs
IGJ5dGVzUGVyUm93LCBiaXRtYXBQcm9wZXJ0aWVzLCAmc291cmNlQ1BVQml0bWFwKTsKICAgICBp
ZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAppbmRleCA5YzEwYTQ2NGEzYTkzMDllN2I1NGNhZTI4YTdiYzU2Nzc1ZGU3
OTI0Li5kMWY4YjRhYjgzZmYzNTZkZGYxN2RhYzQ2ODM5YjkzZTNkMmI1OTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAKQEAgLTIzMCw4ICsyMzAsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29k
ZXJEaXJlY3QyRDo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsCiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
YXV0byBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
KTsKLSAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKKyAgICBy
ZXR1cm4gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkuYXJlYSgpICog
NDsKIH0KIAogdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0VGFyZ2V0Q29udGV4dChJRDJE
MVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGRkYjExNDM5NDc0NDBkNzE3ZTgzM2NiZDNjN2Q2ZGMyMWEyMDNiZWEuLmU4MTE1NDJm
MzRmMDFkOWUwMzlmYzUxZjI0M2FlMmViOGVmNmJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB1bnNpZ25lZCBTY2FsYWJsZUltYWdlRGVjb2Rl
cjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4g
MDsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBkaW1lbnNpb24gb2YgdGhlIHJlcXVlc3RlZCBmcmFt
ZS4KLSAgICByZXR1cm4gKG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVH
ZXQoKTsKKyAgICByZXR1cm4gbV9zaXplLmFyZWEoKSAqIHNpemVvZih1aW50MzJfdCk7CiB9CiAK
IFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVf
dCBpbmRleCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCA1YTMwYTFmNWYwNDYyNGNhYTY2NGVmOWQyNjA0ODkxMjRjMjc1NjdhLi5iZWNm
NjQ1MDI3N2VlYjc0YjA5ZGU1MmVlMTgyZmY2ZTExZWQyNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
ZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCkBAIC02MCwxMiArNjAsMTIgQEAgc3RhdGlj
IHZvaWQgc3ljY1RvUkdCKGludCBvZmZzZXQsIGludCB1cGIsIGludCB5LCBpbnQgY2IsIGludCBj
ciwgaW50KiByLCBpbnQqIGcKIHN0YXRpYyB2b2lkIHN5Y2M0NDRUb1JHQihvcGpfaW1hZ2VfdCog
aW1nKQogewogICAgIENoZWNrZWQ8aW50PiB1cGIgPSBzdGF0aWNfY2FzdDxpbnQ+KGltZy0+Y29t
cHNbMF0ucHJlYyk7Ci0gICAgaW50IG9mZnNldCA9IDEgPDwgKHVwYi51bnNhZmVHZXQoKSAtIDEp
OwotICAgIHVwYiA9ICgxIDw8IHVwYi51bnNhZmVHZXQoKSkgLSAxOworICAgIGludCBvZmZzZXQg
PSAxIDw8ICh1cGIudmFsdWUoKSAtIDEpOworICAgIHVwYiA9ICgxIDw8IHVwYi52YWx1ZSgpKSAt
IDE7CiAKICAgICBDaGVja2VkPHNpemVfdD4gbWF4dyA9IHN0YXRpY19jYXN0PHNpemVfdD4oaW1n
LT5jb21wc1swXS53KTsKICAgICBDaGVja2VkPHNpemVfdD4gbWF4aCA9IHN0YXRpY19jYXN0PHNp
emVfdD4oaW1nLT5jb21wc1swXS5oKTsKLSAgICBzaXplX3QgbWF4ID0gKG1heHcgKiBtYXhoKS51
bnNhZmVHZXQoKTsKKyAgICBzaXplX3QgbWF4ID0gKG1heHcgKiBtYXhoKS52YWx1ZSgpOwogCiAg
ICAgY29uc3QgaW50KiB5ID0gaW1nLT5jb21wc1swXS5kYXRhOwogICAgIGNvbnN0IGludCogY2Ig
PSBpbWctPmNvbXBzWzFdLmRhdGE7CkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHN5Y2M0
NDRUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbWF4OyArK2kpIHsKLSAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdl
dCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1
cGIudmFsdWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKICAgICAgICAgKyt5OwogICAgICAg
ICArK2NiOwogICAgICAgICArK2NyOwpAQCAtMTA3LDEyICsxMDcsMTIgQEAgc3RhdGljIHZvaWQg
c3ljYzQ0NFRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiBzdGF0aWMgdm9pZCBzeWNjNDIyVG9SR0Io
b3BqX2ltYWdlX3QqIGltZykKIHsKICAgICBDaGVja2VkPGludD4gdXBiID0gc3RhdGljX2Nhc3Q8
aW50PihpbWctPmNvbXBzWzBdLnByZWMpOwotICAgIGludCBvZmZzZXQgPSAxIDw8ICh1cGIudW5z
YWZlR2V0KCkgLSAxKTsKLSAgICB1cGIgPSAoMSA8PCB1cGIudW5zYWZlR2V0KCkpIC0gMTsKKyAg
ICBpbnQgb2Zmc2V0ID0gMSA8PCAodXBiLnZhbHVlKCkgLSAxKTsKKyAgICB1cGIgPSAoMSA8PCB1
cGIudmFsdWUoKSkgLSAxOwogCiAgICAgQ2hlY2tlZDxzaXplX3Q+IG1heHcgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGltZy0+Y29tcHNbMF0udyk7CiAgICAgQ2hlY2tlZDxzaXplX3Q+IG1heGggPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGltZy0+Y29tcHNbMF0uaCk7Ci0gICAgc2l6ZV90IG1heCA9ICht
YXh3ICogbWF4aCkudW5zYWZlR2V0KCk7CisgICAgc2l6ZV90IG1heCA9IChtYXh3ICogbWF4aCku
dmFsdWUoKTsKIAogICAgIGNvbnN0IGludCogeSA9IGltZy0+Y29tcHNbMF0uZGF0YTsKICAgICBj
b25zdCBpbnQqIGNiID0gaW1nLT5jb21wc1sxXS5kYXRhOwpAQCAtMTM0LDEzICsxMzQsMTMgQEAg
c3RhdGljIHZvaWQgc3ljYzQyMlRvUkdCKG9wal9pbWFnZV90KiBpbWcpCiAKICAgICAvLyBpZiBp
bWctPngwIGlzIG9kZCwgdGhlbiBmaXJzdCBjb2x1bW4gc2hhbGwgdXNlIENiL0NyID0gMC4KICAg
ICBzaXplX3Qgb2ZmeCA9IGltZy0+eDAgJiAxVTsKLSAgICBzaXplX3QgbG9vcG1heHcgPSBtYXh3
LnVuc2FmZUdldCgpIC0gb2ZmeDsKKyAgICBzaXplX3QgbG9vcG1heHcgPSBtYXh3LnZhbHVlKCkg
LSBvZmZ4OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhoLnVuc2FmZUdldCgpOyAr
K2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heGgudmFsdWUoKTsgKytpKSB7CiAg
ICAgICAgIHNpemVfdCBqOwogCiAgICAgICAgIGlmIChvZmZ4ID4gMCkgewotICAgICAgICAgICAg
c3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgMCwgMCwgciwgZywgYik7Cisg
ICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksIDAsIDAsIHIsIGcs
IGIpOwogICAgICAgICAgICAgKyt5OwogICAgICAgICAgICAgKytyOwogICAgICAgICAgICAgKytn
OwpAQCAtMTQ4LDEyICsxNDgsMTIgQEAgc3RhdGljIHZvaWQgc3ljYzQyMlRvUkdCKG9wal9pbWFn
ZV90KiBpbWcpCiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGxvb3BtYXh3
ICYgfnN0YXRpY19jYXN0PHNpemVfdD4oMVUpKTsgaiArPSAyVSkgewotICAgICAgICAgICAgc3lj
Y1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOwor
ICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICp5LCAqY2IsICpjciwg
ciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAgICAgICAgICArK3I7CiAgICAgICAgICAg
ICArK2c7CiAgICAgICAgICAgICArK2I7Ci0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1
cGIudW5zYWZlR2V0KCksICp5LCAqY2IsICpjciwgciwgZywgYik7CisgICAgICAgICAgICBzeWNj
VG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKICAgICAg
ICAgICAgICsreTsKICAgICAgICAgICAgICsrcjsKICAgICAgICAgICAgICsrZzsKQEAgLTE2Miw3
ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCBzeWNjNDIyVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKICAg
ICAgICAgICAgICsrY3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGogPCBsb29wbWF4dykgewot
ICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgKmNiLCAq
Y3IsIHIsIGcsIGIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCks
ICp5LCAqY2IsICpjciwgciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAgICAgICAgICAr
K3I7CiAgICAgICAgICAgICArK2c7CkBAIC0xODksMTIgKzE4OSwxMiBAQCBzdGF0aWMgdm9pZCBz
eWNjNDIyVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKIHN0YXRpYyB2b2lkIHN5Y2M0MjBUb1JHQihv
cGpfaW1hZ2VfdCogaW1nKQogewogICAgIENoZWNrZWQ8aW50PiB1cGIgPSBzdGF0aWNfY2FzdDxp
bnQ+KGltZy0+Y29tcHNbMF0ucHJlYyk7Ci0gICAgaW50IG9mZnNldCA9IDEgPDwgKHVwYi51bnNh
ZmVHZXQoKSAtIDEpOwotICAgIHVwYiA9ICgxIDw8IHVwYi51bnNhZmVHZXQoKSkgLSAxOworICAg
IGludCBvZmZzZXQgPSAxIDw8ICh1cGIudmFsdWUoKSAtIDEpOworICAgIHVwYiA9ICgxIDw8IHVw
Yi52YWx1ZSgpKSAtIDE7CiAKICAgICBDaGVja2VkPHNpemVfdD4gbWF4dyA9IHN0YXRpY19jYXN0
PHNpemVfdD4oaW1nLT5jb21wc1swXS53KTsKICAgICBDaGVja2VkPHNpemVfdD4gbWF4aCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oaW1nLT5jb21wc1swXS5oKTsKLSAgICBzaXplX3QgbWF4ID0gKG1h
eHcgKiBtYXhoKS51bnNhZmVHZXQoKTsKKyAgICBzaXplX3QgbWF4ID0gKG1heHcgKiBtYXhoKS52
YWx1ZSgpOwogCiAgICAgY29uc3QgaW50KiB5ID0gaW1nLT5jb21wc1swXS5kYXRhOwogICAgIGNv
bnN0IGludCogY2IgPSBpbWctPmNvbXBzWzFdLmRhdGE7CkBAIC0yMTYsMTUgKzIxNiwxNSBAQCBz
dGF0aWMgdm9pZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKIAogICAgIC8vIGlmIGlt
Zy0+eDAgaXMgb2RkLCB0aGVuIGZpcnN0IGNvbHVtbiBzaGFsbCB1c2UgQ2IvQ3IgPSAwLgogICAg
IHNpemVfdCBvZmZ4ID0gaW1nLT54MCAmIDFVOwotICAgIHNpemVfdCBsb29wbWF4dyA9IG1heHcu
dW5zYWZlR2V0KCkgLSBvZmZ4OworICAgIHNpemVfdCBsb29wbWF4dyA9IG1heHcudmFsdWUoKSAt
IG9mZng7CiAgICAgLy8gaWYgaW1nLT55MCBpcyBvZGQsIHRoZW4gZmlyc3QgbGluZSBzaGFsbCB1
c2UgQ2IvQ3IgPSAwLgogICAgIHNpemVfdCBvZmZ5ID0gaW1nLT55MCAmIDFVOwotICAgIHNpemVf
dCBsb29wbWF4aCA9IG1heGgudW5zYWZlR2V0KCkgLSBvZmZ5OworICAgIHNpemVfdCBsb29wbWF4
aCA9IG1heGgudmFsdWUoKSAtIG9mZnk7CiAKICAgICBpZiAob2ZmeSA+IDApIHsKICAgICAgICAg
c2l6ZV90IGo7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBtYXh3LnVuc2FmZUdldCgpOyArK2op
IHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKnksIDAs
IDAsIHIsIGcsIGIpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbWF4dy52YWx1ZSgpOyArK2op
IHsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqeSwgMCwgMCwg
ciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAgICAgICAgICArK3I7CiAgICAgICAgICAg
ICArK2c7CkBAIC0yMzQsMTggKzIzNCwxOCBAQCBzdGF0aWMgdm9pZCBzeWNjNDIwVG9SR0Iob3Bq
X2ltYWdlX3QqIGltZykKIAogICAgIHNpemVfdCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCAobG9v
cG1heGggJiB+c3RhdGljX2Nhc3Q8c2l6ZV90PigxVSkpOyBpICs9IDJVKSB7Ci0gICAgICAgIGNv
bnN0IGludCogbnkgPSB5ICsgbWF4dy51bnNhZmVHZXQoKTsKLSAgICAgICAgaW50KiBuciA9IHIg
KyBtYXh3LnVuc2FmZUdldCgpOwotICAgICAgICBpbnQqIG5nID0gZyArIG1heHcudW5zYWZlR2V0
KCk7Ci0gICAgICAgIGludCogbmIgPSBiICsgbWF4dy51bnNhZmVHZXQoKTsKKyAgICAgICAgY29u
c3QgaW50KiBueSA9IHkgKyBtYXh3LnZhbHVlKCk7CisgICAgICAgIGludCogbnIgPSByICsgbWF4
dy52YWx1ZSgpOworICAgICAgICBpbnQqIG5nID0gZyArIG1heHcudmFsdWUoKTsKKyAgICAgICAg
aW50KiBuYiA9IGIgKyBtYXh3LnZhbHVlKCk7CiAKICAgICAgICAgaWYgKG9mZnggPiAwKSB7Ci0g
ICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0KCksICp5LCAwLCAwLCBy
LCBnLCBiKTsKKyAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqeSwg
MCwgMCwgciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAgICAgICAgICArK3I7CiAgICAg
ICAgICAgICArK2c7CiAgICAgICAgICAgICArK2I7Ci0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zm
c2V0LCB1cGIudW5zYWZlR2V0KCksICpueSwgKmNiLCAqY3IsIG5yLCBuZywgbmIpOworICAgICAg
ICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICpueSwgKmNiLCAqY3IsIG5yLCBu
ZywgbmIpOwogICAgICAgICAgICAgKytueTsKICAgICAgICAgICAgICsrbnI7CiAgICAgICAgICAg
ICArK25nOwpAQCAtMjU0LDIzICsyNTQsMjMgQEAgc3RhdGljIHZvaWQgc3ljYzQyMFRvUkdCKG9w
al9pbWFnZV90KiBpbWcpCiAKICAgICAgICAgc2l6ZV90IGo7CiAgICAgICAgIGZvciAoaiA9IDA7
IGogPCAobG9vcG1heHcgJiB+c3RhdGljX2Nhc3Q8c2l6ZV90PigxVSkpOyBqICs9IDJVKSB7Ci0g
ICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0KCksICp5LCAqY2IsICpj
ciwgciwgZywgYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwg
KnksICpjYiwgKmNyLCByLCBnLCBiKTsKICAgICAgICAgICAgICsreTsKICAgICAgICAgICAgICsr
cjsKICAgICAgICAgICAgICsrZzsKICAgICAgICAgICAgICsrYjsKLSAgICAgICAgICAgIHN5Y2NU
b1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKKyAg
ICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqeSwgKmNiLCAqY3IsIHIs
IGcsIGIpOwogICAgICAgICAgICAgKyt5OwogICAgICAgICAgICAgKytyOwogICAgICAgICAgICAg
KytnOwogICAgICAgICAgICAgKytiOwogCi0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1
cGIudW5zYWZlR2V0KCksICpueSwgKmNiLCAqY3IsIG5yLCBuZywgbmIpOworICAgICAgICAgICAg
c3ljY1RvUkdCKG9mZnNldCwgdXBiLnZhbHVlKCksICpueSwgKmNiLCAqY3IsIG5yLCBuZywgbmIp
OwogICAgICAgICAgICAgKytueTsKICAgICAgICAgICAgICsrbnI7CiAgICAgICAgICAgICArK25n
OwogICAgICAgICAgICAgKytuYjsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51
bnNhZmVHZXQoKSwgKm55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7CisgICAgICAgICAgICBzeWNj
VG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKm55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7CiAg
ICAgICAgICAgICArK255OwogICAgICAgICAgICAgKytucjsKICAgICAgICAgICAgICsrbmc7CkBA
IC0yNzksMTMgKzI3OSwxMyBAQCBzdGF0aWMgdm9pZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3Qq
IGltZykKICAgICAgICAgICAgICsrY3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGogPCBsb29w
bWF4dykgewotICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAq
eSwgKmNiLCAqY3IsIHIsIGcsIGIpOworICAgICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBi
LnZhbHVlKCksICp5LCAqY2IsICpjciwgciwgZywgYik7CiAgICAgICAgICAgICArK3k7CiAgICAg
ICAgICAgICArK3I7CiAgICAgICAgICAgICArK2c7CiAgICAgICAgICAgICArK2I7CiAKLSAgICAg
ICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKm55LCAqY2IsICpjciwg
bnIsIG5nLCBuYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwg
Km55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7CiAgICAgICAgICAgICArK255OwogICAgICAgICAg
ICAgKytucjsKICAgICAgICAgICAgICsrbmc7CkBAIC0yOTMsMjIgKzI5MywyMiBAQCBzdGF0aWMg
dm9pZCBzeWNjNDIwVG9SR0Iob3BqX2ltYWdlX3QqIGltZykKICAgICAgICAgICAgICsrY2I7CiAg
ICAgICAgICAgICArK2NyOwogICAgICAgICB9Ci0gICAgICAgIHkgKz0gbWF4dy51bnNhZmVHZXQo
KTsKLSAgICAgICAgciArPSBtYXh3LnVuc2FmZUdldCgpOwotICAgICAgICBnICs9IG1heHcudW5z
YWZlR2V0KCk7Ci0gICAgICAgIGIgKz0gbWF4dy51bnNhZmVHZXQoKTsKKyAgICAgICAgeSArPSBt
YXh3LnZhbHVlKCk7CisgICAgICAgIHIgKz0gbWF4dy52YWx1ZSgpOworICAgICAgICBnICs9IG1h
eHcudmFsdWUoKTsKKyAgICAgICAgYiArPSBtYXh3LnZhbHVlKCk7CiAgICAgfQogICAgIGlmIChp
IDwgbG9vcG1heGgpIHsKICAgICAgICAgc2l6ZV90IGo7Ci0gICAgICAgIGZvciAoaiA9IDA7IGog
PCAobWF4dy51bnNhZmVHZXQoKSAmIH5zdGF0aWNfY2FzdDxzaXplX3Q+KDFVKSk7IGogKz0gMlUp
IHsKLSAgICAgICAgICAgIHN5Y2NUb1JHQihvZmZzZXQsIHVwYi51bnNhZmVHZXQoKSwgKnksICpj
YiwgKmNyLCByLCBnLCBiKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IChtYXh3LnZhbHVlKCkg
JiB+c3RhdGljX2Nhc3Q8c2l6ZV90PigxVSkpOyBqICs9IDJVKSB7CisgICAgICAgICAgICBzeWNj
VG9SR0Iob2Zmc2V0LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKIAogICAg
ICAgICAgICAgKyt5OwogICAgICAgICAgICAgKytyOwogICAgICAgICAgICAgKytnOwogICAgICAg
ICAgICAgKytiOwogCi0gICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0LCB1cGIudW5zYWZlR2V0
KCksICp5LCAqY2IsICpjciwgciwgZywgYik7CisgICAgICAgICAgICBzeWNjVG9SR0Iob2Zmc2V0
LCB1cGIudmFsdWUoKSwgKnksICpjYiwgKmNyLCByLCBnLCBiKTsKIAogICAgICAgICAgICAgKyt5
OwogICAgICAgICAgICAgKytyOwpAQCAtMzE3LDggKzMxNyw4IEBAIHN0YXRpYyB2b2lkIHN5Y2M0
MjBUb1JHQihvcGpfaW1hZ2VfdCogaW1nKQogICAgICAgICAgICAgKytjYjsKICAgICAgICAgICAg
ICsrY3I7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGogPCBtYXh3LnVuc2FmZUdldCgpKQotICAg
ICAgICAgICAgc3ljY1RvUkdCKG9mZnNldCwgdXBiLnVuc2FmZUdldCgpLCAqeSwgKmNiLCAqY3Is
IHIsIGcsIGIpOworICAgICAgICBpZiAoaiA8IG1heHcudmFsdWUoKSkKKyAgICAgICAgICAgIHN5
Y2NUb1JHQihvZmZzZXQsIHVwYi52YWx1ZSgpLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOwogICAg
IH0KIAogICAgIG9wal9pbWFnZV9kYXRhX2ZyZWUoaW1nLT5jb21wc1swXS5kYXRhKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KaW5k
ZXggMmY0NTI1NmY0ODAzOTAyYmM4MWQyZTk5YzdjZDg0YTcyOGQzYTIxNi4uYjRmZDc4OGQ5M2M1
OTdlNTIyNDkwOWM4MjkzN2I5OTdjZmJkZTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KQEAgLTUzLDcgKzUzLDcgQEAgTGVn
YWN5VGlsZUxheWVyUG9vbCogTGVnYWN5VGlsZUxheWVyUG9vbDo6c2hhcmVkUG9vbCgpCiAKIHVu
c2lnbmVkIExlZ2FjeVRpbGVMYXllclBvb2w6OmJ5dGVzQmFja2luZ0xheWVyV2l0aFBpeGVsU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiAoc2l6ZS5hcmVhKCkgKiA0KS51
bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gc2l6ZS5hcmVhKCkgKiA0OwogfQogCiBMZWdhY3lUaWxl
TGF5ZXJQb29sOjpMYXllckxpc3QmIExlZ2FjeVRpbGVMYXllclBvb2w6Omxpc3RPZkxheWVyc1dp
dGhTaXplKGNvbnN0IEludFNpemUmIHNpemUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKaW5kZXggYzFj
MGQ3NTRjNDhkZTMwMTgwZDk3OTQzN2E5NzBlMDViY2ZlNTBlOC4uMmM1Yzc1MzMyMDkzZDE2ZmMz
MzMwNzg3MGMyNjAzY2Y0YTdjYWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBTdHJpbmcgVGV4dENv
ZGVjVVRGMTY6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBm
bHVzaCwgYm9vbAogCiBWZWN0b3I8dWludDhfdD4gVGV4dENvZGVjVVRGMTY6OmVuY29kZShTdHJp
bmdWaWV3IHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZykgY29uc3QKIHsKLSAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KFdURjo6Y2hlY2tlZFByb2R1Y3Q8c2l6ZV90PihzdHJpbmcubGVuZ3Ro
KCksIDIpLnVuc2FmZUdldCgpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KFdURjo6Y2hl
Y2tlZFByb2R1Y3Q8c2l6ZV90PihzdHJpbmcubGVuZ3RoKCksIDIpKTsKICAgICBhdXRvKiBieXRl
cyA9IHJlc3VsdC5kYXRhKCk7CiAKICAgICBpZiAobV9saXR0bGVFbmRpYW4pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCmluZGV4IDUxZGY2OWM0
NTBjODViZGIyODI5YzNlMWRjYTk4NWMxZGQ4NDM1NjkuLmQxYTdjZjUzZGRkN2ZjOWI1YmVlNDUz
OWQ0MGU1NzkyMjQ2YWJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVVRGOC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEY4LmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIFZlY3Rvcjx1aW50OF90PiBUZXh0
Q29kZWNVVEY4OjplbmNvZGVVVEY4KFN0cmluZ1ZpZXcgc3RyaW5nLCBVbmVuY29kYWJsZUhhbmRs
aW5nCiAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIFVURi04IGJ5dGVzIG5lZWRlZCBwZXIg
VVRGLTE2IGNvZGUgdW5pdCBpcyAzLgogICAgIC8vIEJNUCBjaGFyYWN0ZXJzIHRha2Ugb25seSBv
bmUgVVRGLTE2IGNvZGUgdW5pdCBhbmQgY2FuIHRha2UgdXAgdG8gMyBieXRlcyAoM3gpLgogICAg
IC8vIE5vbi1CTVAgY2hhcmFjdGVycyB0YWtlIHR3byBVVEYtMTYgY29kZSB1bml0cyBhbmQgY2Fu
IHRha2UgdXAgdG8gNCBieXRlcyAoMngpLgotICAgIFZlY3Rvcjx1aW50OF90PiBieXRlcyhXVEY6
OmNoZWNrZWRQcm9kdWN0PHNpemVfdD4oc3RyaW5nLmxlbmd0aCgpLCAzKS51bnNhZmVHZXQoKSk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzKFdURjo6Y2hlY2tlZFByb2R1Y3Q8c2l6ZV90Pihz
dHJpbmcubGVuZ3RoKCksIDMpKTsKICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gMDsKICAgICBm
b3IgKGF1dG8gY2hhcmFjdGVyIDogc3RyaW5nLmNvZGVQb2ludHMoKSkKICAgICAgICAgVThfQVBQ
RU5EX1VOU0FGRShieXRlcy5kYXRhKCksIGJ5dGVzV3JpdHRlbiwgY2hhcmFjdGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggYzAzNmQ4NTgzYjMzYmNkNzk1NjIwMjM1MWUzNGU5MWQ3ZjAxN2VmNy4uYjdkYWIxYjY5ODE0
NzgzYjM2MjM3NjliNGU0NjZmYzQ2NWM1M2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTMwNjcsNyArMzA2Nyw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFz
KFJlbmRlckxheWVyTW9kZWxPYmplY3QmCiAjaWYgIVVTRShDT01QT1NJVElOR19GT1JfU01BTExf
Q0FOVkFTRVMpCiAgICAgYXV0byogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KHJlbmRlcmVyLmVsZW1lbnQoKSk7CiAgICAgYXV0byBjYW52YXNBcmVhID0gY2FudmFzLT5zaXpl
KCkuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKTsKLSAgICBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3Jj
ZUNvbXBvc2l0aW5nID0gIWNhbnZhc0FyZWEuaGFzT3ZlcmZsb3dlZCgpICYmIGNhbnZhc0FyZWEu
dW5zYWZlR2V0KCkgPj0gY2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nOwor
ICAgIGlzQ2FudmFzTGFyZ2VFbm91Z2hUb0ZvcmNlQ29tcG9zaXRpbmcgPSAhY2FudmFzQXJlYS5o
YXNPdmVyZmxvd2VkKCkgJiYgY2FudmFzQXJlYSA+PSBjYW52YXNBcmVhVGhyZXNob2xkUmVxdWly
aW5nQ29tcG9zaXRpbmc7CiAjZW5kaWYKIAogICAgIENhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kg
Y29tcG9zaXRpbmdTdHJhdGVneSA9IGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA3NTlmNDZh
MmIyZTc3OTkyODZjMjViMzkxOGJlMjMyZmYzOGZlNmVhLi42ZDM3YmQyMGE1ZWEyMTIwYmFhNGEz
ZWI1OGRkODg5ZGRjM2I5MDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6
OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAg
aW50IG1pbkJ1ZmZlclkgPSBzdGQ6Om1heCgwLCBtYXJnaW5SZWN0LnkoKSAtIGltYWdlUmVjdC55
KCkpOwogICAgIGludCBtYXhCdWZmZXJZID0gc3RkOjptaW4oaW1hZ2VSZWN0LmhlaWdodCgpLCBt
YXJnaW5SZWN0Lm1heFkoKSAtIGltYWdlUmVjdC55KCkpOwogCi0gICAgaWYgKChpbWFnZVJlY3Qu
YXJlYSgpICogNCkudW5zYWZlR2V0KCkgPT0gcGl4ZWxBcnJheUxlbmd0aCkgeworICAgIGlmICgo
aW1hZ2VSZWN0LmFyZWEoKSAqIDQpID09IHBpeGVsQXJyYXlMZW5ndGgpIHsKICAgICAgICAgZm9y
IChpbnQgeSA9IG1pbkJ1ZmZlclk7IHkgPCBtYXhCdWZmZXJZOyArK3kpIHsKICAgICAgICAgICAg
IGludCBzdGFydFggPSAtMTsKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VS
ZWN0LndpZHRoKCk7ICsreCwgcGl4ZWxBcnJheU9mZnNldCArPSA0KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTWFwLmNwcAppbmRleCAzMDQ1YzQ0ODU3OGVlM2NjM2VlYmFiMjVlY2Y2ZjNk
MGZlMGVmNThiLi41MzQ2MjM2ODc4NWIwMDJmYjEyNzYyMWFjYzdlYzM4ZTZkZjdmOWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAgLTEwMiwxMSArMTAyLDExIEBAIHZv
aWQgU3RvcmFnZU1hcDo6c2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgU3RyaW5nJiBvbGRWYWx1CiAgICAgbmV3U2l6ZSArPSB2YWx1ZS5zaXplSW5CeXRlcygp
OwogICAgIGlmIChvbGRWYWx1ZS5pc051bGwoKSkKICAgICAgICAgbmV3U2l6ZSArPSBrZXkuc2l6
ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9xdW90YVNpemUgIT0gbm9RdW90YSAmJiAobmV3U2l6ZS5o
YXNPdmVyZmxvd2VkKCkgfHwgbmV3U2l6ZS51bnNhZmVHZXQoKSA+IG1fcXVvdGFTaXplKSkgewor
ICAgIGlmIChtX3F1b3RhU2l6ZSAhPSBub1F1b3RhICYmIChuZXdTaXplLmhhc092ZXJmbG93ZWQo
KSB8fCBuZXdTaXplID4gbV9xdW90YVNpemUpKSB7CiAgICAgICAgIHF1b3RhRXhjZXB0aW9uID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2ltcGwtPmN1cnJlbnRTaXplID0g
bmV3U2l6ZS51bnNhZmVHZXQoKTsKKyAgICBtX2ltcGwtPmN1cnJlbnRTaXplID0gbmV3U2l6ZTsK
IAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9p
bXBsLT5tYXAuYWRkKGtleSwgdmFsdWUpOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAppbmRleCBhY2Q1
YWE3MjYxNDY1ZGVlNTNmZDBiMmM0ODJlZmQwNGRkMDZkMTQ4Li41YmIyODBiOGJkNjFmOThkMmE5
YTgzYmU5ZGMxZWIyNWNiZDU4OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNo
ZWV0TGlieHNsdC5jcHAKQEAgLTE0MywxMiArMTQzLDEyIEBAIGJvb2wgWFNMU3R5bGVTaGVldDo6
cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICAgICBhdXRvIHVwY29udmVydGVk
Q2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcoc3RyaW5nKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsK
ICAgICBjb25zdCBjaGFyKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1
cGNvbnZlcnRlZENoYXJhY3RlcnMuZ2V0KCkpOwotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PiB1bnNpZ25lZFNpemUgPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgQ2hlY2tlZFVp
bnQzMiB1bnNpZ25lZFNpemUgPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWRTaXplICo9
IHNpemVvZihVQ2hhcik7Ci0gICAgaWYgKHVuc2lnbmVkU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwg
dW5zaWduZWRTaXplLnVuc2FmZUdldCgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQorICAgIGlmICh1bnNpZ25lZFNpemUuaGFzT3ZlcmZs
b3dlZCgpIHx8IHVuc2lnbmVkU2l6ZSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVy
aWNfbGltaXRzPGludD46Om1heCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50
IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHVuc2lnbmVkU2l6ZS51bnNhZmVHZXQoKSk7CisgICAg
aW50IHNpemUgPSB1bnNpZ25lZFNpemUudmFsdWU8aW50PigpOwogICAgIHhtbFBhcnNlckN0eHRQ
dHIgY3R4dCA9IHhtbENyZWF0ZU1lbW9yeVBhcnNlckN0eHQoYnVmZmVyLCBzaXplKTsKICAgICBp
ZiAoIWN0eHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGM3NjliZjg2ODI5M2ZmYzkyNThjYWI2MjA5ZWIx
Y2ZkODY5NWYwMmUuLjU3ZWU1ZGVkMjRiZGEyNzVlNTg2YmRmNjEzMmE1MjQ1NWFiYWNjOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMjI0LDcg
KzIyNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiogeHNsdFBhcmFtQXJyYXlGcm9tUGFyYW1ldGVy
TWFwKFhTTFRQcm9jZXNzb3I6OlBhcmFtZXRlck1hcCYKICAgICBpZiAocGFyYW1ldGVycy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBzaXplID0gKCgoQ2hlY2tlZDxz
aXplX3Q+KHBhcmFtZXRlcnMuc2l6ZSgpKSAqIDJVKSArIDFVKSAqIHNpemVvZihjaGFyKikpLnVu
c2FmZUdldCgpOworICAgIGF1dG8gc2l6ZSA9ICgoKENoZWNrZWQ8c2l6ZV90PihwYXJhbWV0ZXJz
LnNpemUoKSkgKiAyVSkgKyAxVSkgKiBzaXplb2YoY2hhciopKS52YWx1ZSgpOwogICAgIGF1dG8q
KiBwYXJhbWV0ZXJBcnJheSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqKj4oZmFzdE1hbGxvYyhz
aXplKSk7CiAKICAgICBzaXplX3QgaW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaAppbmRl
eCAzMDhhZDU2ZDI0NGE3MGI2OWM4YmUyNWE5NjJhODAzMzgzODg3MzNlLi5mNzQ5MGY2YzU2YzM2
MDljMTFkNTBkYjUxZTA5MzY1YTE2NjY4MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaApAQCAt
MTA5LDExICsxMDksMTEgQEAgYm9vbCBjb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBTdHJpbmdCdWlsZGVyJiBkZWNvZGVkQ2gKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJzsnKSB7CiAgICAgICAgICAgICAgICAgc291
cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwotICAgICAgICAgICAgICAgIGRlY29kZWRDaGFy
YWN0ZXIuYXBwZW5kQ2hhcmFjdGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlGb3IocmVz
dWx0Lmhhc092ZXJmbG93ZWQoKSA/IDAgOiByZXN1bHQudW5zYWZlR2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZENoYXJhY3RlcihQYXJzZXJGdW5jdGlvbnM6
OmxlZ2FsRW50aXR5Rm9yKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkgPyAwIDogcmVzdWx0LnZhbHVl
KCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChQYXJzZXJGdW5jdGlvbnM6OmFjY2VwdE1hbGZvcm1lZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rpb25z
OjpsZWdhbEVudGl0eUZvcihyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpID8gMCA6IHJlc3VsdC51bnNh
ZmVHZXQoKSkpOworICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kQ2hhcmFj
dGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlGb3IocmVzdWx0Lmhhc092ZXJmbG93ZWQo
KSA/IDAgOiByZXN1bHQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNv
bnN1bWVkQ2hhcmFjdGVycyk7CkBAIC0xMjcsMTEgKzEyNywxMSBAQCBib29sIGNvbnN1bWVDaGFy
YWN0ZXJSZWZlcmVuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFN0cmluZ0J1aWxkZXImIGRl
Y29kZWRDaAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnOycp
IHsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7Ci0gICAg
ICAgICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rp
b25zOjpsZWdhbEVudGl0eUZvcihyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpID8gMCA6IHJlc3VsdC51
bnNhZmVHZXQoKSkpOworICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kQ2hh
cmFjdGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlGb3IocmVzdWx0Lmhhc092ZXJmbG93
ZWQoKSA/IDAgOiByZXN1bHQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFBhcnNlckZ1bmN0aW9uczo6YWNjZXB0
TWFsZm9ybWVkKCkpIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZENo
YXJhY3RlcihQYXJzZXJGdW5jdGlvbnM6OmxlZ2FsRW50aXR5Rm9yKHJlc3VsdC5oYXNPdmVyZmxv
d2VkKCkgPyAwIDogcmVzdWx0LnVuc2FmZUdldCgpKSk7CisgICAgICAgICAgICAgICAgZGVjb2Rl
ZENoYXJhY3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZv
cihyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpID8gMCA6IHJlc3VsdC52YWx1ZSgpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB1bmNvbnN1
bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAppbmRleCBjYjUwMTE2N2I0ZGQ1NzJjNGM1YzI5ODEzODJmMTI2Y2IyOTc4ZmU3Li41
MDM5NmVlM2VjYjZhZTg5MzRjYzVjNzE1MGY5MzgzYzFmMzc0NjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAg
ICAgICAgY2hlY2tlZE9mZnNldCArPSByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQ7CiAgICAgICAg
IE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUoIWNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZs
b3dlZCgpLCBudWxscHRyLCAiT3ZlcmZsb3dlZCB3aGVuIGFkdmFuY2luZyBzaGFyZWQgZGlzcGxh
eSBsaXN0IGhhbmRsZSBvZmZzZXQiKTsKIAotICAgICAgICBvZmZzZXQgPSBjaGVja2VkT2Zmc2V0
LnVuc2FmZUdldCgpOworICAgICAgICBvZmZzZXQgPSBjaGVja2VkT2Zmc2V0OwogICAgICAgICBN
RVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKG9mZnNldCA8PSBoYW5kbGUuc2hhcmVkTWVt
b3J5KCkuc2l6ZSgpLCBudWxscHRyLCAiT3V0LW9mLWJvdW5kcyBvZmZzZXQgaW50byBzaGFyZWQg
ZGlzcGxheSBsaXN0IGhhbmRsZSIpOwogCiAgICAgICAgIGlmIChyZXN1bHQucmVhc29uRm9yU3Rv
cHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlSZWFzb246OkNoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDUxODdi
YmI1NTI5MmYxNzA5Yjc0YmYyN2YzNGU3Zjk0NmVlYzk5YzguLmU4YmU1MDVmMzdlZmU3OWNkMWUx
YjM4ZGJkZmM5ZjM2NDQ2Nzg2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApA
QCAtMjMwLDExICsyMzAsMTEgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2V0SXRlbShj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgU3RyaW4KICAgICAgICAgbmV3
RGF0YWJhc2VTaXplICs9IHZhbHVlLnNpemVJbkJ5dGVzKCk7CiAgICAgICAgIGlmIChvbGRWYWx1
ZS5pc051bGwoKSkKICAgICAgICAgICAgIG5ld0RhdGFiYXNlU2l6ZSArPSBrZXkuc2l6ZUluQnl0
ZXMoKTsKLSAgICAgICAgaWYgKG5ld0RhdGFiYXNlU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgbmV3
RGF0YWJhc2VTaXplLnVuc2FmZUdldCgpID4gbV9xdW90YUluQnl0ZXMpIHsKKyAgICAgICAgaWYg
KG5ld0RhdGFiYXNlU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgbmV3RGF0YWJhc2VTaXplID4gbV9x
dW90YUluQnl0ZXMpIHsKICAgICAgICAgICAgIHF1b3RhRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2RhdGFiYXNlU2l6ZSA9IG5ld0Rh
dGFiYXNlU2l6ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgbV9kYXRhYmFzZVNpemUgPSBuZXdEYXRh
YmFzZVNpemU7CiAgICAgfQogCiAgICAgYXV0byBpbnNlcnRTdGF0ZW1lbnQgPSBzY29wZWRTdGF0
ZW1lbnQobV9pbnNlcnRTdGF0ZW1lbnQsICJJTlNFUlQgSU5UTyBJdGVtVGFibGUgVkFMVUVTICg/
LCA/KSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDY0MDE2YjBjZTIwOTA4
OWE5ODFiY2UyMjQ5Nzc4ZjgyYWQ2NDhjODMuLjM3YjI1NGI5MGUwNDFlN2UwMjMyNjY1M2QwOWNm
MDJjYWFhZDRkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC00NDEsNyArNDQx
LDcgQEAgdm9pZCBDYWNoZTo6cHV0KFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9jYWNoZXMucmVxdWVzdFNwYWNlKHNwYWNlUmVxdWlyZWQudW5zYWZlR2V0KCksIFtjYWNo
ZXMgPSBtYWtlUmVmKG1fY2FjaGVzKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgcmVjb3Jk
cyA9IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6
b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBt
X2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZCwgW2NhY2hlcyA9IG1ha2VSZWYobV9j
YWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNv
cmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxET01DYWNo
ZUVuZ2luZTo6RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCmluZGV4IGNlMDhmMWJiZTE0ZjYxMGM0M2VkNGZlYTAxODg2ZDM2NWUyM2IwNDguLmM5
N2E2ZjU3NmVmZGFlYWUwNGY2OTgzYmUyNTk0MmNlMjAzOWZlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtOTYsNyArOTYsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJh
eVJlZmVyZW5jZUR5bmFtaQogICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZs
b3dlZCgpKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgY29u
c3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoZGF0
YVNpemUudW5zYWZlR2V0KCksIGFsaWdub2YoVCkpOworICAgICAgICBjb25zdCB1aW50OF90KiBk
YXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6ZSwgYWxpZ25v
ZihUKSk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUKj4oZGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDEy
ZDg2MzJhOTZlMzM3ZGU1ZDUzNTJiMTMxMmE3ODM5YmFiNjBmNDIuLjM4OTgyMDA5NzhlNDM1NDk3
ZDM4MDc0MDFlMzY2YTE5Mjg3NDc4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTMwOSw3ICszMDksNyBAQCBib29s
IENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5j
b2RlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzaXplX3Qgc2Fm
ZU1lc3NhZ2VTaXplID0gbWVzc2FnZVNpemUudW5zYWZlR2V0KCk7CisgICAgc2l6ZV90IHNhZmVN
ZXNzYWdlU2l6ZSA9IG1lc3NhZ2VTaXplOwogICAgIGF1dG8gbWVzc2FnZSA9IE1hY2hNZXNzYWdl
OjpjcmVhdGUoZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSwgc2FmZU1lc3NhZ2VTaXplKTsKICAgICBp
ZiAoIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hf
bXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUoYm9keSwgYm9keVNpemUudW5z
YWZlR2V0KCksIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOworICAgICAgICByZXR1
cm4gRGVjb2Rlcjo6Y3JlYXRlKGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNo
bWVudD4geyB9KTsKICAgICB9CiAKICAgICBtYWNoX21zZ19ib2R5X3QqIGJvZHkgPSByZWludGVy
cHJldF9jYXN0PG1hY2hfbXNnX2JvZHlfdCo+KGhlYWRlciArIDEpOwpAQCAtNDc2LDcgKzQ3Niw3
IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIo
bWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgcmV0dXJuIERlY29kZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlT
aXplLnVuc2FmZUdldCgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0
dXJuIERlY29kZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRy
LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXpl
IHNob3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKaW5kZXggY2Ew
Y2Q3N2JjNWY4YjA0NDM3YmM1MTQ3ZTBjZmU4NTExMDY3YTQ0Ny4uYzU5NGUwNDE5MmM2MGY0MTUw
OGEwMjVlOTliMjU0ZDFjYTgyYTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TWFjaE1lc3NhZ2U+IE1hY2hNZXNzYWdlOjpjcmVhdGUoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUsIHNpemVfdAogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IENoZWNrZWRTaXplKHNpemVvZihNYWNo
TWVzc2FnZSkpICsgc2l6ZTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHZvaWQqIG1lbW9yeSA9IFdURjo6ZmFzdFplcm9l
ZE1hbGxvYyhidWZmZXJTaXplLnVuc2FmZUdldCgpKTsKKyAgICB2b2lkKiBtZW1vcnkgPSBXVEY6
OmZhc3RaZXJvZWRNYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBtZXNz
YWdlTmFtZSwgc2l6ZSB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRt
YXAuY3BwCmluZGV4IGY2YTVjNzU2ZTJmMjdmY2EwNTE0OGY2NmM2MWFiZDc0NGU2OGEwMTEuLjJk
OGY3YzVmZGI2YzliN2ZhNTRhNGQ0MjQyOTgyMWE2MTZiMmYyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtNDMsNyArNDMsNyBAQCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZTo6SGFuZGxlKCkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBpcGNIYW5kbGUoV1RGTW92ZShtX2hhbmRsZSksIG51bUJ5dGVzRm9yU2l6ZShtX3Np
emUsIG1fY29uZmlndXJhdGlvbikudW5zYWZlR2V0KCkpOworICAgIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGlwY0hhbmRsZShXVEZNb3ZlKG1faGFuZGxlKSwgbnVtQnl0ZXNGb3JTaXplKG1fc2l6
ZSwgbV9jb25maWd1cmF0aW9uKSk7CiAgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CiAgICAgZW5j
b2RlciA8PCBtX3NpemU7CiAgICAgZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247CkBAIC0xMTcs
NyArMTE3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICB2b2lkKiBkYXRhID0gMDsKLSAgICBkYXRhID0gU2hhcmVhYmxlQml0bWFwTWFs
bG9jOjp0cnlNYWxsb2MobnVtQnl0ZXMudW5zYWZlR2V0KCkpOworICAgIGRhdGEgPSBTaGFyZWFi
bGVCaXRtYXBNYWxsb2M6OnRyeU1hbGxvYyhudW1CeXRlcyk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJp
dG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBkYXRhKSk7CkBAIC0xMjksNyArMTI5LDcgQEAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ28KICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUobnVtQnl0ZXMudW5zYWZlR2V0KCkpOwor
ICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxs
b2NhdGUobnVtQnl0ZXMpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpCiAg
ICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25maWd1cmF0aW9uKTsK
ICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBudW1CeXRlcy51bnNhZmVHZXQoKSkg
eworICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IG51bUJ5dGVzKSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IGU2MzhlODY4MTFkNDc5ZmY3ZTc5
OTRlMzM5NGU2YWQ1NDM0YTZjNzQuLmM3NWIyMDUxODE0NDdjOGRjYmZlY2VhOTcwOGNkYjAxZDE1
NTRlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0xNjIsMTAg
KzE2MiwxMCBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdm9pZCogZGF0YSgpIGNvbnN0Owot
ICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVy
Um93KG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKS51bnNhZmVHZXQoKTsgfQorICAgIHNpemVfdCBi
eXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fc2l6ZSwg
bV9jb25maWd1cmF0aW9uKTsgfQogICAgIAogcHJpdmF0ZToKLSAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplLCBtX2NvbmZpZ3VyYXRp
b24pLnVuc2FmZUdldCgpOyB9CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1
cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKTsgfQogCiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBtX3NpemU7CiAgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYTQ3M2Fi
ZjA5OGM1NmExNGZmZTVjODJkMjk2NDgwNzg0MmUwMTc0MS4uYzI1N2ZhMTFkNjJhMzE0YzI4NjJk
Y2Q3M2IxNmE3ODJjODEzNTIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4g
U2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZShSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lCiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBTaGFyZWFibGVSZXNvdXJjZSBmcm9t
IFNoYXJlZE1lbW9yeSBkdWUgdG8gb3ZlcmZsb3cuIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICBpZiAodG90YWxTaXplLnVuc2FmZUdldCgpID4gc2hhcmVkTWVtb3J5LT5z
aXplKCkpIHsKKyAgICBpZiAodG90YWxTaXplID4gc2hhcmVkTWVtb3J5LT5zaXplKCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIFNoYXJlYWJsZVJlc291cmNlIGZyb20g
U2hhcmVkTWVtb3J5IGR1ZSB0byBtaXNtYXRjaGVkIGJ1ZmZlciBzaXplLiIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKaW5kZXggMWQwNmY0NmMyZjM0NmI5MWM0ODE3MmExMjZlNzY5OWY5ZWI0
MTRkYS4uMGZmYzY0ODAzZjdkODAyNzI3YzJlZTdjMjRmNDAyM2RiNGI2MmNmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtNzYsNyArNzYs
NyBAQCBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gU2hhcmVhYmxlQml0bWFwOjpj
YWxjdWxhdGVCeXRlc1BlclJvdyhXZWJDb3JlOgogI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIGlm
IChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBieXRlc1BlclJv
dzsKLSAgICByZXR1cm4gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0eShrSU9TdXJmYWNlQnl0ZXNQZXJS
b3csIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpKTsKKyAgICByZXR1cm4gSU9TdXJmYWNlQWxpZ25Q
cm9wZXJ0eShrSU9TdXJmYWNlQnl0ZXNQZXJSb3csIGJ5dGVzUGVyUm93KTsKICNlbHNlCiAgICAg
cmV0dXJuIGJ5dGVzUGVyUm93OwogI2VuZGlmCkBAIC05Nyw3ICs5Nyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCkKICAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZVdpdGhEYXRhKGRhdGEoKSwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudC51bnNhZmVHZXQoKSwgYnl0
ZXNQZXJSb3cudW5zYWZlR2V0KCksIGNvbG9yU3BhY2UobV9jb25maWd1cmF0aW9uKSwgYml0bWFw
SW5mbyhtX2NvbmZpZ3VyYXRpb24pLCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsK
KyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGVXaXRoRGF0YShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJ5dGVzUGVyUm93LCBjb2xvclNwYWNlKG1fY29u
ZmlndXJhdGlvbiksIGJpdG1hcEluZm8obV9jb25maWd1cmF0aW9uKSwgcmVsZWFzZUJpdG1hcENv
bnRleHREYXRhLCB0aGlzKSk7CiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtMTYzLDcgKzE2Myw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YVByb3Zp
CiAgICAgaWYgKGJ5dGVzUGVyUm93Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYml0c1BlclBpeGVsLnVu
c2FmZUdldCgpIC8gNCwgYml0c1BlclBpeGVsLnVuc2FmZUdldCgpLCBieXRlc1BlclJvdy51bnNh
ZmVHZXQoKSwgY29sb3JTcGFjZShtX2NvbmZpZ3VyYXRpb24pLCBiaXRtYXBJbmZvKG1fY29uZmln
dXJhdGlvbiksIGRhdGFQcm92aWRlciwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VD
cmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYml0c1BlclBpeGVsIC8gNCwg
Yml0c1BlclBpeGVsLCBieXRlc1BlclJvdywgY29sb3JTcGFjZShtX2NvbmZpZ3VyYXRpb24pLCBi
aXRtYXBJbmZvKG1fY29uZmlndXJhdGlvbiksIGRhdGFQcm92aWRlciwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IDliYmIyMmFhNmE2MTE5MTMyMzkyODJjMzBmYjJj
MGU1YWI4YmNjMWMuLmMxODRlNDQ3YjJjZDQ0MmE4NDdlYzMxNjIzMzZiNmZhZjc4NzNjN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YUZvcm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIE9TU3Rh
dHVzIE1lZGlhRm9ybWF0UmVhZGVyOjpjb3B5VHJhY2tBcnJheShDRkFycmF5UmVmKiB0cmFja0Fy
cmF5Q29weSkKICAgICBpZiAoKm1fcGFyc2VUcmFja3NTdGF0dXMgIT0gbm9FcnIpCiAgICAgICAg
IHJldHVybiAqbV9wYXJzZVRyYWNrc1N0YXR1czsKIAotICAgIGF1dG8gbXV0YWJsZUFycmF5ID0g
YWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShhbGxvY2F0b3IoKSwgQ2hlY2tlZDxDRkluZGV4
PihtX3RyYWNrUmVhZGVycy5zaXplKCkpLnVuc2FmZUdldCgpLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKSk7CisgICAgYXV0byBtdXRhYmxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRh
YmxlKGFsbG9jYXRvcigpLCBDaGVja2VkPENGSW5kZXg+KG1fdHJhY2tSZWFkZXJzLnNpemUoKSks
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrUmVhZGVyIDog
bV90cmFja1JlYWRlcnMpCiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShtdXRhYmxlQXJyYXku
Z2V0KCksIHRyYWNrUmVhZGVyLT53cmFwcGVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vy
c29yLmNwcAppbmRleCBmMjQ5NzViMTlhMDk1ZWRhNzBjNzRhMjNjZTkzNzc3ZjVlNjUwZmMzLi5j
ZTI5MDZkYzQ0MjliODc1MTRhN2IwMGMzMjE3MzkyZDUwN2IzZjk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUN1cnNvci5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCBPU1N0YXR1cyBNZWRpYVNhbXBs
ZUN1cnNvcjo6Y29weVNhbXBsZUxvY2F0aW9uKE1UUGx1Z2luU2FtcGxlQ3Vyc29yU3RvcmFnZVJh
bmdlKgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNh
bXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNh
bXBsZVR5cGUpOwogICAgICAgICBhdXRvIGJ5dGVSYW5nZSA9ICpzYW1wbGUuYnl0ZVJhbmdlKCk7
CiAgICAgICAgICpzdG9yYWdlUmFuZ2UgPSB7Ci0gICAgICAgICAgICAub2Zmc2V0ID0gQ2hlY2tl
ZEludDY0KGJ5dGVSYW5nZS5ieXRlT2Zmc2V0KS51bnNhZmVHZXQoKSwKLSAgICAgICAgICAgIC5s
ZW5ndGggPSBDaGVja2VkSW50NjQoYnl0ZVJhbmdlLmJ5dGVMZW5ndGgpLnVuc2FmZUdldCgpLAor
ICAgICAgICAgICAgLm9mZnNldCA9IENoZWNrZWRJbnQ2NChieXRlUmFuZ2UuYnl0ZU9mZnNldCks
CisgICAgICAgICAgICAubGVuZ3RoID0gQ2hlY2tlZEludDY0KGJ5dGVSYW5nZS5ieXRlTGVuZ3Ro
KSwKICAgICAgICAgfTsKICAgICAgICAgKmJ5dGVTb3VyY2UgPSByZXRhaW5QdHIoc2FtcGxlLnBs
YXRmb3JtU2FtcGxlKCkuc2FtcGxlLmJ5dGVSYW5nZVNhbXBsZS5maXJzdCkubGVha1JlZigpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAppbmRleCA4ZmYzNjVjZDM0
MmE4MjZkYTA0NDkzYmI2NzI5NGMyYzUxZmEwNDM3Li4yODE5ODc3ZjRkZWFkNTQxZTlmNDIzMDUz
NzY3OTMzZGM0Y2NkMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcApAQCAt
MzMsOCArMzMsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc2l6ZV90IERpc3BsYXlM
aXN0V3JpdGVySGFuZGxlOjphZHZhbmNlKHNpemVfdCBhbW91bnQpCiB7Ci0gICAgbV93cml0YWJs
ZU9mZnNldCA9IChDaGVja2VkU2l6ZSB7IG1fd3JpdGFibGVPZmZzZXQgfSArIGFtb3VudCkudW5z
YWZlR2V0KCk7Ci0gICAgcmV0dXJuIChDaGVja2VkU2l6ZSB7IGhlYWRlcigpLnVucmVhZEJ5dGVz
LmV4Y2hhbmdlQWRkKGFtb3VudCkgfSArIGFtb3VudCkudW5zYWZlR2V0KCk7CisgICAgbV93cml0
YWJsZU9mZnNldCA9IENoZWNrZWRTaXplIHsgbV93cml0YWJsZU9mZnNldCB9ICsgYW1vdW50Owor
ICAgIHJldHVybiBDaGVja2VkU2l6ZSB7IGhlYWRlcigpLnVucmVhZEJ5dGVzLmV4Y2hhbmdlQWRk
KGFtb3VudCkgfSArIGFtb3VudDsKIH0KIAogc2l6ZV90IERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
OjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZTNiM2Y3ZGNlNThmMzI3MTM0MzhkZmJiYmUw
NGI3MDhmMDljMTZjNi4uZjViMWZhMGZlZTU5NTAwZmNiNGU5YWYwZGE1YzI3MjA0YTg3NDhmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApA
QCAtNjgsOCArNjgsNyBAQCBJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZQogdW5zaWduZWQgSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSkKIHsKICAg
ICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IGJ5dGVzUGVyUm93ID0gU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVC
eXRlc1BlclJvdyhiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7Ci0gICAg
cmV0dXJuIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpOworICAgIHJldHVybiBTaGFyZWFibGVCaXRt
YXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFt
ZXRlcnMpKTsKIH0KIAogc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuY3BwCmluZGV4IDUzZDAxNTc4MWM0ZGI2NmFhNjQ5MTIwYTdjOGRhYWFmYjM4
NDA4YjQuLjdiYzg3MmIxYzEzYmQ3ODFlMDYwYjM3Y2U4ODNjYzUyOWFjNmVjMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
CiAKIHVuc2lnbmVkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewotICAgIHJldHVybiAoc2l6ZSgpLmFyZWEo
KSAqIDQpLnVuc2FmZUdldCgpOworICAgIHJldHVybiBzaXplKCkuYXJlYSgpICogNDsKIH0KIAog
UGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggOTQyNTE0ODYxNzdjNTUxMGM1N2Y1NjEyOWM0MjU5NmQzMzY5
MmRhNS4uZDBjYjc5ZTVkMWU2NWY4ZTFiZDE5OWM1NDNkZWQwOTE4ZTg0ZjUxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmluY3JlYXNlQnVm
ZmVyZWRBbW91bnQoc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBtX2J1ZmZlcmVkQW1vdW50ID0gY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50LnVu
c2FmZUdldCgpOworICAgIG1fYnVmZmVyZWRBbW91bnQgPSBjaGVja2VkTmV3QnVmZmVyZWRBbW91
bnQ7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRlQnVmZmVy
ZWRBbW91bnQobV9idWZmZXJlZEFtb3VudCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGQ1
YTUwMTc2ZmY0YjJiZmJkYjUyMzFjNTViODFjNTc0OWQzNGRkNmUuLjllZWVkNDhkNmQ0MTAzNTQ2
NGU4YTk2Mjc5MjEyMzA5ZWNjNTZjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xOTc2LDcgKzE5NzYsNyBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZG91Ymxl
IGNvbnRleHRNZW51QXJlYUxpbWl0ID0gZmFjdG9yT2ZDb250ZW50QXJlYSAqIHNjYWxlRmFjdG9y
ICogdW5vYnNjdXJlZENvbnRlbnRBcmVhLnVuc2FmZUdldCgpOworICAgIGRvdWJsZSBjb250ZXh0
TWVudUFyZWFMaW1pdCA9IGZhY3Rvck9mQ29udGVudEFyZWEgKiBzY2FsZUZhY3RvciAqIHVub2Jz
Y3VyZWRDb250ZW50QXJlYS52YWx1ZSgpOwogCiAgICAgRmxvYXRSZWN0IHNlbGVjdGlvbkJvdW5k
c0luUm9vdFZpZXdDb29yZGluYXRlczsKICAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkKQEAg
LTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEV2YXNpb25SZWN0c0Fib3Zl
U2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjCiAKICAgICAgICAgYXV0
byBib3VuZHMgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKSk7CiAgICAgICAgIGF1dG8gYXJlYSA9IGJvdW5kcy5hcmVhKCk7
Ci0gICAgICAgIGlmIChhcmVhLmhhc092ZXJmbG93ZWQoKSB8fCBhcmVhLnVuc2FmZUdldCgpID4g
Y29udGV4dE1lbnVBcmVhTGltaXQpCisgICAgICAgIGlmIChhcmVhLmhhc092ZXJmbG93ZWQoKSB8
fCBhcmVhID4gY29udGV4dE1lbnVBcmVhTGltaXQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBpZiAoYm91bmRzLmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uQm91
bmRzSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSkpCkBAIC00MzE1LDcgKzQzMTUsNyBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGlu
dDY0X3QgbGVuZ3RoRGVsdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBuZXdT
ZWxlY3Rpb25SYW5nZSA9IENoYXJhY3RlclJhbmdlKG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2Fm
ZUdldCgpLCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkpOworICAgIGF1dG8gbmV3U2Vs
ZWN0aW9uUmFuZ2UgPSBDaGFyYWN0ZXJSYW5nZShuZXdTZWxlY3Rpb25Mb2NhdGlvbiwgbmV3U2Vs
ZWN0aW9uTGVuZ3RoKTsKICAgICBhdXRvIHVwZGF0ZWRTZWxlY3Rpb25SYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCBuZXdT
ZWxlY3Rpb25SYW5nZSk7CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uo
dXBkYXRlZFNlbGVjdGlvblJhbmdlLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggOTdlOTBhN2ZjMzFhNWRmODMwYTgwOTA3ZjYzNmI1ZmJlZjgwZGEz
OC4uZWEzZGQ1MDFkYTMxYzJiN2YxYmYwMjNmMDhjZTg5OGNkMjU3NzM2ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisy
MDIxLTA2LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVu
YW1lIENoZWNrZWQ6OnVuc2FmZUdldCgpIHRvIENoZWNrZWQ6OnZhbHVlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjUxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBDaGVja2VkOjp1bnNhZmVH
ZXQoKSB0byBDaGVja2VkOjp2YWx1ZSgpLiBUaGUgInVuc2FmZUdldCIgbmFtaW5nIGlzIGNvbmZ1
c2luZyBhcyB0aGlzCisgICAgICAgIGZ1bmN0aW9uIGlzbid0IHJlYWxseSB1bnNhZmUgc2luY2Ug
aXQgd2lsbCBjcmFzaCBpZiB0aGUgdmFsdWUgaGFzIG92ZXJmbG93ZWQuIEFsc28gYWRkIGFuCisg
ICAgICAgIGBvcGVyYXRvciBUKClgIHRvIGltcGxpY2l0bHkgY29udmVydCBhIENoZWNrZWQgdG8g
aXRzIHVuZGVybHlpbmcgdHlwZSB3aXRob3V0IG5lZWRpbmcgdG8KKyAgICAgICAgY2FsbCB2YWx1
ZSgpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNoZWNrZWRBcml0aG1l
dGljVGVzdGVyOjpydW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6QWxsb3dNaXhlZFNpZ25l
ZG5lc3NUZXN0OjpydW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFJlY3RUZXN0cy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvSW50U2l6ZVRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDIxLTA2LTAxICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFN5bmMgVG9vbHMvd2luL0RMTExhdW5jaGVyL0RMTExhdW5jaGVyTWFpbi5jcHAg
d2l0aCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvRExMTGF1bmNoZXJNYWluLmNwcApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNP
cGVyYXRpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRBcml0
aG1ldGljT3BlcmF0aW9ucy5jcHAKaW5kZXggNmQ5NzcyYzk2MGFjNDA2OTg5NGNhNzU4MDVlNWQ3
M2JiOTFiZTQzOC4uYzQ0YTcwYjc1NWU5YzE1Njc0OTEyNDc4YzdkZDY5OGYxNTQ4N2JlOCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNP
cGVyYXRpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2Vk
QXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCkBAIC04OCwzMiArODgsMzIgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHJ1bigpCiAgICAgewogICAgICAgICBDaGVja2VkPHR5cGUsIFJlY29yZE92
ZXJmbG93PiB2YWx1ZTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIHZhbHVl
LnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlw
ZT46Om1heCgpLCAodmFsdWUgKyBzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptYXgoKSkudW5z
YWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6
bWF4KCksIChzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptYXgoKSArIHZhbHVlKS51bnNhZmVH
ZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptaW4o
KSwgKHZhbHVlICsgc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCkpLnVuc2FmZUdldCgp
KTsKLSAgICAgICAgRVhQRUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1pbigpLCAo
c3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWluKCkgKyB2YWx1ZSkudW5zYWZlR2V0KCkpOwot
Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUgKiBjb2VyY2VMaXRl
cmFsKDApKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDAp
LCAoY29lcmNlTGl0ZXJhbCgwKSAqIHZhbHVlKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUgKiB2YWx1ZSkudW5zYWZlR2V0KCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKHZhbHVlIC0gY29lcmNlTGl0ZXJhbCgw
KSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKGNv
ZXJjZUxpdGVyYWwoMCkgLSB2YWx1ZSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEo
Y29lcmNlTGl0ZXJhbCgwKSwgKHZhbHVlIC0gdmFsdWUpLnVuc2FmZUdldCgpKTsKLSAgICAgICAg
RVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSsrKS51bnNhZmVHZXQoKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEpLCAodmFsdWUtLSkudW5zYWZlR2V0KCkpOwot
ICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxKSwgKCsrdmFsdWUpLnVuc2FmZUdldCgp
KTsKLSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICgtLXZhbHVlKS51bnNhZmVH
ZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEwKSwgKHZhbHVlICs9IGNv
ZXJjZUxpdGVyYWwoMTApKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VM
aXRlcmFsKDEwKSwgdmFsdWUudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNl
TGl0ZXJhbCgxMDApLCAodmFsdWUgKj0gY29lcmNlTGl0ZXJhbCgxMCkpLnVuc2FmZUdldCgpKTsK
LSAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMTAwKSwgdmFsdWUudW5zYWZlR2V0KCkp
OwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgKHZhbHVlIC09IGNvZXJjZUxp
dGVyYWwoMTAwKSkudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJh
bCgwKSwgdmFsdWUudW5zYWZlR2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJh
bCgwKSwgdmFsdWUudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGlt
aXRzPHR5cGU+OjptYXgoKSwgKHZhbHVlICsgc3RkOjpudW1lcmljX2xpbWl0czx0eXBlPjo6bWF4
KCkpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0czx0eXBl
Pjo6bWF4KCksIChzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptYXgoKSArIHZhbHVlKS52YWx1
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZT46Om1pbigp
LCAodmFsdWUgKyBzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptaW4oKSkudmFsdWUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+OjptaW4oKSwgKHN0ZDo6
bnVtZXJpY19saW1pdHM8dHlwZT46Om1pbigpICsgdmFsdWUpLnZhbHVlKCkpOworCisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUgKiBjb2VyY2VMaXRlcmFsKDApKS52
YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksIChjb2VyY2VMaXRl
cmFsKDApICogdmFsdWUpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJh
bCgwKSwgKHZhbHVlICogdmFsdWUpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNl
TGl0ZXJhbCgwKSwgKHZhbHVlIC0gY29lcmNlTGl0ZXJhbCgwKSkudmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAoY29lcmNlTGl0ZXJhbCgwKSAtIHZhbHVlKS52
YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtIHZh
bHVlKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1
ZSsrKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMSksICh2YWx1
ZS0tKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMSksICgrK3Zh
bHVlKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICgtLXZh
bHVlKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMTApLCAodmFs
dWUgKz0gY29lcmNlTGl0ZXJhbCgxMCkpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29l
cmNlTGl0ZXJhbCgxMCksIHZhbHVlLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNl
TGl0ZXJhbCgxMDApLCAodmFsdWUgKj0gY29lcmNlTGl0ZXJhbCgxMCkpLnZhbHVlKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgxMDApLCB2YWx1ZS52YWx1ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSAtPSBjb2VyY2VMaXRlcmFsKDEw
MCkpLnZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoY29lcmNlTGl0ZXJhbCgwKSwgdmFsdWUu
dmFsdWUoKSk7CiAgICAgICAgIHZhbHVlID0gMTA7Ci0gICAgICAgIEVYUEVDVF9FUShjb2VyY2VM
aXRlcmFsKDEwKSwgdmFsdWUudW5zYWZlR2V0KCkpOwotICAgICAgICBFWFBFQ1RfRVEoY29lcmNl
TGl0ZXJhbCgwKSwgKHZhbHVlIC0gY29lcmNlTGl0ZXJhbCgxMCkpLnVuc2FmZUdldCgpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKGNvZXJjZUxpdGVyYWwoMTApLCB2YWx1ZS51bnNhZmVHZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEwKSwgdmFsdWUudmFsdWUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDApLCAodmFsdWUgLSBjb2VyY2VMaXRlcmFsKDEw
KSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUShjb2VyY2VMaXRlcmFsKDEwKSwgdmFsdWUu
dmFsdWUoKSk7CiAKICAgICAgICAgdmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGU+Ojpt
aW4oKTsKICAgICAgICAgRVhQRUNUX0VRKHRydWUsIChDaGVja2VkPHR5cGUsIFJlY29yZE92ZXJm
bG93Pih2YWx1ZSAtIGNvZXJjZUxpdGVyYWwoMSkpKS5oYXNPdmVyZmxvd2VkKCkpOwpAQCAtMzc0
LDEwICszNzQsMTAgQEAgcHVibGljOgogICAgICAgICBDaGVja2VkPHR5cGUsIFJlY29yZE92ZXJm
bG93PiB2YWx1ZTsKICAgICAgICAgdmFsdWUgPSAxMDsKIAotICAgICAgICBFWFBFQ1RfRVEoY29l
cmNlTGl0ZXJhbCgwKSwgKHZhbHVlICsgLTEwKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUSgwVSwgKHZhbHVlIC0gMTBVKS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShj
b2VyY2VMaXRlcmFsKDApLCAoLTEwICsgdmFsdWUpLnVuc2FmZUdldCgpKTsKLSAgICAgICAgRVhQ
RUNUX0VRKDBVLCAoMTBVIC0gdmFsdWUpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KGNvZXJjZUxpdGVyYWwoMCksICh2YWx1ZSArIC0xMCkudmFsdWUoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgwVSwgKHZhbHVlIC0gMTBVKS52YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNvZXJj
ZUxpdGVyYWwoMCksICgtMTAgKyB2YWx1ZSkudmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgw
VSwgKDEwVSAtIHZhbHVlKS52YWx1ZSgpKTsKICAgICAgICAgdmFsdWUgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHR5cGU+OjptaW4oKTsKICAgICAgICAgRVhQRUNUX0VRKHRydWUsIChDaGVja2VkPHR5
cGUsIFJlY29yZE92ZXJmbG93Pih2YWx1ZSAtIDEpKS5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEodHJ1ZSwgISh2YWx1ZS0tKS5oYXNPdmVyZmxvd2VkKCkpOwpAQCAtNDg5LDE0
ICs0ODksMTQgQEAgVEVTVChDaGVja2VkQXJpdGhtZXRpY1Rlc3QsIElzSW5Cb3VuZHMpCiBURVNU
KENoZWNrZWRBcml0aG1ldGljVGVzdCwgRGl2aXNpb24pCiB7CiAgICAgQ2hlY2tlZFNpemUgc2l6
ZSA9IDEwMDsKLSAgICBFWFBFQ1RfRVEoMTAwVSwgc2l6ZS51bnNhZmVHZXQoKSk7CisgICAgRVhQ
RUNUX0VRKDEwMFUsIHNpemUudmFsdWUoKSk7CiAgICAgc2l6ZSAvPSAxMFU7CiAgICAgRVhQRUNU
X0ZBTFNFKHNpemUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBFWFBFQ1RfRVEoMTBVLCBzaXplLnVu
c2FmZUdldCgpKTsKKyAgICBFWFBFQ1RfRVEoMTBVLCBzaXplLnZhbHVlKCkpOwogCiAgICAgc2l6
ZSAvPSAxMVU7CiAgICAgRVhQRUNUX0ZBTFNFKHNpemUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBF
WFBFQ1RfRVEoMFUsIHNpemUudW5zYWZlR2V0KCkpOworICAgIEVYUEVDVF9FUSgwVSwgc2l6ZS52
YWx1ZSgpKTsKIAogICAgIHNpemUgPSAxMDA7CiAgICAgRVhQRUNUX0ZBTFNFKHNpemUuaGFzT3Zl
cmZsb3dlZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCBURVNUKENoZWNrZWRBcml0aG1ldGljVGVz
dCwgRGl2aXNpb24pCiAKICAgICBzaXplID0gMTAwOwogICAgIEVYUEVDVF9GQUxTRShzaXplLmhh
c092ZXJmbG93ZWQoKSk7Ci0gICAgRVhQRUNUX0VRKDEwMFUsIHNpemUudW5zYWZlR2V0KCkpOwor
ICAgIEVYUEVDVF9FUSgxMDBVLCBzaXplLnZhbHVlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSW50UmVjdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9J
bnRSZWN0VGVzdHMuY3BwCmluZGV4IDA3OTNlYWE4YWY5NzY0ZDM1MjJiZjE3N2RkMDczYjJiNTli
MzZhNDAuLjdkNWIyZTAzMDhmZGFkMjk0Mzc1NDI1NGY1ZmU3ZGZkYmUzZDg3M2QgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVzdHMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVzdHMuY3BwCkBA
IC02MTMsNyArNjEzLDcgQEAgVEVTVChJbnRSZWN0LCBBcmVhQW5kRGlzdGFuY2VzKQogewogICAg
IFdlYkNvcmU6OkludFJlY3QgcmVjdCgxMCwgMjAsIDEwMCwgMTAwKTsKIAotICAgIEVYUEVDVF9F
USgxMDAwMFUsIHJlY3QuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBFWFBFQ1RfRVEoMTAwMDBV
LCByZWN0LmFyZWEoKS52YWx1ZSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSW50U2l6ZVRlc3RzLmNwcAppbmRleCBhNTU5NDJmNzRlNGFjOTE4
ZmRmNDk1MjU5NTYwOGRjN2JjZTFhNWM0Li42MjJmMGE4OGNkZGFlYWRiZTZiZDQ1NmM1NmU4YzRk
ODIyOWY1ZGJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
SW50U2l6ZVRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
SW50U2l6ZVRlc3RzLmNwcApAQCAtOTgsNyArOTgsNyBAQCBURVNUKEludFNpemUsIERpYWdvbmFs
TGVuZ3RoQW5kQXJlYSkKICAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3QoMTAyNCwgNzY4KTsKIAog
ICAgIEVYUEVDVF9FUSgxNjM4NDAwLCB0ZXN0LmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpKTsKLSAg
ICBFWFBFQ1RfRVEoNzg2NDMyVSwgdGVzdC5hcmVhKCkudW5zYWZlR2V0KCkpOworICAgIEVYUEVD
VF9FUSg3ODY0MzJVLCB0ZXN0LmFyZWEoKS52YWx1ZSgpKTsKIH0KIAogVEVTVChJbnRTaXplLCBT
Y2FsZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>