<?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>223675</bug_id>
          
          <creation_ts>2021-03-23 23:33:43 -0700</creation_ts>
          <short_desc>Make MutationObserver&apos;s flags into enum class</short_desc>
          <delta_ts>2022-02-10 16:37:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>231489</dup_id>
          
          <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>222784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1743162</commentid>
    <comment_count>0</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-03-23 23:33:43 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743167</commentid>
    <comment_count>1</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-03-23 23:34:49 -0700</bug_when>
    <thetext>*** Bug 223676 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743275</commentid>
    <comment_count>2</comment_count>
      <attachid>424122</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-03-24 04:28:20 -0700</bug_when>
    <thetext>Created attachment 424122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743276</commentid>
    <comment_count>3</comment_count>
      <attachid>424123</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-03-24 04:31:16 -0700</bug_when>
    <thetext>Created attachment 424123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743368</commentid>
    <comment_count>4</comment_count>
      <attachid>424148</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-03-24 10:01:34 -0700</bug_when>
    <thetext>Created attachment 424148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743432</commentid>
    <comment_count>5</comment_count>
      <attachid>424162</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-03-24 11:28:52 -0700</bug_when>
    <thetext>Created attachment 424162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745514</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-30 23:34:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/76040447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750096</commentid>
    <comment_count>7</comment_count>
      <attachid>425976</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-04-14 07:26:13 -0700</bug_when>
    <thetext>Created attachment 425976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750226</commentid>
    <comment_count>8</comment_count>
      <attachid>426014</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-04-14 10:55:20 -0700</bug_when>
    <thetext>Created attachment 426014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750227</commentid>
    <comment_count>9</comment_count>
      <attachid>426015</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-04-14 10:57:28 -0700</bug_when>
    <thetext>Created attachment 426015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755745</commentid>
    <comment_count>10</comment_count>
      <attachid>426015</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-30 10:51:44 -0700</bug_when>
    <thetext>Comment on attachment 426015
Patch

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

&gt; Source/WebCore/dom/MutationObserver.h:52
&gt; +enum class MutationObserverOptionsFlag: uint8_t {

I think MutationObserverOption would be a fine name. Don’t need to name values in an OptionSet as &quot;options flag&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755945</commentid>
    <comment_count>11</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-05-01 09:03:00 -0700</bug_when>
    <thetext>Thank you, Darin!

I&apos;ll fix to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755946</commentid>
    <comment_count>12</comment_count>
      <attachid>427497</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-05-01 09:05:50 -0700</bug_when>
    <thetext>Created attachment 427497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756078</commentid>
    <comment_count>13</comment_count>
      <attachid>427497</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-02 17:51:54 -0700</bug_when>
    <thetext>Comment on attachment 427497
Patch

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

&gt; Source/WebCore/dom/MutationObserver.cpp:74
&gt; +    constexpr MutationObserverOptions validFlagPatterns = {

I don’t think &quot;valid flag patterns&quot; is quite the right name for this set of options. What’s required for validity is that at least *one* of these three options is set. It’s also valid to have more than one. So these aren’t three distinct flag patterns.

I think the correct name for this set might be something more like &quot;requiredOptions&quot;. I am having trouble finding the right words, but those seem better than &quot;valid flag patterns&quot;.

&gt; Source/WebCore/dom/MutationObserver.cpp:106
&gt; +    constexpr MutationObserverOptions shouldObserveAttribute = {

Maybe the name for this set is optionsRequringAttributeObserver?

&gt; Source/WebCore/dom/MutationObserver.h:52
&gt; +enum class MutationObserverOption: uint8_t {

WebKit coding style puts a space before the &quot;:&quot;.

&gt; Source/WebCore/dom/MutationObserver.h:68
&gt; +using MutationObserverOptions = OptionSet&lt;MutationObserverOption&gt;;
&gt; +using MutationRecordDeliveryOptions = OptionSet&lt;MutationObserverOption&gt;;

This is messy, although no worse than before. Two different type names, but no enforcement that we won’t use the wrong options in the wrong type. Sort of &quot;fake types&quot;. Not thrilled with how this turned out. Can we use inheritance or something to avoid this?

&gt; Source/WebCore/dom/MutationObserver.h:74
&gt; +public:
&gt;  
&gt;      static Ref&lt;MutationObserver&gt; create(Ref&lt;MutationCallback&gt;&amp;&amp;);

No reason to include this blank line.

&gt; Source/WebCore/dom/MutationObserverInterestGroup.cpp:92
&gt; +    if (!m_oldValueFlag)
&gt; +        return options.isEmpty();
&gt; +
&gt; +    auto oldValueFlag = m_oldValueFlag.value();
&gt; +    return options.contains(oldValueFlag);

Better to not use a local variable. In fact I would write the whole function like this:

    return m_oldValueFlag ? options.contains(*oldValueFlag) : options.isEmpty();

But I do not think this is the correct semantic. The old code implemented this:

    return m_oldValueFlag &amp;&amp; options.contains(*oldValueFlag);

That’s not the same rule!

I’m going to say review- because of this change. And I wonder why the tests can’t tell we got this wrong.

Also unclear to me why we aren‘t inlining this any more. I think this code should go in the header.

&gt; Source/WebCore/dom/MutationObserverRegistration.h:75
&gt; +    MutationRecordDeliveryOptions deliveryOptions() const
&gt; +    {
&gt; +        constexpr MutationObserverOptions hasDeliveryFlags = {
&gt; +            MutationObserverOption::AttributeOldValue,
&gt; +            MutationObserverOption::CharacterDataOldValue,
&gt; +        };
&gt; +        return m_options &amp; hasDeliveryFlags;
&gt; +    }
&gt; +    MutationObserverOptions mutationTypes() const
&gt; +    {
&gt; +        constexpr MutationObserverOptions allMutationTypes = {
&gt; +            MutationObserverOption::ChildList,
&gt; +            MutationObserverOption::Attributes,
&gt; +            MutationObserverOption::CharacterData,
&gt; +        };
&gt; +        return m_options &amp; allMutationTypes;
&gt; +    }

When function bodies get longer like this, I prefer that the inline function definitions be outside the class definition, right after it. Inside the class definition we can just declare the functions without defining them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764050</commentid>
    <comment_count>14</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-05-26 14:20:01 -0700</bug_when>
    <thetext>Darin, Thank you for your review.
And I&apos;m sorry to late this reply.


(In reply to Darin Adler from comment #13)
&gt; Comment on attachment 427497 [details]
&gt; 
&gt; &gt; Source/WebCore/dom/MutationObserver.h:68
&gt; &gt; +using MutationObserverOptions = OptionSet&lt;MutationObserverOption&gt;;
&gt; &gt; +using MutationRecordDeliveryOptions = OptionSet&lt;MutationObserverOption&gt;;
&gt; 
&gt; This is messy, although no worse than before. Two different type names, but
&gt; no enforcement that we won’t use the wrong options in the wrong type. Sort
&gt; of &quot;fake types&quot;. Not thrilled with how this turned out. Can we use
&gt; inheritance or something to avoid this?

By receiving your review, I had thought to use phantom type to make them different type
but I think these type should be single `MutationObserverOptions`.

Previously, both `MutationObserverOptions` and `MutationRecordDeliveryOptions` are `unsigned char`,
and we operate `MutationObserverOptions &amp; MutationRecordDeliveryOptions` in some place.

So I feel there is no reason to differentiate these types by these reasons,
and it would be useful to use assertion to check whether the object contains some delivery flags. 

How do you think about this?


 
&gt; &gt; Source/WebCore/dom/MutationObserverInterestGroup.cpp:92
&gt; &gt; +    if (!m_oldValueFlag)
&gt; &gt; +        return options.isEmpty();
&gt; &gt; +
&gt; &gt; +    auto oldValueFlag = m_oldValueFlag.value();
&gt; &gt; +    return options.contains(oldValueFlag);
&gt; 
&gt; Better to not use a local variable. In fact I would write the whole function
&gt; like this:
&gt; 
&gt;     return m_oldValueFlag ? options.contains(*oldValueFlag) :
&gt; options.isEmpty();
&gt; 
&gt; But I do not think this is the correct semantic. The old code implemented
&gt; this:
&gt; 
&gt;     return m_oldValueFlag &amp;&amp; options.contains(*oldValueFlag);
&gt; 
&gt; That’s not the same rule!
&gt; 
&gt; I’m going to say review- because of this change. And I wonder why the tests
&gt; can’t tell we got this wrong.


This `m_oldValueFlag` always contains and is passed only single flags, not a bit flags sets, and the default value is 0.
So I guess that if `m_oldValueFlag === 0, then `hasOldValue(options)` return false always. So my patch would work.

I think this `m_oldValueFlag` should be also typed as OptionSet&lt;MutationObserverOption&gt;.
I&apos;ll change to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764063</commentid>
    <comment_count>15</comment_count>
      <attachid>429797</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-05-26 14:40:42 -0700</bug_when>
    <thetext>Created attachment 429797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776135</commentid>
    <comment_count>16</comment_count>
      <attachid>433258</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2021-07-10 06:43:53 -0700</bug_when>
    <thetext>Created attachment 433258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831969</commentid>
    <comment_count>17</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2022-01-19 02:56:07 -0800</bug_when>
    <thetext>Same thing has been fixed in bug 231489

*** This bug has been marked as a duplicate of bug 231489 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424122</attachid>
            <date>2021-03-24 04:28:20 -0700</date>
            <delta_ts>2021-03-24 04:31:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210324202819.patch</filename>
            <type>text/plain</type>
            <size>19581</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU0MGU3MzQ0ZThlZjNm
ZWM0ZGVmMDE5ODU4NjllMTYwYzNkNTcyMy4uM2UzOTg0YzE3YzVhODc5NWQyNDA4ZTI1NWUxNTMy
MjllY2JjNDZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTAzLTIzICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVzZXMgYHN0ZDo6
dW5kZXJseWluZ190eXBlPFQ+YCB0byBzcGVjaWZ5IGEgdHlwZSBmb3IgIGBzdGF0aWNfY2FzdGAK
KyAgICAgICAgaW5zdGVhZCBvZiBzcGVjaWZ5aW5nIGFjdHVhbCB0eXBlIG5hbWUgKGUuZy4gYHVp
bnQ4X3RgKS4KKyAgICAgICAgVGhlc2UgY29udmVydGVkIGVudW0gY2xhc3MgbWFuYWdlcyBiaXQg
ZmxhZ3MgYnV0IHRoZXkgYWxyZWFkeSBoYXMKKyAgICAgICAgOCBmbGFncy4KKyAgICAgICAgRm9y
IHRoZSBmdXR1cmUsIHdlIG1heSBleHBhbmQgdGhlaXIgYmFzZSB0eXBlIHRvIG1vcmUgbGFyZ2Vy
IHR5cGUKKyAgICAgICAgYnV0IHRoZW4gd2Ugd291bGQgbm90IGxpa2UgdG8gdHdlYWsgdGhlc2Ug
YHN0YXRpY19jYXN0YCBieSBoYW5kLgorCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggdXNlIGBzdGQ6
OnVuZGVybHlpbmdfdHlwZTxUPmAuCisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYW5Vc2VTZXREYXRhT3B0aW1pemF0aW9uKToKKyAgICAgICAg
KiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRM
aXN0TXV0YXRpb25TY29wZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNdXRhdGlvbk9ic2VydmVyc09m
VHlwZSBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RhdGljX2Nhc3RfdG9fdW5kZXJseWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVyOjp2YWxpZGF0ZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlm
TmVlZGVkKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVG
b3JDaGlsZExpc3RNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hhcmFjdGVyRGF0YU11dGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1
dGVzTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRpY19jYXN0X3RvX3VuZGVybHlpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6c2hvdWxkUmVjZWl2
ZU11dGF0aW9uRnJvbSBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246OmlzU3VidHJlZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjpkZWxpdmVyeU9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6bXV0YXRpb25UeXBlcyBjb25zdCk6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJlZE11
dGF0aW9uT2JzZXJ2ZXJzKToKKwogMjAyMS0wMy0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zb2xpZGF0ZSBCb29rcyBidW5kbGUgY2hlY2tz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggYmI4ZDUzY2NjNDQ1YzcwY2Zh
ODJmZWNmNjM1ZDVjYjIwNDZmNjRhNy4uNmFiMjM1ZGI5YzUwYWE5YmU0NDI2ZmI4ZDQzMjg3YTQ0
ZjMyMDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhcmFjdGVyRGF0YSk7CiBzdGF0aWMg
Ym9vbCBjYW5Vc2VTZXREYXRhT3B0aW1pemF0aW9uKGNvbnN0IENoYXJhY3RlckRhdGEmIG5vZGUp
CiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBub2RlLmRvY3VtZW50KCk7Ci0gICAgcmV0dXJuICFk
b2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTUNIQVJBQ1RFUkRBVEFNT0RJRklF
RF9MSVNURU5FUikgJiYgIWRvY3VtZW50Lmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0
aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEpCisgICAgcmV0dXJuICFkb2N1bWVudC5oYXNMaXN0
ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTUNIQVJBQ1RFUkRBVEFNT0RJRklFRF9MSVNURU5FUikgJiYg
IWRvY3VtZW50Lmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6Ok11
dGF0aW9uVHlwZTo6Q2hhcmFjdGVyRGF0YSkKICAgICAgICAgJiYgIWRvY3VtZW50Lmhhc0xpc3Rl
bmVyVHlwZShEb2N1bWVudDo6RE9NU1VCVFJFRU1PRElGSUVEX0xJU1RFTkVSKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggMjk2Njc2Nzc2
OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5NzdmOTFmZi4uMjY5ZTY0YWQxM2E2MjI3NDVhODUwMjE3
MTYwYThjOGE4MDAyNzA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5oCkBAIC03Niw3ICs3Niw3IEBAIGNsYXNzIENoaWxkTGlzdE11dGF0aW9uU2NvcGUg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IENoaWxkTGlzdE11dGF0aW9uU2NvcGUoQ29udGFpbmVy
Tm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKHRhcmdldC5kb2N1bWVudCgpLmhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCkpCisgICAg
ICAgIGlmICh0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRh
dGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkNoaWxkTGlzdCkpCiAgICAgICAgICAgICBtX2Fj
Y3VtdWxhdG9yID0gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUodGFy
Z2V0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBkZjQz
MmJjYzgzN2VjNWQ1ZjBhZTk2Y2NkZjU0Y2FmOTUxNDVmMzVmLi5iZjIyYjg5YmQ5OGViZDE2NmI3
ZmZjODZhNWZhMzFmZDQxNjU0NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CkBAIC0xMDIsNyArMTAyLDcgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5v
ZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGkKICAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlQoc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcik7
CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50KCkuaGFzTXV0YXRpb25P
YnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkpIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKGRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRp
b25PYnNlcnZlcjo6TXV0YXRpb25UeXBlOjpDaGlsZExpc3QpKSkgewogICAgICAgICAgICAgQ2hp
bGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CiAgICAgICAgICAgICBmb3IgKGF1
dG8mIGNoaWxkIDogY2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgbXV0YXRpb24ud2lsbFJlbW92
ZUNoaWxkKGNoaWxkLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDJiZWE4ODhlYTE5
MmFkZGY0YzhjNzdmMGMwYzY5ZmJlMTQ2YTI1Mi4uYTU3ODUwNmQzOWMwODJjZWQ3NGZhYzExMzRi
ZmM5ZDhmYzEzYTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTY2LDYgKzY2LDcgQEAKICNp
bmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlTdGF0ZS5o
IgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtODg2LDcgKzg4Nyw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRp
b25UeXBlIHR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9tdXRhdGlvbk9ic2Vy
dmVyVHlwZXMgJiB0eXBlOworICAgICAgICByZXR1cm4gbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMg
JiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGU+Ojp0eXBlPih0eXBlKTsKICAgICB9CiAgICAgYm9vbCBoYXNNdXRhdGlvbk9ic2Vy
dmVycygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRpb25PYnNlcnZlclR5cGVzOyB9CiAgICAgdm9p
ZCBhZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgdHlwZXMp
IHsgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMgfD0gdHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBhNGFjMGViN2U1NzE3N2NmMDQyMzdlNmE5MjNjYzUw
MzA2ZTJiYmQ2Li5lOTUxYTYyZDc3NzIwOGQyZDljMjBkZTc1OTkxZjEwNWY4YjYxMGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJXaW5kb3dFdmVudExvb3AuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTIsNiArNTMsMTMgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKE11dGF0aW9uT2JzZXJ2ZXIpOwogCiBzdGF0aWMgdW5zaWduZWQg
c19vYnNlcnZlclByaW9yaXR5ID0gMDsKIAordGVtcGxhdGU8Y2xhc3MgVD4KK2NvbnN0ZXhwciB0
eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZSBzdGF0aWNfY2FzdF90b191bmRl
cmx5aW5nKFQgdikKK3sKKyAgICBhdXRvIHIgPSBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVu
ZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4odik7CisgICAgcmV0dXJuIHI7Cit9CisKIFJlZjxNdXRh
dGlvbk9ic2VydmVyPiBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoUmVmPE11dGF0aW9uQ2FsbGJh
Y2s+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTcxLDEw
ICs3OSwxMCBAQCBNdXRhdGlvbk9ic2VydmVyOjp+TXV0YXRpb25PYnNlcnZlcigpCiAKIGJvb2wg
TXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25z
IG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIChvcHRpb25zICYgKEF0dHJpYnV0ZXMgfCBDaGFyYWN0
ZXJEYXRhIHwgQ2hpbGRMaXN0KSkKLSAgICAgICAgJiYgKChvcHRpb25zICYgQXR0cmlidXRlcykg
fHwgIShvcHRpb25zICYgQXR0cmlidXRlT2xkVmFsdWUpKQotICAgICAgICAmJiAoKG9wdGlvbnMg
JiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBBdHRyaWJ1dGVGaWx0ZXIpKQotICAgICAgICAm
JiAoKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhKSB8fCAhKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRh
T2xkVmFsdWUpKTsKKyAgICByZXR1cm4gKG9wdGlvbnMgJiAoc3RhdGljX2Nhc3RfdG9fdW5kZXJs
eWluZyhNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMpIHwgc3RhdGljX2Nhc3RfdG9fdW5kZXJseWlu
ZyhNdXRhdGlvblR5cGU6OkNoYXJhY3RlckRhdGEpIHwgc3RhdGljX2Nhc3RfdG9fdW5kZXJseWlu
ZyhNdXRhdGlvblR5cGU6OkNoaWxkTGlzdCkpKQorICAgICAgICAmJiAoKG9wdGlvbnMgJiBzdGF0
aWNfY2FzdF90b191bmRlcmx5aW5nKE11dGF0aW9uVHlwZTo6QXR0cmlidXRlcykpIHx8ICEob3B0
aW9ucyAmIHN0YXRpY19jYXN0X3RvX3VuZGVybHlpbmcoRGVsaXZlcnlGbGFnczo6QXR0cmlidXRl
T2xkVmFsdWUpKSkKKyAgICAgICAgJiYgKChvcHRpb25zICYgc3RhdGljX2Nhc3RfdG9fdW5kZXJs
eWluZyhNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMpKSB8fCAhKG9wdGlvbnMgJiBzdGF0aWNfY2Fz
dF90b191bmRlcmx5aW5nKE9ic2VydmF0aW9uRmxhZ3M6OkF0dHJpYnV0ZUZpbHRlcikpKQorICAg
ICAgICAmJiAoKG9wdGlvbnMgJiBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKE11dGF0aW9uVHlw
ZTo6Q2hhcmFjdGVyRGF0YSkpIHx8ICEob3B0aW9ucyAmIHN0YXRpY19jYXN0X3RvX3VuZGVybHlp
bmcoRGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IElu
aXQmIGluaXQpCkBAIC04MiwyNiArOTAsMjYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTXV0YXRpb25P
YnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0JiBpbml0KQogICAgIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMgPSAwOwogCiAgICAgaWYgKGluaXQuY2hpbGRMaXN0
KQotICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKKyAgICAgICAgb3B0aW9ucyB8PSBzdGF0
aWNfY2FzdF90b191bmRlcmx5aW5nKE11dGF0aW9uVHlwZTo6Q2hpbGRMaXN0KTsKICAgICBpZiAo
aW5pdC5zdWJ0cmVlKQotICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7CisgICAgICAgIG9wdGlv
bnMgfD0gc3RhdGljX2Nhc3RfdG9fdW5kZXJseWluZyhPYnNlcnZhdGlvbkZsYWdzOjpTdWJ0cmVl
KTsKICAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKLSAgICAg
ICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRWYWx1ZTsKKyAgICAgICAgb3B0aW9ucyB8PSBzdGF0
aWNfY2FzdF90b191bmRlcmx5aW5nKERlbGl2ZXJ5RmxhZ3M6OkF0dHJpYnV0ZU9sZFZhbHVlKTsK
ICAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCi0gICAg
ICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9sZFZhbHVlOworICAgICAgICBvcHRpb25zIHw9
IHN0YXRpY19jYXN0X3RvX3VuZGVybHlpbmcoRGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9s
ZFZhbHVlKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlRmlsdGVyOwogICAg
IGlmIChpbml0LmF0dHJpYnV0ZUZpbHRlcikgewogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
aW5pdC5hdHRyaWJ1dGVGaWx0ZXIudmFsdWUoKSkKICAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRl
ci5hZGQodmFsdWUpOwotICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZUZpbHRlcjsKKyAgICAg
ICAgb3B0aW9ucyB8PSBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKE9ic2VydmF0aW9uRmxhZ3M6
OkF0dHJpYnV0ZUZpbHRlcik7CiAgICAgfQogCi0gICAgaWYgKGluaXQuYXR0cmlidXRlcyA/IGlu
aXQuYXR0cmlidXRlcy52YWx1ZSgpIDogKG9wdGlvbnMgJiAoQXR0cmlidXRlRmlsdGVyIHwgQXR0
cmlidXRlT2xkVmFsdWUpKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVzOworICAgIGlm
IChpbml0LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJpYnV0ZXMudmFsdWUoKSA6IChvcHRpb25zICYg
KCBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKE9ic2VydmF0aW9uRmxhZ3M6OkF0dHJpYnV0ZUZp
bHRlcikgfCBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKERlbGl2ZXJ5RmxhZ3M6OkF0dHJpYnV0
ZU9sZFZhbHVlKSApKSApCisgICAgICAgIG9wdGlvbnMgfD0gc3RhdGljX2Nhc3RfdG9fdW5kZXJs
eWluZyhNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMpOwogCi0gICAgaWYgKGluaXQuY2hhcmFjdGVy
RGF0YSA/IGluaXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogKG9wdGlvbnMgJiBDaGFyYWN0ZXJE
YXRhT2xkVmFsdWUpKQotICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGE7CisgICAgaWYg
KGluaXQuY2hhcmFjdGVyRGF0YSA/IGluaXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogKG9wdGlv
bnMgJiBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKERlbGl2ZXJ5RmxhZ3M6OkNoYXJhY3RlckRh
dGFPbGRWYWx1ZSkpKQorICAgICAgICBvcHRpb25zIHw9IHN0YXRpY19jYXN0X3RvX3VuZGVybHlp
bmcoTXV0YXRpb25UeXBlOjpDaGFyYWN0ZXJEYXRhKTsKIAogICAgIGlmICghdmFsaWRhdGVPcHRp
b25zKG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0NzdmMGY5M2QyNmZmM2Y5NzAx
ZTg3YzJiOGJmMWQzMjZlN2VkOTI2Li4wMGQzZjc3ZWYzMTdlMDFiZGI2YzdlNmE3NzZjNmU0ODVk
OTNkNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgdXNpbmcgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgPSB1bnNpZ25lZCBjaGFy
OwogY2xhc3MgTXV0YXRpb25PYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0
aW9uT2JzZXJ2ZXI+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE11dGF0aW9uT2JzZXJ2
ZXIpOwogcHVibGljOgotICAgIGVudW0gTXV0YXRpb25UeXBlIHsKKyAgICBlbnVtIGNsYXNzIE11
dGF0aW9uVHlwZTogdWludDhfdCB7CiAgICAgICAgIENoaWxkTGlzdCA9IDEgPDwgMCwKICAgICAg
ICAgQXR0cmlidXRlcyA9IDEgPDwgMSwKICAgICAgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMiwK
QEAgLTYyLDEyICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFsbE11dGF0aW9uVHlwZXMgPSBD
aGlsZExpc3QgfCBBdHRyaWJ1dGVzIHwgQ2hhcmFjdGVyRGF0YQogICAgIH07CiAKLSAgICBlbnVt
IE9ic2VydmF0aW9uRmxhZ3MgIHsKKyAgICBlbnVtIGNsYXNzIE9ic2VydmF0aW9uRmxhZ3M6IHVp
bnQ4X3QgewogICAgICAgICBTdWJ0cmVlID0gMSA8PCAzLAogICAgICAgICBBdHRyaWJ1dGVGaWx0
ZXIgPSAxIDw8IDQKICAgICB9OwogCi0gICAgZW51bSBEZWxpdmVyeUZsYWdzIHsKKyAgICBlbnVt
IGNsYXNzIERlbGl2ZXJ5RmxhZ3M6IHVpbnQ4X3QgewogICAgICAgICBBdHRyaWJ1dGVPbGRWYWx1
ZSA9IDEgPDwgNSwKICAgICAgICAgQ2hhcmFjdGVyRGF0YU9sZFZhbHVlID0gMSA8PCA2LAogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwLmNwcAppbmRleCAwMjc2ZTQyYmU1YmQ4M2ZmNDJhNzkzNTZiZGU5Y2U3MzYwOTljYmRl
Li42YzkxYmE3MmMyNDM3MWEwYWEwMjE4OGJhNzM1MWRlZDRmNTM4ODc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgaW5saW5lIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjwKIAogc3RkOjp1bmlxdWVfcHRy
PE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3JlYXRlSWZOZWVkZWQoTm9kZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGUgdHlwZSwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb2xkVmFsdWVGbGFn
LCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogewotICAgIEFTU0VSVCgodHlw
ZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKKyAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlcjo6TXV0
YXRpb25UeXBlOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1l
KTsKICAgICBhdXRvIG9ic2VydmVycyA9IHRhcmdldC5yZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZl
cnModHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXAuaAppbmRleCAzYzBhZTUyMzdkNGIyZTJlZmY3MGRkZTY2
MmU1ZjRlMWU1NjkyNmFkLi44Njc1ODExNGU4ZTk2M2Q3MWUyNzc0MGJmZTlmMDg0MGUxZTQ3YzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00NiwyNyArNDcsMjcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRp
b24oTm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5o
YXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKQor
ICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBl
KE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6Q2hpbGRMaXN0KSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
IG9sZFZhbHVlRmxhZyA9IDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQs
IE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCwgb2xkVmFsdWVGbGFnKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBl
OjpDaGlsZExpc3QsIG9sZFZhbHVlRmxhZyk7CiAgICAgfQogCiAgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hhcmFjdGVy
RGF0YU11dGF0aW9uKE5vZGUmIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0LmRv
Y3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hh
cmFjdGVyRGF0YSkpCisgICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25P
YnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlOjpDaGFyYWN0ZXJE
YXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEsIE11dGF0
aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6Q2hhcmFj
dGVyRGF0YSwgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25PYnNlcnZl
cjo6RGVsaXZlcnlGbGFncz46OnR5cGU+KE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M6
OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckF0dHJpYnV0ZXNN
dXRhdGlvbihOb2RlJiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
CiAgICAgewotICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMpKQorICAgICAgICBpZiAoIXRh
cmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2
ZXI6Ok11dGF0aW9uVHlwZTo6QXR0cmlidXRlcykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2Vy
dmVyOjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSwgJmF0
dHJpYnV0ZU5hbWUpOworICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRh
dGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMsIHN0YXRpY19jYXN0PHN0ZDo6
dW5kZXJseWluZ190eXBlPE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M+Ojp0eXBlPihN
dXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzOjpBdHRyaWJ1dGVPbGRWYWx1ZSksICZhdHRy
aWJ1dGVOYW1lKTsKICAgICB9CiAKICAgICBib29sIGlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmNwcAppbmRleCAwZWNiMDViNDg4NjBjNzc3MTQxOGQ4YmY5ZDI2MTI5M2E4ODY1YWUzLi4z
ODQ1ZjdhMGYxYmEyYTVkODA4MjEzNjMzM2M0ZjM3MjkwOTg4YTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNCw5
ICszNCwyMCBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJRdWFsaWZpZWRO
YW1lLmgiCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dGVtcGxhdGU8Y2xhc3MgVD4KK2NvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlw
ZTxUPjo6dHlwZSBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKFQgdikKK3sKKyAgICBhdXRvIHIg
PSBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4odik7
CisgICAgcmV0dXJuIHI7Cit9CisKK3VzaW5nIE11dGF0aW9uVHlwZSA9IE11dGF0aW9uT2JzZXJ2
ZXI6Ok11dGF0aW9uVHlwZTsKK3VzaW5nIE9ic2VydmF0aW9uRmxhZ3MgPSBNdXRhdGlvbk9ic2Vy
dmVyOjpPYnNlcnZhdGlvbkZsYWdzOworCiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBO
b2RlJiBub2RlLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBIYXNoU2V0
PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCiAgICAgOiBtX29ic2VydmVyKG9ic2VydmVy
KQogICAgICwgbV9ub2RlKG5vZGUpCkBAIC05NCwxNiArMTA1LDE2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbjo6dGFrCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1ib29sIE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9kZSwg
TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJpYnV0ZU5hbWUpIGNvbnN0Citib29sIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246
OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9kZSwgTXV0YXRpb25UeXBlIHR5cGUs
IGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkg
fHwgIWF0dHJpYnV0ZU5hbWUpOwotICAgIGlmICghKG1fb3B0aW9ucyAmIHR5cGUpKQorICAgIEFT
U0VSVCgodHlwZSA9PSBNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkg
fHwgIWF0dHJpYnV0ZU5hbWUpOworICAgIGlmICghKG1fb3B0aW9ucyAmIHN0YXRpY19jYXN0X3Rv
X3VuZGVybHlpbmcodHlwZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoJm1f
bm9kZSAhPSAmbm9kZSAmJiAhaXNTdWJ0cmVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICh0eXBlICE9IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgfHwgIShtX29wdGlv
bnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVGaWx0ZXIpKQorICAgIGlmICh0eXBlICE9
IE11dGF0aW9uVHlwZTo6QXR0cmlidXRlcyB8fCAhKG1fb3B0aW9ucyAmIHN0YXRpY19jYXN0X3Rv
X3VuZGVybHlpbmcoT2JzZXJ2YXRpb25GbGFnczo6QXR0cmlidXRlRmlsdGVyKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lLT5uYW1lc3BhY2VVUkkoKS5p
c051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbi5oCmluZGV4IGU2OTQwNDgzYTMxM2M4ZmQxYmQxNmRjMTdjYjk2YjEzYWNkMjJhM2Eu
LjA3ODhkNjI0NDhmNTU3Y2I2N2RjZDQ5YzE4ODI3NTlhMDAwN2FiMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMzIsNiAr
MzIsNyBAQAogCiAjaW5jbHVkZSAiR0NSZWFjaGFibGVSZWYuaCIKICNpbmNsdWRlICJNdXRhdGlv
bk9ic2VydmVyLmgiCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZ0hhc2guaD4KQEAgLTUyLDEyICs1MywxMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNUcmFuc2llbnRSZWdpc3RyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2llbnRS
ZWdpc3RyYXRpb25Ob2RlcyAmJiAhbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy0+aXNFbXB0
eSgpOyB9CiAKICAgICBib29sIHNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYsIE11dGF0
aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRl
TmFtZSkgY29uc3Q7Ci0gICAgYm9vbCBpc1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlv
bnMgJiBNdXRhdGlvbk9ic2VydmVyOjpTdWJ0cmVlOyB9CisgICAgYm9vbCBpc1N1YnRyZWUoKSBj
b25zdCB7IHJldHVybiBtX29wdGlvbnMgJiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlw
ZTxNdXRhdGlvbk9ic2VydmVyOjpPYnNlcnZhdGlvbkZsYWdzPjo6dHlwZT4oTXV0YXRpb25PYnNl
cnZlcjo6T2JzZXJ2YXRpb25GbGFnczo6U3VidHJlZSk7IH0KIAogICAgIE11dGF0aW9uT2JzZXJ2
ZXImIG9ic2VydmVyKCkgeyByZXR1cm4gbV9vYnNlcnZlci5nZXQoKTsgfQogICAgIE5vZGUmIG5v
ZGUoKSB7IHJldHVybiBtX25vZGU7IH0KLSAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cyBkZWxpdmVyeU9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiAoTXV0YXRpb25P
YnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWUgfCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJE
YXRhT2xkVmFsdWUpOyB9Ci0gICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgbXV0YXRpb25UeXBl
cygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIE11dGF0aW9uT2JzZXJ2ZXI6OkFsbE11dGF0
aW9uVHlwZXM7IH0KKyAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9w
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiAoc3RhdGljX2Nhc3Q8c3RkOjp1bmRl
cmx5aW5nX3R5cGU8TXV0YXRpb25PYnNlcnZlcjo6RGVsaXZlcnlGbGFncz46OnR5cGU+KE11dGF0
aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M6OkF0dHJpYnV0ZU9sZFZhbHVlKSB8IHN0YXRpY19j
YXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M+
Ojp0eXBlPihNdXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzOjpDaGFyYWN0ZXJEYXRhT2xk
VmFsdWUpKTsgfQorICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBj
b25zdCB7IHJldHVybiBtX29wdGlvbnMgJiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlw
ZTxNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU+Ojp0eXBlPihNdXRhdGlvbk9ic2VydmVy
OjpNdXRhdGlvblR5cGU6OkFsbE11dGF0aW9uVHlwZXMpOyB9CiAKICAgICB2b2lkIGFkZFJlZ2lz
dHJhdGlvbk5vZGVzVG9TZXQoSGFzaFNldDxOb2RlKj4mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IGNkMzhmZjYwZjRiZmJlN2RmNmYzODU5ZDFiYjA0ODlhOWQ0MzMxMjEuLjgzMGRmMmM2
MjQ5MmQ5YzUyMjE0YWRjNjg4NzhhNmRiMDM0ZDNkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTIy
ODksNyArMjI4OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ2lzdHJ5PiBzdGF0aWMgaW5saW5l
IHZvaWQgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpCiBIYXNoTWFwPFJlZjxNdXRh
dGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IE5vZGU6OnJlZ2lz
dGVyZWRNdXRhdGlvbk9ic2VydmVycyhNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlw
ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKIHsKICAgICBIYXNoTWFwPFJl
ZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IHJlc3Vs
dDsKLSAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcyAmJiBh
dHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CisgICAgQVNTRVJUKCh0eXBlID09IE11
dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVOYW1l
KSB8fCAhYXR0cmlidXRlTmFtZSk7CiAgICAgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0
YXRpb24ocmVzdWx0LCBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSwgKnRoaXMsIHR5cGUsIGF0
dHJpYnV0ZU5hbWUpOwogICAgIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKHJl
c3VsdCwgdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBh
dHRyaWJ1dGVOYW1lKTsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424123</attachid>
            <date>2021-03-24 04:31:16 -0700</date>
            <delta_ts>2021-03-24 10:01:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210324203115.patch</filename>
            <type>text/plain</type>
            <size>19387</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU0MGU3MzQ0ZThlZjNm
ZWM0ZGVmMDE5ODU4NjllMTYwYzNkNTcyMy4uM2UzOTg0YzE3YzVhODc5NWQyNDA4ZTI1NWUxNTMy
MjllY2JjNDZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTAzLTIzICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVzZXMgYHN0ZDo6
dW5kZXJseWluZ190eXBlPFQ+YCB0byBzcGVjaWZ5IGEgdHlwZSBmb3IgIGBzdGF0aWNfY2FzdGAK
KyAgICAgICAgaW5zdGVhZCBvZiBzcGVjaWZ5aW5nIGFjdHVhbCB0eXBlIG5hbWUgKGUuZy4gYHVp
bnQ4X3RgKS4KKyAgICAgICAgVGhlc2UgY29udmVydGVkIGVudW0gY2xhc3MgbWFuYWdlcyBiaXQg
ZmxhZ3MgYnV0IHRoZXkgYWxyZWFkeSBoYXMKKyAgICAgICAgOCBmbGFncy4KKyAgICAgICAgRm9y
IHRoZSBmdXR1cmUsIHdlIG1heSBleHBhbmQgdGhlaXIgYmFzZSB0eXBlIHRvIG1vcmUgbGFyZ2Vy
IHR5cGUKKyAgICAgICAgYnV0IHRoZW4gd2Ugd291bGQgbm90IGxpa2UgdG8gdHdlYWsgdGhlc2Ug
YHN0YXRpY19jYXN0YCBieSBoYW5kLgorCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggdXNlIGBzdGQ6
OnVuZGVybHlpbmdfdHlwZTxUPmAuCisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYW5Vc2VTZXREYXRhT3B0aW1pemF0aW9uKToKKyAgICAgICAg
KiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRM
aXN0TXV0YXRpb25TY29wZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNdXRhdGlvbk9ic2VydmVyc09m
VHlwZSBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RhdGljX2Nhc3RfdG9fdW5kZXJseWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVyOjp2YWxpZGF0ZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlm
TmVlZGVkKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVG
b3JDaGlsZExpc3RNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hhcmFjdGVyRGF0YU11dGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1
dGVzTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRpY19jYXN0X3RvX3VuZGVybHlpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6c2hvdWxkUmVjZWl2
ZU11dGF0aW9uRnJvbSBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246OmlzU3VidHJlZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjpkZWxpdmVyeU9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6bXV0YXRpb25UeXBlcyBjb25zdCk6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJlZE11
dGF0aW9uT2JzZXJ2ZXJzKToKKwogMjAyMS0wMy0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zb2xpZGF0ZSBCb29rcyBidW5kbGUgY2hlY2tz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggYmI4ZDUzY2NjNDQ1YzcwY2Zh
ODJmZWNmNjM1ZDVjYjIwNDZmNjRhNy4uNmFiMjM1ZGI5YzUwYWE5YmU0NDI2ZmI4ZDQzMjg3YTQ0
ZjMyMDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhcmFjdGVyRGF0YSk7CiBzdGF0aWMg
Ym9vbCBjYW5Vc2VTZXREYXRhT3B0aW1pemF0aW9uKGNvbnN0IENoYXJhY3RlckRhdGEmIG5vZGUp
CiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBub2RlLmRvY3VtZW50KCk7Ci0gICAgcmV0dXJuICFk
b2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTUNIQVJBQ1RFUkRBVEFNT0RJRklF
RF9MSVNURU5FUikgJiYgIWRvY3VtZW50Lmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0
aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEpCisgICAgcmV0dXJuICFkb2N1bWVudC5oYXNMaXN0
ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTUNIQVJBQ1RFUkRBVEFNT0RJRklFRF9MSVNURU5FUikgJiYg
IWRvY3VtZW50Lmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6Ok11
dGF0aW9uVHlwZTo6Q2hhcmFjdGVyRGF0YSkKICAgICAgICAgJiYgIWRvY3VtZW50Lmhhc0xpc3Rl
bmVyVHlwZShEb2N1bWVudDo6RE9NU1VCVFJFRU1PRElGSUVEX0xJU1RFTkVSKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggMjk2Njc2Nzc2
OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5NzdmOTFmZi4uMjY5ZTY0YWQxM2E2MjI3NDVhODUwMjE3
MTYwYThjOGE4MDAyNzA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5oCkBAIC03Niw3ICs3Niw3IEBAIGNsYXNzIENoaWxkTGlzdE11dGF0aW9uU2NvcGUg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IENoaWxkTGlzdE11dGF0aW9uU2NvcGUoQ29udGFpbmVy
Tm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKHRhcmdldC5kb2N1bWVudCgpLmhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCkpCisgICAg
ICAgIGlmICh0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRh
dGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkNoaWxkTGlzdCkpCiAgICAgICAgICAgICBtX2Fj
Y3VtdWxhdG9yID0gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUodGFy
Z2V0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBkZjQz
MmJjYzgzN2VjNWQ1ZjBhZTk2Y2NkZjU0Y2FmOTUxNDVmMzVmLi5iZjIyYjg5YmQ5OGViZDE2NmI3
ZmZjODZhNWZhMzFmZDQxNjU0NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CkBAIC0xMDIsNyArMTAyLDcgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5v
ZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGkKICAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlQoc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcik7
CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50KCkuaGFzTXV0YXRpb25P
YnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkpIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKGRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRp
b25PYnNlcnZlcjo6TXV0YXRpb25UeXBlOjpDaGlsZExpc3QpKSkgewogICAgICAgICAgICAgQ2hp
bGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CiAgICAgICAgICAgICBmb3IgKGF1
dG8mIGNoaWxkIDogY2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgbXV0YXRpb24ud2lsbFJlbW92
ZUNoaWxkKGNoaWxkLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDJiZWE4ODhlYTE5
MmFkZGY0YzhjNzdmMGMwYzY5ZmJlMTQ2YTI1Mi4uYTU3ODUwNmQzOWMwODJjZWQ3NGZhYzExMzRi
ZmM5ZDhmYzEzYTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTY2LDYgKzY2LDcgQEAKICNp
bmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlTdGF0ZS5o
IgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtODg2LDcgKzg4Nyw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRp
b25UeXBlIHR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9tdXRhdGlvbk9ic2Vy
dmVyVHlwZXMgJiB0eXBlOworICAgICAgICByZXR1cm4gbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMg
JiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGU+Ojp0eXBlPih0eXBlKTsKICAgICB9CiAgICAgYm9vbCBoYXNNdXRhdGlvbk9ic2Vy
dmVycygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRpb25PYnNlcnZlclR5cGVzOyB9CiAgICAgdm9p
ZCBhZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgdHlwZXMp
IHsgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMgfD0gdHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBhNGFjMGViN2U1NzE3N2NmMDQyMzdlNmE5MjNjYzUw
MzA2ZTJiYmQ2Li44Njk5YzM3NjNmZmRkZjNkNzE3NzM4NzU0ZmYxZjU3NWIwMmRjNzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJXaW5kb3dFdmVudExvb3AuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTIsNiArNTMsMTMgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKE11dGF0aW9uT2JzZXJ2ZXIpOwogCiBzdGF0aWMgdW5zaWduZWQg
c19vYnNlcnZlclByaW9yaXR5ID0gMDsKIAordGVtcGxhdGU8Y2xhc3MgVD4KK2NvbnN0ZXhwciB0
eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZSBzdGF0aWNfY2FzdF90b191bmRl
cmx5aW5nKFQgdikKK3sKKyAgICBhdXRvIHIgPSBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVu
ZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4odik7CisgICAgcmV0dXJuIHI7Cit9CisKIFJlZjxNdXRh
dGlvbk9ic2VydmVyPiBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoUmVmPE11dGF0aW9uQ2FsbGJh
Y2s+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTcxLDEw
ICs3OSwxMCBAQCBNdXRhdGlvbk9ic2VydmVyOjp+TXV0YXRpb25PYnNlcnZlcigpCiAKIGJvb2wg
TXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25z
IG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIChvcHRpb25zICYgKEF0dHJpYnV0ZXMgfCBDaGFyYWN0
ZXJEYXRhIHwgQ2hpbGRMaXN0KSkKLSAgICAgICAgJiYgKChvcHRpb25zICYgQXR0cmlidXRlcykg
fHwgIShvcHRpb25zICYgQXR0cmlidXRlT2xkVmFsdWUpKQotICAgICAgICAmJiAoKG9wdGlvbnMg
JiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBBdHRyaWJ1dGVGaWx0ZXIpKQotICAgICAgICAm
JiAoKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhKSB8fCAhKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRh
T2xkVmFsdWUpKTsKKyAgICByZXR1cm4gKG9wdGlvbnMgJiAoc3RhdGljX2Nhc3RfdG9fdW5kZXJs
eWluZyhNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMpIHwgc3RhdGljX2Nhc3RfdG9fdW5kZXJseWlu
ZyhNdXRhdGlvblR5cGU6OkNoYXJhY3RlckRhdGEpIHwgc3RhdGljX2Nhc3RfdG9fdW5kZXJseWlu
ZyhNdXRhdGlvblR5cGU6OkNoaWxkTGlzdCkpKQorICAgICAgICAmJiAoKG9wdGlvbnMgJiBzdGF0
aWNfY2FzdF90b191bmRlcmx5aW5nKE11dGF0aW9uVHlwZTo6QXR0cmlidXRlcykpIHx8ICEob3B0
aW9ucyAmIHN0YXRpY19jYXN0X3RvX3VuZGVybHlpbmcoRGVsaXZlcnlGbGFnczo6QXR0cmlidXRl
T2xkVmFsdWUpKSkKKyAgICAgICAgJiYgKChvcHRpb25zICYgc3RhdGljX2Nhc3RfdG9fdW5kZXJs
eWluZyhNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMpKSB8fCAhKG9wdGlvbnMgJiBzdGF0aWNfY2Fz
dF90b191bmRlcmx5aW5nKE9ic2VydmF0aW9uRmxhZ3M6OkF0dHJpYnV0ZUZpbHRlcikpKQorICAg
ICAgICAmJiAoKG9wdGlvbnMgJiBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKE11dGF0aW9uVHlw
ZTo6Q2hhcmFjdGVyRGF0YSkpIHx8ICEob3B0aW9ucyAmIHN0YXRpY19jYXN0X3RvX3VuZGVybHlp
bmcoRGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IElu
aXQmIGluaXQpCkBAIC04MiwyNiArOTAsMjUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTXV0YXRpb25P
YnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0JiBpbml0KQogICAgIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMgPSAwOwogCiAgICAgaWYgKGluaXQuY2hpbGRMaXN0
KQotICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKKyAgICAgICAgb3B0aW9ucyB8PSBzdGF0
aWNfY2FzdF90b191bmRlcmx5aW5nKE11dGF0aW9uVHlwZTo6Q2hpbGRMaXN0KTsKICAgICBpZiAo
aW5pdC5zdWJ0cmVlKQotICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7CisgICAgICAgIG9wdGlv
bnMgfD0gc3RhdGljX2Nhc3RfdG9fdW5kZXJseWluZyhPYnNlcnZhdGlvbkZsYWdzOjpTdWJ0cmVl
KTsKICAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKLSAgICAg
ICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRWYWx1ZTsKKyAgICAgICAgb3B0aW9ucyB8PSBzdGF0
aWNfY2FzdF90b191bmRlcmx5aW5nKERlbGl2ZXJ5RmxhZ3M6OkF0dHJpYnV0ZU9sZFZhbHVlKTsK
ICAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCi0gICAg
ICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9sZFZhbHVlOworICAgICAgICBvcHRpb25zIHw9
IHN0YXRpY19jYXN0X3RvX3VuZGVybHlpbmcoRGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9s
ZFZhbHVlKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlRmlsdGVyOwogICAg
IGlmIChpbml0LmF0dHJpYnV0ZUZpbHRlcikgewogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
aW5pdC5hdHRyaWJ1dGVGaWx0ZXIudmFsdWUoKSkKICAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRl
ci5hZGQodmFsdWUpOwotICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZUZpbHRlcjsKKyAgICAg
ICAgb3B0aW9ucyB8PSBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKE9ic2VydmF0aW9uRmxhZ3M6
OkF0dHJpYnV0ZUZpbHRlcik7CiAgICAgfQogCi0gICAgaWYgKGluaXQuYXR0cmlidXRlcyA/IGlu
aXQuYXR0cmlidXRlcy52YWx1ZSgpIDogKG9wdGlvbnMgJiAoQXR0cmlidXRlRmlsdGVyIHwgQXR0
cmlidXRlT2xkVmFsdWUpKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVzOworICAgICAg
ICBvcHRpb25zIHw9IHN0YXRpY19jYXN0X3RvX3VuZGVybHlpbmcoTXV0YXRpb25UeXBlOjpBdHRy
aWJ1dGVzKTsKIAotICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGEgPyBpbml0LmNoYXJhY3RlckRh
dGEudmFsdWUoKSA6IChvcHRpb25zICYgQ2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkKLSAgICAgICAg
b3B0aW9ucyB8PSBDaGFyYWN0ZXJEYXRhOworICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGEgPyBp
bml0LmNoYXJhY3RlckRhdGEudmFsdWUoKSA6IChvcHRpb25zICYgc3RhdGljX2Nhc3RfdG9fdW5k
ZXJseWluZyhEZWxpdmVyeUZsYWdzOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKSkKKyAgICAgICAg
b3B0aW9ucyB8PSBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKE11dGF0aW9uVHlwZTo6Q2hhcmFj
dGVyRGF0YSk7CiAKICAgICBpZiAoIXZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmgKaW5kZXggNDc3ZjBmOTNkMjZmZjNmOTcwMWU4N2MyYjhiZjFkMzI2ZTdlZDkyNi4u
MDBkM2Y3N2VmMzE3ZTAxYmRiNmM3ZTZhNzc2YzZlNDg1ZDkzZDQ0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5oCkBAIC01NCw3ICs1NCw3IEBAIHVzaW5nIE11dGF0aW9uUmVj
b3JkRGVsaXZlcnlPcHRpb25zID0gdW5zaWduZWQgY2hhcjsKIGNsYXNzIE11dGF0aW9uT2JzZXJ2
ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChNdXRhdGlvbk9ic2VydmVyKTsKIHB1YmxpYzoKLSAgICBlbnVt
IE11dGF0aW9uVHlwZSB7CisgICAgZW51bSBjbGFzcyBNdXRhdGlvblR5cGU6IHVpbnQ4X3Qgewog
ICAgICAgICBDaGlsZExpc3QgPSAxIDw8IDAsCiAgICAgICAgIEF0dHJpYnV0ZXMgPSAxIDw8IDEs
CiAgICAgICAgIENoYXJhY3RlckRhdGEgPSAxIDw8IDIsCkBAIC02MiwxMiArNjIsMTIgQEAgcHVi
bGljOgogICAgICAgICBBbGxNdXRhdGlvblR5cGVzID0gQ2hpbGRMaXN0IHwgQXR0cmlidXRlcyB8
IENoYXJhY3RlckRhdGEKICAgICB9OwogCi0gICAgZW51bSBPYnNlcnZhdGlvbkZsYWdzICB7Cisg
ICAgZW51bSBjbGFzcyBPYnNlcnZhdGlvbkZsYWdzOiB1aW50OF90IHsKICAgICAgICAgU3VidHJl
ZSA9IDEgPDwgMywKICAgICAgICAgQXR0cmlidXRlRmlsdGVyID0gMSA8PCA0CiAgICAgfTsKIAot
ICAgIGVudW0gRGVsaXZlcnlGbGFncyB7CisgICAgZW51bSBjbGFzcyBEZWxpdmVyeUZsYWdzOiB1
aW50OF90IHsKICAgICAgICAgQXR0cmlidXRlT2xkVmFsdWUgPSAxIDw8IDUsCiAgICAgICAgIENo
YXJhY3RlckRhdGFPbGRWYWx1ZSA9IDEgPDwgNiwKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggMDI3NmU0
MmJlNWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZS4uNmM5MWJhNzJjMjQzNzFhMGFhMDIx
ODhiYTczNTFkZWQ0ZjUzODg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC00Niw3ICs0Niw3IEBAIGlubGluZSBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAoSGFzaE1hcDxSZWY8CiAKIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5v
ZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSog
YXR0cmlidXRlTmFtZSkKIHsKLSAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlcjo6
QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CisgICAgQVNT
RVJUKCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6QXR0cmlidXRlcyAm
JiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CiAgICAgYXV0byBvYnNlcnZlcnMg
PSB0YXJnZXQucmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzKHR5cGUsIGF0dHJpYnV0ZU5hbWUp
OwogICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
LmgKaW5kZXggM2MwYWU1MjM3ZDRiMmUyZWZmNzBkZGU2NjJlNWY0ZTFlNTY5MjZhZC4uODY3NTgx
MTRlOGU5NjNkNzFlMjc3NDBiZmU5ZjA4NDBlMWU0N2MzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsMjcgKzQ3LDI3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IGNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKE5vZGUmIHRhcmdldCkKICAgICB7
Ci0gICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5
cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKCF0YXJnZXQuZG9j
dW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGU6OkNoaWxkTGlzdCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcgPSAwOwotICAg
ICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpDaGls
ZExpc3QsIG9sZFZhbHVlRmxhZyk7CisgICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJn
ZXQsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6Q2hpbGRMaXN0LCBvbGRWYWx1ZUZs
YWcpOwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckNoYXJhY3RlckRhdGFNdXRhdGlvbihOb2RlJiB0YXJn
ZXQpCiAgICAgewotICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2Jz
ZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEpKQorICAgICAgICBp
ZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9u
T2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6Q2hhcmFjdGVyRGF0YSkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRh
dGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhLCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJE
YXRhT2xkVmFsdWUpOworICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRh
dGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkNoYXJhY3RlckRhdGEsIHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlPE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M+Ojp0eXBl
PihNdXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUp
KTsKICAgICB9CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwPiBjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24oTm9kZSYgdGFyZ2V0LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgIHsKLSAgICAgICAgaWYgKCF0
YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2Vy
dmVyOjpBdHRyaWJ1dGVzKSkKKyAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRh
dGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkF0dHJp
YnV0ZXMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcywgTXV0YXRp
b25PYnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWUsICZhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25U
eXBlOjpBdHRyaWJ1dGVzLCBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxNdXRhdGlv
bk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzPjo6dHlwZT4oTXV0YXRpb25PYnNlcnZlcjo6RGVsaXZl
cnlGbGFnczo6QXR0cmlidXRlT2xkVmFsdWUpLCAmYXR0cmlidXRlTmFtZSk7CiAgICAgfQogCiAg
ICAgYm9vbCBpc09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMGVjYjA1YjQ4
ODYwYzc3NzE0MThkOGJmOWQyNjEyOTNhODg2NWFlMy4uMzg0NWY3YTBmMWJhMmE1ZDgwODIxMzYz
MzNjNGYzNzI5MDk4OGExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzQsOSArMzQsMjAgQEAKIAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPGNsYXNzIFQ+Citjb25z
dGV4cHIgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGUgc3RhdGljX2Nhc3Rf
dG9fdW5kZXJseWluZyhUIHYpCit7CisgICAgYXV0byByID0gc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
c3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU+KHYpOworICAgIHJldHVybiByOworfQorCit1
c2luZyBNdXRhdGlvblR5cGUgPSBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU7Cit1c2lu
ZyBPYnNlcnZhdGlvbkZsYWdzID0gTXV0YXRpb25PYnNlcnZlcjo6T2JzZXJ2YXRpb25GbGFnczsK
KwogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgTm9kZSYgbm9kZSwgTXV0YXRpb25PYnNl
cnZlck9wdGlvbnMgb3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9tU3RyaW5nPiYgYXR0cmlidXRl
RmlsdGVyKQogICAgIDogbV9vYnNlcnZlcihvYnNlcnZlcikKICAgICAsIG1fbm9kZShub2RlKQpA
QCAtOTQsMTYgKzEwNSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxHQ1JlYWNoYWJsZVJl
ZjxOb2RlPj4+IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OnRhawogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAotYm9vbCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91
bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmIG5vZGUsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0
aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAor
Ym9vbCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0YXRpb25G
cm9tKE5vZGUmIG5vZGUsIE11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBh
dHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2Vy
dmVyOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKLSAg
ICBpZiAoIShtX29wdGlvbnMgJiB0eXBlKSkKKyAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25U
eXBlOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKKyAg
ICBpZiAoIShtX29wdGlvbnMgJiBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKHR5cGUpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCZtX25vZGUgIT0gJm5vZGUgJiYgIWlzU3Vi
dHJlZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAodHlwZSAhPSBNdXRhdGlv
bk9ic2VydmVyOjpBdHRyaWJ1dGVzIHx8ICEobV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6
QXR0cmlidXRlRmlsdGVyKSkKKyAgICBpZiAodHlwZSAhPSBNdXRhdGlvblR5cGU6OkF0dHJpYnV0
ZXMgfHwgIShtX29wdGlvbnMgJiBzdGF0aWNfY2FzdF90b191bmRlcmx5aW5nKE9ic2VydmF0aW9u
RmxhZ3M6OkF0dHJpYnV0ZUZpbHRlcikpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlm
ICghYXR0cmlidXRlTmFtZS0+bmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCBlNjk0MDQ4
M2EzMTNjOGZkMWJkMTZkYzE3Y2I5NmIxM2FjZDIyYTNhLi4wNzg4ZDYyNDQ4ZjU1N2NiNjdkY2Q0
OWMxODgyNzU5YTAwMDdhYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkdD
UmVhY2hhYmxlUmVmLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CkBA
IC01MiwxMiArNTMsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVHJhbnNpZW50UmVnaXN0cmF0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMgJiYgIW1f
dHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMtPmlzRW1wdHkoKTsgfQogCiAgICAgYm9vbCBzaG91
bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmLCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5
cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwotICAgIGJvb2wg
aXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6
U3VidHJlZTsgfQorICAgIGJvb2wgaXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25z
ICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25PYnNlcnZlcjo6T2Jz
ZXJ2YXRpb25GbGFncz46OnR5cGU+KE11dGF0aW9uT2JzZXJ2ZXI6Ok9ic2VydmF0aW9uRmxhZ3M6
OlN1YnRyZWUpOyB9CiAKICAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlcigpIHsgcmV0dXJu
IG1fb2JzZXJ2ZXIuZ2V0KCk7IH0KICAgICBOb2RlJiBub2RlKCkgeyByZXR1cm4gbV9ub2RlOyB9
Ci0gICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zICYgKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZh
bHVlIHwgTXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsgfQotICAgIE11
dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX29w
dGlvbnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5cGVzOyB9CisgICAgTXV0YXRp
b25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zICYgKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPE11dGF0aW9uT2Jz
ZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M+Ojp0eXBlPihNdXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZs
YWdzOjpBdHRyaWJ1dGVPbGRWYWx1ZSkgfCBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlw
ZTxNdXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzPjo6dHlwZT4oTXV0YXRpb25PYnNlcnZl
cjo6RGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSk7IH0KKyAgICBNdXRhdGlv
bk9ic2VydmVyT3B0aW9ucyBtdXRhdGlvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25z
ICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25PYnNlcnZlcjo6TXV0
YXRpb25UeXBlPjo6dHlwZT4oTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlOjpBbGxNdXRh
dGlvblR5cGVzKTsgfQogCiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hT
ZXQ8Tm9kZSo+JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBjZDM4ZmY2MGY0YmZiZTdk
ZjZmMzg1OWQxYmIwNDg5YTlkNDMzMTIxLi44MzBkZjJjNjI0OTJkOWM1MjIxNGFkYzY4ODc4YTZk
YjAzNGQzZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjg5LDcgKzIyODksNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBSZWdpc3RyeT4gc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RNYXRjaGluZ09i
c2VydmVyc0Zvck11dGF0aQogSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPiBOb2RlOjpyZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnMo
TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11
dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZXN1bHQ7Ci0gICAgQVNTRVJUKCh0eXBlID09
IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJp
YnV0ZU5hbWUpOworICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlv
blR5cGU6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOwog
ICAgIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKHJlc3VsdCwgbXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKICAgICBjb2xs
ZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihyZXN1bHQsIHRyYW5zaWVudE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyeSgpLCAqdGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgZm9y
IChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424148</attachid>
            <date>2021-03-24 10:01:34 -0700</date>
            <delta_ts>2021-03-24 11:28:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210325020133.patch</filename>
            <type>text/plain</type>
            <size>22144</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU0MGU3MzQ0ZThlZjNm
ZWM0ZGVmMDE5ODU4NjllMTYwYzNkNTcyMy4uYjAzNDBkOWRlY2U2MjVhYjgwZTZhOWI0NTY2OTJl
MzY0ODZmZTBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAzLTI0ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVzZXMgYHN0ZDo6
dW5kZXJseWluZ190eXBlPFQ+YCB0byBzcGVjaWZ5IGEgdHlwZSBmb3IgIGBzdGF0aWNfY2FzdGAK
KyAgICAgICAgaW5zdGVhZCBvZiBzcGVjaWZ5aW5nIGFjdHVhbCB0eXBlIG5hbWUgKGUuZy4gYHVp
bnQ4X3RgKS4KKyAgICAgICAgVGhlc2UgY29udmVydGVkIGVudW0gY2xhc3MgbWFuYWdlcyBiaXQg
ZmxhZ3MgYnV0IHRoZXkgYWxyZWFkeSBoYXMgOCBmbGFncy4KKyAgICAgICAgRm9yIHRoZSBmdXR1
cmUsIHdlIG1heSBleHBhbmQgdGhlaXIgYmFzZSB0eXBlIHRvIG1vcmUgbGFyZ2VyIHR5cGUKKyAg
ICAgICAgYnV0IHRoZW4gd2Ugd291bGQgbm90IGxpa2UgdG8gdHdlYWsgdGhlc2UgYHN0YXRpY19j
YXN0YCBieSBoYW5kLgorCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggdXNlIGBzdGQ6OnVuZGVybHlp
bmdfdHlwZTxUPmAuCisKKyAgICAgICAgRnVydGhlcm1vcmUsIEkgZm91bmQgd2UgY2FuIGNvbnZl
cnQgYE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLm1fb2xkVmFsdWVGbGFnYCB0byBgT3B0
aW9uYWxgCisgICAgICAgIGFuZCBpdHMgY2hhbmdlIHdpbGwgcmVtb3ZlIGFsbW9zdCBzdGF0aWNf
Y2FzdC4gVGh1cyB3ZSBkaWQgaXQuCisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYW5Vc2VTZXREYXRhT3B0aW1pemF0aW9uKToKKyAgICAgICAg
KiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRM
aXN0TXV0YXRpb25TY29wZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNdXRhdGlvbk9ic2VydmVyc09m
VHlwZSBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUpOgorICAgICAgICAqIGRvbS9NdXRh
dGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
OjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCBjb25zdCk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckNo
YXJhY3RlckRhdGFNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKToKKyAgICAgICAgKiBk
b20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tIGNv
bnN0KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6aXNTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmRl
bGl2ZXJ5T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjptdXRhdGlvblR5cGVzIGNvbnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnMp
OgorCiAyMDIxLTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIENvbnNvbGlkYXRlIEJvb2tzIGJ1bmRsZSBjaGVja3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmNwcAppbmRleCBiYjhkNTNjY2M0NDVjNzBjZmE4MmZlY2Y2MzVkNWNiMjA0
NmY2NGE3Li42YWIyMzVkYjljNTBhYTliZTQ0MjZmYjhkNDMyODdhNDRmMzIwMDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChDaGFyYWN0ZXJEYXRhKTsKIHN0YXRpYyBib29sIGNhblVzZVNldERh
dGFPcHRpbWl6YXRpb24oY29uc3QgQ2hhcmFjdGVyRGF0YSYgbm9kZSkKIHsKICAgICBhdXRvJiBk
b2N1bWVudCA9IG5vZGUuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gIWRvY3VtZW50Lmhhc0xpc3Rl
bmVyVHlwZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RFTkVSKSAmJiAh
ZG9jdW1lbnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hh
cmFjdGVyRGF0YSkKKyAgICByZXR1cm4gIWRvY3VtZW50Lmhhc0xpc3RlbmVyVHlwZShEb2N1bWVu
dDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RFTkVSKSAmJiAhZG9jdW1lbnQuaGFzTXV0
YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlOjpDaGFy
YWN0ZXJEYXRhKQogICAgICAgICAmJiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50
OjpET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRleCAyOTY2NzY3NzY4ZjBkNzE0NzQyZTM2YmNl
NWI2MTA4Njk3N2Y5MWZmLi4yNjllNjRhZDEzYTYyMjc0NWE4NTAyMTcxNjBhOGM4YTgwMDI3MDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTc2
LDcgKzc2LDcgQEAgY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShDb250YWluZXJOb2RlJiB0YXJnZXQpCiAg
ICAgewotICAgICAgICBpZiAodGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNP
ZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKHRhcmdldC5k
b2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6Ok11
dGF0aW9uVHlwZTo6Q2hpbGRMaXN0KSkKICAgICAgICAgICAgIG1fYWNjdW11bGF0b3IgPSBDaGls
ZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSh0YXJnZXQpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGRmNDMyYmNjODM3ZWM1ZDVmMGFl
OTZjY2RmNTRjYWY5NTE0NWYzNWYuLmJmMjJiODliZDk4ZWJkMTY2YjdmZmM4NmE1ZmEzMWZkNDE2
NTQ2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hp
bGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VS
VChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKICAgICAgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwotICAg
ICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShN
dXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoZG9j
dW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGU6OkNoaWxkTGlzdCkpKSB7CiAgICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbikKICAgICAgICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0MmJlYTg4OGVhMTkyYWRkZjRjOGM3N2YwYzBj
NjlmYmUxNDZhMjUyLi5hNTc4NTA2ZDM5YzA4MmNlZDc0ZmFjMTEzNGJmYzlkOGZjMTNhNTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CkBAIC04ODYsNyArODg3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNNdXRhdGlv
bk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHR5cGU7
CisgICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlPE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZT46OnR5cGU+
KHR5cGUpOwogICAgIH0KICAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tdXRhdGlvbk9ic2VydmVyVHlwZXM7IH0KICAgICB2b2lkIGFkZE11dGF0aW9uT2Jz
ZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBlcykgeyBtX211dGF0aW9uT2Jz
ZXJ2ZXJUeXBlcyB8PSB0eXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwCmluZGV4IGE0YWMwZWI3ZTU3MTc3Y2YwNDIzN2U2YTkyM2NjNTAzMDZlMmJiZDYuLmUxMGVl
NTI4M2EzMmJlYjE2OWU3ODdjZjIyN2Q2NzdjODdjZmE0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgogI2luY2x1ZGUgIldpbmRvd0V2ZW50TG9vcC5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CkBAIC03MSwxMCArNzIsMTAgQEAgTXV0YXRpb25PYnNlcnZlcjo6fk11dGF0
aW9uT2JzZXJ2ZXIoKQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXI6OnZhbGlkYXRlT3B0aW9ucyhN
dXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zKQogewotICAgIHJldHVybiAob3B0aW9ucyAm
IChBdHRyaWJ1dGVzIHwgQ2hhcmFjdGVyRGF0YSB8IENoaWxkTGlzdCkpCi0gICAgICAgICYmICgo
b3B0aW9ucyAmIEF0dHJpYnV0ZXMpIHx8ICEob3B0aW9ucyAmIEF0dHJpYnV0ZU9sZFZhbHVlKSkK
LSAgICAgICAgJiYgKChvcHRpb25zICYgQXR0cmlidXRlcykgfHwgIShvcHRpb25zICYgQXR0cmli
dXRlRmlsdGVyKSkKLSAgICAgICAgJiYgKChvcHRpb25zICYgQ2hhcmFjdGVyRGF0YSkgfHwgIShv
cHRpb25zICYgQ2hhcmFjdGVyRGF0YU9sZFZhbHVlKSk7CisgICAgcmV0dXJuIChvcHRpb25zICYg
KHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPE11dGF0aW9uVHlwZT46OnR5cGU+KE11
dGF0aW9uVHlwZTo6QXR0cmlidXRlcykgfCBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlw
ZTxNdXRhdGlvblR5cGU+Ojp0eXBlPihNdXRhdGlvblR5cGU6OkNoYXJhY3RlckRhdGEpIHwgc3Rh
dGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25UeXBlPjo6dHlwZT4oTXV0YXRp
b25UeXBlOjpDaGlsZExpc3QpKSkKKyAgICAgICAgJiYgKChvcHRpb25zICYgc3RhdGljX2Nhc3Q8
c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25UeXBlPjo6dHlwZT4oTXV0YXRpb25UeXBlOjpB
dHRyaWJ1dGVzKSkgfHwgIShvcHRpb25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5
cGU8RGVsaXZlcnlGbGFncz46OnR5cGU+KERlbGl2ZXJ5RmxhZ3M6OkF0dHJpYnV0ZU9sZFZhbHVl
KSkpCisgICAgICAgICYmICgob3B0aW9ucyAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190
eXBlPE11dGF0aW9uVHlwZT46OnR5cGU+KE11dGF0aW9uVHlwZTo6QXR0cmlidXRlcykpIHx8ICEo
b3B0aW9ucyAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPE9ic2VydmF0aW9uRmxh
Z3M+Ojp0eXBlPihPYnNlcnZhdGlvbkZsYWdzOjpBdHRyaWJ1dGVGaWx0ZXIpKSkKKyAgICAgICAg
JiYgKChvcHRpb25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25U
eXBlPjo6dHlwZT4oTXV0YXRpb25UeXBlOjpDaGFyYWN0ZXJEYXRhKSkgfHwgIShvcHRpb25zICYg
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8RGVsaXZlcnlGbGFncz46OnR5cGU+KERl
bGl2ZXJ5RmxhZ3M6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSkpKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0JiBp
bml0KQpAQCAtODIsMjYgKzgzLDI2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE11dGF0aW9uT2JzZXJ2
ZXI6Om9ic2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5pdCkKICAgICBNdXRhdGlvbk9i
c2VydmVyT3B0aW9ucyBvcHRpb25zID0gMDsKIAogICAgIGlmIChpbml0LmNoaWxkTGlzdCkKLSAg
ICAgICAgb3B0aW9ucyB8PSBDaGlsZExpc3Q7CisgICAgICAgIG9wdGlvbnMgfD0gc3RhdGljX2Nh
c3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25UeXBlPjo6dHlwZT4oTXV0YXRpb25UeXBl
OjpDaGlsZExpc3QpOwogICAgIGlmIChpbml0LnN1YnRyZWUpCi0gICAgICAgIG9wdGlvbnMgfD0g
U3VidHJlZTsKKyAgICAgICAgb3B0aW9ucyB8PSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdf
dHlwZTxPYnNlcnZhdGlvbkZsYWdzPjo6dHlwZT4oT2JzZXJ2YXRpb25GbGFnczo6U3VidHJlZSk7
CiAgICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCi0gICAgICAg
IG9wdGlvbnMgfD0gQXR0cmlidXRlT2xkVmFsdWU7CisgICAgICAgIG9wdGlvbnMgfD0gc3RhdGlj
X2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8RGVsaXZlcnlGbGFncz46OnR5cGU+KERlbGl2ZXJ5
RmxhZ3M6OkF0dHJpYnV0ZU9sZFZhbHVlKTsKICAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xk
VmFsdWUudmFsdWVPcihmYWxzZSkpCi0gICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9s
ZFZhbHVlOworICAgICAgICBvcHRpb25zIHw9IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190
eXBlPERlbGl2ZXJ5RmxhZ3M+Ojp0eXBlPihEZWxpdmVyeUZsYWdzOjpDaGFyYWN0ZXJEYXRhT2xk
VmFsdWUpOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVGaWx0ZXI7CiAgICAg
aWYgKGluaXQuYXR0cmlidXRlRmlsdGVyKSB7CiAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiBp
bml0LmF0dHJpYnV0ZUZpbHRlci52YWx1ZSgpKQogICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVy
LmFkZCh2YWx1ZSk7Ci0gICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlRmlsdGVyOworICAgICAg
ICBvcHRpb25zIHw9IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPE9ic2VydmF0aW9u
RmxhZ3M+Ojp0eXBlPihPYnNlcnZhdGlvbkZsYWdzOjpBdHRyaWJ1dGVGaWx0ZXIpOwogICAgIH0K
IAotICAgIGlmIChpbml0LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJpYnV0ZXMudmFsdWUoKSA6IChv
cHRpb25zICYgKEF0dHJpYnV0ZUZpbHRlciB8IEF0dHJpYnV0ZU9sZFZhbHVlKSkpCi0gICAgICAg
IG9wdGlvbnMgfD0gQXR0cmlidXRlczsKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVzID8gaW5pdC5h
dHRyaWJ1dGVzLnZhbHVlKCkgOiAob3B0aW9ucyAmIChzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlp
bmdfdHlwZTxPYnNlcnZhdGlvbkZsYWdzPjo6dHlwZT4oT2JzZXJ2YXRpb25GbGFnczo6QXR0cmli
dXRlRmlsdGVyKSB8IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPERlbGl2ZXJ5Rmxh
Z3M+Ojp0eXBlPihEZWxpdmVyeUZsYWdzOjpBdHRyaWJ1dGVPbGRWYWx1ZSkpKSkKKyAgICAgICAg
b3B0aW9ucyB8PSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxNdXRhdGlvblR5cGU+
Ojp0eXBlPihNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMpOwogCi0gICAgaWYgKGluaXQuY2hhcmFj
dGVyRGF0YSA/IGluaXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogKG9wdGlvbnMgJiBDaGFyYWN0
ZXJEYXRhT2xkVmFsdWUpKQotICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGE7CisgICAg
aWYgKGluaXQuY2hhcmFjdGVyRGF0YSA/IGluaXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogKG9w
dGlvbnMgJiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxEZWxpdmVyeUZsYWdzPjo6
dHlwZT4oRGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkpCisgICAgICAgIG9w
dGlvbnMgfD0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8TXV0YXRpb25UeXBlPjo6
dHlwZT4oTXV0YXRpb25UeXBlOjpDaGFyYWN0ZXJEYXRhKTsKIAogICAgIGlmICghdmFsaWRhdGVP
cHRpb25zKG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0NzdmMGY5M2QyNmZmM2Y5
NzAxZTg3YzJiOGJmMWQzMjZlN2VkOTI2Li4xMGE1YWU1NjkxYjAwZGRmOWYyODQyNmY4YzcyMmVh
OWYxZjU1NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTQ4LDEz
ICs0OCwxMyBAQCBjbGFzcyBNdXRhdGlvblJlY29yZDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBXaW5k
b3dFdmVudExvb3A7CiAKLXVzaW5nIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zID0gdW5zaWduZWQg
Y2hhcjsKLXVzaW5nIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zID0gdW5zaWduZWQgY2hh
cjsKK3VzaW5nIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zID0gdWludDhfdDsKK3VzaW5nIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zID0gdWludDhfdDsKIAogY2xhc3MgTXV0YXRpb25PYnNl
cnZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uT2JzZXJ2ZXI+IHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKE11dGF0aW9uT2JzZXJ2ZXIpOwogcHVibGljOgotICAgIGVu
dW0gTXV0YXRpb25UeXBlIHsKKyAgICBlbnVtIGNsYXNzIE11dGF0aW9uVHlwZTogdWludDhfdCB7
CiAgICAgICAgIENoaWxkTGlzdCA9IDEgPDwgMCwKICAgICAgICAgQXR0cmlidXRlcyA9IDEgPDwg
MSwKICAgICAgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMiwKQEAgLTYyLDEyICs2MiwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIEFsbE11dGF0aW9uVHlwZXMgPSBDaGlsZExpc3QgfCBBdHRyaWJ1dGVz
IHwgQ2hhcmFjdGVyRGF0YQogICAgIH07CiAKLSAgICBlbnVtIE9ic2VydmF0aW9uRmxhZ3MgIHsK
KyAgICBlbnVtIGNsYXNzIE9ic2VydmF0aW9uRmxhZ3M6IHVpbnQ4X3QgewogICAgICAgICBTdWJ0
cmVlID0gMSA8PCAzLAogICAgICAgICBBdHRyaWJ1dGVGaWx0ZXIgPSAxIDw8IDQKICAgICB9Owog
Ci0gICAgZW51bSBEZWxpdmVyeUZsYWdzIHsKKyAgICBlbnVtIGNsYXNzIERlbGl2ZXJ5RmxhZ3M6
IHVpbnQ4X3QgewogICAgICAgICBBdHRyaWJ1dGVPbGRWYWx1ZSA9IDEgPDwgNSwKICAgICAgICAg
Q2hhcmFjdGVyRGF0YU9sZFZhbHVlID0gMSA8PCA2LAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCAwMjc2
ZTQyYmU1YmQ4M2ZmNDJhNzkzNTZiZGU5Y2U3MzYwOTljYmRlLi40ODU1OTY3Mzk0OWM1NTIxNzQz
NjExMzcwZmRhOWYwN2UwMzc0NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKQEAgLTM0LDE5ICszNCwyMSBAQAogCiAj
aW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0
aW9uUmVjb3JkLmgiCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIE11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxN
dXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYgb2JzZXJ2
ZXJzLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcpCitpbmxpbmUg
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwKEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5
T3B0aW9ucz4mJiBvYnNlcnZlcnMsIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5
RmxhZ3M+IG9sZFZhbHVlRmxhZykKICAgICA6IG1fb2JzZXJ2ZXJzKFdURk1vdmUob2JzZXJ2ZXJz
KSkKICAgICAsIG1fb2xkVmFsdWVGbGFnKG9sZFZhbHVlRmxhZykKIHsKICAgICBBU1NFUlQoIW1f
b2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlm
TmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUs
IE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlm
aWVkTmFtZSogYXR0cmlidXRlTmFtZSkKK3N0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVl
ZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIE9w
dGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M+IG9sZFZhbHVlRmxhZywgY29u
c3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKIHsKLSAgICBBU1NFUlQoKHR5cGUgPT0g
TXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmli
dXRlTmFtZSk7CisgICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9u
VHlwZTo6QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CiAg
ICAgYXV0byBvYnNlcnZlcnMgPSB0YXJnZXQucmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzKHR5
cGUsIGF0dHJpYnV0ZU5hbWUpOwogICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwLmgKaW5kZXggM2MwYWU1MjM3ZDRiMmUyZWZmNzBkZGU2NjJlNWY0
ZTFlNTY5MjZhZC4uNDZhODliMjFiMWEyOTc5ZmE4ZWVmNzgwMjk0YTVjYTRkYWY1NTU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
LmgKQEAgLTMzLDcgKzMzLDkgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk11
dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw0MyArNDQsNDkgQEAgY2xhc3MgUXVhbGlm
aWVkTmFtZTsKIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxp
dmVyeU9wdGlvbnM+JiYsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zKTsKKyAgICBNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwg
TXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYsIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2
ZXI6OkRlbGl2ZXJ5RmxhZ3M+KTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKE5vZGUm
IHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRp
b25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAg
aWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlv
bk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkNoaWxkTGlzdCkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgICAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1
ZUZsYWcgPSAwOwotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlv
bk9ic2VydmVyOjpDaGlsZExpc3QsIG9sZFZhbHVlRmxhZyk7CisgICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6Q2hpbGRM
aXN0LCBXVEY6Om51bGxvcHQpOwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckNoYXJhY3RlckRhdGFNdXRh
dGlvbihOb2RlJiB0YXJnZXQpCiAgICAgewotICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgp
Lmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRh
dGEpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJz
T2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6Q2hhcmFjdGVyRGF0YSkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVk
ZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhLCBNdXRhdGlvbk9ic2Vy
dmVyOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpOworICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVk
ZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkNoYXJhY3RlckRhdGEs
IE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7
CiAgICAgfQogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cD4gY3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKE5vZGUmIHRhcmdldCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICB7Ci0gICAgICAgIGlmICghdGFy
Z2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZl
cjo6QXR0cmlidXRlcykpCisgICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRp
b25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlOjpBdHRyaWJ1
dGVzKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMsIE11dGF0aW9u
T2JzZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZhbHVlLCAmYXR0cmlidXRlTmFtZSk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlw
ZTo6QXR0cmlidXRlcywgTXV0YXRpb25PYnNlcnZlcjo6RGVsaXZlcnlGbGFnczo6QXR0cmlidXRl
T2xkVmFsdWUsICZhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKICAgICBib29sIGlzT2xkVmFsdWVS
ZXF1ZXN0ZWQoKSBjb25zdDsKICAgICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZChSZWY8TXV0
YXRpb25SZWNvcmQ+JiYpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdl
dCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5
T3B0aW9ucyBvbGRWYWx1ZUZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUg
PSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwPiBjcmVhdGVJZk5lZWRlZChOb2RlJiB0YXJnZXQsIE11dGF0aW9uT2JzZXJ2
ZXI6Ok11dGF0aW9uVHlwZSwgT3B0aW9uYWw8TXV0YXRpb25PYnNlcnZlcjo6RGVsaXZlcnlGbGFn
cz4gb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lID0gbnVs
bHB0cik7CiAKLSAgICBib29sIGhhc09sZFZhbHVlKE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zIG9wdGlvbnMpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbnMgJiBtX29sZFZhbHVlRmxhZzsgfQor
ICAgIGJvb2wgaGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0aW9u
cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9vbGRWYWx1ZUZsYWcpCisgICAgICAgICAg
ICByZXR1cm4gb3B0aW9uczsKKworICAgICAgICBhdXRvIG9sZFZhbHVlRmxhZyA9IHN0YXRpY19j
YXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M+
Ojp0eXBlPihtX29sZFZhbHVlRmxhZy52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMg
JiBvbGRWYWx1ZUZsYWc7CisgICAgfQogCiAgICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZl
cj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBtX29ic2VydmVyczsKLSAgICBNdXRh
dGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBtX29sZFZhbHVlRmxhZzsKKyAgICBPcHRpb25hbDxN
dXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzPiBtX29sZFZhbHVlRmxhZzsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCAwZWNiMDViNDg4NjBjNzc3MTQxOGQ4YmY5
ZDI2MTI5M2E4ODY1YWUzLi43ZWQ3ZTFkMjliODY2ZGI5YzI5ZTk2ZDIxZmMyYzUwOTgyYzRkOTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCkBAIC0zNCw5ICszNCwxMyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAordXNpbmcgTXV0YXRpb25UeXBlID0gTXV0YXRpb25PYnNlcnZlcjo6
TXV0YXRpb25UeXBlOwordXNpbmcgT2JzZXJ2YXRpb25GbGFncyA9IE11dGF0aW9uT2JzZXJ2ZXI6
Ok9ic2VydmF0aW9uRmxhZ3M7CisKIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Ok11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24oTXV0YXRpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIE5vZGUm
IG5vZGUsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMsIGNvbnN0IEhhc2hTZXQ8QXRv
bVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcikKICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCiAg
ICAgLCBtX25vZGUobm9kZSkKQEAgLTk0LDE2ICs5OCwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8SGFz
aFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246
OnRhawogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotYm9vbCBNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmIG5vZGUsIE11dGF0
aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRy
aWJ1dGVOYW1lKSBjb25zdAorYm9vbCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91
bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmIG5vZGUsIE11dGF0aW9uVHlwZSB0eXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIEFTU0VSVCgodHlw
ZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKLSAgICBpZiAoIShtX29wdGlvbnMgJiB0eXBlKSkKKyAgICBBU1NFUlQo
KHR5cGUgPT0gTXV0YXRpb25UeXBlOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKKyAgICBpZiAoIShtX29wdGlvbnMgJiBzdGF0aWNfY2FzdDxzdGQ6OnVu
ZGVybHlpbmdfdHlwZTxNdXRhdGlvblR5cGU+Ojp0eXBlPih0eXBlKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmICgmbV9ub2RlICE9ICZub2RlICYmICFpc1N1YnRyZWUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHR5cGUgIT0gTXV0YXRpb25PYnNlcnZlcjo6
QXR0cmlidXRlcyB8fCAhKG1fb3B0aW9ucyAmIE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZUZp
bHRlcikpCisgICAgaWYgKHR5cGUgIT0gTXV0YXRpb25UeXBlOjpBdHRyaWJ1dGVzIHx8ICEobV9v
cHRpb25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8T2JzZXJ2YXRpb25GbGFn
cz46OnR5cGU+KE9ic2VydmF0aW9uRmxhZ3M6OkF0dHJpYnV0ZUZpbHRlcikpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghYXR0cmlidXRlTmFtZS0+bmFtZXNwYWNlVVJJKCkuaXNO
dWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uaAppbmRleCBlNjk0MDQ4M2EzMTNjOGZkMWJkMTZkYzE3Y2I5NmIxM2FjZDIyYTNhLi4w
Nzg4ZDYyNDQ4ZjU1N2NiNjdkY2Q0OWMxODgyNzU5YTAwMDdhYjI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKIAogI2luY2x1ZGUgIkdDUmVhY2hhYmxlUmVmLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25P
YnNlcnZlci5oIgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmdIYXNoLmg+CkBAIC01MiwxMiArNTMsMTIgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzVHJhbnNpZW50UmVnaXN0cmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMgJiYgIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMtPmlzRW1wdHko
KTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmLCBNdXRhdGlv
bk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5h
bWUpIGNvbnN0OwotICAgIGJvb2wgaXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25z
ICYgTXV0YXRpb25PYnNlcnZlcjo6U3VidHJlZTsgfQorICAgIGJvb2wgaXNTdWJ0cmVlKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8
TXV0YXRpb25PYnNlcnZlcjo6T2JzZXJ2YXRpb25GbGFncz46OnR5cGU+KE11dGF0aW9uT2JzZXJ2
ZXI6Ok9ic2VydmF0aW9uRmxhZ3M6OlN1YnRyZWUpOyB9CiAKICAgICBNdXRhdGlvbk9ic2VydmVy
JiBvYnNlcnZlcigpIHsgcmV0dXJuIG1fb2JzZXJ2ZXIuZ2V0KCk7IH0KICAgICBOb2RlJiBub2Rl
KCkgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMg
ZGVsaXZlcnlPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYgKE11dGF0aW9uT2Jz
ZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZhbHVlIHwgTXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0
YU9sZFZhbHVlKTsgfQotICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMo
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlv
blR5cGVzOyB9CisgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYgKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJs
eWluZ190eXBlPE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M+Ojp0eXBlPihNdXRhdGlv
bk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzOjpBdHRyaWJ1dGVPbGRWYWx1ZSkgfCBzdGF0aWNfY2Fz
dDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxNdXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzPjo6
dHlwZT4oTXV0YXRpb25PYnNlcnZlcjo6RGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9sZFZh
bHVlKSk7IH0KKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtdXRhdGlvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8
TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlPjo6dHlwZT4oTXV0YXRpb25PYnNlcnZlcjo6
TXV0YXRpb25UeXBlOjpBbGxNdXRhdGlvblR5cGVzKTsgfQogCiAgICAgdm9pZCBhZGRSZWdpc3Ry
YXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8Tm9kZSo+JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCBjZDM4ZmY2MGY0YmZiZTdkZjZmMzg1OWQxYmIwNDg5YTlkNDMzMTIxLi44MzBkZjJjNjI0
OTJkOWM1MjIxNGFkYzY4ODc4YTZkYjAzNGQzZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjg5
LDcgKzIyODksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RyeT4gc3RhdGljIGlubGluZSB2
b2lkIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aQogSGFzaE1hcDxSZWY8TXV0YXRp
b25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBOb2RlOjpyZWdpc3Rl
cmVkTXV0YXRpb25PYnNlcnZlcnMoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUs
IGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgSGFzaE1hcDxSZWY8
TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZXN1bHQ7
Ci0gICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0
cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOworICAgIEFTU0VSVCgodHlwZSA9PSBNdXRh
dGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkg
fHwgIWF0dHJpYnV0ZU5hbWUpOwogICAgIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0
aW9uKHJlc3VsdCwgbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBhdHRy
aWJ1dGVOYW1lKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihyZXN1
bHQsIHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLCAqdGhpcywgdHlwZSwgYXR0
cmlidXRlTmFtZSk7CiAgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBu
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424162</attachid>
            <date>2021-03-24 11:28:52 -0700</date>
            <delta_ts>2021-04-14 07:26:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210325032851.patch</filename>
            <type>text/plain</type>
            <size>22479</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU0MGU3MzQ0ZThlZjNm
ZWM0ZGVmMDE5ODU4NjllMTYwYzNkNTcyMy4uYjAzNDBkOWRlY2U2MjVhYjgwZTZhOWI0NTY2OTJl
MzY0ODZmZTBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAzLTI0ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVzZXMgYHN0ZDo6
dW5kZXJseWluZ190eXBlPFQ+YCB0byBzcGVjaWZ5IGEgdHlwZSBmb3IgIGBzdGF0aWNfY2FzdGAK
KyAgICAgICAgaW5zdGVhZCBvZiBzcGVjaWZ5aW5nIGFjdHVhbCB0eXBlIG5hbWUgKGUuZy4gYHVp
bnQ4X3RgKS4KKyAgICAgICAgVGhlc2UgY29udmVydGVkIGVudW0gY2xhc3MgbWFuYWdlcyBiaXQg
ZmxhZ3MgYnV0IHRoZXkgYWxyZWFkeSBoYXMgOCBmbGFncy4KKyAgICAgICAgRm9yIHRoZSBmdXR1
cmUsIHdlIG1heSBleHBhbmQgdGhlaXIgYmFzZSB0eXBlIHRvIG1vcmUgbGFyZ2VyIHR5cGUKKyAg
ICAgICAgYnV0IHRoZW4gd2Ugd291bGQgbm90IGxpa2UgdG8gdHdlYWsgdGhlc2UgYHN0YXRpY19j
YXN0YCBieSBoYW5kLgorCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggdXNlIGBzdGQ6OnVuZGVybHlp
bmdfdHlwZTxUPmAuCisKKyAgICAgICAgRnVydGhlcm1vcmUsIEkgZm91bmQgd2UgY2FuIGNvbnZl
cnQgYE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLm1fb2xkVmFsdWVGbGFnYCB0byBgT3B0
aW9uYWxgCisgICAgICAgIGFuZCBpdHMgY2hhbmdlIHdpbGwgcmVtb3ZlIGFsbW9zdCBzdGF0aWNf
Y2FzdC4gVGh1cyB3ZSBkaWQgaXQuCisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYW5Vc2VTZXREYXRhT3B0aW1pemF0aW9uKToKKyAgICAgICAg
KiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRM
aXN0TXV0YXRpb25TY29wZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNdXRhdGlvbk9ic2VydmVyc09m
VHlwZSBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUpOgorICAgICAgICAqIGRvbS9NdXRh
dGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
OjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCBjb25zdCk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckNo
YXJhY3RlckRhdGFNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKToKKyAgICAgICAgKiBk
b20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tIGNv
bnN0KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6aXNTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmRl
bGl2ZXJ5T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjptdXRhdGlvblR5cGVzIGNvbnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnMp
OgorCiAyMDIxLTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIENvbnNvbGlkYXRlIEJvb2tzIGJ1bmRsZSBjaGVja3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmNwcAppbmRleCBiYjhkNTNjY2M0NDVjNzBjZmE4MmZlY2Y2MzVkNWNiMjA0
NmY2NGE3Li42YWIyMzVkYjljNTBhYTliZTQ0MjZmYjhkNDMyODdhNDRmMzIwMDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChDaGFyYWN0ZXJEYXRhKTsKIHN0YXRpYyBib29sIGNhblVzZVNldERh
dGFPcHRpbWl6YXRpb24oY29uc3QgQ2hhcmFjdGVyRGF0YSYgbm9kZSkKIHsKICAgICBhdXRvJiBk
b2N1bWVudCA9IG5vZGUuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gIWRvY3VtZW50Lmhhc0xpc3Rl
bmVyVHlwZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RFTkVSKSAmJiAh
ZG9jdW1lbnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hh
cmFjdGVyRGF0YSkKKyAgICByZXR1cm4gIWRvY3VtZW50Lmhhc0xpc3RlbmVyVHlwZShEb2N1bWVu
dDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RFTkVSKSAmJiAhZG9jdW1lbnQuaGFzTXV0
YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlOjpDaGFy
YWN0ZXJEYXRhKQogICAgICAgICAmJiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50
OjpET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRleCAyOTY2NzY3NzY4ZjBkNzE0NzQyZTM2YmNl
NWI2MTA4Njk3N2Y5MWZmLi4yNjllNjRhZDEzYTYyMjc0NWE4NTAyMTcxNjBhOGM4YTgwMDI3MDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTc2
LDcgKzc2LDcgQEAgY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShDb250YWluZXJOb2RlJiB0YXJnZXQpCiAg
ICAgewotICAgICAgICBpZiAodGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNP
ZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKHRhcmdldC5k
b2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6Ok11
dGF0aW9uVHlwZTo6Q2hpbGRMaXN0KSkKICAgICAgICAgICAgIG1fYWNjdW11bGF0b3IgPSBDaGls
ZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSh0YXJnZXQpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGRmNDMyYmNjODM3ZWM1ZDVmMGFl
OTZjY2RmNTRjYWY5NTE0NWYzNWYuLmJmMjJiODliZDk4ZWJkMTY2YjdmZmM4NmE1ZmEzMWZkNDE2
NTQ2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hp
bGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VS
VChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKICAgICAgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwotICAg
ICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShN
dXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoZG9j
dW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGU6OkNoaWxkTGlzdCkpKSB7CiAgICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbikKICAgICAgICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0MmJlYTg4OGVhMTkyYWRkZjRjOGM3N2YwYzBj
NjlmYmUxNDZhMjUyLi5hODczNGZmOTM2NmQ0YTdlZDQ2N2RmNjQ2ZWJkY2Y4MmM1NWM5ZTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CkBAIC04ODYsNyArODg3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNNdXRhdGlv
bk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHR5cGU7
CisgICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlX3Q8TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlPj4odHlw
ZSk7CiAgICAgfQogICAgIGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnMoKSBjb25zdCB7IHJldHVy
biBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlczsgfQogICAgIHZvaWQgYWRkTXV0YXRpb25PYnNlcnZl
clR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIHR5cGVzKSB7IG1fbXV0YXRpb25PYnNlcnZl
clR5cGVzIHw9IHR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAK
aW5kZXggYTRhYzBlYjdlNTcxNzdjZjA0MjM3ZTZhOTIzY2M1MDMwNmUyYmJkNi4uOTI1NjAxM2Y4
ZGM5YmY1NGU1YzZjN2M2YjNlOGRhYjI4ZThhMzU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uUmVj
b3JkLmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRMb29wLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KQEAgLTcxLDEwICs3MiwxMCBAQCBNdXRhdGlvbk9ic2VydmVyOjp+TXV0YXRpb25P
YnNlcnZlcigpCiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIChvcHRpb25zICYgKEF0
dHJpYnV0ZXMgfCBDaGFyYWN0ZXJEYXRhIHwgQ2hpbGRMaXN0KSkKLSAgICAgICAgJiYgKChvcHRp
b25zICYgQXR0cmlidXRlcykgfHwgIShvcHRpb25zICYgQXR0cmlidXRlT2xkVmFsdWUpKQotICAg
ICAgICAmJiAoKG9wdGlvbnMgJiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBBdHRyaWJ1dGVG
aWx0ZXIpKQotICAgICAgICAmJiAoKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhKSB8fCAhKG9wdGlv
bnMgJiBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKTsKKyAgICByZXR1cm4gKG9wdGlvbnMgJiAoc3Rh
dGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxNdXRhdGlvblR5cGU+PihNdXRhdGlvblR5
cGU6OkF0dHJpYnV0ZXMpIHwgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxNdXRh
dGlvblR5cGU+PihNdXRhdGlvblR5cGU6OkNoYXJhY3RlckRhdGEpIHwgc3RhdGljX2Nhc3Q8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxNdXRhdGlvblR5cGU+PihNdXRhdGlvblR5cGU6OkNoaWxkTGlz
dCkpKQorICAgICAgICAmJiAoKG9wdGlvbnMgJiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PE11dGF0aW9uVHlwZT4+KE11dGF0aW9uVHlwZTo6QXR0cmlidXRlcykpIHx8ICEob3B0
aW9ucyAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RGVsaXZlcnlGbGFncz4+
KERlbGl2ZXJ5RmxhZ3M6OkF0dHJpYnV0ZU9sZFZhbHVlKSkpCisgICAgICAgICYmICgob3B0aW9u
cyAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8TXV0YXRpb25UeXBlPj4oTXV0
YXRpb25UeXBlOjpBdHRyaWJ1dGVzKSkgfHwgIShvcHRpb25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxPYnNlcnZhdGlvbkZsYWdzPj4oT2JzZXJ2YXRpb25GbGFnczo6QXR0
cmlidXRlRmlsdGVyKSkpCisgICAgICAgICYmICgob3B0aW9ucyAmIHN0YXRpY19jYXN0PHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8TXV0YXRpb25UeXBlPj4oTXV0YXRpb25UeXBlOjpDaGFyYWN0ZXJE
YXRhKSkgfHwgIShvcHRpb25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxE
ZWxpdmVyeUZsYWdzPj4oRGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkpOwog
fQogCiBFeGNlcHRpb25Pcjx2b2lkPiBNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUmIG5v
ZGUsIGNvbnN0IEluaXQmIGluaXQpCkBAIC04MiwyNiArODMsMjYgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0JiBpbml0
KQogICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMgPSAwOwogCiAgICAgaWYgKGlu
aXQuY2hpbGRMaXN0KQotICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKKyAgICAgICAgb3B0
aW9ucyB8PSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PE11dGF0aW9uVHlwZT4+
KE11dGF0aW9uVHlwZTo6Q2hpbGRMaXN0KTsKICAgICBpZiAoaW5pdC5zdWJ0cmVlKQotICAgICAg
ICBvcHRpb25zIHw9IFN1YnRyZWU7CisgICAgICAgIG9wdGlvbnMgfD0gc3RhdGljX2Nhc3Q8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxPYnNlcnZhdGlvbkZsYWdzPj4oT2JzZXJ2YXRpb25GbGFnczo6
U3VidHJlZSk7CiAgICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUudmFsdWVPcihmYWxzZSkp
Ci0gICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlT2xkVmFsdWU7CisgICAgICAgIG9wdGlvbnMg
fD0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxEZWxpdmVyeUZsYWdzPj4oRGVs
aXZlcnlGbGFnczo6QXR0cmlidXRlT2xkVmFsdWUpOwogICAgIGlmIChpbml0LmNoYXJhY3RlckRh
dGFPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKLSAgICAgICAgb3B0aW9ucyB8PSBDaGFyYWN0ZXJE
YXRhT2xkVmFsdWU7CisgICAgICAgIG9wdGlvbnMgfD0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5
aW5nX3R5cGVfdDxEZWxpdmVyeUZsYWdzPj4oRGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9s
ZFZhbHVlKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlRmlsdGVyOwogICAg
IGlmIChpbml0LmF0dHJpYnV0ZUZpbHRlcikgewogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
aW5pdC5hdHRyaWJ1dGVGaWx0ZXIudmFsdWUoKSkKICAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRl
ci5hZGQodmFsdWUpOwotICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZUZpbHRlcjsKKyAgICAg
ICAgb3B0aW9ucyB8PSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PE9ic2VydmF0
aW9uRmxhZ3M+PihPYnNlcnZhdGlvbkZsYWdzOjpBdHRyaWJ1dGVGaWx0ZXIpOwogICAgIH0KIAot
ICAgIGlmIChpbml0LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJpYnV0ZXMudmFsdWUoKSA6IChvcHRp
b25zICYgKEF0dHJpYnV0ZUZpbHRlciB8IEF0dHJpYnV0ZU9sZFZhbHVlKSkpCi0gICAgICAgIG9w
dGlvbnMgfD0gQXR0cmlidXRlczsKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVzID8gaW5pdC5hdHRy
aWJ1dGVzLnZhbHVlKCkgOiAob3B0aW9ucyAmIChzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PE9ic2VydmF0aW9uRmxhZ3M+PihPYnNlcnZhdGlvbkZsYWdzOjpBdHRyaWJ1dGVGaWx0
ZXIpIHwgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxEZWxpdmVyeUZsYWdzPj4o
RGVsaXZlcnlGbGFnczo6QXR0cmlidXRlT2xkVmFsdWUpKSkpCisgICAgICAgIG9wdGlvbnMgfD0g
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxNdXRhdGlvblR5cGU+PihNdXRhdGlv
blR5cGU6OkF0dHJpYnV0ZXMpOwogCi0gICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YSA/IGluaXQu
Y2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUp
KQotICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGE7CisgICAgaWYgKGluaXQuY2hhcmFj
dGVyRGF0YSA/IGluaXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogKG9wdGlvbnMgJiBzdGF0aWNf
Y2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PERlbGl2ZXJ5RmxhZ3M+PihEZWxpdmVyeUZsYWdz
OjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKSkKKyAgICAgICAgb3B0aW9ucyB8PSBzdGF0aWNfY2Fz
dDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PE11dGF0aW9uVHlwZT4+KE11dGF0aW9uVHlwZTo6Q2hh
cmFjdGVyRGF0YSk7CiAKICAgICBpZiAoIXZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmgKaW5kZXggNDc3ZjBmOTNkMjZmZjNmOTcwMWU4N2MyYjhiZjFkMzI2ZTdlZDky
Ni4uMTBhNWFlNTY5MWIwMGRkZjlmMjg0MjZmOGM3MjJlYTlmMWY1NTU0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCkBAIC00OCwxMyArNDgsMTMgQEAgY2xhc3MgTXV0YXRp
b25SZWNvcmQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgV2luZG93RXZlbnRMb29wOwogCi11c2luZyBN
dXRhdGlvbk9ic2VydmVyT3B0aW9ucyA9IHVuc2lnbmVkIGNoYXI7Ci11c2luZyBNdXRhdGlvblJl
Y29yZERlbGl2ZXJ5T3B0aW9ucyA9IHVuc2lnbmVkIGNoYXI7Cit1c2luZyBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9ucyA9IHVpbnQ4X3Q7Cit1c2luZyBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cyA9IHVpbnQ4X3Q7CiAKIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChN
dXRhdGlvbk9ic2VydmVyKTsKIHB1YmxpYzoKLSAgICBlbnVtIE11dGF0aW9uVHlwZSB7CisgICAg
ZW51bSBjbGFzcyBNdXRhdGlvblR5cGU6IHVpbnQ4X3QgewogICAgICAgICBDaGlsZExpc3QgPSAx
IDw8IDAsCiAgICAgICAgIEF0dHJpYnV0ZXMgPSAxIDw8IDEsCiAgICAgICAgIENoYXJhY3RlckRh
dGEgPSAxIDw8IDIsCkBAIC02MiwxMiArNjIsMTIgQEAgcHVibGljOgogICAgICAgICBBbGxNdXRh
dGlvblR5cGVzID0gQ2hpbGRMaXN0IHwgQXR0cmlidXRlcyB8IENoYXJhY3RlckRhdGEKICAgICB9
OwogCi0gICAgZW51bSBPYnNlcnZhdGlvbkZsYWdzICB7CisgICAgZW51bSBjbGFzcyBPYnNlcnZh
dGlvbkZsYWdzOiB1aW50OF90IHsKICAgICAgICAgU3VidHJlZSA9IDEgPDwgMywKICAgICAgICAg
QXR0cmlidXRlRmlsdGVyID0gMSA8PCA0CiAgICAgfTsKIAotICAgIGVudW0gRGVsaXZlcnlGbGFn
cyB7CisgICAgZW51bSBjbGFzcyBEZWxpdmVyeUZsYWdzOiB1aW50OF90IHsKICAgICAgICAgQXR0
cmlidXRlT2xkVmFsdWUgPSAxIDw8IDUsCiAgICAgICAgIENoYXJhY3RlckRhdGFPbGRWYWx1ZSA9
IDEgPDwgNiwKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggMDI3NmU0MmJlNWJkODNmZjQyYTc5MzU2YmRl
OWNlNzM2MDk5Y2JkZS4uMWVlZmQ5NDQ2MzdiYWQ4ODEwMTk2MWI5MzQ2ZGNiNmZmYzRjNzE2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuY3BwCkBAIC0zNCwxOSArMzQsMjQgQEAKIAogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWlubGluZSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiYmIG9ic2VydmVycywgTXV0YXRpb25SZWNvcmREZWxp
dmVyeU9wdGlvbnMgb2xkVmFsdWVGbGFnKQordXNpbmcgTXV0YXRpb25UeXBlID0gTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlOwordXNpbmcgRGVsaXZlcnlGbGFncyA9IE11dGF0aW9uT2Jz
ZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M7CisKK2lubGluZSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0YXRpb25P
YnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiYmIG9ic2VydmVycywgT3B0
aW9uYWw8RGVsaXZlcnlGbGFncz4gb2xkVmFsdWVGbGFnKQogICAgIDogbV9vYnNlcnZlcnMoV1RG
TW92ZShvYnNlcnZlcnMpKQogICAgICwgbV9vbGRWYWx1ZUZsYWcob2xkVmFsdWVGbGFnKQogewog
ICAgIEFTU0VSVCghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3JlYXRlSWZOZWVkZWQoTm9kZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGUgdHlwZSwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb2xkVmFsdWVGbGFn
LCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQorc3RkOjp1bmlxdWVfcHRyPE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cDo6Y3JlYXRlSWZOZWVkZWQoTm9kZSYgdGFyZ2V0LCBNdXRhdGlvblR5cGUgdHlwZSwgT3B0aW9u
YWw8RGVsaXZlcnlGbGFncz4gb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRy
aWJ1dGVOYW1lKQogewotICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRy
aWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKKyAgICBBU1NFUlQo
KHR5cGUgPT0gTXV0YXRpb25UeXBlOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKICAgICBhdXRvIG9ic2VydmVycyA9IHRhcmdldC5yZWdpc3RlcmVkTXV0
YXRpb25PYnNlcnZlcnModHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKG9ic2VydmVycy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaAppbmRleCAzYzBhZTUyMzdkNGIy
ZTJlZmY3MGRkZTY2MmU1ZjRlMWU1NjkyNmFkLi4xM2NlYThkYWI1NGIyMjA3ZjJiMzA3YjlmNDE1
NWE0NzI3MWM5YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAuaApAQCAtMzMsNyArMzMsOSBAQAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDQ0ICs0Myw1
NCBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogCiBjbGFzcyBNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKKyAgICB1c2luZyBNdXRh
dGlvblR5cGUgPSBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU7CisgICAgdXNpbmcgRGVs
aXZlcnlGbGFncyA9IE11dGF0aW9uT2JzZXJ2ZXI6OkRlbGl2ZXJ5RmxhZ3M7CisKIHB1YmxpYzoK
LSAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9i
c2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYsIE11dGF0aW9uUmVjb3Jk
RGVsaXZlcnlPcHRpb25zKTsKKyAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNo
TWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+
JiYsIE9wdGlvbmFsPERlbGl2ZXJ5RmxhZ3M+KTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckNoaWxkTGlzdE11dGF0
aW9uKE5vZGUmIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCku
aGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkK
KyAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlw
ZShNdXRhdGlvblR5cGU6OkNoaWxkTGlzdCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcgPSAw
OwotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVy
OjpDaGlsZExpc3QsIG9sZFZhbHVlRmxhZyk7CisgICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRl
ZCh0YXJnZXQsIE11dGF0aW9uVHlwZTo6Q2hpbGRMaXN0LCBXVEY6Om51bGxvcHQpOwogICAgIH0K
IAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA+IGNyZWF0ZUZvckNoYXJhY3RlckRhdGFNdXRhdGlvbihOb2RlJiB0YXJnZXQpCiAgICAgewot
ICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBl
KE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEpKQorICAgICAgICBpZiAoIXRhcmdldC5k
b2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uVHlwZTo6Q2hhcmFj
dGVyRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4g
Y3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhLCBN
dXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpOworICAgICAgICByZXR1cm4g
Y3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvblR5cGU6OkNoYXJhY3RlckRhdGEsIERlbGl2
ZXJ5RmxhZ3M6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQXR0
cmlidXRlc011dGF0aW9uKE5vZGUmIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRp
b25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcykpCisgICAgICAg
IGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRp
b25UeXBlOjpBdHRyaWJ1dGVzKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJp
YnV0ZXMsIE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZhbHVlLCAmYXR0cmlidXRlTmFt
ZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uVHlwZTo6
QXR0cmlidXRlcywgRGVsaXZlcnlGbGFnczo6QXR0cmlidXRlT2xkVmFsdWUsICZhdHRyaWJ1dGVO
YW1lKTsKICAgICB9CiAKICAgICBib29sIGlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSBjb25zdDsKICAg
ICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZChSZWY8TXV0YXRpb25SZWNvcmQ+JiYpOwogCiBw
cml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IGNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6
TXV0YXRpb25UeXBlLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcs
IGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUgPSBudWxscHRyKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBjcmVhdGVJ
Zk5lZWRlZChOb2RlJiB0YXJnZXQsIE11dGF0aW9uVHlwZSwgT3B0aW9uYWw8RGVsaXZlcnlGbGFn
cz4gb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lID0gbnVs
bHB0cik7CiAKLSAgICBib29sIGhhc09sZFZhbHVlKE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zIG9wdGlvbnMpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbnMgJiBtX29sZFZhbHVlRmxhZzsgfQor
ICAgIGJvb2wgaGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0aW9u
cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9vbGRWYWx1ZUZsYWcpCisgICAgICAgICAg
ICByZXR1cm4gb3B0aW9uczsKKworICAgICAgICBhdXRvIG9sZFZhbHVlRmxhZyA9IHN0YXRpY19j
YXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RGVsaXZlcnlGbGFncz4+KG1fb2xkVmFsdWVGbGFn
LnZhbHVlKCkpOworICAgICAgICByZXR1cm4gb3B0aW9ucyAmIG9sZFZhbHVlRmxhZzsKKyAgICB9
CiAKICAgICBIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxp
dmVyeU9wdGlvbnM+IG1fb2JzZXJ2ZXJzOwotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zIG1fb2xkVmFsdWVGbGFnOworICAgIE9wdGlvbmFsPERlbGl2ZXJ5RmxhZ3M+IG1fb2xkVmFs
dWVGbGFnOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDBlY2IwNWI0
ODg2MGM3NzcxNDE4ZDhiZjlkMjYxMjkzYTg4NjVhZTMuLmQyN2EyN2EwZTUzMjhiOWM1NzllZTZi
NTExNWViMzRlMTM5YTgwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTM0LDkgKzM0LDEzIEBACiAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBNdXRhdGlvblR5cGUgPSBN
dXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGU7Cit1c2luZyBPYnNlcnZhdGlvbkZsYWdzID0g
TXV0YXRpb25PYnNlcnZlcjo6T2JzZXJ2YXRpb25GbGFnczsKKwogTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbjo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVy
JiBvYnNlcnZlciwgTm9kZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgb3B0aW9ucywg
Y29uc3QgSGFzaFNldDxBdG9tU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKQogICAgIDogbV9vYnNl
cnZlcihvYnNlcnZlcikKICAgICAsIG1fbm9kZShub2RlKQpAQCAtOTQsMTYgKzk4LDE2IEBAIHN0
ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbjo6dGFrCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1ib29s
IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20o
Tm9kZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1
YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Citib29sIE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9kZSwgTXV0YXRp
b25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0
cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOwotICAgIGlmICghKG1fb3B0aW9ucyAmIHR5
cGUpKQorICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvblR5cGU6OkF0dHJpYnV0ZXMgJiYgYXR0
cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOworICAgIGlmICghKG1fb3B0aW9ucyAmIHN0
YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8TXV0YXRpb25UeXBlPj4odHlwZSkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoJm1fbm9kZSAhPSAmbm9kZSAmJiAhaXNT
dWJ0cmVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICh0eXBlICE9IE11dGF0
aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgfHwgIShtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVy
OjpBdHRyaWJ1dGVGaWx0ZXIpKQorICAgIGlmICh0eXBlICE9IE11dGF0aW9uVHlwZTo6QXR0cmli
dXRlcyB8fCAhKG1fb3B0aW9ucyAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
T2JzZXJ2YXRpb25GbGFncz4+KE9ic2VydmF0aW9uRmxhZ3M6OkF0dHJpYnV0ZUZpbHRlcikpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghYXR0cmlidXRlTmFtZS0+bmFtZXNwYWNl
VVJJKCkuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24uaAppbmRleCBlNjk0MDQ4M2EzMTNjOGZkMWJkMTZkYzE3Y2I5NmIxM2Fj
ZDIyYTNhLi4wN2UxZjY4ZjFjNTRiZjFhN2UzMGFjYmJkYWI0Nzk1ZDQxNWNiOWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKQEAg
LTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkdDUmVhY2hhYmxlUmVmLmgiCiAjaW5jbHVkZSAi
TXV0YXRpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CkBAIC00Miw2ICs0MywxMSBAQCBjbGFzcyBRdWFs
aWZpZWROYW1lOwogCiBjbGFzcyBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworICAgIHVzaW5nIE11dGF0aW9uVHlwZSA9IE11dGF0
aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZTsKKyAgICB1c2luZyBPYnNlcnZhdGlvbkZsYWdzID0g
TXV0YXRpb25PYnNlcnZlcjo6T2JzZXJ2YXRpb25GbGFnczsKKyAgICB1c2luZyBEZWxpdmVyeUZs
YWdzID0gTXV0YXRpb25PYnNlcnZlcjo6RGVsaXZlcnlGbGFnczsKKwogcHVibGljOgogICAgIE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24oTXV0YXRpb25PYnNlcnZlciYsIE5vZGUmLCBNdXRh
dGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9tU3RyaW5nPiYgYXR0cmlidXRl
RmlsdGVyKTsKICAgICB+TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbigpOwpAQCAtNTEsMTMg
KzU3LDEzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxHQ1JlYWNoYWJs
ZVJlZjxOb2RlPj4+IHRha2VUcmFuc2llbnRSZWdpc3RyYXRpb25zKCk7CiAgICAgYm9vbCBoYXNU
cmFuc2llbnRSZWdpc3RyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2llbnRSZWdpc3Ry
YXRpb25Ob2RlcyAmJiAhbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy0+aXNFbXB0eSgpOyB9
CiAKLSAgICBib29sIHNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYsIE11dGF0aW9uT2Jz
ZXJ2ZXI6Ok11dGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiBN
dXRhdGlvbk9ic2VydmVyOjpTdWJ0cmVlOyB9CisgICAgYm9vbCBzaG91bGRSZWNlaXZlTXV0YXRp
b25Gcm9tKE5vZGUmLCBNdXRhdGlvblR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0
ZU5hbWUpIGNvbnN0OworICAgIGJvb2wgaXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
b25zICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxPYnNlcnZhdGlvbkZsYWdz
Pj4oT2JzZXJ2YXRpb25GbGFnczo6U3VidHJlZSk7IH0KIAogICAgIE11dGF0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyKCkgeyByZXR1cm4gbV9vYnNlcnZlci5nZXQoKTsgfQogICAgIE5vZGUmIG5vZGUo
KSB7IHJldHVybiBtX25vZGU7IH0KLSAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBk
ZWxpdmVyeU9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiAoTXV0YXRpb25PYnNl
cnZlcjo6QXR0cmlidXRlT2xkVmFsdWUgfCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRh
T2xkVmFsdWUpOyB9Ci0gICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgbXV0YXRpb25UeXBlcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIE11dGF0aW9uT2JzZXJ2ZXI6OkFsbE11dGF0aW9u
VHlwZXM7IH0KKyAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiAoc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5
aW5nX3R5cGVfdDxEZWxpdmVyeUZsYWdzPj4oRGVsaXZlcnlGbGFnczo6QXR0cmlidXRlT2xkVmFs
dWUpIHwgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxEZWxpdmVyeUZsYWdzPj4o
RGVsaXZlcnlGbGFnczo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSk7IH0KKyAgICBNdXRhdGlvbk9i
c2VydmVyT3B0aW9ucyBtdXRhdGlvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYg
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxNdXRhdGlvblR5cGU+PihNdXRhdGlv
blR5cGU6OkFsbE11dGF0aW9uVHlwZXMpOyB9CiAKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbk5v
ZGVzVG9TZXQoSGFzaFNldDxOb2RlKj4mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGNk
MzhmZjYwZjRiZmJlN2RmNmYzODU5ZDFiYjA0ODlhOWQ0MzMxMjEuLjgzMGRmMmM2MjQ5MmQ5YzUy
MjE0YWRjNjg4NzhhNmRiMDM0ZDNkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTIyODksNyArMjI4
OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ2lzdHJ5PiBzdGF0aWMgaW5saW5lIHZvaWQgY29s
bGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpCiBIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2Vy
dmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IE5vZGU6OnJlZ2lzdGVyZWRNdXRh
dGlvbk9ic2VydmVycyhNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKIHsKICAgICBIYXNoTWFwPFJlZjxNdXRhdGlv
bk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IHJlc3VsdDsKLSAgICBB
U1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVO
YW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CisgICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2Jz
ZXJ2ZXI6Ok11dGF0aW9uVHlwZTo6QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0
cmlidXRlTmFtZSk7CiAgICAgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24ocmVz
dWx0LCBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSwgKnRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5h
bWUpOwogICAgIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKHJlc3VsdCwgdHJh
bnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBhdHRyaWJ1dGVO
YW1lKTsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5wYXJlbnROb2RlKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425976</attachid>
            <date>2021-04-14 07:26:13 -0700</date>
            <delta_ts>2021-04-14 10:55:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210414232612.patch</filename>
            <type>text/plain</type>
            <size>24688</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxOWZkYzBlZTdhODM2
YWJlNjM1MjhlYmU4ZjcwYTdjNDg0YTcyYy4uOGZmNTE2Yzc3MmFiYTQyYjU2MDI2ZTE0YTJlOGU3
MTc2MDQzZWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA0LTE0ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBUaGlz
IHBhdGNoIHVuaWZpZXMgYE11dGF0aW9uT2JzZXJ2ZXJgJ3MgMyBlbnVtcworICAgICAgICAoYE11
dGF0aW9uVHlwZWAsIGBPYnNlcnZhdGlvbkZsYWdzYCBhbmQgYERlbGl2ZXJ5RmxhZ3NgKSwgaW50
byBzaW5nbGUgYE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZ2AKKyAgICAgICAgYW5kIHdpbGwg
aGFuZGxlIHRoaXMgZmxhZyBieSBgT3B0aW9uU2V0PE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zz5gLgorCisgICAgICAgIFRoZWlyIGVudW0gd2VyZSBkaWZmZXJlbnQgb24gZWFjaCBvdGhlcnMg
YnV0IGFyZSB1c2VkIGFzIGJpdCBtYXNrIG9uCisgICAgICAgIHNpbmdsZSBgTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNgIG9yIGBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9uc2AuCisgICAgICAg
IFNvIEkgdGhpbmsgd2UgY2FuIHVuaWZ5IGludG8gc2luZ2xlIGVudW0gY2xhc3MuCisKKyAgICAg
ICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5Vc2VTZXRE
YXRhT3B0aW1pemF0aW9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZTo6Q2hpbGRMaXN0TXV0
YXRpb25TY29wZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aGFzTXV0YXRpb25PYnNlcnZlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6
dmFsaWRhdGVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6Om9i
c2VydmUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9t
L011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3Jl
YXRlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA6Omhhc09sZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hhcmFjdGVyRGF0YU11
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
OjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20gY29uc3QpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjppc1N1YnRyZWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6ZGVsaXZlcnlPcHRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246
Om11dGF0aW9uVHlwZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKwogMjAyMS0wNC0wOSAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZ3JpZF0gU2V0IGhhc0ludHJpbnNpY1dpZHRoICYgaGFzSW50cmluc2lj
SGVpZ2h0IHByb3BlcnRpZXMgZm9yIFNWRyBlbGVtZW50J3MgaW50cmluc2ljIHNpemUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCAwZmYyYTVjZTJhM2M2NmQzODE3OTE0YWVm
NTAyZWQyNDkxNzM1NzM3Li5iZGI2NmUwOGJmZDA1ZTQ3ZTg1ZWQ5OTc0N2YxN2E5ZjNkNGMxYjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFyYWN0ZXJEYXRhKTsKIHN0YXRpYyBib29sIGNh
blVzZVNldERhdGFPcHRpbWl6YXRpb24oY29uc3QgQ2hhcmFjdGVyRGF0YSYgbm9kZSkKIHsKICAg
ICBhdXRvJiBkb2N1bWVudCA9IG5vZGUuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gIWRvY3VtZW50
Lmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RF
TkVSKSAmJiAhZG9jdW1lbnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNl
cnZlcjo6Q2hhcmFjdGVyRGF0YSkKKyAgICByZXR1cm4gIWRvY3VtZW50Lmhhc0xpc3RlbmVyVHlw
ZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RFTkVSKSAmJiAhZG9jdW1l
bnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFn
OjpDaGFyYWN0ZXJEYXRhKQogICAgICAgICAmJiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERv
Y3VtZW50OjpET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRleCAyOTY2NzY3NzY4ZjBkNzE0NzQy
ZTM2YmNlNWI2MTA4Njk3N2Y5MWZmLi5iN2VhNTdiMDQxZGFmMjdiNTk5ZThhNzdlM2NkZGZiNDZl
N2JmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgK
QEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShDb250YWluZXJOb2RlJiB0YXJn
ZXQpCiAgICAgewotICAgICAgICBpZiAodGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNl
cnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKHRh
cmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb25zRmxhZzo6Q2hpbGRMaXN0KSkKICAgICAgICAgICAgIG1fYWNjdW11bGF0b3IgPSBD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSh0YXJnZXQpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGRmNDMyYmNjODM3ZWM1ZDVm
MGFlOTZjY2RmNTRjYWY5NTE0NWYzNWYuLjI1YTM3OTBmMGQ2NmE5NzRhODIwMDk4YTVkYjYzYWZi
MzZhNGZhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKICAgICAgICAgU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwot
ICAgICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlw
ZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFko
ZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0
aW9uc0ZsYWc6OkNoaWxkTGlzdCkpKSB7CiAgICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbikKICAgICAgICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhYWEyMjA4MmNlY2JmMzQzNTM3MzE0NDcyM2I3
ZTkxYzNjMjcyNTA1Li5mNWRkMTIwNTFlY2I5MjllZGY4NjNkYzhiMmRmODRjYzA4ZDJlZmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtODc2LDEyICs4NzYsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUpIGNvbnN0
OwogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKTsKIAotICAgIGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUpIGNvbnN0CisgICAgYm9vbCBoYXNNdXRhdGlvbk9i
c2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWcgdHlwZSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHR5cGU7CisgICAg
ICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5jb250YWlucyh0eXBlKTsKICAgICB9
Ci0gICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRp
b25PYnNlcnZlclR5cGVzOyB9Ci0gICAgdm9pZCBhZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMoTXV0
YXRpb25PYnNlcnZlck9wdGlvbnMgdHlwZXMpIHsgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMgfD0g
dHlwZXM7IH0KKyAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4g
IW1fbXV0YXRpb25PYnNlcnZlclR5cGVzLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkTXV0YXRp
b25PYnNlcnZlclR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIHR5cGVzKSB7IG1fbXV0YXRp
b25PYnNlcnZlclR5cGVzLmFkZCh0eXBlcyk7IH0KIAogICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IGdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIG51bGxw
dHI7IH0KIApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxSZWZl
cnJlclBvbGljeT4gbV9yZWZlcnJlclBvbGljeTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZSB7IENvbXBsZXRlIH07CiAKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0aW9u
T2JzZXJ2ZXJUeXBlcyB7IDAgfTsKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0
aW9uT2JzZXJ2ZXJUeXBlczsKIAogICAgIGJvb2wgbV9hY3RpdmVQYXJzZXJXYXNBYm9ydGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IGE0YWMwZWI3ZTU3MTc3
Y2YwNDIzN2U2YTkyM2NjNTAzMDZlMmJiZDYuLmIzMzM3Y2IyZWY2YWI1NGYwNGRkNTVjYjhiYTc1
NDcwMTA4YjMzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAg
LTcxLDM3ICs3MSw0NyBAQCBNdXRhdGlvbk9ic2VydmVyOjp+TXV0YXRpb25PYnNlcnZlcigpCiAK
IGJvb2wgTXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIChvcHRpb25zICYgKEF0dHJpYnV0ZXMgfCBD
aGFyYWN0ZXJEYXRhIHwgQ2hpbGRMaXN0KSkKLSAgICAgICAgJiYgKChvcHRpb25zICYgQXR0cmli
dXRlcykgfHwgIShvcHRpb25zICYgQXR0cmlidXRlT2xkVmFsdWUpKQotICAgICAgICAmJiAoKG9w
dGlvbnMgJiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBBdHRyaWJ1dGVGaWx0ZXIpKQotICAg
ICAgICAmJiAoKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhKSB8fCAhKG9wdGlvbnMgJiBDaGFyYWN0
ZXJEYXRhT2xkVmFsdWUpKTsKKyAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMg
dmFsaWRGbGFnUGF0dGVybnMgPSB7CisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zzo6QXR0cmlidXRlcywKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFy
YWN0ZXJEYXRhLAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoaWxkTGlz
dCwKKyAgICB9OworCisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnNBbnkodmFsaWRGbGFnUGF0
dGVybnMpCisgICAgICAgICYmIChvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zRmxhZzo6QXR0cmlidXRlcykgfHwgIW9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZl
ck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVPbGRWYWx1ZSkpCisgICAgICAgICYmIChvcHRpb25zLmNv
bnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcykgfHwgIW9wdGlv
bnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVGaWx0ZXIp
KQorICAgICAgICAmJiAob3B0aW9ucy5jb250YWlucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0Zs
YWc6OkNoYXJhY3RlckRhdGEpIHx8ICFvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zRmxhZzo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5p
dCkKIHsKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICBNdXRh
dGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zOwogCiAgICAgaWYgKGluaXQuY2hpbGRMaXN0KQot
ICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGlsZExpc3QpOwogICAgIGlmIChpbml0LnN1YnRyZWUp
Ci0gICAgICAgIG9wdGlvbnMgfD0gU3VidHJlZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpTdWJ0cmVlKTsKICAgICBpZiAoaW5pdC5hdHRyaWJ1dGVP
bGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRW
YWx1ZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpB
dHRyaWJ1dGVPbGRWYWx1ZSk7CiAgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZh
bHVlT3IoZmFsc2UpKQotICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsK
KyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0
ZXJEYXRhT2xkVmFsdWUpOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVGaWx0
ZXI7CiAgICAgaWYgKGluaXQuYXR0cmlidXRlRmlsdGVyKSB7CiAgICAgICAgIGZvciAoYXV0byYg
dmFsdWUgOiBpbml0LmF0dHJpYnV0ZUZpbHRlci52YWx1ZSgpKQogICAgICAgICAgICAgYXR0cmli
dXRlRmlsdGVyLmFkZCh2YWx1ZSk7Ci0gICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlRmlsdGVy
OworICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJp
YnV0ZUZpbHRlcik7CiAgICAgfQogCi0gICAgaWYgKGluaXQuYXR0cmlidXRlcyA/IGluaXQuYXR0
cmlidXRlcy52YWx1ZSgpIDogKG9wdGlvbnMgJiAoQXR0cmlidXRlRmlsdGVyIHwgQXR0cmlidXRl
T2xkVmFsdWUpKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVzOworICAgIGNvbnN0ZXhw
ciBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBzaG91bGRPYnNlcnZlQXR0cmlidXRlID0geworICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJpYnV0ZUZpbHRlciwKKyAgICAg
ICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVPbGRWYWx1ZSwKKyAgICB9
OworICAgIGlmIChpbml0LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJpYnV0ZXMudmFsdWUoKSA6IG9w
dGlvbnMuY29udGFpbnNBbnkoc2hvdWxkT2JzZXJ2ZUF0dHJpYnV0ZSkpCisgICAgICAgIG9wdGlv
bnMuYWRkKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcyk7CiAKLSAgICBp
ZiAoaW5pdC5jaGFyYWN0ZXJEYXRhID8gaW5pdC5jaGFyYWN0ZXJEYXRhLnZhbHVlKCkgOiAob3B0
aW9ucyAmIENoYXJhY3RlckRhdGFPbGRWYWx1ZSkpCi0gICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFj
dGVyRGF0YTsKKyAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhID8gaW5pdC5jaGFyYWN0ZXJEYXRh
LnZhbHVlKCkgOiBvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6
Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0ZXJEYXRhKTsKIAogICAgIGlmICghdmFsaWRhdGVPcHRp
b25zKG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0NzdmMGY5M2QyNmZmM2Y5NzAx
ZTg3YzJiOGJmMWQzMjZlN2VkOTI2Li5kZmMxNjIyNjc4YTNmYjdhMzdlNDk0ZmI5MzM2ZmY1ZGRl
MDVkNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDI5
ICs0OSwyNyBAQCBjbGFzcyBNdXRhdGlvblJlY29yZDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBXaW5k
b3dFdmVudExvb3A7CiAKLXVzaW5nIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zID0gdW5zaWduZWQg
Y2hhcjsKLXVzaW5nIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zID0gdW5zaWduZWQgY2hh
cjsKK2VudW0gY2xhc3MgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOiB1aW50OF90IHsKKyAg
ICAvLyBNdXRhdGlvblR5cGUKKyAgICBDaGlsZExpc3QgICAgID0gMSA8PCAwLAorICAgIEF0dHJp
YnV0ZXMgICAgPSAxIDw8IDEsCisgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMiwKIAotY2xhc3Mg
TXV0YXRpb25PYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uT2JzZXJ2
ZXI+IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE11dGF0aW9uT2JzZXJ2ZXIpOwotcHVi
bGljOgotICAgIGVudW0gTXV0YXRpb25UeXBlIHsKLSAgICAgICAgQ2hpbGRMaXN0ID0gMSA8PCAw
LAotICAgICAgICBBdHRyaWJ1dGVzID0gMSA8PCAxLAotICAgICAgICBDaGFyYWN0ZXJEYXRhID0g
MSA8PCAyLAorICAgIC8vIE9ic2VydmF0aW9uRmxhZ3MKKyAgICBTdWJ0cmVlICAgICAgICAgPSAx
IDw8IDMsCisgICAgQXR0cmlidXRlRmlsdGVyID0gMSA8PCA0LAogCi0gICAgICAgIEFsbE11dGF0
aW9uVHlwZXMgPSBDaGlsZExpc3QgfCBBdHRyaWJ1dGVzIHwgQ2hhcmFjdGVyRGF0YQotICAgIH07
CisgICAgLy8gRGVsaXZlcnlGbGFncworICAgIEF0dHJpYnV0ZU9sZFZhbHVlICAgICA9IDEgPDwg
NSwKKyAgICBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUgPSAxIDw8IDYsCit9OwogCi0gICAgZW51bSBP
YnNlcnZhdGlvbkZsYWdzICB7Ci0gICAgICAgIFN1YnRyZWUgPSAxIDw8IDMsCi0gICAgICAgIEF0
dHJpYnV0ZUZpbHRlciA9IDEgPDwgNAotICAgIH07Cit1c2luZyBNdXRhdGlvbk9ic2VydmVyT3B0
aW9ucyA9IE9wdGlvblNldDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+OwordXNpbmcgTXV0
YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgPSBPcHRpb25TZXQ8TXV0YXRpb25PYnNlcnZlck9w
dGlvbnNGbGFnPjsKIAotICAgIGVudW0gRGVsaXZlcnlGbGFncyB7Ci0gICAgICAgIEF0dHJpYnV0
ZU9sZFZhbHVlID0gMSA8PCA1LAotICAgICAgICBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUgPSAxIDw8
IDYsCi0gICAgfTsKK2NsYXNzIE11dGF0aW9uT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNdXRh
dGlvbk9ic2VydmVyKTsKK3B1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8TXV0YXRpb25PYnNlcnZl
cj4gY3JlYXRlKFJlZjxNdXRhdGlvbkNhbGxiYWNrPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggMDI3NmU0
MmJlNWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZS4uMDEzZWU1NzA5OGZiZTVlNDNhMTMx
NjAxZTIwMjUzNjgyMWM1ZTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC0zNCwxOSArMzQsMjAgQEAKIAogI2lu
Y2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWlubGluZSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPiYmIG9ic2VydmVycywgTXV0YXRpb25SZWNvcmREZWxpdmVy
eU9wdGlvbnMgb2xkVmFsdWVGbGFnKQoraW5saW5lIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9i
c2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYgb2JzZXJ2ZXJzLCBPcHRp
b25hbDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+IG9sZFZhbHVlRmxhZykKICAgICA6IG1f
b2JzZXJ2ZXJzKFdURk1vdmUob2JzZXJ2ZXJzKSkKICAgICAsIG1fb2xkVmFsdWVGbGFnKG9sZFZh
bHVlRmxhZykKIHsKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
IG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKK3N0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnIHR5cGUsIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zz4gb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogewot
ICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzICYmIGF0dHJp
YnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKKyAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKICAgICBhdXRvIG9ic2VydmVycyA9IHRhcmdldC5yZWdpc3RlcmVkTXV0
YXRpb25PYnNlcnZlcnModHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKG9ic2VydmVycy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODIsNCArODMsMTMgQEAgdm9p
ZCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFJl
ZjxNdXRhdGlvblJlY29yZD4mJgogICAgIH0KIH0KIAorYm9vbCBNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cDo6aGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0
aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIW1fb2xkVmFsdWVGbGFnKQorICAgICAgICByZXR1cm4g
b3B0aW9ucy5pc0VtcHR5KCk7CisKKyAgICBhdXRvIG9sZFZhbHVlRmxhZyA9IG1fb2xkVmFsdWVG
bGFnLnZhbHVlKCk7CisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnMob2xkVmFsdWVGbGFnKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaAppbmRleCAzYzBhZTUyMzdkNGIyZTJlZmY3
MGRkZTY2MmU1ZjRlMWU1NjkyNmFkLi5hZDdlZWRmMWZiZGQ1ZTYxZWU3N2VlYWE2OWE1N2QwMDcx
NzU5ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw0NCAr
NDIsNDQgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogY2xhc3MgTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCiBwdWJsaWM6Ci0g
ICAgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNl
cnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiYmLCBNdXRhdGlvblJlY29yZERl
bGl2ZXJ5T3B0aW9ucyk7CisgICAgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAoSGFzaE1h
cDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiYm
LCBPcHRpb25hbDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+KTsKIAogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckNo
aWxkTGlzdE11dGF0aW9uKE5vZGUmIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0
LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6
Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9i
c2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoaWxkTGlzdCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBNdXRhdGlvblJlY29yZERlbGl2
ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcgPSAwOwotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVk
ZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QsIG9sZFZhbHVlRmxhZyk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zRmxhZzo6Q2hpbGRMaXN0LCBXVEY6Om51bGxvcHQpOwogICAgIH0KIAogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckNo
YXJhY3RlckRhdGFNdXRhdGlvbihOb2RlJiB0YXJnZXQpCiAgICAgewotICAgICAgICBpZiAoIXRh
cmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2
ZXI6OkNoYXJhY3RlckRhdGEpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hhcmFj
dGVyRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4g
Y3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhLCBN
dXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpOworICAgICAgICByZXR1cm4g
Y3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoYXJh
Y3RlckRhdGEsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hhcmFjdGVyRGF0YU9sZFZh
bHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwPiBjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24oTm9kZSYgdGFyZ2V0
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgIHsKLSAgICAgICAgaWYg
KCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9i
c2VydmVyOjpBdHRyaWJ1dGVzKSkKKyAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNN
dXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJp
YnV0ZXMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcywgTXV0YXRp
b25PYnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWUsICZhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFn
OjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJpYnV0ZU9sZFZh
bHVlLCAmYXR0cmlidXRlTmFtZSk7CiAgICAgfQogCiAgICAgYm9vbCBpc09sZFZhbHVlUmVxdWVz
dGVkKCkgY29uc3Q7CiAgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0aW9u
UmVjb3JkPiYmKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBjcmVhdGVJZk5lZWRlZChOb2RlJiB0YXJnZXQsIE11
dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlv
bnMgb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lID0gbnVs
bHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cD4gY3JlYXRlSWZOZWVkZWQoTm9kZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0
aW9uc0ZsYWcsIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZz4gb2xkVmFsdWVG
bGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lID0gbnVsbHB0cik7CiAKLSAg
ICBib29sIGhhc09sZFZhbHVlKE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9wdGlvbnMp
IGNvbnN0IHsgcmV0dXJuIG9wdGlvbnMgJiBtX29sZFZhbHVlRmxhZzsgfQorICAgIGJvb2wgaGFz
T2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMpIGNvbnN0OwogCiAgICAgSGFz
aE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
PiBtX29ic2VydmVyczsKLSAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBtX29sZFZh
bHVlRmxhZzsKKyAgICBPcHRpb25hbDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+IG1fb2xk
VmFsdWVGbGFnOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDBlY2Iw
NWI0ODg2MGM3NzcxNDE4ZDhiZjlkMjYxMjkzYTg4NjVhZTMuLmUzMjI0ZGY2NTQ4NWFkOTM0MWY3
MmNiNzNlZjlhMzIwNzRiYjc0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTk0LDE2ICs5NCwxNiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+IE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb246OnRhawogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotYm9vbCBNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUm
IG5vZGUsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZp
ZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAorYm9vbCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmIG5vZGUsIE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb25zRmxhZyB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1l
KSBjb25zdAogewotICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1
dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKLSAgICBpZiAoIShtX29w
dGlvbnMgJiB0eXBlKSkKKyAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlck9wdGlv
bnNGbGFnOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsK
KyAgICBpZiAoIW1fb3B0aW9ucy5jb250YWlucyh0eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCZtX25vZGUgIT0gJm5vZGUgJiYgIWlzU3VidHJlZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAodHlwZSAhPSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1
dGVzIHx8ICEobV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlRmlsdGVyKSkK
KyAgICBpZiAodHlwZSAhPSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJpYnV0ZXMg
fHwgIW1fb3B0aW9ucy5jb250YWlucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJp
YnV0ZUZpbHRlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFhdHRyaWJ1dGVO
YW1lLT5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IGU2OTQwNDgzYTMxM2M4ZmQxYmQx
NmRjMTdjYjk2YjEzYWNkMjJhM2EuLjZhOTI4MjZhZmRkZmZiMzFiZWU1OTE5YmE3MDdhMmRmYWM5
ZDZhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24uaApAQCAtNDIsNiArNDIsOCBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogCiBjbGFz
cyBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKworCiBwdWJsaWM6CiAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbihNdXRh
dGlvbk9ic2VydmVyJiwgTm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zLCBjb25zdCBIYXNo
U2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOwogICAgIH5NdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uKCk7CkBAIC01MSwxMyArNTMsMjggQEAgcHVibGljOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gdGFrZVRyYW5zaWVudFJlZ2lz
dHJhdGlvbnMoKTsKICAgICBib29sIGhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzICYmICFtX3RyYW5zaWVudFJlZ2lz
dHJhdGlvbk5vZGVzLT5pc0VtcHR5KCk7IH0KIAotICAgIGJvb2wgc2hvdWxkUmVjZWl2ZU11dGF0
aW9uRnJvbShOb2RlJiwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKLSAgICBib29sIGlzU3VidHJlZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIE11dGF0aW9uT2JzZXJ2ZXI6OlN1YnRyZWU7IH0KKyAg
ICBib29sIHNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3Q7Cisg
ICAgYm9vbCBpc1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuY29udGFpbnMoTXV0
YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpTdWJ0cmVlKTsgfQogCiAgICAgTXV0YXRpb25PYnNl
cnZlciYgb2JzZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyLmdldCgpOyB9CiAgICAgTm9kZSYg
bm9kZSgpIHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zIGRlbGl2ZXJ5T3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIChNdXRhdGlv
bk9ic2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSB8IE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3Rl
ckRhdGFPbGRWYWx1ZSk7IH0KLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtdXRhdGlvblR5
cGVzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0
YXRpb25UeXBlczsgfQorICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5
T3B0aW9ucygpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZl
ck9wdGlvbnMgaGFzRGVsaXZlcnlGbGFncyA9IHsKKyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlT2xkVmFsdWUsCisgICAgICAgICAgICBNdXRhdGlvbk9i
c2VydmVyT3B0aW9uc0ZsYWc6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSwKKyAgICAgICAgfTsKKyAg
ICAgICAgcmV0dXJuIG1fb3B0aW9ucyAmIGhhc0RlbGl2ZXJ5RmxhZ3M7CisgICAgfQorICAgIE11
dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgY29uc3RleHByIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIGFsbE11dGF0aW9uVHlwZXMgPSB7
CisgICAgICAgICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoaWxkTGlzdCwKKyAg
ICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcywKKyAgICAg
ICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hhcmFjdGVyRGF0YSwKKyAgICAg
ICAgfTsKKyAgICAgICAgcmV0dXJuIG1fb3B0aW9ucyAmIGFsbE11dGF0aW9uVHlwZXM7CisgICAg
fQogCiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8Tm9kZSo+Jikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBkNWU1MGMwMGMxMzBjNTdmOGY3NTM2NmRiMDg0
MjVhMmNkZWIxZjM5Li5iMGQyMTg4YzZmNTZmMDNkZTU0YzE0ODBhNjYyMzJmNjFmZDViNzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBIYXNoU2V0PE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24qPiogTm9kZTo6dHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJ5KAogICAgIHJldHVybiAmZGF0YS0+dHJhbnNpZW50UmVnaXN0cnk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFJlZ2lzdHJ5PiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdE1hdGNoaW5nT2Jz
ZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPiYgb2JzZXJ2ZXJzLCBSZWdpc3RyeSogcmVnaXN0cnksIE5v
ZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1
YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RyeT4g
c3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKEhh
c2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cz4mIG9ic2VydmVycywgUmVnaXN0cnkqIHJlZ2lzdHJ5LCBOb2RlJiB0YXJnZXQsIE11dGF0aW9u
T2JzZXJ2ZXJPcHRpb25zRmxhZyB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVO
YW1lKQogewogICAgIGlmICghcmVnaXN0cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyODEsMTUg
KzIyODEsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0cnk+IHN0YXRpYyBpbmxpbmUgdm9p
ZCBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGkKICAgICAgICAgICAgIGF1dG8gZGVs
aXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKICAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCks
IGRlbGl2ZXJ5T3B0aW9ucyk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQot
ICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgfD0gZGVsaXZlcnlPcHRpb25z
OworICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKGRlbGl2ZXJ5T3B0
aW9ucyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLUhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2
ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4gTm9kZTo6cmVnaXN0ZXJlZE11dGF0
aW9uT2JzZXJ2ZXJzKE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBR
dWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQorSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZl
cj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBOb2RlOjpyZWdpc3RlcmVkTXV0YXRp
b25PYnNlcnZlcnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnIHR5cGUsIGNvbnN0IFF1YWxp
ZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNl
cnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZXN1bHQ7Ci0gICAgQVNTRVJU
KCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkg
fHwgIWF0dHJpYnV0ZU5hbWUpOworICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVy
T3B0aW9uc0ZsYWc6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5h
bWUpOwogICAgIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKHJlc3VsdCwgbXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKICAg
ICBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihyZXN1bHQsIHRyYW5zaWVudE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLCAqdGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSk7CiAg
ICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBjNmJjZjZhMGNmOTNmM2E2ZTU1MTRkZWZlOTQz
NTQ2M2JjMDAyMGNkLi41ZGI5ZGQ2OGFkODk1MGM1OWFmYWU4Zjc0OGFmYjg3Y2EzYzNmNDBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRE
YXRhKiBldmVudFRhcmdldERhdGFDb25jdXJyZW50bHkoKSBmaW5hbDsKICAgICBFdmVudFRhcmdl
dERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIGZpbmFsOwogCi0gICAgSGFzaE1hcDxSZWY8
TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZWdpc3Rl
cmVkTXV0YXRpb25PYnNlcnZlcnMoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKTsKKyAgICBIYXNoTWFwPFJlZjxNdXRhdGlv
bk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IHJlZ2lzdGVyZWRNdXRh
dGlvbk9ic2VydmVycyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWcsIGNvbnN0IFF1YWxpZmll
ZE5hbWUqIGF0dHJpYnV0ZU5hbWUpOwogICAgIHZvaWQgcmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVy
KE11dGF0aW9uT2JzZXJ2ZXImLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNl
dDxBdG9tU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJNdXRh
dGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIHJl
Z2lzdGVyVHJhbnNpZW50TXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426014</attachid>
            <date>2021-04-14 10:55:20 -0700</date>
            <delta_ts>2021-04-14 10:57:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210415025519.patch</filename>
            <type>text/plain</type>
            <size>24394</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxOWZkYzBlZTdhODM2
YWJlNjM1MjhlYmU4ZjcwYTdjNDg0YTcyYy4uOGZmNTE2Yzc3MmFiYTQyYjU2MDI2ZTE0YTJlOGU3
MTc2MDQzZWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA0LTE0ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBUaGlz
IHBhdGNoIHVuaWZpZXMgYE11dGF0aW9uT2JzZXJ2ZXJgJ3MgMyBlbnVtcworICAgICAgICAoYE11
dGF0aW9uVHlwZWAsIGBPYnNlcnZhdGlvbkZsYWdzYCBhbmQgYERlbGl2ZXJ5RmxhZ3NgKSwgaW50
byBzaW5nbGUgYE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZ2AKKyAgICAgICAgYW5kIHdpbGwg
aGFuZGxlIHRoaXMgZmxhZyBieSBgT3B0aW9uU2V0PE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zz5gLgorCisgICAgICAgIFRoZWlyIGVudW0gd2VyZSBkaWZmZXJlbnQgb24gZWFjaCBvdGhlcnMg
YnV0IGFyZSB1c2VkIGFzIGJpdCBtYXNrIG9uCisgICAgICAgIHNpbmdsZSBgTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNgIG9yIGBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9uc2AuCisgICAgICAg
IFNvIEkgdGhpbmsgd2UgY2FuIHVuaWZ5IGludG8gc2luZ2xlIGVudW0gY2xhc3MuCisKKyAgICAg
ICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5Vc2VTZXRE
YXRhT3B0aW1pemF0aW9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZTo6Q2hpbGRMaXN0TXV0
YXRpb25TY29wZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aGFzTXV0YXRpb25PYnNlcnZlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6
dmFsaWRhdGVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6Om9i
c2VydmUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9t
L011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3Jl
YXRlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA6Omhhc09sZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hhcmFjdGVyRGF0YU11
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
OjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20gY29uc3QpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjppc1N1YnRyZWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6ZGVsaXZlcnlPcHRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246
Om11dGF0aW9uVHlwZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKwogMjAyMS0wNC0wOSAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZ3JpZF0gU2V0IGhhc0ludHJpbnNpY1dpZHRoICYgaGFzSW50cmluc2lj
SGVpZ2h0IHByb3BlcnRpZXMgZm9yIFNWRyBlbGVtZW50J3MgaW50cmluc2ljIHNpemUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCAwZmYyYTVjZTJhM2M2NmQzODE3OTE0YWVm
NTAyZWQyNDkxNzM1NzM3Li5iZGI2NmUwOGJmZDA1ZTQ3ZTg1ZWQ5OTc0N2YxN2E5ZjNkNGMxYjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFyYWN0ZXJEYXRhKTsKIHN0YXRpYyBib29sIGNh
blVzZVNldERhdGFPcHRpbWl6YXRpb24oY29uc3QgQ2hhcmFjdGVyRGF0YSYgbm9kZSkKIHsKICAg
ICBhdXRvJiBkb2N1bWVudCA9IG5vZGUuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gIWRvY3VtZW50
Lmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RF
TkVSKSAmJiAhZG9jdW1lbnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNl
cnZlcjo6Q2hhcmFjdGVyRGF0YSkKKyAgICByZXR1cm4gIWRvY3VtZW50Lmhhc0xpc3RlbmVyVHlw
ZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RFTkVSKSAmJiAhZG9jdW1l
bnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFn
OjpDaGFyYWN0ZXJEYXRhKQogICAgICAgICAmJiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERv
Y3VtZW50OjpET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRleCAyOTY2NzY3NzY4ZjBkNzE0NzQy
ZTM2YmNlNWI2MTA4Njk3N2Y5MWZmLi5iN2VhNTdiMDQxZGFmMjdiNTk5ZThhNzdlM2NkZGZiNDZl
N2JmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgK
QEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShDb250YWluZXJOb2RlJiB0YXJn
ZXQpCiAgICAgewotICAgICAgICBpZiAodGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNl
cnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKHRh
cmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb25zRmxhZzo6Q2hpbGRMaXN0KSkKICAgICAgICAgICAgIG1fYWNjdW11bGF0b3IgPSBD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSh0YXJnZXQpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGRmNDMyYmNjODM3ZWM1ZDVm
MGFlOTZjY2RmNTRjYWY5NTE0NWYzNWYuLjI1YTM3OTBmMGQ2NmE5NzRhODIwMDk4YTVkYjYzYWZi
MzZhNGZhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKICAgICAgICAgU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwot
ICAgICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlw
ZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFko
ZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0
aW9uc0ZsYWc6OkNoaWxkTGlzdCkpKSB7CiAgICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbikKICAgICAgICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhYWEyMjA4MmNlY2JmMzQzNTM3MzE0NDcyM2I3
ZTkxYzNjMjcyNTA1Li5mNWRkMTIwNTFlY2I5MjllZGY4NjNkYzhiMmRmODRjYzA4ZDJlZmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtODc2LDEyICs4NzYsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUpIGNvbnN0
OwogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKTsKIAotICAgIGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUpIGNvbnN0CisgICAgYm9vbCBoYXNNdXRhdGlvbk9i
c2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWcgdHlwZSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHR5cGU7CisgICAg
ICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5jb250YWlucyh0eXBlKTsKICAgICB9
Ci0gICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRp
b25PYnNlcnZlclR5cGVzOyB9Ci0gICAgdm9pZCBhZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMoTXV0
YXRpb25PYnNlcnZlck9wdGlvbnMgdHlwZXMpIHsgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMgfD0g
dHlwZXM7IH0KKyAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4g
IW1fbXV0YXRpb25PYnNlcnZlclR5cGVzLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkTXV0YXRp
b25PYnNlcnZlclR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIHR5cGVzKSB7IG1fbXV0YXRp
b25PYnNlcnZlclR5cGVzLmFkZCh0eXBlcyk7IH0KIAogICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IGdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIG51bGxw
dHI7IH0KIApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxSZWZl
cnJlclBvbGljeT4gbV9yZWZlcnJlclBvbGljeTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZSB7IENvbXBsZXRlIH07CiAKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0aW9u
T2JzZXJ2ZXJUeXBlcyB7IDAgfTsKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0
aW9uT2JzZXJ2ZXJUeXBlczsKIAogICAgIGJvb2wgbV9hY3RpdmVQYXJzZXJXYXNBYm9ydGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IGE0YWMwZWI3ZTU3MTc3
Y2YwNDIzN2U2YTkyM2NjNTAzMDZlMmJiZDYuLmIzMzM3Y2IyZWY2YWI1NGYwNGRkNTVjYjhiYTc1
NDcwMTA4YjMzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAg
LTcxLDM3ICs3MSw0NyBAQCBNdXRhdGlvbk9ic2VydmVyOjp+TXV0YXRpb25PYnNlcnZlcigpCiAK
IGJvb2wgTXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIChvcHRpb25zICYgKEF0dHJpYnV0ZXMgfCBD
aGFyYWN0ZXJEYXRhIHwgQ2hpbGRMaXN0KSkKLSAgICAgICAgJiYgKChvcHRpb25zICYgQXR0cmli
dXRlcykgfHwgIShvcHRpb25zICYgQXR0cmlidXRlT2xkVmFsdWUpKQotICAgICAgICAmJiAoKG9w
dGlvbnMgJiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBBdHRyaWJ1dGVGaWx0ZXIpKQotICAg
ICAgICAmJiAoKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhKSB8fCAhKG9wdGlvbnMgJiBDaGFyYWN0
ZXJEYXRhT2xkVmFsdWUpKTsKKyAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMg
dmFsaWRGbGFnUGF0dGVybnMgPSB7CisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zzo6QXR0cmlidXRlcywKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFy
YWN0ZXJEYXRhLAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoaWxkTGlz
dCwKKyAgICB9OworCisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnNBbnkodmFsaWRGbGFnUGF0
dGVybnMpCisgICAgICAgICYmIChvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zRmxhZzo6QXR0cmlidXRlcykgfHwgIW9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZl
ck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVPbGRWYWx1ZSkpCisgICAgICAgICYmIChvcHRpb25zLmNv
bnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcykgfHwgIW9wdGlv
bnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVGaWx0ZXIp
KQorICAgICAgICAmJiAob3B0aW9ucy5jb250YWlucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0Zs
YWc6OkNoYXJhY3RlckRhdGEpIHx8ICFvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zRmxhZzo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5p
dCkKIHsKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICBNdXRh
dGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zOwogCiAgICAgaWYgKGluaXQuY2hpbGRMaXN0KQot
ICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGlsZExpc3QpOwogICAgIGlmIChpbml0LnN1YnRyZWUp
Ci0gICAgICAgIG9wdGlvbnMgfD0gU3VidHJlZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpTdWJ0cmVlKTsKICAgICBpZiAoaW5pdC5hdHRyaWJ1dGVP
bGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRW
YWx1ZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpB
dHRyaWJ1dGVPbGRWYWx1ZSk7CiAgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZh
bHVlT3IoZmFsc2UpKQotICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsK
KyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0
ZXJEYXRhT2xkVmFsdWUpOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVGaWx0
ZXI7CiAgICAgaWYgKGluaXQuYXR0cmlidXRlRmlsdGVyKSB7CiAgICAgICAgIGZvciAoYXV0byYg
dmFsdWUgOiBpbml0LmF0dHJpYnV0ZUZpbHRlci52YWx1ZSgpKQogICAgICAgICAgICAgYXR0cmli
dXRlRmlsdGVyLmFkZCh2YWx1ZSk7Ci0gICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlRmlsdGVy
OworICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJp
YnV0ZUZpbHRlcik7CiAgICAgfQogCi0gICAgaWYgKGluaXQuYXR0cmlidXRlcyA/IGluaXQuYXR0
cmlidXRlcy52YWx1ZSgpIDogKG9wdGlvbnMgJiAoQXR0cmlidXRlRmlsdGVyIHwgQXR0cmlidXRl
T2xkVmFsdWUpKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVzOworICAgIGNvbnN0ZXhw
ciBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBzaG91bGRPYnNlcnZlQXR0cmlidXRlID0geworICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJpYnV0ZUZpbHRlciwKKyAgICAg
ICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVPbGRWYWx1ZSwKKyAgICB9
OworICAgIGlmIChpbml0LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJpYnV0ZXMudmFsdWUoKSA6IG9w
dGlvbnMuY29udGFpbnNBbnkoc2hvdWxkT2JzZXJ2ZUF0dHJpYnV0ZSkpCisgICAgICAgIG9wdGlv
bnMuYWRkKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcyk7CiAKLSAgICBp
ZiAoaW5pdC5jaGFyYWN0ZXJEYXRhID8gaW5pdC5jaGFyYWN0ZXJEYXRhLnZhbHVlKCkgOiAob3B0
aW9ucyAmIENoYXJhY3RlckRhdGFPbGRWYWx1ZSkpCi0gICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFj
dGVyRGF0YTsKKyAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhID8gaW5pdC5jaGFyYWN0ZXJEYXRh
LnZhbHVlKCkgOiBvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6
Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0ZXJEYXRhKTsKIAogICAgIGlmICghdmFsaWRhdGVPcHRp
b25zKG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0NzdmMGY5M2QyNmZmM2Y5NzAx
ZTg3YzJiOGJmMWQzMjZlN2VkOTI2Li5kZmMxNjIyNjc4YTNmYjdhMzdlNDk0ZmI5MzM2ZmY1ZGRl
MDVkNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDI5
ICs0OSwyNyBAQCBjbGFzcyBNdXRhdGlvblJlY29yZDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBXaW5k
b3dFdmVudExvb3A7CiAKLXVzaW5nIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zID0gdW5zaWduZWQg
Y2hhcjsKLXVzaW5nIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zID0gdW5zaWduZWQgY2hh
cjsKK2VudW0gY2xhc3MgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOiB1aW50OF90IHsKKyAg
ICAvLyBNdXRhdGlvblR5cGUKKyAgICBDaGlsZExpc3QgICAgID0gMSA8PCAwLAorICAgIEF0dHJp
YnV0ZXMgICAgPSAxIDw8IDEsCisgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMiwKIAotY2xhc3Mg
TXV0YXRpb25PYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uT2JzZXJ2
ZXI+IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE11dGF0aW9uT2JzZXJ2ZXIpOwotcHVi
bGljOgotICAgIGVudW0gTXV0YXRpb25UeXBlIHsKLSAgICAgICAgQ2hpbGRMaXN0ID0gMSA8PCAw
LAotICAgICAgICBBdHRyaWJ1dGVzID0gMSA8PCAxLAotICAgICAgICBDaGFyYWN0ZXJEYXRhID0g
MSA8PCAyLAorICAgIC8vIE9ic2VydmF0aW9uRmxhZ3MKKyAgICBTdWJ0cmVlICAgICAgICAgPSAx
IDw8IDMsCisgICAgQXR0cmlidXRlRmlsdGVyID0gMSA8PCA0LAogCi0gICAgICAgIEFsbE11dGF0
aW9uVHlwZXMgPSBDaGlsZExpc3QgfCBBdHRyaWJ1dGVzIHwgQ2hhcmFjdGVyRGF0YQotICAgIH07
CisgICAgLy8gRGVsaXZlcnlGbGFncworICAgIEF0dHJpYnV0ZU9sZFZhbHVlICAgICA9IDEgPDwg
NSwKKyAgICBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUgPSAxIDw8IDYsCit9OwogCi0gICAgZW51bSBP
YnNlcnZhdGlvbkZsYWdzICB7Ci0gICAgICAgIFN1YnRyZWUgPSAxIDw8IDMsCi0gICAgICAgIEF0
dHJpYnV0ZUZpbHRlciA9IDEgPDwgNAotICAgIH07Cit1c2luZyBNdXRhdGlvbk9ic2VydmVyT3B0
aW9ucyA9IE9wdGlvblNldDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+OwordXNpbmcgTXV0
YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgPSBPcHRpb25TZXQ8TXV0YXRpb25PYnNlcnZlck9w
dGlvbnNGbGFnPjsKIAotICAgIGVudW0gRGVsaXZlcnlGbGFncyB7Ci0gICAgICAgIEF0dHJpYnV0
ZU9sZFZhbHVlID0gMSA8PCA1LAotICAgICAgICBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUgPSAxIDw8
IDYsCi0gICAgfTsKK2NsYXNzIE11dGF0aW9uT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNdXRh
dGlvbk9ic2VydmVyKTsKK3B1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8TXV0YXRpb25PYnNlcnZl
cj4gY3JlYXRlKFJlZjxNdXRhdGlvbkNhbGxiYWNrPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggMDI3NmU0
MmJlNWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZS4uMDEzZWU1NzA5OGZiZTVlNDNhMTMx
NjAxZTIwMjUzNjgyMWM1ZTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC0zNCwxOSArMzQsMjAgQEAKIAogI2lu
Y2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWlubGluZSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPiYmIG9ic2VydmVycywgTXV0YXRpb25SZWNvcmREZWxpdmVy
eU9wdGlvbnMgb2xkVmFsdWVGbGFnKQoraW5saW5lIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9i
c2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYgb2JzZXJ2ZXJzLCBPcHRp
b25hbDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+IG9sZFZhbHVlRmxhZykKICAgICA6IG1f
b2JzZXJ2ZXJzKFdURk1vdmUob2JzZXJ2ZXJzKSkKICAgICAsIG1fb2xkVmFsdWVGbGFnKG9sZFZh
bHVlRmxhZykKIHsKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
IG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKK3N0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnIHR5cGUsIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zz4gb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogewot
ICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzICYmIGF0dHJp
YnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKKyAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKICAgICBhdXRvIG9ic2VydmVycyA9IHRhcmdldC5yZWdpc3RlcmVkTXV0
YXRpb25PYnNlcnZlcnModHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKG9ic2VydmVycy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODIsNCArODMsMTMgQEAgdm9p
ZCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFJl
ZjxNdXRhdGlvblJlY29yZD4mJgogICAgIH0KIH0KIAorYm9vbCBNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cDo6aGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0
aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIW1fb2xkVmFsdWVGbGFnKQorICAgICAgICByZXR1cm4g
b3B0aW9ucy5pc0VtcHR5KCk7CisKKyAgICBhdXRvIG9sZFZhbHVlRmxhZyA9IG1fb2xkVmFsdWVG
bGFnLnZhbHVlKCk7CisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnMob2xkVmFsdWVGbGFnKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaAppbmRleCAzYzBhZTUyMzdkNGIyZTJlZmY3
MGRkZTY2MmU1ZjRlMWU1NjkyNmFkLi5hZWVkZDg5OTcyOTJhNjBhZWUzMmE2MTlkNDgyMDE2NjAz
OTYyMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw0MyAr
NDMsNDIgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVy
PiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYsIE11dGF0aW9uUmVjb3JkRGVsaXZl
cnlPcHRpb25zKTsKKyAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJl
ZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYsIE9w
dGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZz4pOwogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hpbGRM
aXN0TXV0YXRpb24oTm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0YXJnZXQuZG9j
dW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGls
ZExpc3QpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hpbGRMaXN0KSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlP
cHRpb25zIG9sZFZhbHVlRmxhZyA9IDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0
YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCwgb2xkVmFsdWVGbGFnKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNG
bGFnOjpDaGlsZExpc3QsIFdURjo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hhcmFj
dGVyRGF0YU11dGF0aW9uKE5vZGUmIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0
LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6
Q2hhcmFjdGVyRGF0YSkpCisgICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRp
b25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0ZXJE
YXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEsIE11dGF0
aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hhcmFjdGVy
RGF0YSwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUp
OwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA+IGNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbihOb2RlJiB0YXJnZXQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgewotICAgICAgICBpZiAoIXRh
cmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2
ZXI6OkF0dHJpYnV0ZXMpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0
aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRl
cykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRl
SWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9i
c2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSwgJmF0dHJpYnV0ZU5hbWUpOworICAgICAgICByZXR1
cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0
dHJpYnV0ZXMsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlT2xkVmFsdWUs
ICZhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKICAgICBib29sIGlzT2xkVmFsdWVSZXF1ZXN0ZWQo
KSBjb25zdDsKICAgICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZChSZWY8TXV0YXRpb25SZWNv
cmQ+JiYpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRp
b25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBv
bGRWYWx1ZUZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUgPSBudWxscHRy
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwPiBjcmVhdGVJZk5lZWRlZChOb2RlJiB0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25z
RmxhZywgT3B0aW9uYWw8TXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnPiBvbGRWYWx1ZUZsYWcs
IGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUgPSBudWxscHRyKTsKIAotICAgIGJv
b2wgaGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0aW9ucykgY29u
c3QgeyByZXR1cm4gb3B0aW9ucyAmIG1fb2xkVmFsdWVGbGFnOyB9CisgICAgYm9vbCBoYXNPbGRW
YWx1ZShNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucykgY29uc3Q7CiAKICAgICBIYXNoTWFw
PFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IG1f
b2JzZXJ2ZXJzOwotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG1fb2xkVmFsdWVG
bGFnOworICAgIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZz4gbV9vbGRWYWx1
ZUZsYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMGVjYjA1YjQ4
ODYwYzc3NzE0MThkOGJmOWQyNjEyOTNhODg2NWFlMy4uZTMyMjRkZjY1NDg1YWQ5MzQxZjcyY2I3
M2VmOWEzMjA3NGJiNzQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtOTQsMTYgKzk0LDE2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gTXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbjo6dGFrCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1ib29sIE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9k
ZSwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Citib29sIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZl
ck9wdGlvbnNGbGFnIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMg
JiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOwotICAgIGlmICghKG1fb3B0aW9u
cyAmIHR5cGUpKQorICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0Zs
YWc6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOworICAg
IGlmICghbV9vcHRpb25zLmNvbnRhaW5zKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoJm1fbm9kZSAhPSAmbm9kZSAmJiAhaXNTdWJ0cmVlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICh0eXBlICE9IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMg
fHwgIShtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVGaWx0ZXIpKQorICAg
IGlmICh0eXBlICE9IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcyB8fCAh
bV9vcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRl
RmlsdGVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIWF0dHJpYnV0ZU5hbWUt
Pm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggZTY5NDA0ODNhMzEzYzhmZDFiZDE2ZGMx
N2NiOTZiMTNhY2QyMmEzYS4uYmY0NzNmNTFiZDI1MjA3NTVhNWY0NzA4MmExNjI4MjY1NmFiMDA2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbi5oCkBAIC01MSwxMyArNTEsMjggQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxI
YXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gdGFrZVRyYW5zaWVudFJlZ2lzdHJhdGlvbnMo
KTsKICAgICBib29sIGhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzICYmICFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5v
ZGVzLT5pc0VtcHR5KCk7IH0KIAotICAgIGJvb2wgc2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShO
b2RlJiwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBjb25zdCBRdWFsaWZpZWROYW1l
KiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKLSAgICBib29sIGlzU3VidHJlZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb3B0aW9ucyAmIE11dGF0aW9uT2JzZXJ2ZXI6OlN1YnRyZWU7IH0KKyAgICBib29sIHNo
b3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
ZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3Q7CisgICAgYm9vbCBp
c1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnOjpTdWJ0cmVlKTsgfQogCiAgICAgTXV0YXRpb25PYnNlcnZlciYgb2Jz
ZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyLmdldCgpOyB9CiAgICAgTm9kZSYgbm9kZSgpIHsg
cmV0dXJuIG1fbm9kZTsgfQotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2
ZXJ5T3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIChNdXRhdGlvbk9ic2VydmVy
OjpBdHRyaWJ1dGVPbGRWYWx1ZSB8IE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGFPbGRW
YWx1ZSk7IH0KLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtdXRhdGlvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBl
czsgfQorICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucygp
IGNvbnN0CisgICAgeworICAgICAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMg
aGFzRGVsaXZlcnlGbGFncyA9IHsKKyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25z
RmxhZzo6QXR0cmlidXRlT2xkVmFsdWUsCisgICAgICAgICAgICBNdXRhdGlvbk9ic2VydmVyT3B0
aW9uc0ZsYWc6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSwKKyAgICAgICAgfTsKKyAgICAgICAgcmV0
dXJuIG1fb3B0aW9ucyAmIGhhc0RlbGl2ZXJ5RmxhZ3M7CisgICAgfQorICAgIE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3Rl
eHByIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIGFsbE11dGF0aW9uVHlwZXMgPSB7CisgICAgICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoaWxkTGlzdCwKKyAgICAgICAgICAg
IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcywKKyAgICAgICAgICAgIE11
dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hhcmFjdGVyRGF0YSwKKyAgICAgICAgfTsKKyAg
ICAgICAgcmV0dXJuIG1fb3B0aW9ucyAmIGFsbE11dGF0aW9uVHlwZXM7CisgICAgfQogCiAgICAg
dm9pZCBhZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8Tm9kZSo+JikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCBkNWU1MGMwMGMxMzBjNTdmOGY3NTM2NmRiMDg0MjVhMmNkZWIx
ZjM5Li5iMGQyMTg4YzZmNTZmMDNkZTU0YzE0ODBhNjYyMzJmNjFmZDViNzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24qPiogTm9kZTo6dHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KAogICAg
IHJldHVybiAmZGF0YS0+dHJhbnNpZW50UmVnaXN0cnk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFJlZ2lzdHJ5PiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9y
TXV0YXRpb24oSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVs
aXZlcnlPcHRpb25zPiYgb2JzZXJ2ZXJzLCBSZWdpc3RyeSogcmVnaXN0cnksIE5vZGUmIHRhcmdl
dCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RyeT4gc3RhdGljIGlu
bGluZSB2b2lkIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKEhhc2hNYXA8UmVm
PE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4mIG9ic2Vy
dmVycywgUmVnaXN0cnkqIHJlZ2lzdHJ5LCBOb2RlJiB0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zRmxhZyB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogewog
ICAgIGlmICghcmVnaXN0cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyODEsMTUgKzIyODEsMTUg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0cnk+IHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGkKICAgICAgICAgICAgIGF1dG8gZGVsaXZlcnlPcHRp
b25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKICAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5
T3B0aW9ucyk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgfD0gZGVsaXZlcnlPcHRpb25zOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKGRlbGl2ZXJ5T3B0aW9ucyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKLUhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRh
dGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4gTm9kZTo6cmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2
ZXJzKE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZpZWRO
YW1lKiBhdHRyaWJ1dGVOYW1lKQorSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBOb2RlOjpyZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZl
cnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11
dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZXN1bHQ7Ci0gICAgQVNTRVJUKCh0eXBlID09
IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJp
YnV0ZU5hbWUpOworICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0Zs
YWc6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOwogICAg
IGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKHJlc3VsdCwgbXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKICAgICBjb2xsZWN0
TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihyZXN1bHQsIHRyYW5zaWVudE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyeSgpLCAqdGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgZm9yIChO
b2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAppbmRleCBjNmJjZjZhMGNmOTNmM2E2ZTU1MTRkZWZlOTQzNTQ2M2JjMDAy
MGNkLi41ZGI5ZGQ2OGFkODk1MGM1OWFmYWU4Zjc0OGFmYjg3Y2EzYzNmNDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXREYXRhKiBldmVu
dFRhcmdldERhdGFDb25jdXJyZW50bHkoKSBmaW5hbDsKICAgICBFdmVudFRhcmdldERhdGEmIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpIGZpbmFsOwogCi0gICAgSGFzaE1hcDxSZWY8TXV0YXRpb25P
YnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZWdpc3RlcmVkTXV0YXRp
b25PYnNlcnZlcnMoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBjb25zdCBRdWFsaWZp
ZWROYW1lKiBhdHRyaWJ1dGVOYW1lKTsKKyAgICBIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVy
PiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IHJlZ2lzdGVyZWRNdXRhdGlvbk9ic2Vy
dmVycyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0
dHJpYnV0ZU5hbWUpOwogICAgIHZvaWQgcmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9u
T2JzZXJ2ZXImLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9tU3Ry
aW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJNdXRhdGlvbk9ic2Vy
dmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIHJlZ2lzdGVyVHJh
bnNpZW50TXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426015</attachid>
            <date>2021-04-14 10:57:28 -0700</date>
            <delta_ts>2021-05-01 09:05:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210415025727.patch</filename>
            <type>text/plain</type>
            <size>24394</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxOWZkYzBlZTdhODM2
YWJlNjM1MjhlYmU4ZjcwYTdjNDg0YTcyYy4uOGZmNTE2Yzc3MmFiYTQyYjU2MDI2ZTE0YTJlOGU3
MTc2MDQzZWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA0LTE0ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBUaGlz
IHBhdGNoIHVuaWZpZXMgYE11dGF0aW9uT2JzZXJ2ZXJgJ3MgMyBlbnVtcworICAgICAgICAoYE11
dGF0aW9uVHlwZWAsIGBPYnNlcnZhdGlvbkZsYWdzYCBhbmQgYERlbGl2ZXJ5RmxhZ3NgKSwgaW50
byBzaW5nbGUgYE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZ2AKKyAgICAgICAgYW5kIHdpbGwg
aGFuZGxlIHRoaXMgZmxhZyBieSBgT3B0aW9uU2V0PE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zz5gLgorCisgICAgICAgIFRoZWlyIGVudW0gd2VyZSBkaWZmZXJlbnQgb24gZWFjaCBvdGhlcnMg
YnV0IGFyZSB1c2VkIGFzIGJpdCBtYXNrIG9uCisgICAgICAgIHNpbmdsZSBgTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNgIG9yIGBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9uc2AuCisgICAgICAg
IFNvIEkgdGhpbmsgd2UgY2FuIHVuaWZ5IGludG8gc2luZ2xlIGVudW0gY2xhc3MuCisKKyAgICAg
ICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5Vc2VTZXRE
YXRhT3B0aW1pemF0aW9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZTo6Q2hpbGRMaXN0TXV0
YXRpb25TY29wZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aGFzTXV0YXRpb25PYnNlcnZlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6
dmFsaWRhdGVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6Om9i
c2VydmUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9t
L011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3Jl
YXRlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA6Omhhc09sZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hhcmFjdGVyRGF0YU11
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
OjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20gY29uc3QpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjppc1N1YnRyZWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6ZGVsaXZlcnlPcHRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246
Om11dGF0aW9uVHlwZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKwogMjAyMS0wNC0wOSAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZ3JpZF0gU2V0IGhhc0ludHJpbnNpY1dpZHRoICYgaGFzSW50cmluc2lj
SGVpZ2h0IHByb3BlcnRpZXMgZm9yIFNWRyBlbGVtZW50J3MgaW50cmluc2ljIHNpemUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCAwZmYyYTVjZTJhM2M2NmQzODE3OTE0YWVm
NTAyZWQyNDkxNzM1NzM3Li5iZGI2NmUwOGJmZDA1ZTQ3ZTg1ZWQ5OTc0N2YxN2E5ZjNkNGMxYjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFyYWN0ZXJEYXRhKTsKIHN0YXRpYyBib29sIGNh
blVzZVNldERhdGFPcHRpbWl6YXRpb24oY29uc3QgQ2hhcmFjdGVyRGF0YSYgbm9kZSkKIHsKICAg
ICBhdXRvJiBkb2N1bWVudCA9IG5vZGUuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gIWRvY3VtZW50
Lmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RF
TkVSKSAmJiAhZG9jdW1lbnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNl
cnZlcjo6Q2hhcmFjdGVyRGF0YSkKKyAgICByZXR1cm4gIWRvY3VtZW50Lmhhc0xpc3RlbmVyVHlw
ZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVEX0xJU1RFTkVSKSAmJiAhZG9jdW1l
bnQuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFn
OjpDaGFyYWN0ZXJEYXRhKQogICAgICAgICAmJiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERv
Y3VtZW50OjpET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRleCAyOTY2NzY3NzY4ZjBkNzE0NzQy
ZTM2YmNlNWI2MTA4Njk3N2Y5MWZmLi5iN2VhNTdiMDQxZGFmMjdiNTk5ZThhNzdlM2NkZGZiNDZl
N2JmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgK
QEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShDb250YWluZXJOb2RlJiB0YXJn
ZXQpCiAgICAgewotICAgICAgICBpZiAodGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNl
cnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKHRh
cmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb25zRmxhZzo6Q2hpbGRMaXN0KSkKICAgICAgICAgICAgIG1fYWNjdW11bGF0b3IgPSBD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSh0YXJnZXQpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGRmNDMyYmNjODM3ZWM1ZDVm
MGFlOTZjY2RmNTRjYWY5NTE0NWYzNWYuLjI1YTM3OTBmMGQ2NmE5NzRhODIwMDk4YTVkYjYzYWZi
MzZhNGZhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKICAgICAgICAgU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwot
ICAgICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlw
ZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFko
ZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0
aW9uc0ZsYWc6OkNoaWxkTGlzdCkpKSB7CiAgICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbikKICAgICAgICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhYWEyMjA4MmNlY2JmMzQzNTM3MzE0NDcyM2I3
ZTkxYzNjMjcyNTA1Li5mNWRkMTIwNTFlY2I5MjllZGY4NjNkYzhiMmRmODRjYzA4ZDJlZmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtODc2LDEyICs4NzYsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUpIGNvbnN0
OwogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKTsKIAotICAgIGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUpIGNvbnN0CisgICAgYm9vbCBoYXNNdXRhdGlvbk9i
c2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWcgdHlwZSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHR5cGU7CisgICAg
ICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5jb250YWlucyh0eXBlKTsKICAgICB9
Ci0gICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRp
b25PYnNlcnZlclR5cGVzOyB9Ci0gICAgdm9pZCBhZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMoTXV0
YXRpb25PYnNlcnZlck9wdGlvbnMgdHlwZXMpIHsgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMgfD0g
dHlwZXM7IH0KKyAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4g
IW1fbXV0YXRpb25PYnNlcnZlclR5cGVzLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkTXV0YXRp
b25PYnNlcnZlclR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIHR5cGVzKSB7IG1fbXV0YXRp
b25PYnNlcnZlclR5cGVzLmFkZCh0eXBlcyk7IH0KIAogICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IGdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIG51bGxw
dHI7IH0KIApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxSZWZl
cnJlclBvbGljeT4gbV9yZWZlcnJlclBvbGljeTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZSB7IENvbXBsZXRlIH07CiAKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0aW9u
T2JzZXJ2ZXJUeXBlcyB7IDAgfTsKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0
aW9uT2JzZXJ2ZXJUeXBlczsKIAogICAgIGJvb2wgbV9hY3RpdmVQYXJzZXJXYXNBYm9ydGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IGE0YWMwZWI3ZTU3MTc3
Y2YwNDIzN2U2YTkyM2NjNTAzMDZlMmJiZDYuLmIzMzM3Y2IyZWY2YWI1NGYwNGRkNTVjYjhiYTc1
NDcwMTA4YjMzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAg
LTcxLDM3ICs3MSw0NyBAQCBNdXRhdGlvbk9ic2VydmVyOjp+TXV0YXRpb25PYnNlcnZlcigpCiAK
IGJvb2wgTXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIChvcHRpb25zICYgKEF0dHJpYnV0ZXMgfCBD
aGFyYWN0ZXJEYXRhIHwgQ2hpbGRMaXN0KSkKLSAgICAgICAgJiYgKChvcHRpb25zICYgQXR0cmli
dXRlcykgfHwgIShvcHRpb25zICYgQXR0cmlidXRlT2xkVmFsdWUpKQotICAgICAgICAmJiAoKG9w
dGlvbnMgJiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBBdHRyaWJ1dGVGaWx0ZXIpKQotICAg
ICAgICAmJiAoKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhKSB8fCAhKG9wdGlvbnMgJiBDaGFyYWN0
ZXJEYXRhT2xkVmFsdWUpKTsKKyAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMg
dmFsaWRGbGFnUGF0dGVybnMgPSB7CisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zzo6QXR0cmlidXRlcywKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFy
YWN0ZXJEYXRhLAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoaWxkTGlz
dCwKKyAgICB9OworCisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnNBbnkodmFsaWRGbGFnUGF0
dGVybnMpCisgICAgICAgICYmIChvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zRmxhZzo6QXR0cmlidXRlcykgfHwgIW9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZl
ck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVPbGRWYWx1ZSkpCisgICAgICAgICYmIChvcHRpb25zLmNv
bnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcykgfHwgIW9wdGlv
bnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVGaWx0ZXIp
KQorICAgICAgICAmJiAob3B0aW9ucy5jb250YWlucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0Zs
YWc6OkNoYXJhY3RlckRhdGEpIHx8ICFvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zRmxhZzo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5p
dCkKIHsKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICBNdXRh
dGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zOwogCiAgICAgaWYgKGluaXQuY2hpbGRMaXN0KQot
ICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGlsZExpc3QpOwogICAgIGlmIChpbml0LnN1YnRyZWUp
Ci0gICAgICAgIG9wdGlvbnMgfD0gU3VidHJlZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpTdWJ0cmVlKTsKICAgICBpZiAoaW5pdC5hdHRyaWJ1dGVP
bGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRW
YWx1ZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpB
dHRyaWJ1dGVPbGRWYWx1ZSk7CiAgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZh
bHVlT3IoZmFsc2UpKQotICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsK
KyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0
ZXJEYXRhT2xkVmFsdWUpOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVGaWx0
ZXI7CiAgICAgaWYgKGluaXQuYXR0cmlidXRlRmlsdGVyKSB7CiAgICAgICAgIGZvciAoYXV0byYg
dmFsdWUgOiBpbml0LmF0dHJpYnV0ZUZpbHRlci52YWx1ZSgpKQogICAgICAgICAgICAgYXR0cmli
dXRlRmlsdGVyLmFkZCh2YWx1ZSk7Ci0gICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlRmlsdGVy
OworICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJp
YnV0ZUZpbHRlcik7CiAgICAgfQogCi0gICAgaWYgKGluaXQuYXR0cmlidXRlcyA/IGluaXQuYXR0
cmlidXRlcy52YWx1ZSgpIDogKG9wdGlvbnMgJiAoQXR0cmlidXRlRmlsdGVyIHwgQXR0cmlidXRl
T2xkVmFsdWUpKSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVzOworICAgIGNvbnN0ZXhw
ciBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBzaG91bGRPYnNlcnZlQXR0cmlidXRlID0geworICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0dHJpYnV0ZUZpbHRlciwKKyAgICAg
ICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVPbGRWYWx1ZSwKKyAgICB9
OworICAgIGlmIChpbml0LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJpYnV0ZXMudmFsdWUoKSA6IG9w
dGlvbnMuY29udGFpbnNBbnkoc2hvdWxkT2JzZXJ2ZUF0dHJpYnV0ZSkpCisgICAgICAgIG9wdGlv
bnMuYWRkKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcyk7CiAKLSAgICBp
ZiAoaW5pdC5jaGFyYWN0ZXJEYXRhID8gaW5pdC5jaGFyYWN0ZXJEYXRhLnZhbHVlKCkgOiAob3B0
aW9ucyAmIENoYXJhY3RlckRhdGFPbGRWYWx1ZSkpCi0gICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFj
dGVyRGF0YTsKKyAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhID8gaW5pdC5jaGFyYWN0ZXJEYXRh
LnZhbHVlKCkgOiBvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6
Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0ZXJEYXRhKTsKIAogICAgIGlmICghdmFsaWRhdGVPcHRp
b25zKG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0NzdmMGY5M2QyNmZmM2Y5NzAx
ZTg3YzJiOGJmMWQzMjZlN2VkOTI2Li5kZmMxNjIyNjc4YTNmYjdhMzdlNDk0ZmI5MzM2ZmY1ZGRl
MDVkNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDI5
ICs0OSwyNyBAQCBjbGFzcyBNdXRhdGlvblJlY29yZDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBXaW5k
b3dFdmVudExvb3A7CiAKLXVzaW5nIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zID0gdW5zaWduZWQg
Y2hhcjsKLXVzaW5nIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zID0gdW5zaWduZWQgY2hh
cjsKK2VudW0gY2xhc3MgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOiB1aW50OF90IHsKKyAg
ICAvLyBNdXRhdGlvblR5cGUKKyAgICBDaGlsZExpc3QgICAgID0gMSA8PCAwLAorICAgIEF0dHJp
YnV0ZXMgICAgPSAxIDw8IDEsCisgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMiwKIAotY2xhc3Mg
TXV0YXRpb25PYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uT2JzZXJ2
ZXI+IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE11dGF0aW9uT2JzZXJ2ZXIpOwotcHVi
bGljOgotICAgIGVudW0gTXV0YXRpb25UeXBlIHsKLSAgICAgICAgQ2hpbGRMaXN0ID0gMSA8PCAw
LAotICAgICAgICBBdHRyaWJ1dGVzID0gMSA8PCAxLAotICAgICAgICBDaGFyYWN0ZXJEYXRhID0g
MSA8PCAyLAorICAgIC8vIE9ic2VydmF0aW9uRmxhZ3MKKyAgICBTdWJ0cmVlICAgICAgICAgPSAx
IDw8IDMsCisgICAgQXR0cmlidXRlRmlsdGVyID0gMSA8PCA0LAogCi0gICAgICAgIEFsbE11dGF0
aW9uVHlwZXMgPSBDaGlsZExpc3QgfCBBdHRyaWJ1dGVzIHwgQ2hhcmFjdGVyRGF0YQotICAgIH07
CisgICAgLy8gRGVsaXZlcnlGbGFncworICAgIEF0dHJpYnV0ZU9sZFZhbHVlICAgICA9IDEgPDwg
NSwKKyAgICBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUgPSAxIDw8IDYsCit9OwogCi0gICAgZW51bSBP
YnNlcnZhdGlvbkZsYWdzICB7Ci0gICAgICAgIFN1YnRyZWUgPSAxIDw8IDMsCi0gICAgICAgIEF0
dHJpYnV0ZUZpbHRlciA9IDEgPDwgNAotICAgIH07Cit1c2luZyBNdXRhdGlvbk9ic2VydmVyT3B0
aW9ucyA9IE9wdGlvblNldDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+OwordXNpbmcgTXV0
YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgPSBPcHRpb25TZXQ8TXV0YXRpb25PYnNlcnZlck9w
dGlvbnNGbGFnPjsKIAotICAgIGVudW0gRGVsaXZlcnlGbGFncyB7Ci0gICAgICAgIEF0dHJpYnV0
ZU9sZFZhbHVlID0gMSA8PCA1LAotICAgICAgICBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUgPSAxIDw8
IDYsCi0gICAgfTsKK2NsYXNzIE11dGF0aW9uT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNdXRh
dGlvbk9ic2VydmVyKTsKK3B1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8TXV0YXRpb25PYnNlcnZl
cj4gY3JlYXRlKFJlZjxNdXRhdGlvbkNhbGxiYWNrPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggMDI3NmU0
MmJlNWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZS4uMDEzZWU1NzA5OGZiZTVlNDNhMTMx
NjAxZTIwMjUzNjgyMWM1ZTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC0zNCwxOSArMzQsMjAgQEAKIAogI2lu
Y2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWlubGluZSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPiYmIG9ic2VydmVycywgTXV0YXRpb25SZWNvcmREZWxpdmVy
eU9wdGlvbnMgb2xkVmFsdWVGbGFnKQoraW5saW5lIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9i
c2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYgb2JzZXJ2ZXJzLCBPcHRp
b25hbDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc+IG9sZFZhbHVlRmxhZykKICAgICA6IG1f
b2JzZXJ2ZXJzKFdURk1vdmUob2JzZXJ2ZXJzKSkKICAgICAsIG1fb2xkVmFsdWVGbGFnKG9sZFZh
bHVlRmxhZykKIHsKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
IG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKK3N0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnIHR5cGUsIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
Zz4gb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogewot
ICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzICYmIGF0dHJp
YnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKKyAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRp
b25PYnNlcnZlck9wdGlvbnNGbGFnOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKICAgICBhdXRvIG9ic2VydmVycyA9IHRhcmdldC5yZWdpc3RlcmVkTXV0
YXRpb25PYnNlcnZlcnModHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKG9ic2VydmVycy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODIsNCArODMsMTMgQEAgdm9p
ZCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFJl
ZjxNdXRhdGlvblJlY29yZD4mJgogICAgIH0KIH0KIAorYm9vbCBNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cDo6aGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0
aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIW1fb2xkVmFsdWVGbGFnKQorICAgICAgICByZXR1cm4g
b3B0aW9ucy5pc0VtcHR5KCk7CisKKyAgICBhdXRvIG9sZFZhbHVlRmxhZyA9IG1fb2xkVmFsdWVG
bGFnLnZhbHVlKCk7CisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnMob2xkVmFsdWVGbGFnKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaAppbmRleCAzYzBhZTUyMzdkNGIyZTJlZmY3
MGRkZTY2MmU1ZjRlMWU1NjkyNmFkLi5hZWVkZDg5OTcyOTJhNjBhZWUzMmE2MTlkNDgyMDE2NjAz
OTYyMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw0MyAr
NDMsNDIgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVy
PiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYsIE11dGF0aW9uUmVjb3JkRGVsaXZl
cnlPcHRpb25zKTsKKyAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJl
ZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYsIE9w
dGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZz4pOwogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hpbGRM
aXN0TXV0YXRpb24oTm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0YXJnZXQuZG9j
dW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGls
ZExpc3QpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hpbGRMaXN0KSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlP
cHRpb25zIG9sZFZhbHVlRmxhZyA9IDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0
YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCwgb2xkVmFsdWVGbGFnKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNG
bGFnOjpDaGlsZExpc3QsIFdURjo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hhcmFj
dGVyRGF0YU11dGF0aW9uKE5vZGUmIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0
LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6
Q2hhcmFjdGVyRGF0YSkpCisgICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRp
b25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0ZXJE
YXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEsIE11dGF0
aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hhcmFjdGVy
RGF0YSwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUp
OwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA+IGNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbihOb2RlJiB0YXJnZXQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgewotICAgICAgICBpZiAoIXRh
cmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2
ZXI6OkF0dHJpYnV0ZXMpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0
aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRl
cykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRl
SWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9i
c2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSwgJmF0dHJpYnV0ZU5hbWUpOworICAgICAgICByZXR1
cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkF0
dHJpYnV0ZXMsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlT2xkVmFsdWUs
ICZhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKICAgICBib29sIGlzT2xkVmFsdWVSZXF1ZXN0ZWQo
KSBjb25zdDsKICAgICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZChSZWY8TXV0YXRpb25SZWNv
cmQ+JiYpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRp
b25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBv
bGRWYWx1ZUZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUgPSBudWxscHRy
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwPiBjcmVhdGVJZk5lZWRlZChOb2RlJiB0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25z
RmxhZywgT3B0aW9uYWw8TXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnPiBvbGRWYWx1ZUZsYWcs
IGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUgPSBudWxscHRyKTsKIAotICAgIGJv
b2wgaGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0aW9ucykgY29u
c3QgeyByZXR1cm4gb3B0aW9ucyAmIG1fb2xkVmFsdWVGbGFnOyB9CisgICAgYm9vbCBoYXNPbGRW
YWx1ZShNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucykgY29uc3Q7CiAKICAgICBIYXNoTWFw
PFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IG1f
b2JzZXJ2ZXJzOwotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG1fb2xkVmFsdWVG
bGFnOworICAgIE9wdGlvbmFsPE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZz4gbV9vbGRWYWx1
ZUZsYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMGVjYjA1YjQ4
ODYwYzc3NzE0MThkOGJmOWQyNjEyOTNhODg2NWFlMy4uZTMyMjRkZjY1NDg1YWQ5MzQxZjcyY2I3
M2VmOWEzMjA3NGJiNzQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtOTQsMTYgKzk0LDE2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gTXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbjo6dGFrCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1ib29sIE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9k
ZSwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Citib29sIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZl
ck9wdGlvbnNGbGFnIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMg
JiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOwotICAgIGlmICghKG1fb3B0aW9u
cyAmIHR5cGUpKQorICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0Zs
YWc6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOworICAg
IGlmICghbV9vcHRpb25zLmNvbnRhaW5zKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoJm1fbm9kZSAhPSAmbm9kZSAmJiAhaXNTdWJ0cmVlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICh0eXBlICE9IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMg
fHwgIShtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVGaWx0ZXIpKQorICAg
IGlmICh0eXBlICE9IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcyB8fCAh
bV9vcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRl
RmlsdGVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIWF0dHJpYnV0ZU5hbWUt
Pm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggZTY5NDA0ODNhMzEzYzhmZDFiZDE2ZGMx
N2NiOTZiMTNhY2QyMmEzYS4uYmY0NzNmNTFiZDI1MjA3NTVhNWY0NzA4MmExNjI4MjY1NmFiMDA2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbi5oCkBAIC01MSwxMyArNTEsMjggQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxI
YXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gdGFrZVRyYW5zaWVudFJlZ2lzdHJhdGlvbnMo
KTsKICAgICBib29sIGhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzICYmICFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5v
ZGVzLT5pc0VtcHR5KCk7IH0KIAotICAgIGJvb2wgc2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShO
b2RlJiwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBjb25zdCBRdWFsaWZpZWROYW1l
KiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKLSAgICBib29sIGlzU3VidHJlZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb3B0aW9ucyAmIE11dGF0aW9uT2JzZXJ2ZXI6OlN1YnRyZWU7IH0KKyAgICBib29sIHNo
b3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxh
ZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3Q7CisgICAgYm9vbCBp
c1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNl
cnZlck9wdGlvbnNGbGFnOjpTdWJ0cmVlKTsgfQogCiAgICAgTXV0YXRpb25PYnNlcnZlciYgb2Jz
ZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyLmdldCgpOyB9CiAgICAgTm9kZSYgbm9kZSgpIHsg
cmV0dXJuIG1fbm9kZTsgfQotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2
ZXJ5T3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIChNdXRhdGlvbk9ic2VydmVy
OjpBdHRyaWJ1dGVPbGRWYWx1ZSB8IE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGFPbGRW
YWx1ZSk7IH0KLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtdXRhdGlvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBl
czsgfQorICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucygp
IGNvbnN0CisgICAgeworICAgICAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMg
aGFzRGVsaXZlcnlGbGFncyA9IHsKKyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25z
RmxhZzo6QXR0cmlidXRlT2xkVmFsdWUsCisgICAgICAgICAgICBNdXRhdGlvbk9ic2VydmVyT3B0
aW9uc0ZsYWc6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSwKKyAgICAgICAgfTsKKyAgICAgICAgcmV0
dXJuIG1fb3B0aW9ucyAmIGhhc0RlbGl2ZXJ5RmxhZ3M7CisgICAgfQorICAgIE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3Rl
eHByIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIGFsbE11dGF0aW9uVHlwZXMgPSB7CisgICAgICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWc6OkNoaWxkTGlzdCwKKyAgICAgICAgICAg
IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6QXR0cmlidXRlcywKKyAgICAgICAgICAgIE11
dGF0aW9uT2JzZXJ2ZXJPcHRpb25zRmxhZzo6Q2hhcmFjdGVyRGF0YSwKKyAgICAgICAgfTsKKyAg
ICAgICAgcmV0dXJuIG1fb3B0aW9ucyAmIGFsbE11dGF0aW9uVHlwZXM7CisgICAgfQogCiAgICAg
dm9pZCBhZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8Tm9kZSo+JikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCBkNWU1MGMwMGMxMzBjNTdmOGY3NTM2NmRiMDg0MjVhMmNkZWIx
ZjM5Li5iMGQyMTg4YzZmNTZmMDNkZTU0YzE0ODBhNjYyMzJmNjFmZDViNzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24qPiogTm9kZTo6dHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KAogICAg
IHJldHVybiAmZGF0YS0+dHJhbnNpZW50UmVnaXN0cnk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFJlZ2lzdHJ5PiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9y
TXV0YXRpb24oSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVs
aXZlcnlPcHRpb25zPiYgb2JzZXJ2ZXJzLCBSZWdpc3RyeSogcmVnaXN0cnksIE5vZGUmIHRhcmdl
dCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RyeT4gc3RhdGljIGlu
bGluZSB2b2lkIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKEhhc2hNYXA8UmVm
PE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4mIG9ic2Vy
dmVycywgUmVnaXN0cnkqIHJlZ2lzdHJ5LCBOb2RlJiB0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zRmxhZyB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogewog
ICAgIGlmICghcmVnaXN0cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyODEsMTUgKzIyODEsMTUg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0cnk+IHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGkKICAgICAgICAgICAgIGF1dG8gZGVsaXZlcnlPcHRp
b25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKICAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5
T3B0aW9ucyk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgfD0gZGVsaXZlcnlPcHRpb25zOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKGRlbGl2ZXJ5T3B0aW9ucyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKLUhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRh
dGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4gTm9kZTo6cmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2
ZXJzKE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZpZWRO
YW1lKiBhdHRyaWJ1dGVOYW1lKQorSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBOb2RlOjpyZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZl
cnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnNGbGFnIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11
dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZXN1bHQ7Ci0gICAgQVNTRVJUKCh0eXBlID09
IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJp
YnV0ZU5hbWUpOworICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0Zs
YWc6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOwogICAg
IGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKHJlc3VsdCwgbXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKICAgICBjb2xsZWN0
TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihyZXN1bHQsIHRyYW5zaWVudE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyeSgpLCAqdGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgZm9yIChO
b2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAppbmRleCBjNmJjZjZhMGNmOTNmM2E2ZTU1MTRkZWZlOTQzNTQ2M2JjMDAy
MGNkLi41ZGI5ZGQ2OGFkODk1MGM1OWFmYWU4Zjc0OGFmYjg3Y2EzYzNmNDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXREYXRhKiBldmVu
dFRhcmdldERhdGFDb25jdXJyZW50bHkoKSBmaW5hbDsKICAgICBFdmVudFRhcmdldERhdGEmIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpIGZpbmFsOwogCi0gICAgSGFzaE1hcDxSZWY8TXV0YXRpb25P
YnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZWdpc3RlcmVkTXV0YXRp
b25PYnNlcnZlcnMoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBjb25zdCBRdWFsaWZp
ZWROYW1lKiBhdHRyaWJ1dGVOYW1lKTsKKyAgICBIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVy
PiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IHJlZ2lzdGVyZWRNdXRhdGlvbk9ic2Vy
dmVycyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uc0ZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0
dHJpYnV0ZU5hbWUpOwogICAgIHZvaWQgcmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9u
T2JzZXJ2ZXImLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9tU3Ry
aW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJNdXRhdGlvbk9ic2Vy
dmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIHJlZ2lzdGVyVHJh
bnNpZW50TXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427497</attachid>
            <date>2021-05-01 09:05:50 -0700</date>
            <delta_ts>2021-05-26 14:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210502010549.patch</filename>
            <type>text/plain</type>
            <size>24093</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk3NGJhNTg4ODg3ZGRh
NWI1ODllOGZiM2I1YTQwZWU1ZWUwMzgxYi4uMjQwYzQ3NmQ2Y2M1ZTE4NDA3Yjg1ZWU3M2U1OTdj
ODc5MWUzYTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA0LTE0ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKworICAgICAgICBUaGlz
IHBhdGNoIHVuaWZpZXMgYE11dGF0aW9uT2JzZXJ2ZXJgJ3MgMyBlbnVtcworICAgICAgICAoYE11
dGF0aW9uVHlwZWAsIGBPYnNlcnZhdGlvbkZsYWdzYCBhbmQgYERlbGl2ZXJ5RmxhZ3NgKSwgaW50
byBzaW5nbGUgYE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25gCisgICAgICAgIGFuZCB3aWxsIGhhbmRs
ZSB0aGlzIGZsYWcgYnkgYE9wdGlvblNldDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uPmAuCisKKyAg
ICAgICAgVGhlaXIgZW51bSB3ZXJlIGRpZmZlcmVudCBvbiBlYWNoIG90aGVycyBidXQgYXJlIHVz
ZWQgYXMgYml0IG1hc2sgb24KKyAgICAgICAgc2luZ2xlIGBNdXRhdGlvbk9ic2VydmVyT3B0aW9u
c2Agb3IgYE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zYC4KKyAgICAgICAgU28gSSB0aGlu
ayB3ZSBjYW4gdW5pZnkgaW50byBzaW5nbGUgZW51bSBjbGFzcy4KKworICAgICAgICAqIGRvbS9D
aGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhblVzZVNldERhdGFPcHRpbWl6
YXRpb24pOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpDaGlsZExpc3RNdXRhdGlvblNjb3Bl
KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24pOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpoYXNNdXRhdGlvbk9ic2VydmVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjp2YWxpZGF0ZU9w
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZSk6Cisg
ICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6aGFz
T2xkVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cC5oOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZv
ckF0dHJpYnV0ZXNNdXRhdGlvbik6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbjo6c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbSBjb25zdCk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb246OmlzU3VidHJlZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpkZWxpdmVyeU9wdGlvbnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6bXV0YXRpb25U
eXBlcyBjb25zdCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6cmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBkb20vTm9kZS5o
OgorCiAyMDIxLTA1LTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1JlbmRlclRyZWVCdWlsZGVyXSBSZXNldCB0aGUgImNoaWxkcmVuIGlubGluZSIgc3RhdGUg
d2hlbiBtZXJnaW5nIGFub255bW91cyB0YWJsZSBib3hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwCmluZGV4IGJiOGQ1M2NjYzQ0NWM3MGNmYTgyZmVjZjYzNWQ1Y2IyMDQ2ZjY0YTcu
LjE1NDMzZjE2ZWI2NmZkM2RlYTg1ZWQ3MWUyMzIwMmY0NTA5ZDIzYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKENoYXJhY3RlckRhdGEpOwogc3RhdGljIGJvb2wgY2FuVXNlU2V0RGF0YU9wdGlt
aXphdGlvbihjb25zdCBDaGFyYWN0ZXJEYXRhJiBub2RlKQogewogICAgIGF1dG8mIGRvY3VtZW50
ID0gbm9kZS5kb2N1bWVudCgpOwotICAgIHJldHVybiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBl
KERvY3VtZW50OjpET01DSEFSQUNURVJEQVRBTU9ESUZJRURfTElTVEVORVIpICYmICFkb2N1bWVu
dC5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJE
YXRhKQorICAgIHJldHVybiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01D
SEFSQUNURVJEQVRBTU9ESUZJRURfTElTVEVORVIpICYmICFkb2N1bWVudC5oYXNNdXRhdGlvbk9i
c2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhKQogICAg
ICAgICAmJiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01TVUJUUkVFTU9E
SUZJRURfTElTVEVORVIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0
aW9uU2NvcGUuaAppbmRleCAyOTY2NzY3NzY4ZjBkNzE0NzQyZTM2YmNlNWI2MTA4Njk3N2Y5MWZm
Li42Y2VhMTNkYTcxZTlhYmQxODVjMGNmMGZiYzFiNTM3YTRiNmFiODVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTc2LDcgKzc2LDcgQEAgY2xh
c3MgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2hpbGRM
aXN0TXV0YXRpb25TY29wZShDb250YWluZXJOb2RlJiB0YXJnZXQpCiAgICAgewotICAgICAgICBp
ZiAodGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25P
YnNlcnZlcjo6Q2hpbGRMaXN0KSkKKyAgICAgICAgaWYgKHRhcmdldC5kb2N1bWVudCgpLmhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoaWxkTGlzdCkp
CiAgICAgICAgICAgICBtX2FjY3VtdWxhdG9yID0gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRv
cjo6Z2V0T3JDcmVhdGUodGFyZ2V0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcAppbmRleCAwOTZiODc4N2FhNmNiZmM1Y2M5OGY3MjgwZmFhNWExMGI2MzczODg3Li5m
YjliY2I2MTUwNmMzOTlmZmIyM2MxYmM4MmIxZGY0MmQxNTUxZWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgQUxXQVlTX0lOTElORSBOb2Rl
VmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlv
bihDaGkKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoc291cmNlID09IENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlcik7CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWlu
VGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGRvY3Vt
ZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRM
aXN0KSkpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNl
cnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hpbGRMaXN0KSkpIHsKICAgICAg
ICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwogICAgICAgICAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQogICAgICAgICAgICAgICAgIG11dGF0aW9u
LndpbGxSZW1vdmVDaGlsZChjaGlsZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNi
MDMxNThiMWM3Mzg5NDBhMmJjMTMyZTkxOGNhZTc1NDY3MGU4ZGIuLjgwMzJhMDZjYzMwYWQ2MDc5
NDdhYjdjMDA2NzQ5MzAwY2I5OGVkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04ODEsMTIg
Kzg4MSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5cGUo
UGxhdGZvcm1FdmVudDo6VHlwZSkgY29uc3Q7CiAgICAgdm9pZCBhZGRMaXN0ZW5lclR5cGVJZk5l
ZWRlZChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpOwogCi0gICAgYm9vbCBoYXNNdXRhdGlv
bk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSkgY29u
c3QKKyAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb24gdHlwZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2
ZXJUeXBlcyAmIHR5cGU7CisgICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5j
b250YWlucyh0eXBlKTsKICAgICB9Ci0gICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNv
bnN0IHsgcmV0dXJuIG1fbXV0YXRpb25PYnNlcnZlclR5cGVzOyB9Ci0gICAgdm9pZCBhZGRNdXRh
dGlvbk9ic2VydmVyVHlwZXMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgdHlwZXMpIHsgbV9tdXRh
dGlvbk9ic2VydmVyVHlwZXMgfD0gdHlwZXM7IH0KKyAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2
ZXJzKCkgY29uc3QgeyByZXR1cm4gIW1fbXV0YXRpb25PYnNlcnZlclR5cGVzLmlzRW1wdHkoKTsg
fQorICAgIHZvaWQgYWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zIHR5cGVzKSB7IG1fbXV0YXRpb25PYnNlcnZlclR5cGVzLmFkZCh0eXBlcyk7IH0KIAogICAg
IENTU1N0eWxlRGVjbGFyYXRpb24qIGdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0
cmluZyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIApAQCAtMjA1Myw3ICsyMDUzLDcgQEAgcHJpdmF0
ZToKICAgICBPcHRpb25hbDxSZWZlcnJlclBvbGljeT4gbV9yZWZlcnJlclBvbGljeTsKICAgICBS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IENvbXBsZXRlIH07CiAKLSAgICBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9ucyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyB7IDAgfTsKKyAgICBNdXRhdGlvbk9i
c2VydmVyT3B0aW9ucyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlczsKIAogICAgIGJvb2wgbV9hY3Rp
dmVQYXJzZXJXYXNBYm9ydGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fd3JpdGVSZWN1cnNpb25J
c1Rvb0RlZXAgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CmluZGV4IGE0YWMwZWI3ZTU3MTc3Y2YwNDIzN2U2YTkyM2NjNTAzMDZlMmJiZDYuLjZhZGFjZmU1
NWJlNDg1NTE1MGYyZTYyYzhkNDE4Y2Q5ZmI1NDJkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5jcHAKQEAgLTcxLDM3ICs3MSw0NyBAQCBNdXRhdGlvbk9ic2VydmVyOjp+
TXV0YXRpb25PYnNlcnZlcigpCiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRp
b25zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIChvcHRp
b25zICYgKEF0dHJpYnV0ZXMgfCBDaGFyYWN0ZXJEYXRhIHwgQ2hpbGRMaXN0KSkKLSAgICAgICAg
JiYgKChvcHRpb25zICYgQXR0cmlidXRlcykgfHwgIShvcHRpb25zICYgQXR0cmlidXRlT2xkVmFs
dWUpKQotICAgICAgICAmJiAoKG9wdGlvbnMgJiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBB
dHRyaWJ1dGVGaWx0ZXIpKQotICAgICAgICAmJiAoKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhKSB8
fCAhKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKTsKKyAgICBjb25zdGV4cHIgTXV0
YXRpb25PYnNlcnZlck9wdGlvbnMgdmFsaWRGbGFnUGF0dGVybnMgPSB7CisgICAgICAgIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMsCisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb246OkNoYXJhY3RlckRhdGEsCisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNo
aWxkTGlzdCwKKyAgICB9OworCisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnNBbnkodmFsaWRG
bGFnUGF0dGVybnMpCisgICAgICAgICYmIChvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb246OkF0dHJpYnV0ZXMpIHx8ICFvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb246OkF0dHJpYnV0ZU9sZFZhbHVlKSkKKyAgICAgICAgJiYgKG9wdGlvbnMuY29udGFp
bnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlcykgfHwgIW9wdGlvbnMuY29udGFp
bnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlRmlsdGVyKSkKKyAgICAgICAgJiYg
KG9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hhcmFjdGVyRGF0YSkg
fHwgIW9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hhcmFjdGVyRGF0
YU9sZFZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9i
c2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5pdCkKIHsKLSAgICBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRp
b25zOwogCiAgICAgaWYgKGluaXQuY2hpbGRMaXN0KQotICAgICAgICBvcHRpb25zIHw9IENoaWxk
TGlzdDsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hpbGRM
aXN0KTsKICAgICBpZiAoaW5pdC5zdWJ0cmVlKQotICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7
CisgICAgICAgIG9wdGlvbnMuYWRkKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OlN1YnRyZWUpOwog
ICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQotICAgICAgICBv
cHRpb25zIHw9IEF0dHJpYnV0ZU9sZFZhbHVlOworICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlv
bk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVPbGRWYWx1ZSk7CiAgICAgaWYgKGluaXQuY2hhcmFj
dGVyRGF0YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQotICAgICAgICBvcHRpb25zIHw9IENoYXJh
Y3RlckRhdGFPbGRWYWx1ZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9w
dGlvbjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4g
YXR0cmlidXRlRmlsdGVyOwogICAgIGlmIChpbml0LmF0dHJpYnV0ZUZpbHRlcikgewogICAgICAg
ICBmb3IgKGF1dG8mIHZhbHVlIDogaW5pdC5hdHRyaWJ1dGVGaWx0ZXIudmFsdWUoKSkKICAgICAg
ICAgICAgIGF0dHJpYnV0ZUZpbHRlci5hZGQodmFsdWUpOwotICAgICAgICBvcHRpb25zIHw9IEF0
dHJpYnV0ZUZpbHRlcjsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlv
bjo6QXR0cmlidXRlRmlsdGVyKTsKICAgICB9CiAKLSAgICBpZiAoaW5pdC5hdHRyaWJ1dGVzID8g
aW5pdC5hdHRyaWJ1dGVzLnZhbHVlKCkgOiAob3B0aW9ucyAmIChBdHRyaWJ1dGVGaWx0ZXIgfCBB
dHRyaWJ1dGVPbGRWYWx1ZSkpKQotICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZXM7CisgICAg
Y29uc3RleHByIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIHNob3VsZE9ic2VydmVBdHRyaWJ1dGUg
PSB7CisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZUZpbHRlciwKKyAg
ICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlT2xkVmFsdWUsCisgICAgfTsK
KyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVzID8gaW5pdC5hdHRyaWJ1dGVzLnZhbHVlKCkgOiBvcHRp
b25zLmNvbnRhaW5zQW55KHNob3VsZE9ic2VydmVBdHRyaWJ1dGUpKQorICAgICAgICBvcHRpb25z
LmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVzKTsKIAotICAgIGlmIChpbml0
LmNoYXJhY3RlckRhdGEgPyBpbml0LmNoYXJhY3RlckRhdGEudmFsdWUoKSA6IChvcHRpb25zICYg
Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSkKLSAgICAgICAgb3B0aW9ucyB8PSBDaGFyYWN0ZXJEYXRh
OworICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGEgPyBpbml0LmNoYXJhY3RlckRhdGEudmFsdWUo
KSA6IG9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hhcmFjdGVyRGF0
YU9sZFZhbHVlKSkKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6
Q2hhcmFjdGVyRGF0YSk7CiAKICAgICBpZiAoIXZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyLmgKaW5kZXggNDc3ZjBmOTNkMjZmZjNmOTcwMWU4N2MyYjhiZjFkMzI2ZTdl
ZDkyNi4uZDJiMzM5NjQxZWE4M2I2ZTA2YTMzMzJjNGNlNmZkMzRlY2JhODAyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwyOSArNDksMjcgQEAgY2xhc3Mg
TXV0YXRpb25SZWNvcmQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgV2luZG93RXZlbnRMb29wOwogCi11
c2luZyBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyA9IHVuc2lnbmVkIGNoYXI7Ci11c2luZyBNdXRh
dGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyA9IHVuc2lnbmVkIGNoYXI7CitlbnVtIGNsYXNzIE11
dGF0aW9uT2JzZXJ2ZXJPcHRpb246IHVpbnQ4X3QgeworICAgIC8vIE11dGF0aW9uVHlwZQorICAg
IENoaWxkTGlzdCAgICAgPSAxIDw8IDAsCisgICAgQXR0cmlidXRlcyAgICA9IDEgPDwgMSwKKyAg
ICBDaGFyYWN0ZXJEYXRhID0gMSA8PCAyLAogCi1jbGFzcyBNdXRhdGlvbk9ic2VydmVyIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25PYnNlcnZlcj4gewotICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoTXV0YXRpb25PYnNlcnZlcik7Ci1wdWJsaWM6Ci0gICAgZW51bSBNdXRhdGlv
blR5cGUgewotICAgICAgICBDaGlsZExpc3QgPSAxIDw8IDAsCi0gICAgICAgIEF0dHJpYnV0ZXMg
PSAxIDw8IDEsCi0gICAgICAgIENoYXJhY3RlckRhdGEgPSAxIDw8IDIsCisgICAgLy8gT2JzZXJ2
YXRpb25GbGFncworICAgIFN1YnRyZWUgICAgICAgICA9IDEgPDwgMywKKyAgICBBdHRyaWJ1dGVG
aWx0ZXIgPSAxIDw8IDQsCiAKLSAgICAgICAgQWxsTXV0YXRpb25UeXBlcyA9IENoaWxkTGlzdCB8
IEF0dHJpYnV0ZXMgfCBDaGFyYWN0ZXJEYXRhCi0gICAgfTsKKyAgICAvLyBEZWxpdmVyeUZsYWdz
CisgICAgQXR0cmlidXRlT2xkVmFsdWUgICAgID0gMSA8PCA1LAorICAgIENoYXJhY3RlckRhdGFP
bGRWYWx1ZSA9IDEgPDwgNiwKK307CiAKLSAgICBlbnVtIE9ic2VydmF0aW9uRmxhZ3MgIHsKLSAg
ICAgICAgU3VidHJlZSA9IDEgPDwgMywKLSAgICAgICAgQXR0cmlidXRlRmlsdGVyID0gMSA8PCA0
Ci0gICAgfTsKK3VzaW5nIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zID0gT3B0aW9uU2V0PE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb24+OwordXNpbmcgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMg
PSBPcHRpb25TZXQ8TXV0YXRpb25PYnNlcnZlck9wdGlvbj47CiAKLSAgICBlbnVtIERlbGl2ZXJ5
RmxhZ3MgewotICAgICAgICBBdHRyaWJ1dGVPbGRWYWx1ZSA9IDEgPDwgNSwKLSAgICAgICAgQ2hh
cmFjdGVyRGF0YU9sZFZhbHVlID0gMSA8PCA2LAotICAgIH07CitjbGFzcyBNdXRhdGlvbk9ic2Vy
dmVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25PYnNlcnZlcj4geworICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoTXV0YXRpb25PYnNlcnZlcik7CitwdWJsaWM6CiAKICAgICBz
dGF0aWMgUmVmPE11dGF0aW9uT2JzZXJ2ZXI+IGNyZWF0ZShSZWY8TXV0YXRpb25DYWxsYmFjaz4m
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXAuY3BwCmluZGV4IDAyNzZlNDJiZTViZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNi
ZGUuLmI1ZDk4MzFkMDg0ODIzZmY1M2IzOTEwNmZiMDE0ZDVhYzZkYzUzZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApA
QCAtMzQsMTkgKzM0LDIwIEBACiAKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKEhhc2hNYXA8UmVmPE11
dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4mJiBvYnNlcnZl
cnMsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZykKK2lubGluZSBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlP
cHRpb25zPiYmIG9ic2VydmVycywgT3B0aW9uYWw8TXV0YXRpb25PYnNlcnZlck9wdGlvbj4gb2xk
VmFsdWVGbGFnKQogICAgIDogbV9vYnNlcnZlcnMoV1RGTW92ZShvYnNlcnZlcnMpKQogICAgICwg
bV9vbGRWYWx1ZUZsYWcob2xkVmFsdWVGbGFnKQogewogICAgIEFTU0VSVCghbV9vYnNlcnZlcnMu
aXNFbXB0eSgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQoTm9k
ZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSwgTXV0YXRpb25S
ZWNvcmREZWxpdmVyeU9wdGlvbnMgb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBh
dHRyaWJ1dGVOYW1lKQorc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQoTm9kZSYg
dGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uIHR5cGUsIE9wdGlvbmFsPE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb24+IG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRl
TmFtZSkKIHsKLSAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRl
cyAmJiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CisgICAgQVNTRVJUKCh0eXBl
ID09IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkg
fHwgIWF0dHJpYnV0ZU5hbWUpOwogICAgIGF1dG8gb2JzZXJ2ZXJzID0gdGFyZ2V0LnJlZ2lzdGVy
ZWRNdXRhdGlvbk9ic2VydmVycyh0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKICAgICBpZiAob2JzZXJ2
ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Miw0ICs4MywxMyBA
QCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjplbnF1ZXVlTXV0YXRpb25SZWNv
cmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmCiAgICAgfQogfQogCitib29sIE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOjpoYXNPbGRWYWx1ZShNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cyBvcHRpb25zKSBjb25zdAoreworICAgIGlmICghbV9vbGRWYWx1ZUZsYWcpCisgICAgICAgIHJl
dHVybiBvcHRpb25zLmlzRW1wdHkoKTsKKworICAgIGF1dG8gb2xkVmFsdWVGbGFnID0gbV9vbGRW
YWx1ZUZsYWcudmFsdWUoKTsKKyAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhvbGRWYWx1ZUZs
YWcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5oCmluZGV4IDNjMGFlNTIzN2Q0YjJl
MmVmZjcwZGRlNjYyZTVmNGUxZTU2OTI2YWQuLmY4ZGJiOGE3YmExZWZjYjQwZDFhNmRmNzMwYjdj
NjVhMTIxMGU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25P
YnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQy
LDQzICs0Myw0MiBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKEhhc2hNYXA8UmVmPE11dGF0aW9uT2Jz
ZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4mJiwgTXV0YXRpb25SZWNvcmRE
ZWxpdmVyeU9wdGlvbnMpOworICAgIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKEhhc2hN
YXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4m
JiwgT3B0aW9uYWw8TXV0YXRpb25PYnNlcnZlck9wdGlvbj4pOwogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hpbGRM
aXN0TXV0YXRpb24oTm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0YXJnZXQuZG9j
dW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGls
ZExpc3QpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoaWxkTGlzdCkpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cyBvbGRWYWx1ZUZsYWcgPSAwOwotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0
LCBNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QsIG9sZFZhbHVlRmxhZyk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoaWxk
TGlzdCwgV1RGOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0
YXRpb24oTm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQo
KS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJE
YXRhKSkKKyAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVy
c09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJn
ZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEsIE11dGF0aW9uT2JzZXJ2ZXI6OkNo
YXJhY3RlckRhdGFPbGRWYWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJn
ZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJhY3RlckRhdGEsIE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb246OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQXR0
cmlidXRlc011dGF0aW9uKE5vZGUmIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRp
b25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcykpCisgICAgICAg
IGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRp
b25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlcykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2Vy
dmVyOjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSwgJmF0
dHJpYnV0ZU5hbWUpOworICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRh
dGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpB
dHRyaWJ1dGVPbGRWYWx1ZSwgJmF0dHJpYnV0ZU5hbWUpOwogICAgIH0KIAogICAgIGJvb2wgaXNP
bGRWYWx1ZVJlcXVlc3RlZCgpIGNvbnN0OwogICAgIHZvaWQgZW5xdWV1ZU11dGF0aW9uUmVjb3Jk
KFJlZjxNdXRhdGlvblJlY29yZD4mJik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlSWZOZWVkZWQoTm9k
ZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIE11dGF0aW9uUmVjb3Jk
RGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmli
dXRlTmFtZSA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwgTXV0YXRp
b25PYnNlcnZlck9wdGlvbiwgT3B0aW9uYWw8TXV0YXRpb25PYnNlcnZlck9wdGlvbj4gb2xkVmFs
dWVGbGFnLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lID0gbnVsbHB0cik7CiAK
LSAgICBib29sIGhhc09sZFZhbHVlKE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9wdGlv
bnMpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbnMgJiBtX29sZFZhbHVlRmxhZzsgfQorICAgIGJvb2wg
aGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMpIGNvbnN0OwogCiAgICAg
SGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zPiBtX29ic2VydmVyczsKLSAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBtX29s
ZFZhbHVlRmxhZzsKKyAgICBPcHRpb25hbDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uPiBtX29sZFZh
bHVlRmxhZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCAwZWNiMDVi
NDg4NjBjNzc3MTQxOGQ4YmY5ZDI2MTI5M2E4ODY1YWUzLi5kYjJhOGUxY2NmNjhiNmM0NTA1M2Ni
ODE1NWJkODBmMDJlYzYwZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC05NCwxNiArOTQsMTYgQEAgc3RkOjp1bmlx
dWVfcHRyPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+PiBNdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uOjp0YWsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLWJvb2wgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShOb2RlJiBu
b2RlLCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSwgY29uc3QgUXVhbGlmaWVk
TmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3QKK2Jvb2wgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbjo6c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShOb2RlJiBub2RlLCBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYg
YXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5hbWUpOwotICAgIGlmICghKG1fb3B0aW9ucyAm
IHR5cGUpKQorICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpBdHRy
aWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKKyAgICBpZiAoIW1f
b3B0aW9ucy5jb250YWlucyh0eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KCZtX25vZGUgIT0gJm5vZGUgJiYgIWlzU3VidHJlZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAodHlwZSAhPSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzIHx8ICEobV9v
cHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlRmlsdGVyKSkKKyAgICBpZiAodHlw
ZSAhPSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVzIHx8ICFtX29wdGlvbnMuY29u
dGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlRmlsdGVyKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBpZiAoIWF0dHJpYnV0ZU5hbWUtPm5hbWVzcGFjZVVSSSgpLmlz
TnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmgKaW5kZXggZTY5NDA0ODNhMzEzYzhmZDFiZDE2ZGMxN2NiOTZiMTNhY2QyMmEzYS4u
YmEzZDg4ZTVmMDBlYmJhNmE4MTJkYzM1NmVjODIxZGE1OTczODdhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC01MSwxMyAr
NTEsMjggQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PEdDUmVhY2hhYmxl
UmVmPE5vZGU+Pj4gdGFrZVRyYW5zaWVudFJlZ2lzdHJhdGlvbnMoKTsKICAgICBib29sIGhhc1Ry
YW5zaWVudFJlZ2lzdHJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zaWVudFJlZ2lzdHJh
dGlvbk5vZGVzICYmICFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzLT5pc0VtcHR5KCk7IH0K
IAotICAgIGJvb2wgc2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShOb2RlJiwgTXV0YXRpb25PYnNl
cnZlcjo6TXV0YXRpb25UeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBj
b25zdDsKLSAgICBib29sIGlzU3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIE11
dGF0aW9uT2JzZXJ2ZXI6OlN1YnRyZWU7IH0KKyAgICBib29sIHNob3VsZFJlY2VpdmVNdXRhdGlv
bkZyb20oTm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb24sIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJpYnV0ZU5hbWUpIGNvbnN0OworICAgIGJvb2wgaXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1
cm4gbV9vcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OlN1YnRyZWUpOyB9
CiAKICAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlcigpIHsgcmV0dXJuIG1fb2JzZXJ2ZXIu
Z2V0KCk7IH0KICAgICBOb2RlJiBub2RlKCkgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgTXV0YXRp
b25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zICYgKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZhbHVlIHwgTXV0YXRp
b25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsgfQotICAgIE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiBNdXRh
dGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5cGVzOyB9CisgICAgTXV0YXRpb25SZWNvcmREZWxp
dmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zKCkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0
ZXhwciBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBoYXNEZWxpdmVyeUZsYWdzID0geworICAgICAg
ICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlT2xkVmFsdWUsCisgICAgICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUsCisgICAg
ICAgIH07CisgICAgICAgIHJldHVybiBtX29wdGlvbnMgJiBoYXNEZWxpdmVyeUZsYWdzOworICAg
IH0KKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtdXRhdGlvblR5cGVzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGNvbnN0ZXhwciBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBhbGxNdXRhdGlv
blR5cGVzID0geworICAgICAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hpbGRMaXN0
LAorICAgICAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlcywKKyAgICAg
ICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJhY3RlckRhdGEsCisgICAgICAgIH07
CisgICAgICAgIHJldHVybiBtX29wdGlvbnMgJiBhbGxNdXRhdGlvblR5cGVzOworICAgIH0KIAog
ICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uTm9kZXNUb1NldChIYXNoU2V0PE5vZGUqPiYpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzhmMGU5OTVhNjY5MWFiZDZhZGY3OWZhOTJmMDkyOTZh
OGIyMzJlMy4uMmMyNzFmMTg2MGY0YjliNjE5Y2JkZjBmNzg0ZWYxMzIzM2MxNmE2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMjI2OSw3ICsyMjY5LDcgQEAgSGFzaFNldDxNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uKj4qIE5vZGU6OnRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgK
ICAgICByZXR1cm4gJmRhdGEtPnRyYW5zaWVudFJlZ2lzdHJ5OwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBSZWdpc3RyeT4gc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RNYXRjaGluZ09ic2VydmVy
c0Zvck11dGF0aW9uKEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29y
ZERlbGl2ZXJ5T3B0aW9ucz4mIG9ic2VydmVycywgUmVnaXN0cnkqIHJlZ2lzdHJ5LCBOb2RlJiB0
YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZp
ZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQordGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0cnk+IHN0YXRp
YyBpbmxpbmUgdm9pZCBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihIYXNoTWFw
PFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiBv
YnNlcnZlcnMsIFJlZ2lzdHJ5KiByZWdpc3RyeSwgTm9kZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiB7CiAg
ICAgaWYgKCFyZWdpc3RyeSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI3OSwxNSArMjI3OSwxNSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RyeT4gc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RN
YXRjaGluZ09ic2VydmVyc0Zvck11dGF0aQogICAgICAgICAgICAgYXV0byBkZWxpdmVyeU9wdGlv
bnMgPSByZWdpc3RyYXRpb24tPmRlbGl2ZXJ5T3B0aW9ucygpOwogICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlP
cHRpb25zKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSB8PSBkZWxpdmVyeU9wdGlvbnM7CisgICAgICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hZGQoZGVsaXZlcnlPcHRpb25zKTsKICAg
ICAgICAgfQogICAgIH0KIH0KIAotSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBOb2RlOjpyZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZl
cnMoTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpCitIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRp
b25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IE5vZGU6OnJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVy
cyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJp
YnV0ZU5hbWUpCiB7CiAgICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZXN1bHQ7Ci0gICAgQVNTRVJUKCh0eXBlID09IE11dGF0
aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5h
bWUpOworICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1
dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKICAgICBjb2xsZWN0TWF0
Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihyZXN1bHQsIG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
eSgpLCAqdGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgY29sbGVjdE1hdGNoaW5nT2Jz
ZXJ2ZXJzRm9yTXV0YXRpb24ocmVzdWx0LCB0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cnkoKSwgKnRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpOwogICAgIGZvciAoTm9kZSogbm9kZSA9
IHBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggZGRhNmY4YWMyYWNhZTk3NzdhYWU5NDg3ZTc2YzdiYjk4Zjk1ZjE2Yy4uMjljYmQ4
ZDhiYjY5ZjJiODlkNGJmNjU5MTkwMzc1MjliY2RmMTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00OTAs
NyArNDkwLDcgQEAgcHVibGljOgogICAgIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRh
Q29uY3VycmVudGx5KCkgZmluYWw7CiAgICAgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRh
cmdldERhdGEoKSBmaW5hbDsKIAotICAgIEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBN
dXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4gcmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJz
KE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0
cmlidXRlTmFtZSk7CisgICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnMoTXV0YXRp
b25PYnNlcnZlck9wdGlvbiwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSk7CiAg
ICAgdm9pZCByZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlciYsIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVG
aWx0ZXIpOwogICAgIHZvaWQgdW5yZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbiYpOwogICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9i
c2VydmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429797</attachid>
            <date>2021-05-26 14:40:42 -0700</date>
            <delta_ts>2021-07-10 06:43:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210527064041.patch</filename>
            <type>text/plain</type>
            <size>27572</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjNGRlNDU0Y2NhNTM3
ZTMwMTIwMWI5YzRkY2MzYzkzODdkMjdlZS4uYmRhMzc5NjM0MmJmNjFkYzg1NWIyMDc1OTg5NTRi
MzdkM2Q2NDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTA1LTI2ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2MDQwNDQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggdW5pZmllcyBgTXV0YXRpb25PYnNlcnZlcmAncyAzIGVu
dW1zCisgICAgICAgIChgTXV0YXRpb25UeXBlYCwgYE9ic2VydmF0aW9uRmxhZ3NgIGFuZCBgRGVs
aXZlcnlGbGFnc2ApLCBpbnRvIHNpbmdsZSBgTXV0YXRpb25PYnNlcnZlck9wdGlvbmAKKyAgICAg
ICAgYW5kIHdpbGwgaGFuZGxlIHRoaXMgZmxhZyBieSBgT3B0aW9uU2V0PE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb24+YC4KKworICAgICAgICBUaGVpciBlbnVtIHdlcmUgZGlmZmVyZW50IG9uIGVhY2gg
b3RoZXJzIGJ1dCBhcmUgdXNlZCBhcyBiaXQgbWFzayBvbgorICAgICAgICBzaW5nbGUgYE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zYC4gU28gSSB0aGluayB3ZSBjYW4gdW5pZnkgaW50byBzaW5nbGUg
ZW51bSBjbGFzcworICAgICAgICBhbmQgcmVuYW1lIGl0IHRvIGBNdXRhdGlvbk9ic2VydmVyT3B0
aW9uU2V0YC4KKworICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNhblVzZVNldERhdGFPcHRpbWl6YXRpb24pOgorICAgICAgICAqIGRvbS9DaGlsZExp
c3RNdXRhdGlvblNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNj
b3BlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJl
bldpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNdXRhdGlvbk9ic2VydmVycyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvbk9ic2VydmVyOjp2YWxpZGF0ZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0
YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIu
aDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwOjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckNoYXJhY3RlckRh
dGFNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpoYXNPbGRWYWx1ZSBjb25zdCk6CisgICAgICAg
ICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpy
ZXNldE9ic2VydmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6ZGVsaXZlcnlPcHRpb25zIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om11dGF0
aW9uVHlwZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpp
c1N1YnRyZWUgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6
CisKIDIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEcm9wIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQncyBibG9ja2VkVVJMICYgZG9jdW1l
bnRVUkwgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGJi
OGQ1M2NjYzQ0NWM3MGNmYTgyZmVjZjYzNWQ1Y2IyMDQ2ZjY0YTcuLjE1NDMzZjE2ZWI2NmZkM2Rl
YTg1ZWQ3MWUyMzIwMmY0NTA5ZDIzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENoYXJhY3Rl
ckRhdGEpOwogc3RhdGljIGJvb2wgY2FuVXNlU2V0RGF0YU9wdGltaXphdGlvbihjb25zdCBDaGFy
YWN0ZXJEYXRhJiBub2RlKQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gbm9kZS5kb2N1bWVudCgp
OwotICAgIHJldHVybiAhZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01DSEFS
QUNURVJEQVRBTU9ESUZJRURfTElTVEVORVIpICYmICFkb2N1bWVudC5oYXNNdXRhdGlvbk9ic2Vy
dmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhKQorICAgIHJldHVybiAh
ZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01DSEFSQUNURVJEQVRBTU9ESUZJ
RURfTElTVEVORVIpICYmICFkb2N1bWVudC5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRh
dGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhKQogICAgICAgICAmJiAhZG9jdW1lbnQu
aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRleCAy
OTY2NzY3NzY4ZjBkNzE0NzQyZTM2YmNlNWI2MTA4Njk3N2Y5MWZmLi42Y2VhMTNkYTcxZTlhYmQx
ODVjMGNmMGZiYzFiNTM3YTRiNmFiODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExp
c3RNdXRhdGlvblNjb3BlLmgKQEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgQ2hpbGRMaXN0TXV0YXRp
b25TY29wZSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShD
b250YWluZXJOb2RlJiB0YXJnZXQpCiAgICAgewotICAgICAgICBpZiAodGFyZ2V0LmRvY3VtZW50
KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0
KSkKKyAgICAgICAgaWYgKHRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZU
eXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoaWxkTGlzdCkpCiAgICAgICAgICAgICBtX2Fj
Y3VtdWxhdG9yID0gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUodGFy
Z2V0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBmY2Ji
ZjVlNmI4MmI1NmMyMmYzODdlYzk1MzQ5NDI1MjBjOTNmZjM2Li45MTY4YThhZWYzODgyNDUyNDkx
YTA3NjZjYzIxNzY5MDBlM2Q0ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CkBAIC0xMDIsNyArMTAyLDcgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5v
ZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGkKICAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlQoc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcik7
CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50KCkuaGFzTXV0YXRpb25P
YnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRMaXN0KSkpIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKGRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRp
b25PYnNlcnZlck9wdGlvbjo6Q2hpbGRMaXN0KSkpIHsKICAgICAgICAgICAgIENoaWxkTGlzdE11
dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwogICAgICAgICAgICAgZm9yIChhdXRvJiBjaGls
ZCA6IGNoaWxkcmVuKQogICAgICAgICAgICAgICAgIG11dGF0aW9uLndpbGxSZW1vdmVDaGlsZChj
aGlsZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDg0ZmQyMWE2NmQ3OGE0ZjQyODY3
ZjFmNGQwNTQ0YjQ2Njk4NTMyMDcuLjYyMTg0NGI4YjBlZDkwNDNkMjJiZjExZjU3MjAwNDZhY2U2
OTBhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04ODAsMTIgKzg4MCwxMiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5cGUoUGxhdGZvcm1FdmVudDo6VHlw
ZSkgY29uc3Q7CiAgICAgdm9pZCBhZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUpOwogCi0gICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShN
dXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSkgY29uc3QKKyAgICBib29sIGhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb24gdHlwZSkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHR5cGU7Cisg
ICAgICAgIHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5jb250YWlucyh0eXBlKTsKICAg
ICB9Ci0gICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0
YXRpb25PYnNlcnZlclR5cGVzOyB9Ci0gICAgdm9pZCBhZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMo
TXV0YXRpb25PYnNlcnZlck9wdGlvbnMgdHlwZXMpIHsgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMg
fD0gdHlwZXM7IH0KKyAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJzKCkgY29uc3QgeyByZXR1
cm4gIW1fbXV0YXRpb25PYnNlcnZlclR5cGVzLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkTXV0
YXRpb25PYnNlcnZlclR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgdHlwZXMpIHsgbV9t
dXRhdGlvbk9ic2VydmVyVHlwZXMuYWRkKHR5cGVzKTsgfQogCiAgICAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogZ2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4g
bnVsbHB0cjsgfQogCkBAIC0yMDQ2LDcgKzIwNDYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFs
PFJlZmVycmVyUG9saWN5PiBtX3JlZmVycmVyUG9saWN5OwogICAgIFJlYWR5U3RhdGUgbV9yZWFk
eVN0YXRlIHsgQ29tcGxldGUgfTsKIAotICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG1fbXV0
YXRpb25PYnNlcnZlclR5cGVzIHsgMCB9OworICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQg
bV9tdXRhdGlvbk9ic2VydmVyVHlwZXM7CiAKICAgICBib29sIG1fYWN0aXZlUGFyc2VyV2FzQWJv
cnRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA4YjNhMjVm
OTVjOWY5YmM0YTYxNzllYzJiMDE1OGJhNmY4OTk4OTAyLi4wODUwMmU3OGZiN2RhYmM3OTIzOTQ5
ZWZiNTE3ZWZkNTZiYjk5NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwCkBAIC02OSwzOSArNjksNDkgQEAgTXV0YXRpb25PYnNlcnZlcjo6fk11dGF0aW9uT2JzZXJ2
ZXIoKQogICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbnMuaXNFbXB0eSgpKTsKIH0KIAotYm9vbCBN
dXRhdGlvbk9ic2VydmVyOjp2YWxpZGF0ZU9wdGlvbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbnMg
b3B0aW9ucykKK2Jvb2wgTXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11dGF0aW9u
T2JzZXJ2ZXJPcHRpb25TZXQgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gKG9wdGlvbnMgJiAoQXR0
cmlidXRlcyB8IENoYXJhY3RlckRhdGEgfCBDaGlsZExpc3QpKQotICAgICAgICAmJiAoKG9wdGlv
bnMgJiBBdHRyaWJ1dGVzKSB8fCAhKG9wdGlvbnMgJiBBdHRyaWJ1dGVPbGRWYWx1ZSkpCi0gICAg
ICAgICYmICgob3B0aW9ucyAmIEF0dHJpYnV0ZXMpIHx8ICEob3B0aW9ucyAmIEF0dHJpYnV0ZUZp
bHRlcikpCi0gICAgICAgICYmICgob3B0aW9ucyAmIENoYXJhY3RlckRhdGEpIHx8ICEob3B0aW9u
cyAmIENoYXJhY3RlckRhdGFPbGRWYWx1ZSkpOworICAgIGNvbnN0ZXhwciBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uU2V0IHJlcXVpcmVkT3B0aW9ucyA9IHsKKyAgICAgICAgTXV0YXRpb25PYnNlcnZl
ck9wdGlvbjo6QXR0cmlidXRlcywKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hh
cmFjdGVyRGF0YSwKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hpbGRMaXN0LAor
ICAgIH07CisKKyAgICByZXR1cm4gb3B0aW9ucy5jb250YWluc0FueShyZXF1aXJlZE9wdGlvbnMp
CisgICAgICAgICYmIChvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0
dHJpYnV0ZXMpIHx8ICFvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0
dHJpYnV0ZU9sZFZhbHVlKSkKKyAgICAgICAgJiYgKG9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25P
YnNlcnZlck9wdGlvbjo6QXR0cmlidXRlcykgfHwgIW9wdGlvbnMuY29udGFpbnMoTXV0YXRpb25P
YnNlcnZlck9wdGlvbjo6QXR0cmlidXRlRmlsdGVyKSkKKyAgICAgICAgJiYgKG9wdGlvbnMuY29u
dGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hhcmFjdGVyRGF0YSkgfHwgIW9wdGlvbnMu
Y29udGFpbnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKSk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoTm9kZSYg
bm9kZSwgY29uc3QgSW5pdCYgaW5pdCkKIHsKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBv
cHRpb25zID0gMDsKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0IG9wdGlvbnM7CiAKICAg
ICBpZiAoaW5pdC5jaGlsZExpc3QpCi0gICAgICAgIG9wdGlvbnMgfD0gQ2hpbGRMaXN0OworICAg
ICAgICBvcHRpb25zLmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGlsZExpc3QpOwogICAg
IGlmIChpbml0LnN1YnRyZWUpCi0gICAgICAgIG9wdGlvbnMgfD0gU3VidHJlZTsKKyAgICAgICAg
b3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6U3VidHJlZSk7CiAgICAgaWYgKGlu
aXQuYXR0cmlidXRlT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCi0gICAgICAgIG9wdGlvbnMgfD0g
QXR0cmlidXRlT2xkVmFsdWU7CisgICAgICAgIG9wdGlvbnMuYWRkKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb246OkF0dHJpYnV0ZU9sZFZhbHVlKTsKICAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xk
VmFsdWUudmFsdWVPcihmYWxzZSkpCi0gICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9s
ZFZhbHVlOworICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGFy
YWN0ZXJEYXRhT2xkVmFsdWUpOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVG
aWx0ZXI7CiAgICAgaWYgKGluaXQuYXR0cmlidXRlRmlsdGVyKSB7CiAgICAgICAgIGZvciAoYXV0
byYgdmFsdWUgOiBpbml0LmF0dHJpYnV0ZUZpbHRlci52YWx1ZSgpKQogICAgICAgICAgICAgYXR0
cmlidXRlRmlsdGVyLmFkZCh2YWx1ZSk7Ci0gICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlRmls
dGVyOworICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1
dGVGaWx0ZXIpOwogICAgIH0KIAotICAgIGlmIChpbml0LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJp
YnV0ZXMudmFsdWUoKSA6IChvcHRpb25zICYgKEF0dHJpYnV0ZUZpbHRlciB8IEF0dHJpYnV0ZU9s
ZFZhbHVlKSkpCi0gICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlczsKKyAgICBjb25zdGV4cHIg
TXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvcHRpb25zUmVxdWlyaW5nQXR0cmlidXRlT2JzZXJ2
ZXIgPSB7CisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZUZpbHRlciwK
KyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlT2xkVmFsdWUsCisgICAg
fTsKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVzID8gaW5pdC5hdHRyaWJ1dGVzLnZhbHVlKCkgOiBv
cHRpb25zLmNvbnRhaW5zQW55KG9wdGlvbnNSZXF1aXJpbmdBdHRyaWJ1dGVPYnNlcnZlcikpCisg
ICAgICAgIG9wdGlvbnMuYWRkKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMpOwog
Ci0gICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YSA/IGluaXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgp
IDogKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKQotICAgICAgICBvcHRpb25zIHw9
IENoYXJhY3RlckRhdGE7CisgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YSA/IGluaXQuY2hhcmFj
dGVyRGF0YS52YWx1ZSgpIDogb3B0aW9ucy5jb250YWlucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9u
OjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKQorICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlvbk9i
c2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhKTsKIAogICAgIGlmICghdmFsaWRhdGVPcHRpb25z
KG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0ZDM4N2JjM2QyZDdiNmQ3YjY5MTc5
MjVhMWE5NjliNTM5OThkMWRiLi44Mzg1NjNhOWZjMGVmOGZmNWYyNGMwYmIxMjliYzc3NWYyMGU2
YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTIsMzAgKzUzLDI2
IEBAIGNsYXNzIE11dGF0aW9uUmVjb3JkOwogY2xhc3MgTm9kZTsKIGNsYXNzIFdpbmRvd0V2ZW50
TG9vcDsKIAotdXNpbmcgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgPSB1bnNpZ25lZCBjaGFyOwot
dXNpbmcgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgPSB1bnNpZ25lZCBjaGFyOworZW51
bSBjbGFzcyBNdXRhdGlvbk9ic2VydmVyT3B0aW9uIDogdWludDhfdCB7CisgICAgLy8gTXV0YXRp
b25UeXBlCisgICAgQ2hpbGRMaXN0ICAgICA9IDEgPDwgMCwKKyAgICBBdHRyaWJ1dGVzICAgID0g
MSA8PCAxLAorICAgIENoYXJhY3RlckRhdGEgPSAxIDw8IDIsCiAKLWNsYXNzIE11dGF0aW9uT2Jz
ZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChNdXRhdGlvbk9ic2VydmVyKTsKLXB1YmxpYzoKLSAgICBl
bnVtIE11dGF0aW9uVHlwZSB7Ci0gICAgICAgIENoaWxkTGlzdCA9IDEgPDwgMCwKLSAgICAgICAg
QXR0cmlidXRlcyA9IDEgPDwgMSwKLSAgICAgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMiwKKyAg
ICAvLyBPYnNlcnZhdGlvbkZsYWdzCisgICAgU3VidHJlZSAgICAgICAgID0gMSA8PCAzLAorICAg
IEF0dHJpYnV0ZUZpbHRlciA9IDEgPDwgNCwKIAotICAgICAgICBBbGxNdXRhdGlvblR5cGVzID0g
Q2hpbGRMaXN0IHwgQXR0cmlidXRlcyB8IENoYXJhY3RlckRhdGEKLSAgICB9OwotCi0gICAgZW51
bSBPYnNlcnZhdGlvbkZsYWdzICB7Ci0gICAgICAgIFN1YnRyZWUgPSAxIDw8IDMsCi0gICAgICAg
IEF0dHJpYnV0ZUZpbHRlciA9IDEgPDwgNAotICAgIH07CisgICAgLy8gRGVsaXZlcnlGbGFncwor
ICAgIEF0dHJpYnV0ZU9sZFZhbHVlICAgICA9IDEgPDwgNSwKKyAgICBDaGFyYWN0ZXJEYXRhT2xk
VmFsdWUgPSAxIDw8IDYsCit9OwogCi0gICAgZW51bSBEZWxpdmVyeUZsYWdzIHsKLSAgICAgICAg
QXR0cmlidXRlT2xkVmFsdWUgPSAxIDw8IDUsCi0gICAgICAgIENoYXJhY3RlckRhdGFPbGRWYWx1
ZSA9IDEgPDwgNiwKLSAgICB9OwordXNpbmcgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCA9IE9w
dGlvblNldDxNdXRhdGlvbk9ic2VydmVyT3B0aW9uPjsKIAorY2xhc3MgTXV0YXRpb25PYnNlcnZl
ciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uT2JzZXJ2ZXI+IHsKKyAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKE11dGF0aW9uT2JzZXJ2ZXIpOworcHVibGljOgogICAgIHN0YXRp
YyBSZWY8TXV0YXRpb25PYnNlcnZlcj4gY3JlYXRlKFJlZjxNdXRhdGlvbkNhbGxiYWNrPiYmKTsK
IAogICAgIH5NdXRhdGlvbk9ic2VydmVyKCk7CkBAIC0xMTcsNyArMTE0LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNdXRhdGlvbk9ic2VydmVyKFJlZjxNdXRhdGlvbkNhbGxiYWNrPiYmKTsK
ICAgICB2b2lkIGRlbGl2ZXIoKTsKIAotICAgIHN0YXRpYyBib29sIHZhbGlkYXRlT3B0aW9ucyhN
dXRhdGlvbk9ic2VydmVyT3B0aW9ucyk7CisgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVPcHRpb25z
KE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQpOwogCiAgICAgUmVmPE11dGF0aW9uQ2FsbGJhY2s+
IG1fY2FsbGJhY2s7CiAgICAgVmVjdG9yPFJlZjxNdXRhdGlvblJlY29yZD4+IG1fcmVjb3JkczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAuY3BwCmluZGV4IDAyNzZlNDJiZTViZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNiZGUuLjZk
ZmRhNDQ1YjlhOGRhZTVjZWVmYjYwNjIyNTEzOTcxMzczN2I5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApAQCAtMjks
MjQgKzI5LDI0IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKIAorI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25SZWNvcmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
KEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0
aW9ucz4mJiBvYnNlcnZlcnMsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVl
RmxhZykKK2lubGluZSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9u
T2JzZXJ2ZXJPcHRpb25TZXQ+JiYgb2JzZXJ2ZXJzLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0
IG9sZFZhbHVlRmxhZykKICAgICA6IG1fb2JzZXJ2ZXJzKFdURk1vdmUob2JzZXJ2ZXJzKSkKICAg
ICAsIG1fb2xkVmFsdWVGbGFnKG9sZFZhbHVlRmxhZykKIHsKICAgICBBU1NFUlQoIW1fb2JzZXJ2
ZXJzLmlzRW1wdHkoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVk
KE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUsIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFt
ZSogYXR0cmlidXRlTmFtZSkKK3N0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKE5v
ZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlck9wdGlvbiB0eXBlLCBNdXRhdGlvbk9ic2VydmVy
T3B0aW9uU2V0IG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFt
ZSkKIHsKLSAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcyAm
JiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CisgICAgQVNTRVJUKCh0eXBlID09
IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwg
IWF0dHJpYnV0ZU5hbWUpOwogICAgIGF1dG8gb2JzZXJ2ZXJzID0gdGFyZ2V0LnJlZ2lzdGVyZWRN
dXRhdGlvbk9ic2VydmVycyh0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKICAgICBpZiAob2JzZXJ2ZXJz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5oCmluZGV4IDNjMGFlNTIzN2Q0
YjJlMmVmZjcwZGRlNjYyZTVmNGUxZTU2OTI2YWQuLjM4YzQyNWU4MzA5ZjcwNzAxMTkxMzQ0ZmM5
Njk1ZDg5NzEwOTk2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5oCkBAIC00Miw0MyArNDIsNDMgQEAgY2xhc3MgUXVhbGlmaWVk
TmFtZTsKIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVy
eU9wdGlvbnM+JiYsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zKTsKKyAgICBNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0
YXRpb25PYnNlcnZlck9wdGlvblNldD4mJiwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCk7CiAK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
PiBjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbihOb2RlJiB0YXJnZXQpCiAgICAgewotICAgICAg
ICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0
aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCkpCisgICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCku
aGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hpbGRM
aXN0KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIE11dGF0aW9uUmVj
b3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZyA9IDA7Ci0gICAgICAgIHJldHVybiBjcmVh
dGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCwgb2xkVmFsdWVG
bGFnKTsKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvbGRWYWx1ZUZsYWc7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b246OkNoaWxkTGlzdCwgb2xkVmFsdWVGbGFnKTsKICAgICB9CiAKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBjcmVhdGVGb3JDaGFyYWN0
ZXJEYXRhTXV0YXRpb24oTm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0YXJnZXQu
ZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpD
aGFyYWN0ZXJEYXRhKSkKKyAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlv
bk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBjcmVhdGVJZk5l
ZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEsIE11dGF0aW9uT2Jz
ZXJ2ZXI6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVJZk5l
ZWRlZCh0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJhY3RlckRhdGEsIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7CiAgICAgfQogCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3Jl
YXRlRm9yQXR0cmlidXRlc011dGF0aW9uKE5vZGUmIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCku
aGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcykp
CisgICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5
cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlcykpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRh
dGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVPbGRW
YWx1ZSwgJmF0dHJpYnV0ZU5hbWUpOworICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFy
Z2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVzLCBNdXRhdGlvbk9ic2VydmVy
T3B0aW9uOjpBdHRyaWJ1dGVPbGRWYWx1ZSwgJmF0dHJpYnV0ZU5hbWUpOwogICAgIH0KIAogICAg
IGJvb2wgaXNPbGRWYWx1ZVJlcXVlc3RlZCgpIGNvbnN0OwogICAgIHZvaWQgZW5xdWV1ZU11dGF0
aW9uUmVjb3JkKFJlZjxNdXRhdGlvblJlY29yZD4mJik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlSWZO
ZWVkZWQoTm9kZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZywgY29uc3QgUXVhbGlmaWVkTmFt
ZSogYXR0cmlidXRlTmFtZSA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdl
dCwgTXV0YXRpb25PYnNlcnZlck9wdGlvbiwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvbGRW
YWx1ZUZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUgPSBudWxscHRyKTsK
IAotICAgIGJvb2wgaGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0
aW9ucykgY29uc3QgeyByZXR1cm4gb3B0aW9ucyAmIG1fb2xkVmFsdWVGbGFnOyB9CisgICAgYm9v
bCBoYXNPbGRWYWx1ZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0IG9wdGlvbnMpIGNvbnN0IHsg
cmV0dXJuIG9wdGlvbnMuY29udGFpbnNBbnkobV9vbGRWYWx1ZUZsYWcpOyB9CiAKLSAgICBIYXNo
TWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+
IG1fb2JzZXJ2ZXJzOwotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG1fb2xkVmFs
dWVGbGFnOworICAgIEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uU2V0PiBtX29ic2VydmVyczsKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0
IG1fb2xkVmFsdWVGbGFnOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4
IGM2ZjFmYjE1ZGZmOGQ1ZWJmZjJmNWM1YjdiN2VkZTNhZTNkMGViNzkuLjhjZmU5YzAzMzFlYThl
ZjdkYjE3ZGE0NjRjYWM5MDc5OWNjZDNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTI5LDE2ICsyOSwxNiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNOb2Rl
Q3VzdG9tLmgiCisjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlF1YWxp
ZmllZE5hbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKE11dGF0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyLCBOb2RlJiBub2RlLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zLCBj
b25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCitNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKE11dGF0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBOb2RlJiBub2RlLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0IG9w
dGlvbnMsIGNvbnN0IEhhc2hTZXQ8QXRvbVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcikKICAgICA6
IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCiAgICAgLCBtX25vZGUobm9kZSkKICAgICAsIG1fb3B0aW9u
cyhvcHRpb25zKQpAQCAtNTMsNyArNTMsNyBAQCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
Ojp+TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbigpCiAgICAgbV9vYnNlcnZlci0+b2JzZXJ2
YXRpb25FbmRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bjo6cmVzZXRPYnNlcnZhdGlvbihNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zLCBjb25z
dCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCit2b2lkIE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb246OnJlc2V0T2JzZXJ2YXRpb24oTXV0YXRpb25PYnNlcnZlck9wdGlv
blNldCBvcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIp
CiB7CiAgICAgdGFrZVRyYW5zaWVudFJlZ2lzdHJhdGlvbnMoKTsKICAgICBtX29wdGlvbnMgPSBv
cHRpb25zOwpAQCAtOTUsMTYgKzk1LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PEdDUmVh
Y2hhYmxlUmVmPE5vZGU+Pj4gTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6dGFrCiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1ib29sIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZl
cjo6TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUp
IGNvbnN0Citib29sIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVN
dXRhdGlvbkZyb20oTm9kZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZlck9wdGlvbiB0eXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIEFTU0VSVCgodHlw
ZSA9PSBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFh
dHRyaWJ1dGVOYW1lKTsKLSAgICBpZiAoIShtX29wdGlvbnMgJiB0eXBlKSkKKyAgICBBU1NFUlQo
KHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVO
YW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CisgICAgaWYgKCFtX29wdGlvbnMuY29udGFpbnModHlw
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgmbV9ub2RlICE9ICZub2RlICYm
ICFpc1N1YnRyZWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHR5cGUgIT0g
TXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcyB8fCAhKG1fb3B0aW9ucyAmIE11dGF0aW9uT2Jz
ZXJ2ZXI6OkF0dHJpYnV0ZUZpbHRlcikpCisgICAgaWYgKHR5cGUgIT0gTXV0YXRpb25PYnNlcnZl
ck9wdGlvbjo6QXR0cmlidXRlcyB8fCAhbV9vcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb246OkF0dHJpYnV0ZUZpbHRlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aWYgKCFhdHRyaWJ1dGVOYW1lLT5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkKQEAgLTEyOSw0ICsx
MjksMjMgQEAgYm9vbCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkFic3RyYWN0U2xvdFYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K011dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6
ZGVsaXZlcnlPcHRpb25zKCkgY29uc3QKK3sKKyAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZl
ck9wdGlvblNldCBoYXNEZWxpdmVyeUZsYWdzID0geworICAgICAgICBNdXRhdGlvbk9ic2VydmVy
T3B0aW9uOjpBdHRyaWJ1dGVPbGRWYWx1ZSwKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlv
bjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlLAorICAgIH07CisgICAgcmV0dXJuIG1fb3B0aW9ucyAm
IGhhc0RlbGl2ZXJ5RmxhZ3M7Cit9CisKK011dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6bXV0YXRpb25UeXBlcygpIGNvbnN0Cit7CisgICAgY29u
c3RleHByIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgYWxsTXV0YXRpb25UeXBlcyA9IHsKKyAg
ICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hpbGRMaXN0LAorICAgICAgICBNdXRhdGlv
bk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVzLAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyT3B0
aW9uOjpDaGFyYWN0ZXJEYXRhLAorICAgIH07CisgICAgcmV0dXJuIG1fb3B0aW9ucyAmIGFsbE11
dGF0aW9uVHlwZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IDc1M2RiZjdh
ZDM4OTBmMDczZWMwZWE2YWU2YmQ3YjE1NmJkOTQ0YzQuLmJkM2IzZGU5Nzk0ZTY1MGE1Y2M2MjA3
NzkzMTZhZjUyMWY0MDFmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNDcsMjEgKzQ3LDIxIEBAIGNsYXNzIFF1YWxpZmll
ZE5hbWU7CiBjbGFzcyBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uKE11dGF0aW9uT2JzZXJ2ZXImLCBOb2RlJiwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMsIGNv
bnN0IEhhc2hTZXQ8QXRvbVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcik7CisgICAgTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVyJiwgTm9kZSYsIE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb25TZXQsIGNvbnN0IEhhc2hTZXQ8QXRvbVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRl
cik7CiAgICAgfk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24oKTsKIAotICAgIHZvaWQgcmVz
ZXRPYnNlcnZhdGlvbihNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9t
U3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKKyAgICB2b2lkIHJlc2V0T2JzZXJ2YXRpb24oTXV0
YXRpb25PYnNlcnZlck9wdGlvblNldCwgY29uc3QgSGFzaFNldDxBdG9tU3RyaW5nPiYgYXR0cmli
dXRlRmlsdGVyKTsKICAgICB2b2lkIG9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKE5vZGUm
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+IHRh
a2VUcmFuc2llbnRSZWdpc3RyYXRpb25zKCk7CiAgICAgYm9vbCBoYXNUcmFuc2llbnRSZWdpc3Ry
YXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyAmJiAh
bV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy0+aXNFbXB0eSgpOyB9CiAKLSAgICBib29sIHNo
b3VsZFJlY2VpdmVNdXRhdGlvbkZyb20oTm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9u
VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3Q7Ci0gICAgYm9v
bCBpc1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVy
OjpTdWJ0cmVlOyB9CisgICAgYm9vbCBzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmLCBN
dXRhdGlvbk9ic2VydmVyT3B0aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1l
KSBjb25zdDsKKyAgICBib29sIGlzU3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5j
b250YWlucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpTdWJ0cmVlKTsgfQogCiAgICAgTXV0YXRp
b25PYnNlcnZlciYgb2JzZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyLmdldCgpOyB9CiAgICAg
Tm9kZSYgbm9kZSgpIHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZl
cnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIChN
dXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSB8IE11dGF0aW9uT2JzZXJ2ZXI6OkNo
YXJhY3RlckRhdGFPbGRWYWx1ZSk7IH0KLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtdXRh
dGlvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6
QWxsTXV0YXRpb25UeXBlczsgfQorICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgZGVsaXZl
cnlPcHRpb25zKCkgY29uc3Q7CisgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBtdXRhdGlv
blR5cGVzKCkgY29uc3Q7CiAKICAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6QWJzdHJhY3RTbG90VmlzaXRvciYpIGNvbnN0OwogCkBAIC03MCw3ICs3MCw3IEBAIHByaXZh
dGU6CiAgICAgTm9kZSYgbV9ub2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVLZXB0QWxpdmU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+PiBtX3Ry
YW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzOwotICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG1f
b3B0aW9uczsKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0IG1fb3B0aW9uczsKICAgICBI
YXNoU2V0PEF0b21TdHJpbmc+IG1fYXR0cmlidXRlRmlsdGVyOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IGZkYWJjZDNlN2I4OTJlNTAxZDg3OTQzMmFjNDZjM2Q3MTNmOGViMDAuLmIwM2YwNjIw
Y2QwZmE5OTM0ZjYwNTc5YTc4ZDc2MDVmYWNmNzFmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTIy
NzUsNyArMjI3NSw3IEBAIEhhc2hTZXQ8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbio+KiBO
b2RlOjp0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoCiAgICAgcmV0dXJuICZkYXRh
LT50cmFuc2llbnRSZWdpc3RyeTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0cnk+IHN0
YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihIYXNo
TWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+
JiBvYnNlcnZlcnMsIFJlZ2lzdHJ5KiByZWdpc3RyeSwgTm9kZSYgdGFyZ2V0LCBNdXRhdGlvbk9i
c2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRl
TmFtZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFJlZ2lzdHJ5PiBzdGF0aWMgaW5saW5lIHZvaWQgY29s
bGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNl
cnZlcj4sIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQ+JiBvYnNlcnZlcnMsIFJlZ2lzdHJ5KiBy
ZWdpc3RyeSwgTm9kZSYgdGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uIHR5cGUsIGNvbnN0
IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgaWYgKCFyZWdpc3RyeSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjI4NSwxNSArMjI4NSwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZWdpc3RyeT4gc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11
dGF0aQogICAgICAgICAgICAgYXV0byBkZWxpdmVyeU9wdGlvbnMgPSByZWdpc3RyYXRpb24tPmRl
bGl2ZXJ5T3B0aW9ucygpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBvYnNlcnZlcnMuYWRk
KHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKICAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSB8PSBkZWxpdmVyeU9wdGlvbnM7CisgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5hZGQoZGVsaXZlcnlPcHRpb25zKTsKICAgICAgICAgfQogICAgIH0KIH0KIAot
SGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zPiBOb2RlOjpyZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnMoTXV0YXRpb25PYnNlcnZlcjo6
TXV0YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCitI
YXNoTWFwPFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldD4g
Tm9kZTo6cmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb24g
dHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKIHsKLSAgICBIYXNoTWFw
PFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IHJl
c3VsdDsKLSAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcyAm
JiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CisgICAgSGFzaE1hcDxSZWY8TXV0
YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQ+IHJlc3VsdDsKKyAgICBB
U1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlcyAmJiBhdHRy
aWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7CiAgICAgY29sbGVjdE1hdGNoaW5nT2JzZXJ2
ZXJzRm9yTXV0YXRpb24ocmVzdWx0LCBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSwgKnRoaXMs
IHR5cGUsIGF0dHJpYnV0ZU5hbWUpOwogICAgIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11
dGF0aW9uKHJlc3VsdCwgdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksICp0aGlz
LCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnROb2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKQEAgLTIzMDMsNyArMjMwMyw3
IEBAIEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5
T3B0aW9ucz4gTm9kZTo6cmVnaXN0ZXJlZE11CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlciYgb2JzZXJ2
ZXIsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMsIGNvbnN0IEhhc2hTZXQ8QXRvbVN0
cmluZz4mIGF0dHJpYnV0ZUZpbHRlcikKK3ZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2Vy
dmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0
IG9wdGlvbnMsIGNvbnN0IEhhc2hTZXQ8QXRvbVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcikKIHsK
ICAgICBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSBudWxscHRy
OwogICAgIGF1dG8mIHJlZ2lzdHJ5ID0gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVNdXRhdGlvbk9i
c2VydmVyRGF0YSgpLnJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYjk2NTY5MTg2MmQ1ZDAyNjZh
NGQyYWMwMmM3ZGZkYzAzN2Q2ZjEyNS4uYzkwM2M5YWZjMTE5N2VhYmMxNGI5NjY1M2M5YTI3YTMy
ODA5ZmFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00OTEsOCArNDkxLDggQEAgcHVibGljOgogICAgIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhQ29uY3VycmVudGx5KCkgZmluYWw7CiAgICAg
RXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBmaW5hbDsKIAotICAgIEhh
c2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cz4gcmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzKE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9u
VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSk7Ci0gICAgdm9pZCByZWdp
c3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlciYsIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOworICAg
IEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0
PiByZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnMoTXV0YXRpb25PYnNlcnZlck9wdGlvbiwgY29u
c3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSk7CisgICAgdm9pZCByZWdpc3Rlck11dGF0
aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlciYsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQs
IGNvbnN0IEhhc2hTZXQ8QXRvbVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcik7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uJik7
CiAgICAgdm9pZCByZWdpc3RlclRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zaWVudE11dGF0aW9u
T2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433258</attachid>
            <date>2021-07-10 06:43:53 -0700</date>
            <delta_ts>2022-02-10 16:37:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223675-20210710224351.patch</filename>
            <type>text/plain</type>
            <size>27663</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJjYTNkM2QxNzk5MWM0
ZjY3N2Q0MDAzNWZhYzY0ZDNjMWJlYzhjZS4uZDMyODEwOGZjMDcwMjliOTczMTVmNDZhN2QzNmMy
NjFlMzYxYTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTA1LTI2ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBNdXRhdGlvbk9ic2VydmVyJ3MgZmxhZ3MgaW50byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2NzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2MDQwNDQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggdW5pZmllcyBgTXV0YXRpb25PYnNlcnZlcmAncyAzIGVu
dW1zCisgICAgICAgIChgTXV0YXRpb25UeXBlYCwgYE9ic2VydmF0aW9uRmxhZ3NgIGFuZCBgRGVs
aXZlcnlGbGFnc2ApLCBpbnRvIHNpbmdsZSBgTXV0YXRpb25PYnNlcnZlck9wdGlvbmAKKyAgICAg
ICAgYW5kIHdpbGwgaGFuZGxlIHRoaXMgZmxhZyBieSBgT3B0aW9uU2V0PE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb24+YC4KKworICAgICAgICBUaGVpciBlbnVtIHdlcmUgZGlmZmVyZW50IG9uIGVhY2gg
b3RoZXJzIGJ1dCBhcmUgdXNlZCBhcyBiaXQgbWFzayBvbgorICAgICAgICBzaW5nbGUgYE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zYC4gU28gSSB0aGluayB3ZSBjYW4gdW5pZnkgaW50byBzaW5nbGUg
ZW51bSBjbGFzcworICAgICAgICBhbmQgcmVuYW1lIGl0IHRvIGBNdXRhdGlvbk9ic2VydmVyT3B0
aW9uU2V0YC4KKworICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNhblVzZVNldERhdGFPcHRpbWl6YXRpb24pOgorICAgICAgICAqIGRvbS9DaGlsZExp
c3RNdXRhdGlvblNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNj
b3BlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJl
bldpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNdXRhdGlvbk9ic2VydmVycyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvbk9ic2VydmVyOjp2YWxpZGF0ZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0
YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIu
aDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwOjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckNoYXJhY3RlckRh
dGFNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpoYXNPbGRWYWx1ZSBjb25zdCk6CisgICAgICAg
ICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpy
ZXNldE9ic2VydmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6ZGVsaXZlcnlPcHRpb25zIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om11dGF0
aW9uVHlwZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpp
c1N1YnRyZWUgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6
CisKIDIwMjEtMDctMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBkb2N1bWVudC5yZWFkeVN0YXRlIHNob3VsZCBiZSAiY29tcGxldGUiIGFmdGVyIGNhbGxpbmcg
RE9NUGFyc2VyLnBhcnNlRnJvbVN0cmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5j
cHAKaW5kZXggYmI4ZDUzY2NjNDQ1YzcwY2ZhODJmZWNmNjM1ZDVjYjIwNDZmNjRhNy4uMTU0MzNm
MTZlYjY2ZmQzZGVhODVlZDcxZTIzMjAyZjQ1MDlkMjNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmNwcApAQCAtNDQsNyArNDQsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQ2hhcmFjdGVyRGF0YSk7CiBzdGF0aWMgYm9vbCBjYW5Vc2VTZXREYXRhT3B0aW1pemF0aW9u
KGNvbnN0IENoYXJhY3RlckRhdGEmIG5vZGUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBub2Rl
LmRvY3VtZW50KCk7Ci0gICAgcmV0dXJuICFkb2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1l
bnQ6OkRPTUNIQVJBQ1RFUkRBVEFNT0RJRklFRF9MSVNURU5FUikgJiYgIWRvY3VtZW50Lmhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEpCisg
ICAgcmV0dXJuICFkb2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTUNIQVJBQ1RF
UkRBVEFNT0RJRklFRF9MSVNURU5FUikgJiYgIWRvY3VtZW50Lmhhc011dGF0aW9uT2JzZXJ2ZXJz
T2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJhY3RlckRhdGEpCiAgICAgICAgICYm
ICFkb2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTVNVQlRSRUVNT0RJRklFRF9M
SVNURU5FUik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RN
dXRhdGlvblNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5oCmluZGV4IDI5NjY3Njc3NjhmMGQ3MTQ3NDJlMzZiY2U1YjYxMDg2OTc3ZjkxZmYuLjZjZWEx
M2RhNzFlOWFiZDE4NWMwY2YwZmJjMWI1MzdhNGI2YWI4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaApAQCAtNzYsNyArNzYsNyBAQCBjbGFzcyBDaGls
ZExpc3RNdXRhdGlvblNjb3BlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaGlsZExpc3RNdXRh
dGlvblNjb3BlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICh0YXJn
ZXQuZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVy
OjpDaGlsZExpc3QpKQorICAgICAgICBpZiAodGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25P
YnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hpbGRMaXN0KSkKICAgICAg
ICAgICAgIG1fYWNjdW11bGF0b3IgPSBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRP
ckNyZWF0ZSh0YXJnZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CmluZGV4IDdmNDIxMGIxOGE4YzAxNmZmYWRlNjI4ODZkM2E0YjI4ZTQ2NDVkM2QuLmU5ZDBlZjIw
NmFiNThkMmU0NTM0MDdhZDkyNDMzZjNhMDRiODI4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3Ig
Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyKTsKICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOwotICAgICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5o
YXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSkg
eworICAgICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09m
VHlwZShNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGlsZExpc3QpKSkgewogICAgICAgICAgICAg
Q2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgbXV0YXRpb24ud2lsbFJl
bW92ZUNoaWxkKGNoaWxkLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggN2Y2NjRlYjBl
NjM5ZGRiYmE0YzNmM2U2MTExNTI3YjA3NmYxYjQ5ZC4uMDk3Yjc4MTkyMThiNjZiNTI1NzhlZTY5
Y2EyMDgzZjM5MTk0MDQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTg3NiwxMiArODc2LDEy
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0xpc3RlbmVyVHlwZUZvckV2ZW50VHlwZShQbGF0Zm9y
bUV2ZW50OjpUeXBlKSBjb25zdDsKICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAKLSAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlKSBjb25zdAorICAg
IGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlck9wdGlvbiB0
eXBlKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbXV0YXRpb25PYnNlcnZlclR5cGVz
ICYgdHlwZTsKKyAgICAgICAgcmV0dXJuIG1fbXV0YXRpb25PYnNlcnZlclR5cGVzLmNvbnRhaW5z
KHR5cGUpOwogICAgIH0KLSAgICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tdXRhdGlvbk9ic2VydmVyVHlwZXM7IH0KLSAgICB2b2lkIGFkZE11dGF0aW9uT2Jz
ZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBlcykgeyBtX211dGF0aW9uT2Jz
ZXJ2ZXJUeXBlcyB8PSB0eXBlczsgfQorICAgIGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnMoKSBj
b25zdCB7IHJldHVybiAhbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMuaXNFbXB0eSgpOyB9CisgICAg
dm9pZCBhZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMoTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCB0
eXBlcykgeyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5hZGQodHlwZXMpOyB9CiAKICAgICBDU1NT
dHlsZURlY2xhcmF0aW9uKiBnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
KSB7IHJldHVybiBudWxscHRyOyB9CiAKQEAgLTIwNDUsNyArMjA0NSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBvbGljeT4gbV9yZWZlcnJlclBvbGljeTsKICAgICBS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IENvbXBsZXRlIH07CiAKLSAgICBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9ucyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyB7IDAgfTsKKyAgICBNdXRhdGlvbk9i
c2VydmVyT3B0aW9uU2V0IG1fbXV0YXRpb25PYnNlcnZlclR5cGVzOwogCiAgICAgYm9vbCBtX2Fj
dGl2ZVBhcnNlcldhc0Fib3J0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93cml0ZVJlY3Vyc2lv
bklzVG9vRGVlcCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5j
cHAKaW5kZXggZTkwM2RjYTE3ZjYyMGY2ZGRiMzY1MmRhZmVjYjRkMmU3NWM1MTM5YS4uOWVjYzFi
MTQ5OGU4ZDM3MGZhZWExYTk2NDQ0NjJlMjE5OGZkN2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmNwcApAQCAtNjksMzkgKzY5LDQ5IEBAIE11dGF0aW9uT2JzZXJ2ZXI6
On5NdXRhdGlvbk9ic2VydmVyKCkKICAgICBBU1NFUlQobV9yZWdpc3RyYXRpb25zLmNvbXB1dGVz
RW1wdHkoKSk7CiB9CiAKLWJvb2wgTXV0YXRpb25PYnNlcnZlcjo6dmFsaWRhdGVPcHRpb25zKE11
dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlvbnMpCitib29sIE11dGF0aW9uT2JzZXJ2ZXI6OnZh
bGlkYXRlT3B0aW9ucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0IG9wdGlvbnMpCiB7Ci0gICAg
cmV0dXJuIChvcHRpb25zICYgKEF0dHJpYnV0ZXMgfCBDaGFyYWN0ZXJEYXRhIHwgQ2hpbGRMaXN0
KSkKLSAgICAgICAgJiYgKChvcHRpb25zICYgQXR0cmlidXRlcykgfHwgIShvcHRpb25zICYgQXR0
cmlidXRlT2xkVmFsdWUpKQotICAgICAgICAmJiAoKG9wdGlvbnMgJiBBdHRyaWJ1dGVzKSB8fCAh
KG9wdGlvbnMgJiBBdHRyaWJ1dGVGaWx0ZXIpKQotICAgICAgICAmJiAoKG9wdGlvbnMgJiBDaGFy
YWN0ZXJEYXRhKSB8fCAhKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKTsKKyAgICBj
b25zdGV4cHIgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCByZXF1aXJlZE9wdGlvbnMgPSB7Cisg
ICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMsCisgICAgICAgIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJhY3RlckRhdGEsCisgICAgICAgIE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb246OkNoaWxkTGlzdCwKKyAgICB9OworCisgICAgcmV0dXJuIG9wdGlvbnMuY29udGFp
bnNBbnkocmVxdWlyZWRPcHRpb25zKQorICAgICAgICAmJiAob3B0aW9ucy5jb250YWlucyhNdXRh
dGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVzKSB8fCAhb3B0aW9ucy5jb250YWlucyhNdXRh
dGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVPbGRWYWx1ZSkpCisgICAgICAgICYmIChvcHRp
b25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMpIHx8ICFvcHRp
b25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZUZpbHRlcikpCisg
ICAgICAgICYmIChvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJh
Y3RlckRhdGEpIHx8ICFvcHRpb25zLmNvbnRhaW5zKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNo
YXJhY3RlckRhdGFPbGRWYWx1ZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBNdXRhdGlvbk9i
c2VydmVyOjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IEluaXQmIGluaXQpCiB7Ci0gICAgTXV0
YXRpb25PYnNlcnZlck9wdGlvbnMgb3B0aW9ucyA9IDA7CisgICAgTXV0YXRpb25PYnNlcnZlck9w
dGlvblNldCBvcHRpb25zOwogCiAgICAgaWYgKGluaXQuY2hpbGRMaXN0KQotICAgICAgICBvcHRp
b25zIHw9IENoaWxkTGlzdDsKKyAgICAgICAgb3B0aW9ucy5hZGQoTXV0YXRpb25PYnNlcnZlck9w
dGlvbjo6Q2hpbGRMaXN0KTsKICAgICBpZiAoaW5pdC5zdWJ0cmVlKQotICAgICAgICBvcHRpb25z
IHw9IFN1YnRyZWU7CisgICAgICAgIG9wdGlvbnMuYWRkKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246
OlN1YnRyZWUpOwogICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlX29yKGZhbHNl
KSkKLSAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRWYWx1ZTsKKyAgICAgICAgb3B0aW9u
cy5hZGQoTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlT2xkVmFsdWUpOwogICAgIGlm
IChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCi0gICAgICAgIG9w
dGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9sZFZhbHVlOworICAgICAgICBvcHRpb25zLmFkZChNdXRh
dGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpOwogCiAgICAgSGFzaFNl
dDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVGaWx0ZXI7CiAgICAgaWYgKGluaXQuYXR0cmlidXRlRmls
dGVyKSB7CiAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiBpbml0LmF0dHJpYnV0ZUZpbHRlci52
YWx1ZSgpKQogICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyLmFkZCh2YWx1ZSk7Ci0gICAgICAg
IG9wdGlvbnMgfD0gQXR0cmlidXRlRmlsdGVyOworICAgICAgICBvcHRpb25zLmFkZChNdXRhdGlv
bk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVGaWx0ZXIpOwogICAgIH0KIAotICAgIGlmIChpbml0
LmF0dHJpYnV0ZXMgPyBpbml0LmF0dHJpYnV0ZXMudmFsdWUoKSA6IChvcHRpb25zICYgKEF0dHJp
YnV0ZUZpbHRlciB8IEF0dHJpYnV0ZU9sZFZhbHVlKSkpCi0gICAgICAgIG9wdGlvbnMgfD0gQXR0
cmlidXRlczsKKyAgICBjb25zdGV4cHIgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvcHRpb25z
UmVxdWlyaW5nQXR0cmlidXRlT2JzZXJ2ZXIgPSB7CisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb246OkF0dHJpYnV0ZUZpbHRlciwKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6
QXR0cmlidXRlT2xkVmFsdWUsCisgICAgfTsKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVzID8gaW5p
dC5hdHRyaWJ1dGVzLnZhbHVlKCkgOiBvcHRpb25zLmNvbnRhaW5zQW55KG9wdGlvbnNSZXF1aXJp
bmdBdHRyaWJ1dGVPYnNlcnZlcikpCisgICAgICAgIG9wdGlvbnMuYWRkKE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb246OkF0dHJpYnV0ZXMpOwogCi0gICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YSA/IGlu
aXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogKG9wdGlvbnMgJiBDaGFyYWN0ZXJEYXRhT2xkVmFs
dWUpKQotICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGE7CisgICAgaWYgKGluaXQuY2hh
cmFjdGVyRGF0YSA/IGluaXQuY2hhcmFjdGVyRGF0YS52YWx1ZSgpIDogb3B0aW9ucy5jb250YWlu
cyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpKQorICAgICAg
ICBvcHRpb25zLmFkZChNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhKTsKIAog
ICAgIGlmICghdmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRl
eCAyYWYyNjNiZDRhNzI1NGEyMGEzYjkzNTMxN2I3OTY5MWFmNGNjN2RhLi5mZDc4NGQ3NTdlNmVi
ZTk4MDZjNGM4YTY3MjE3MjYzMjk4NDc0MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CiAKQEAgLTUzLDMwICs1NCwyNiBAQCBjbGFzcyBNdXRhdGlvblJl
Y29yZDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBXaW5kb3dFdmVudExvb3A7CiAKLXVzaW5nIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zID0gdW5zaWduZWQgY2hhcjsKLXVzaW5nIE11dGF0aW9uUmVjb3Jk
RGVsaXZlcnlPcHRpb25zID0gdW5zaWduZWQgY2hhcjsKK2VudW0gY2xhc3MgTXV0YXRpb25PYnNl
cnZlck9wdGlvbiA6IHVpbnQ4X3QgeworICAgIC8vIE11dGF0aW9uVHlwZQorICAgIENoaWxkTGlz
dCAgICAgPSAxIDw8IDAsCisgICAgQXR0cmlidXRlcyAgICA9IDEgPDwgMSwKKyAgICBDaGFyYWN0
ZXJEYXRhID0gMSA8PCAyLAogCi1jbGFzcyBNdXRhdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8TXV0YXRpb25PYnNlcnZlcj4gewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoTXV0YXRpb25PYnNlcnZlcik7Ci1wdWJsaWM6Ci0gICAgZW51bSBNdXRhdGlvblR5cGUgewot
ICAgICAgICBDaGlsZExpc3QgPSAxIDw8IDAsCi0gICAgICAgIEF0dHJpYnV0ZXMgPSAxIDw8IDEs
Ci0gICAgICAgIENoYXJhY3RlckRhdGEgPSAxIDw8IDIsCisgICAgLy8gT2JzZXJ2YXRpb25GbGFn
cworICAgIFN1YnRyZWUgICAgICAgICA9IDEgPDwgMywKKyAgICBBdHRyaWJ1dGVGaWx0ZXIgPSAx
IDw8IDQsCiAKLSAgICAgICAgQWxsTXV0YXRpb25UeXBlcyA9IENoaWxkTGlzdCB8IEF0dHJpYnV0
ZXMgfCBDaGFyYWN0ZXJEYXRhCi0gICAgfTsKLQotICAgIGVudW0gT2JzZXJ2YXRpb25GbGFncyAg
ewotICAgICAgICBTdWJ0cmVlID0gMSA8PCAzLAotICAgICAgICBBdHRyaWJ1dGVGaWx0ZXIgPSAx
IDw8IDQKLSAgICB9OworICAgIC8vIERlbGl2ZXJ5RmxhZ3MKKyAgICBBdHRyaWJ1dGVPbGRWYWx1
ZSAgICAgPSAxIDw8IDUsCisgICAgQ2hhcmFjdGVyRGF0YU9sZFZhbHVlID0gMSA8PCA2LAorfTsK
IAotICAgIGVudW0gRGVsaXZlcnlGbGFncyB7Ci0gICAgICAgIEF0dHJpYnV0ZU9sZFZhbHVlID0g
MSA8PCA1LAotICAgICAgICBDaGFyYWN0ZXJEYXRhT2xkVmFsdWUgPSAxIDw8IDYsCi0gICAgfTsK
K3VzaW5nIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgPSBPcHRpb25TZXQ8TXV0YXRpb25PYnNl
cnZlck9wdGlvbj47CiAKK2NsYXNzIE11dGF0aW9uT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChN
dXRhdGlvbk9ic2VydmVyKTsKK3B1YmxpYzoKICAgICBzdGF0aWMgUmVmPE11dGF0aW9uT2JzZXJ2
ZXI+IGNyZWF0ZShSZWY8TXV0YXRpb25DYWxsYmFjaz4mJik7CiAKICAgICB+TXV0YXRpb25PYnNl
cnZlcigpOwpAQCAtMTE4LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTXV0YXRp
b25PYnNlcnZlcihSZWY8TXV0YXRpb25DYWxsYmFjaz4mJik7CiAgICAgdm9pZCBkZWxpdmVyKCk7
CiAKLSAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZU9wdGlvbnMoTXV0YXRpb25PYnNlcnZlck9wdGlv
bnMpOworICAgIHN0YXRpYyBib29sIHZhbGlkYXRlT3B0aW9ucyhNdXRhdGlvbk9ic2VydmVyT3B0
aW9uU2V0KTsKIAogICAgIFJlZjxNdXRhdGlvbkNhbGxiYWNrPiBtX2NhbGxiYWNrOwogICAgIFZl
Y3RvcjxSZWY8TXV0YXRpb25SZWNvcmQ+PiBtX3JlY29yZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCAwMjc2ZTQy
YmU1YmQ4M2ZmNDJhNzkzNTZiZGU5Y2U3MzYwOTljYmRlLi42ZGZkYTQ0NWI5YThkYWU1Y2VlZmI2
MDYyMjUxMzk3MTM3MzdiOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKQEAgLTI5LDI0ICsyOSwyNCBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwLmgiCiAKKyNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFJlZjxNdXRhdGlv
bk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiYgb2JzZXJ2ZXJzLCBN
dXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcpCitpbmxpbmUgTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKEhh
c2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0PiYm
IG9ic2VydmVycywgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvbGRWYWx1ZUZsYWcpCiAgICAg
OiBtX29ic2VydmVycyhXVEZNb3ZlKG9ic2VydmVycykpCiAgICAgLCBtX29sZFZhbHVlRmxhZyhv
bGRWYWx1ZUZsYWcpCiB7CiAgICAgQVNTRVJUKCFtX29ic2VydmVycy5pc0VtcHR5KCkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVJZk5lZWRlZChOb2RlJiB0YXJnZXQsIE11dGF0
aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0
aW9ucyBvbGRWYWx1ZUZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCitz
dGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVJZk5lZWRlZChOb2RlJiB0YXJnZXQsIE11dGF0aW9u
T2JzZXJ2ZXJPcHRpb24gdHlwZSwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvbGRWYWx1ZUZs
YWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgQVNTRVJUKCh0
eXBlID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwg
IWF0dHJpYnV0ZU5hbWUpOworICAgIEFTU0VSVCgodHlwZSA9PSBNdXRhdGlvbk9ic2VydmVyT3B0
aW9uOjpBdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZU5hbWUpIHx8ICFhdHRyaWJ1dGVOYW1lKTsKICAg
ICBhdXRvIG9ic2VydmVycyA9IHRhcmdldC5yZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnModHlw
ZSwgYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAuaAppbmRleCAzYzBhZTUyMzdkNGIyZTJlZmY3MGRkZTY2MmU1ZjRl
MWU1NjkyNmFkLi4zOGM0MjVlODMwOWY3MDcwMTE5MTM0NGZjOTY5NWQ4OTcxMDk5NjA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAu
aApAQCAtNDIsNDMgKzQyLDQzIEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxSZWY8TXV0
YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiYmLCBNdXRhdGlv
blJlY29yZERlbGl2ZXJ5T3B0aW9ucyk7CisgICAgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAoSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4sIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25T
ZXQ+JiYsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hpbGRMaXN0
TXV0YXRpb24oTm9kZSYgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0YXJnZXQuZG9jdW1l
bnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExp
c3QpKQorICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJz
T2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoaWxkTGlzdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBv
bGRWYWx1ZUZsYWcgPSAwOwotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBN
dXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QsIG9sZFZhbHVlRmxhZyk7CisgICAgICAgIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25TZXQgb2xkVmFsdWVGbGFnOworICAgICAgICByZXR1cm4gY3JlYXRl
SWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpDaGlsZExpc3QsIG9sZFZh
bHVlRmxhZyk7CiAgICAgfQogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQ2hhcmFjdGVyRGF0YU11dGF0aW9uKE5vZGUm
IHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRp
b25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YSkpCisgICAg
ICAgIGlmICghdGFyZ2V0LmRvY3VtZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0
YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hhcmFjdGVyRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlv
bk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhLCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRh
T2xkVmFsdWUpOworICAgICAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBNdXRhdGlv
bk9ic2VydmVyT3B0aW9uOjpDaGFyYWN0ZXJEYXRhLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpD
aGFyYWN0ZXJEYXRhT2xkVmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRh
dGlvbihOb2RlJiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAg
ICAgewotICAgICAgICBpZiAoIXRhcmdldC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJz
T2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMpKQorICAgICAgICBpZiAoIXRhcmdl
dC5kb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb246OkF0dHJpYnV0ZXMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6QXR0cmli
dXRlcywgTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWUsICZhdHRyaWJ1dGVOYW1l
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgTXV0YXRpb25PYnNlcnZl
ck9wdGlvbjo6QXR0cmlidXRlcywgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlT2xk
VmFsdWUsICZhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKICAgICBib29sIGlzT2xkVmFsdWVSZXF1
ZXN0ZWQoKSBjb25zdDsKICAgICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZChSZWY8TXV0YXRp
b25SZWNvcmQ+JiYpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUlmTmVlZGVkKE5vZGUmIHRhcmdldCwg
TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0
aW9ucyBvbGRWYWx1ZUZsYWcsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUgPSBu
dWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwPiBjcmVhdGVJZk5lZWRlZChOb2RlJiB0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb24sIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgb2xkVmFsdWVGbGFnLCBjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lID0gbnVsbHB0cik7CiAKLSAgICBib29sIGhhc09sZFZh
bHVlKE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9wdGlvbnMpIGNvbnN0IHsgcmV0dXJu
IG9wdGlvbnMgJiBtX29sZFZhbHVlRmxhZzsgfQorICAgIGJvb2wgaGFzT2xkVmFsdWUoTXV0YXRp
b25PYnNlcnZlck9wdGlvblNldCBvcHRpb25zKSBjb25zdCB7IHJldHVybiBvcHRpb25zLmNvbnRh
aW5zQW55KG1fb2xkVmFsdWVGbGFnKTsgfQogCi0gICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNl
cnZlcj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBtX29ic2VydmVyczsKLSAgICBN
dXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBtX29sZFZhbHVlRmxhZzsKKyAgICBIYXNoTWFw
PFJlZjxNdXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldD4gbV9vYnNl
cnZlcnM7CisgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBtX29sZFZhbHVlRmxhZzsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBjNmYxZmIxNWRmZjhkNWViZmYy
ZjVjNWI3YjdlZGUzYWUzZDBlYjc5Li44Y2ZlOWMwMzMxZWE4ZWY3ZGIxN2RhNDY0Y2FjOTA3OTlj
Y2QzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwCkBAIC0yOSwxNiArMjksMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0KICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgiCiAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorI2luY2x1ZGUg
Ik11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6TXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgTm9kZSYgbm9k
ZSwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgb3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9tU3Ry
aW5nPiYgYXR0cmlidXRlRmlsdGVyKQorTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6TXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgTm9k
ZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvcHRpb25zLCBjb25zdCBIYXNoU2V0
PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCiAgICAgOiBtX29ic2VydmVyKG9ic2VydmVy
KQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKQEAgLTUzLDcg
KzUzLDcgQEAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6fk11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24oKQogICAgIG1fb2JzZXJ2ZXItPm9ic2VydmF0aW9uRW5kZWQoKnRoaXMpOwog
fQogCi12b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OnJlc2V0T2JzZXJ2YXRpb24o
TXV0YXRpb25PYnNlcnZlck9wdGlvbnMgb3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9tU3RyaW5n
PiYgYXR0cmlidXRlRmlsdGVyKQordm9pZCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpy
ZXNldE9ic2VydmF0aW9uKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgb3B0aW9ucywgY29uc3Qg
SGFzaFNldDxBdG9tU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKQogewogICAgIHRha2VUcmFuc2ll
bnRSZWdpc3RyYXRpb25zKCk7CiAgICAgbV9vcHRpb25zID0gb3B0aW9uczsKQEAgLTk1LDE2ICs5
NSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+IE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OnRhawogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAotYm9vbCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0
YXRpb25Gcm9tKE5vZGUmIG5vZGUsIE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBl
LCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAorYm9vbCBNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUmIG5v
ZGUsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb24gdHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0
cmlidXRlTmFtZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoKHR5cGUgPT0gTXV0YXRpb25PYnNlcnZl
cjo6QXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVOYW1lKSB8fCAhYXR0cmlidXRlTmFtZSk7Ci0gICAg
aWYgKCEobV9vcHRpb25zICYgdHlwZSkpCisgICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0ZU5h
bWUpOworICAgIGlmICghbV9vcHRpb25zLmNvbnRhaW5zKHR5cGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoJm1fbm9kZSAhPSAmbm9kZSAmJiAhaXNTdWJ0cmVlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICh0eXBlICE9IE11dGF0aW9uT2JzZXJ2ZXI6OkF0
dHJpYnV0ZXMgfHwgIShtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVGaWx0
ZXIpKQorICAgIGlmICh0eXBlICE9IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMg
fHwgIW1fb3B0aW9ucy5jb250YWlucyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uOjpBdHRyaWJ1dGVG
aWx0ZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghYXR0cmlidXRlTmFtZS0+
bmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpCkBAIC0xMjksNCArMTI5LDIzIEBAIGJvb2wgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpB
YnN0cmFjdFNsb3RWCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitNdXRhdGlvbk9ic2VydmVyT3B0
aW9uU2V0IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmRlbGl2ZXJ5T3B0aW9ucygpIGNv
bnN0Cit7CisgICAgY29uc3RleHByIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgaGFzRGVsaXZl
cnlGbGFncyA9IHsKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0cmlidXRlT2xk
VmFsdWUsCisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb246OkNoYXJhY3RlckRhdGFPbGRW
YWx1ZSwKKyAgICB9OworICAgIHJldHVybiBtX29wdGlvbnMgJiBoYXNEZWxpdmVyeUZsYWdzOwor
fQorCitNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246Om11dGF0aW9uVHlwZXMoKSBjb25zdAoreworICAgIGNvbnN0ZXhwciBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uU2V0IGFsbE11dGF0aW9uVHlwZXMgPSB7CisgICAgICAgIE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb246OkNoaWxkTGlzdCwKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6QXR0
cmlidXRlcywKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbjo6Q2hhcmFjdGVyRGF0YSwK
KyAgICB9OworICAgIHJldHVybiBtX29wdGlvbnMgJiBhbGxNdXRhdGlvblR5cGVzOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCAzMTEwODQxOGYxZWQ1NjRmYWI5NWI5NmZjOGEw
Y2ZkYTUzNTNmM2ViLi5kZjYwMDk0NjU3NTdhOWY4YTA0ZjVkOWI1YzA4ZTE1NzlkMjE3NTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmgKQEAgLTQ4LDIxICs0OCwyMSBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVyJiwg
Tm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+
JiBhdHRyaWJ1dGVGaWx0ZXIpOworICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24oTXV0
YXRpb25PYnNlcnZlciYsIE5vZGUmLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0LCBjb25zdCBI
YXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOwogICAgIH5NdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uKCk7CiAKLSAgICB2b2lkIHJlc2V0T2JzZXJ2YXRpb24oTXV0YXRpb25P
YnNlcnZlck9wdGlvbnMsIGNvbnN0IEhhc2hTZXQ8QXRvbVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRl
cik7CisgICAgdm9pZCByZXNldE9ic2VydmF0aW9uKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQs
IGNvbnN0IEhhc2hTZXQ8QXRvbVN0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcik7CiAgICAgdm9pZCBv
YnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaChOb2RlJik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+PiB0YWtlVHJhbnNpZW50UmVnaXN0cmF0aW9u
cygpOwogICAgIGJvb2wgaGFzVHJhbnNpZW50UmVnaXN0cmF0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMgJiYgIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9u
Tm9kZXMtPmlzRW1wdHkoKTsgfQogCi0gICAgYm9vbCBzaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9t
KE5vZGUmLCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwotICAgIGJvb2wgaXNTdWJ0cmVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcHRpb25zICYgTXV0YXRpb25PYnNlcnZlcjo6U3VidHJlZTsgfQorICAgIGJvb2wg
c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShOb2RlJiwgTXV0YXRpb25PYnNlcnZlck9wdGlvbiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3Q7CisgICAgYm9vbCBpc1N1
YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuY29udGFpbnMoTXV0YXRpb25PYnNlcnZl
ck9wdGlvbjo6U3VidHJlZSk7IH0KIAogICAgIE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyKCkg
eyByZXR1cm4gbV9vYnNlcnZlci5nZXQoKTsgfQogICAgIE5vZGUmIG5vZGUoKSB7IHJldHVybiBt
X25vZGU7IH0KLSAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiAoTXV0YXRpb25PYnNlcnZlcjo6QXR0cmli
dXRlT2xkVmFsdWUgfCBNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpOyB9
Ci0gICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgbXV0YXRpb25UeXBlcygpIGNvbnN0IHsgcmV0
dXJuIG1fb3B0aW9ucyAmIE11dGF0aW9uT2JzZXJ2ZXI6OkFsbE11dGF0aW9uVHlwZXM7IH0KKyAg
ICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0IGRlbGl2ZXJ5T3B0aW9ucygpIGNvbnN0OworICAg
IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQgbXV0YXRpb25UeXBlcygpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3Im
KSBjb25zdDsKIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIE5vZGUmIG1fbm9kZTsK
ICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlS2VwdEFsaXZlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxI
YXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4gbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rl
czsKLSAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX29wdGlvbnM7CisgICAgTXV0YXRpb25P
YnNlcnZlck9wdGlvblNldCBtX29wdGlvbnM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBtX2F0
dHJpYnV0ZUZpbHRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlMjQ1NzdkZjNkNzYxN2Jl
NGIyNTYyNzA4YWI3NmQ4ZmM1ODI0NWVkLi4wMWIzNTNiZDUzMGUwMTRhMjU4OWEzYzUyYzA5N2Q5
YTRkMTQ5ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBIYXNoU2V0
PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPiogTm9kZTo6dHJhbnNpZW50TXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJ5KAogICAgIHJldHVybiAmZGF0YS0+dHJhbnNpZW50UmVnaXN0cnk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJlZ2lzdHJ5PiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVj
dE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZl
cj4sIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiYgb2JzZXJ2ZXJzLCBSZWdpc3RyeSog
cmVnaXN0cnksIE5vZGUmIHRhcmdldCwgTXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5
cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWdpc3RyeT4gc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zv
ck11dGF0aW9uKEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvbk9ic2VydmVy
T3B0aW9uU2V0PiYgb2JzZXJ2ZXJzLCBSZWdpc3RyeSogcmVnaXN0cnksIE5vZGUmIHRhcmdldCwg
TXV0YXRpb25PYnNlcnZlck9wdGlvbiB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1
dGVOYW1lKQogewogICAgIGlmICghcmVnaXN0cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyODgs
MTUgKzIyODgsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0cnk+IHN0YXRpYyBpbmxpbmUg
dm9pZCBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGkKICAgICAgICAgICAgIGF1dG8g
ZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKICAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVy
KCksIGRlbGl2ZXJ5T3B0aW9ucyk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgfD0gZGVsaXZlcnlPcHRp
b25zOworICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKGRlbGl2ZXJ5
T3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLUhhc2hNYXA8UmVmPE11dGF0aW9uT2Jz
ZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4gTm9kZTo6cmVnaXN0ZXJlZE11
dGF0aW9uT2JzZXJ2ZXJzKE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQorSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNl
cnZlcj4sIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25TZXQ+IE5vZGU6OnJlZ2lzdGVyZWRNdXRhdGlv
bk9ic2VydmVycyhNdXRhdGlvbk9ic2VydmVyT3B0aW9uIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgSGFzaE1hcDxSZWY8TXV0YXRpb25PYnNlcnZlcj4s
IE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiByZXN1bHQ7Ci0gICAgQVNTRVJUKCh0eXBl
ID09IE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0
dHJpYnV0ZU5hbWUpOworICAgIEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlv
bk9ic2VydmVyT3B0aW9uU2V0PiByZXN1bHQ7CisgICAgQVNTRVJUKCh0eXBlID09IE11dGF0aW9u
T2JzZXJ2ZXJPcHRpb246OkF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlTmFtZSkgfHwgIWF0dHJpYnV0
ZU5hbWUpOwogICAgIGNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKHJlc3VsdCwg
bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksICp0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsK
ICAgICBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihyZXN1bHQsIHRyYW5zaWVu
dE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLCAqdGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSk7
CiAgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+
cGFyZW50Tm9kZSgpKSB7CkBAIC0yMzA2LDcgKzIzMDYsNyBAQCBIYXNoTWFwPFJlZjxNdXRhdGlv
bk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IE5vZGU6OnJlZ2lzdGVy
ZWRNdQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlv
bk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyT3B0
aW9ucyBvcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIp
Cit2b2lkIE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyJiBv
YnNlcnZlciwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldCBvcHRpb25zLCBjb25zdCBIYXNoU2V0
PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCiB7CiAgICAgTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gbnVsbHB0cjsKICAgICBhdXRvJiByZWdpc3RyeSA9
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKS5yZWdpc3RyeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCmluZGV4IGI5NjU2OTE4NjJkNWQwMjY2YTRkMmFjMDJjN2RmZGMwMzdkNmYxMjUu
LmM5MDNjOWFmYzExOTdlYWJjMTRiOTY2NTNjOWEyN2EzMjgwOWZhZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApA
QCAtNDkxLDggKzQ5MSw4IEBAIHB1YmxpYzoKICAgICBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YUNvbmN1cnJlbnRseSgpIGZpbmFsOwogICAgIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkgZmluYWw7CiAKLSAgICBIYXNoTWFwPFJlZjxNdXRhdGlvbk9ic2Vy
dmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IHJlZ2lzdGVyZWRNdXRhdGlvbk9i
c2VydmVycyhNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJpYnV0ZU5hbWUpOwotICAgIHZvaWQgcmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11
dGF0aW9uT2JzZXJ2ZXImLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxB
dG9tU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKKyAgICBIYXNoTWFwPFJlZjxNdXRhdGlvbk9i
c2VydmVyPiwgTXV0YXRpb25PYnNlcnZlck9wdGlvblNldD4gcmVnaXN0ZXJlZE11dGF0aW9uT2Jz
ZXJ2ZXJzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb24sIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJp
YnV0ZU5hbWUpOworICAgIHZvaWQgcmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2Jz
ZXJ2ZXImLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9uU2V0LCBjb25zdCBIYXNoU2V0PEF0b21TdHJp
bmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOwogICAgIHZvaWQgdW5yZWdpc3Rlck11dGF0aW9uT2JzZXJ2
ZXIoTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiYpOwogICAgIHZvaWQgcmVnaXN0ZXJUcmFu
c2llbnRNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAg
ICB2b2lkIHVucmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24mKTsK
</data>
<flag name="commit-queue"
          id="455467"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>