<?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>238287</bug_id>
          
          <creation_ts>2022-03-23 13:54:17 -0700</creation_ts>
          <short_desc>String&apos;s find() / reverseFind() / replace() should take in a StringView instead of a String</short_desc>
          <delta_ts>2022-03-24 10:14:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238235</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238264</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238333</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1854384</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 13:54:17 -0700</bug_when>
    <thetext>String&apos;s find() / reverseFind() / replace() should take in a StringView instead of a String, to avoid unnecessary String construction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854385</commentid>
    <comment_count>1</comment_count>
      <attachid>455549</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 13:58:48 -0700</bug_when>
    <thetext>Created attachment 455549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854394</commentid>
    <comment_count>2</comment_count>
      <attachid>455552</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 14:17:30 -0700</bug_when>
    <thetext>Created attachment 455552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854456</commentid>
    <comment_count>3</comment_count>
      <attachid>455573</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 15:58:55 -0700</bug_when>
    <thetext>Created attachment 455573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854545</commentid>
    <comment_count>4</comment_count>
      <attachid>455598</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 19:27:12 -0700</bug_when>
    <thetext>Created attachment 455598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854560</commentid>
    <comment_count>5</comment_count>
      <attachid>455601</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 21:09:39 -0700</bug_when>
    <thetext>Created attachment 455601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854571</commentid>
    <comment_count>6</comment_count>
      <attachid>455604</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 21:47:01 -0700</bug_when>
    <thetext>Created attachment 455604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854576</commentid>
    <comment_count>7</comment_count>
      <attachid>455607</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 22:15:39 -0700</bug_when>
    <thetext>Created attachment 455607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854584</commentid>
    <comment_count>8</comment_count>
      <attachid>455610</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 23:03:40 -0700</bug_when>
    <thetext>Created attachment 455610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854683</commentid>
    <comment_count>9</comment_count>
      <attachid>455610</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-24 08:13:37 -0700</bug_when>
    <thetext>Comment on attachment 455610
Patch

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

&gt; Source/WTF/wtf/text/AtomString.h:124
&gt; +    size_t findIgnoringASCIICase(StringView, unsigned startOffset) const;

Strange that we call it &quot;start&quot; in find and call it &quot;startOffset&quot; in findIgnoringASCIICase. Also strange that one uses a defaulted argument and the other uses overloading.

&gt; Source/WTF/wtf/text/StringImpl.cpp:964
&gt;      if (UNLIKELY(!matchString))

I typically like to write isNull() rather than depending on operator!, but I suppose both work?

&gt; Source/WTF/wtf/text/StringImpl.h:436
&gt; +    WTF_EXPORT_PRIVATE size_t find(StringView, unsigned index);

I find the mix of &quot;index&quot;, &quot;start&quot;, and &quot;startOffset&quot; slightly annoying.

&gt; Source/WebCore/page/UserContentURLPattern.cpp:66
&gt;      static NeverDestroyed&lt;const String&gt; schemeSeparator(MAKE_STATIC_STRING_IMPL(&quot;://&quot;));

This is now never used as a String, so I suggest we just make it an ASCIILiteral or a const char* or an auto. No need for NeverDestroyed any more.

&gt; Source/WebCore/platform/network/curl/CurlMultipartHandle.cpp:55
&gt; +        auto splitPosistion = header.find(&apos;:&apos;);

Noticed the &quot;posistion&quot; typo here.

&gt; Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp:58
&gt; +    size_t cLocalePosition = languages.find(&quot;c&quot;_s);

Even this can be changed so it doesn’t involve creating/destroying strings. No reason Vector::find can’t be changed to work with anything that can do == with the Vector elements, doesn’t need to actually be the same type as the element.

Not that you should do this right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854686</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 08:21:10 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 455610 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455610&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/AtomString.h:124
&gt; &gt; +    size_t findIgnoringASCIICase(StringView, unsigned startOffset) const;
&gt; 
&gt; Strange that we call it &quot;start&quot; in find and call it &quot;startOffset&quot; in
&gt; findIgnoringASCIICase. Also strange that one uses a defaulted argument and
&gt; the other uses overloading.
&gt; 
&gt; &gt; Source/WTF/wtf/text/StringImpl.cpp:964
&gt; &gt;      if (UNLIKELY(!matchString))
&gt; 
&gt; I typically like to write isNull() rather than depending on operator!, but I
&gt; suppose both work?

Yes, it is identical:
```
inline StringView::operator bool() const
{
    return !isNull();
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854688</commentid>
    <comment_count>11</comment_count>
      <attachid>455641</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 08:28:33 -0700</bug_when>
    <thetext>Created attachment 455641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854691</commentid>
    <comment_count>12</comment_count>
      <attachid>455642</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 08:36:03 -0700</bug_when>
    <thetext>Created attachment 455642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854718</commentid>
    <comment_count>13</comment_count>
      <attachid>455642</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 09:55:54 -0700</bug_when>
    <thetext>Comment on attachment 455642
Patch

Clearing flags on attachment: 455642

Committed r291800 (248828@trunk): &lt;https://commits.webkit.org/248828@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854719</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 09:55:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854720</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-24 09:56:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90774749&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455549</attachid>
            <date>2022-03-23 13:58:48 -0700</date>
            <delta_ts>2022-03-23 14:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323135848.patch</filename>
            <type>text/plain</type>
            <size>36105</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY4NzM2MjM2MjJhMGMwN2UxYWYyZTU4
OTQ2OTk1MmQwMGJkZDY1MmQuLmRmMjk2MDBiMDZlZGQ2NmFmNzQ2Yzc3OGJjNjFmM2NjZjRiYTYx
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgUENNIHRvIFNLQWROZXR3b3JrIGJyaWRnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBmMzhiZjJhNTA4YjlmNjA0NDk0YTgwNjYwMWMxNzhhNzFhNTY1ZWQuLjc3MmFk
ZmM2MzAwMTFkM2YxMzU4M2NhN2I1YTc1NWY5MDk1YjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMi0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxk
IHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6c2V0VmFsdWVDb21tb24pOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OmxhYmVsIGNvbnN0KToKKwogMjAy
Mi0wMy0yMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFmdGVyIGxvc2luZyBjb250ZXh0IGR1ZSB0byB0b28gbWFueSBjb250ZXh0cywgZ2V0RXJyb3Io
KSBkb2VzIG5vdCByZXR1cm4gQ09OVEVYVF9MT1NUX1dFQkdMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDllZGY2MWM4
ZGE5NmYxMjIzNTZlOTcxNWUyNzNjYjliZWEzZWUzOTMuLjY2NWMzNzNjNjFmNmM1MTZiMDEzYzcy
Mzc0YjZlYmY3MTI5NDFhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMjMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5k
KCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmll
dyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNo
V2l0aEdvb2dsZSk6CisKIDIwMjItMDMtMjMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZnRlciBsb3NpbmcgY29udGV4dCBkdWUgdG8gdG9vIG1hbnkg
Y29udGV4dHMsIGdldEVycm9yKCkgZG9lcyBub3QgcmV0dXJuIENPTlRFWFRfTE9TVF9XRUJHTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1
ZjQxNDBjMmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0y
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZp
bmQoKSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdW
aWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAy
MDIyLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9t
ZSBsaW5rIG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4ZDBk
YzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5z
KFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hhcmFj
dGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0cmlu
Zyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9v
bCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAgc2l6
ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmluZChj
b25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5m
aW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9Cisg
ICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKKyAg
ICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIHNp
emVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1
bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQo
bWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5nKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRmOWJh
YjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0ZTRi
NmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2IEBA
IGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25zdCBj
aGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2VhcmNo
TGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJzLCAw
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBmaW5k
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0cmlu
Z0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1bnNp
Z25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQg
bWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExlbmd0
aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdMZW5n
dGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFu
Z2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3RyaW5n
TGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7
Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0ZpbmQu
Y2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwot
ICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291cmNl
LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFNl
YXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZU19J
TkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSog
c2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3Rl
cnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZQog
ICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1h
dGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFz
cz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29uc3Qg
U3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQgbmVl
ZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9PSAx
KSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5lZWRs
ZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJhY3Rl
cnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQotCi0g
ICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0KLSAg
ICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0OwotICAg
IGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxlLmlz
OEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJz
OCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBu
ZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3Rl
cnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgbmVl
ZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Ci0K
LSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
LX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQgaW4g
bm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVzZWQg
ZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUgdGhl
IGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2UyNjFh
Mjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFjNWNj
YWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIzICs5
MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJbXBs
OjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51bGwg
c3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5nKSkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0
Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJp
bmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJp
bmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlm
IChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KClb
MF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0
ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJh
Y3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBs
ZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYgKG1h
dGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0
ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAg
ICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcu
Y2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3RoIGlz
IGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGlz
OEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJz
OCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVy
KGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5ndGgo
KSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5j
aGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRjaFN0
cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKIAot
ICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElubmVy
KGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1wbCog
bWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3Ry
aW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sgZm9y
IG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFko
IW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJuIGZp
bmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3RyaW5n
SW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5n
KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlz
LCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9uKFN0
cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAgICAg
ICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3RyaW5n
SW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqbWF0
Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90IFN0
cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCkBA
IC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNl
RmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0dXJu
IGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCog
bWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VG
aW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8vIENo
ZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYgKCFt
YXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVuZ3Ro
KCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4
LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJl
dmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAv
LyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgogICAg
IGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwgKCpt
YXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQo
Y2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0
aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKICAg
ICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KQEAg
LTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmlu
Z0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4
Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5n
dGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRj
aFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsK
KyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIHJl
dmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwg
aW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJzZUZp
bmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgs
IG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hTdHJp
bmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
MTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNo
TGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBy
ZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJzZUZp
bmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRl
eCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5uZXIo
Y2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3VyTGVu
Z3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWxJ
bm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25z
dCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5ICsx
NDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRl
cm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9
CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRl
cm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogewog
ICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsK
IAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAgICB1
bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBhdHRl
cm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQgcmVw
U3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21lbnRT
dGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAvLyBD
b3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQocGF0
dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRjaENv
dW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9Ci0g
ICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBkbyBh
bnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50ICog
cGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBNYXhM
ZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsxNDQy
LDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNoQ291
bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3IGRh
dGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50TGVu
Z3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0ID0g
MDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1lbnRJ
czhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNlbWVu
dElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQgY2Fz
ZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAgICAg
Ly8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3ICsx
NDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1wbCog
cGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21lbnRM
ZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAgY29w
eUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwg
c3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExl
bmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxh
Y2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3Rl
cnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVu
Z3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAgICAg
ICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAgICAg
ICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAg
ICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxhY2Vt
ZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAgIGNv
cHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBT
dHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
cmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOworICAg
ICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hh
cmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zmc2V0
ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVu
ZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGM3NmNkNTIz
Njc2MTFjOTQyZDM0MmJmMDkxYjE2MmEwYTY3NzQ0ZTAuLjRjZWI2MGRmYzA4MDM1MzQwZDg1YjA0
ZDk1MDE2NjlhZGE1OTBiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzMsMTUg
KzQzMywxMyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgQUxXQVlTX0lOTElORSBz
aXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1
cm4gZmluZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3RyaW5nKSwgaW5kZXgpOyB9
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1Zp
ZXcsIHVuc2lnbmVkIGluZGV4KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VG
aW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBN
YXhMZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3Ry
aW5nVmlldywgdW5zaWduZWQgaW5kZXggPSBNYXhMZW5ndGgpOwogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7
CkBAIC00NjYsNyArNDY0LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVu
c2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3Ro
KTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVmPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1l
bnRMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8
U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIGxlbmd0aCwgU3RyaW5nSW1wbCopOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFy
RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDQ0OGFmNzY4
OWY3NGE4ODUwMjgxOWUyYzY2OWU4MmUzYmEwZGIxODAuLmE3M2RmMDUwOWVlNTFmZGVlMDI3MDVk
YmJjM2ZjYjAxM2U1OGM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMDk5LDYg
KzEwOTksMTQyIEBAIGlubGluZSBib29sIGhhc1VucGFpcmVkU3Vycm9nYXRlKFN0cmluZ1ZpZXcg
c3RyaW5nKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHNpemVfdCBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgaGF5c3RhY2ssIFN0cmluZ1ZpZXcgbmVlZGxlLCB1bnNpZ25lZCBzdGFydCkK
K3sKKyAgICB1bnNpZ25lZCBuZWVkbGVMZW5ndGggPSBuZWVkbGUubGVuZ3RoKCk7CisKKyAgICBp
ZiAobmVlZGxlTGVuZ3RoID09IDEpIHsKKyAgICAgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzOCgpLCBoYXlz
dGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6OmZp
bmQoaGF5c3RhY2suY2hhcmFjdGVyczE2KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0s
IHN0YXJ0KTsKKyAgICB9CisKKyAgICBpZiAoc3RhcnQgPiBoYXlzdGFjay5sZW5ndGgoKSkKKyAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKCFuZWVkbGVMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGFydDsKKworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGhheXN0YWNrLmxl
bmd0aCgpIC0gc3RhcnQ7CisgICAgaWYgKG5lZWRsZUxlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKSB7Cisg
ICAgICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZmluZElubmVy
KGhheXN0YWNrLmNoYXJhY3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0
YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSW5u
ZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCks
IHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG5l
ZWRsZS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0
aCwgbmVlZGxlTGVuZ3RoKTsKKworICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFj
dGVyczE2KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOworfQorCitpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3IHNvdXJjZSwgU3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KQoreworICAgIHVuc2lnbmVkIHNvdXJjZVN0cmluZ0xlbmd0aCA9IHNvdXJj
ZS5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IHN0cmluZ1RvRmluZC5sZW5n
dGgoKTsKKyAgICBpZiAoIW1hdGNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3Rh
cnRPZmZzZXQsIHNvdXJjZVN0cmluZ0xlbmd0aCk7CisKKyAgICAvLyBDaGVjayBzdGFydE9mZnNl
dCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KKyAgICBpZiAoc3RhcnRPZmZzZXQgPiBzb3Vy
Y2VTdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICB1bnNpZ25lZCBz
ZWFyY2hMZW5ndGggPSBzb3VyY2VTdHJpbmdMZW5ndGggLSBzdGFydE9mZnNldDsKKyAgICBpZiAo
bWF0Y2hMZW5ndGggPiBzZWFyY2hMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKwor
ICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN0cmluZ1RvRmluZC5pczhC
aXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291cmNlLmNo
YXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2Vh
cmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc291cmNlLmNoYXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYoKSwg
c3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgIH0KKworICAgIGlm
IChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc291cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczgoKSwg
c3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworCisgICAgcmV0dXJuIGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5j
aGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwor
fQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsK
K30KK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25l
ZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZykgOiBub3RGb3VuZDsK
K30KKworaW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQp
IDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpyZXZlcnNlRmluZChTdHJp
bmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKwor
aW5saW5lIGJvb2wgU3RyaW5nOjpjb250YWlucyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sK
KyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBT
dHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpICE9IG5vdEZvdW5k
OworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAoreworICAgIHJldHVy
biBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwg
U3RyaW5nVmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2lt
cGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAo
bV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwg
cmVwbGFjZW1lbnQuaW1wbCgpKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBzaXpl
X3QgQXRvbVN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7Cit9CisKK2lu
bGluZSBzaXplX3QgQXRvbVN0cmluZzo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
c3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAor
eworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFy
dE9mZnNldCk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcp
OworfQorCitpbmxpbmUgYm9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5YzE2NGEx
YTU4YzExZDRjZmQ1MzIxZTMyZjUyN2I0YzllZDYuLjVjZDBhN2EzOTRjZWE5N2EwOTgwNTU0M2Fi
Y2ZlZmEzZjI0ZDBlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTY0LDE3ICsxNjQs
MTcgQEAgcHVibGljOgogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywg
YWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5k
KFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCi0gICAg
c2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZp
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdCB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0K
LSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBj
b25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCks
IHN0YXJ0T2Zmc2V0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldykg
Y29uc3Q7CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0
OworICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7Cisg
ICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3Q7CiAKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24g
bWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpIDogbm90Rm91bmQ7IH0KICAgICBz
aXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6IG5vdEZvdW5k
OyB9CiAKICAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3RhbmNlIG9mIGEgc2luZ2xlIGNoYXJhY3Rl
ciBvciBzdHJpbmcuCiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5z
aWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5n
dGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLmlt
cGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5n
VmlldywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0
aG91dE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwpAQCAtMTgzLDkgKzE4Myw5IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBmaW5k
KGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFy
KiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAg
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQo
c3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZykgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7
IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90
Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wg
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0OwogCiAgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGgoc3RyaW5nLmltcGwoKSkgOiBz
dHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHko
KTsgfQpAQCAtMjEwLDcgKzIxMCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyYgcmVwbGFjZShV
Q2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNo
YXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKLSAgICBTdHJpbmcmIHJlcGxh
Y2UoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAg
IFN0cmluZyYgcmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVu
dCk7CiAgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOwogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJh
Y3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0
IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIApAQCAtNTA2LDIwICs1MDYs
NiBAQCBpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhpczsKIH0KIAotaW5saW5lIFN0cmlu
ZyYgU3RyaW5nOjpyZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50KQotewotICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+
cmVwbGFjZSh0YXJnZXQuaW1wbCgpLCByZXBsYWNlbWVudC5pbXBsKCkpOwotICAgIHJldHVybiAq
dGhpczsKLX0KLQotaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYg
KG1faW1wbCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHN0YXJ0LCBsZW5ndGgs
IHJlcGxhY2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKIHsKICAgICBpZiAobV9pbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCAzOWMxNDdkYWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIz
Li4yZmFmM2U5NWQzMWM5ODlmY2UxMmUwNTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWRO
YW1lKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0g
ZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5yZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1l
LnJlcGxhY2UoIiUyRSIsICIuIik7CiAKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJv
bUZpbGVuYW1lKG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggZDU3N2VhNjZlYWFhMDMxNzIwMjk1NTMwYjFhYzBkNTkzODM2ZjBmYi4u
MmYxMGNlZDg0MTMxZWQ3ZTlkZDE4N2EzNDAxY2ZkY2RlYzRiYTQzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9p
ZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbihjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBUZXh0RmllbGRFdmVudEIKICAgICAvLyBDb2RlIGVsc2V3aGVyZSBub3JtYWxpemVzIGxp
bmUgZW5kaW5ncyBhZGRlZCBieSB0aGUgdXNlciB2aWEgdGhlIGtleWJvYXJkIG9yIHBhc3Rpbmcu
CiAgICAgLy8gV2Ugbm9ybWFsaXplIGxpbmUgZW5kaW5ncyBjb21pbmcgZnJvbSBKYXZhU2NyaXB0
IGhlcmUuCiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRWYWx1ZSA9IG5ld1ZhbHVlLmlzTnVsbCgpID8g
ZW1wdHlTdHJpbmcoKSA6IG5ld1ZhbHVlOwotICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNlKCJc
clxuIl9zLCAiXG4iX3MpOworICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNlKCJcclxuIiwgIlxu
Iik7CiAgICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKICAgICAvLyBS
ZXR1cm4gZWFybHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIG1vdmUgdGhlIGNhcmV0IG9yIHRy
aWdnZXIgb3RoZXIgc2lkZSBlZmZlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggODY0M2E4NDc3NzY0NTkzMzFmNDNlYTI5OGZlOGVmNGYw
ODQxZjBhMi4uYTc1YjYzYTNiNWRmZWI5ZjY3Mjg5MjhlZWZjYjM2M2FmZjg2ZjRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNjaGVt
ZVNlcGFyYXRvcihNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiOi8vIikpOwogCi0gICAgc2l6ZV90
IHNjaGVtZUVuZFBvcyA9IHBhdHRlcm4uZmluZChzY2hlbWVTZXBhcmF0b3IpOworICAgIHNpemVf
dCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2NoZW1lU2VwYXJhdG9yLmdldCgpKTsKICAg
ICBpZiAoc2NoZW1lRW5kUG9zID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2UuaAppbmRleCA2Mjk0NWQ5NmUxNmY3ODIzNjA1OGE0OTg0NWFmYjg0MDM5YjA3NTIyLi5lNTBk
Y2NmNWQ1ZGQ0YmRjZjFiOGU4NDg4MTBmNDFhYTZhNjA5NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGFpclBvZHMoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkFpclBvZHMiKSk7CiAKLSAgICAg
ICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2
aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5jb250YWlucyhhaXJQb2RzKSkKKyAgICAgICAg
aWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2aWNl
VHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5jb250YWlucyhhaXJQb2RzLmdldCgpKSkKICAgICAg
ICAgICAgIHJldHVybiBhaXJQb2RzOwogCiAgICAgICAgIHJldHVybiBtX2xhYmVsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYmFkYWYxNTg3YTIwMTk3N2ViOWU3NGYxNDc5
Nzk0N2ViMjQ3MmYxZC4uZjRhNWQ0NGUxOTcxNTllNGEzMmE0Zjg4NmZmNDc2ODM5MmEyNTI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQg
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJh
bWUqIGZyYW1lKQogICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBzZWFy
Y2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0g
ICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIHNlYXJjaFN0cmlu
Zy5yZXBsYWNlKCIlMjAiLCAiKyIpOwogICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgImh0dHBz
Oi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgm
b2U9VVRGLTgiIH07CiAKICAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0
b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcAppbmRleCBkZmMwYWU1MTk2Njg5MjQzYWIwZjhmYzkwODY1Y2M5NmM1NjBlZWQ0
Li4xYmMzYzNkNTk4ZDQ3ZGFlMTgzNDk3NWVmNDI2M2NlNDhlNDU3YzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogICAg
IGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAg
IHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBzZWFyY2hTdHJpbmcgPSBlbmNv
ZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0gICAgc2VhcmNoU3RyaW5n
LnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAi
LCAiKyIpOwogICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgImh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAK
ICAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQ
cm9jZXNzaW5nVXNlckdlc3R1cmUgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455552</attachid>
            <date>2022-03-23 14:17:30 -0700</date>
            <delta_ts>2022-03-23 15:58:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323141729.patch</filename>
            <type>text/plain</type>
            <size>38136</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY4NzM2MjM2MjJhMGMwN2UxYWYyZTU4
OTQ2OTk1MmQwMGJkZDY1MmQuLmRmMjk2MDBiMDZlZGQ2NmFmNzQ2Yzc3OGJjNjFmM2NjZjRiYTYx
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgUENNIHRvIFNLQWROZXR3b3JrIGJyaWRnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBmMzhiZjJhNTA4YjlmNjA0NDk0YTgwNjYwMWMxNzhhNzFhNTY1ZWQuLjc3MmFk
ZmM2MzAwMTFkM2YxMzU4M2NhN2I1YTc1NWY5MDk1YjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMi0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxk
IHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6c2V0VmFsdWVDb21tb24pOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OmxhYmVsIGNvbnN0KToKKwogMjAy
Mi0wMy0yMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFmdGVyIGxvc2luZyBjb250ZXh0IGR1ZSB0byB0b28gbWFueSBjb250ZXh0cywgZ2V0RXJyb3Io
KSBkb2VzIG5vdCByZXR1cm4gQ09OVEVYVF9MT1NUX1dFQkdMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDllZGY2MWM4
ZGE5NmYxMjIzNTZlOTcxNWUyNzNjYjliZWEzZWUzOTMuLjY2NWMzNzNjNjFmNmM1MTZiMDEzYzcy
Mzc0YjZlYmY3MTI5NDFhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMjMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5k
KCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmll
dyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNo
V2l0aEdvb2dsZSk6CisKIDIwMjItMDMtMjMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZnRlciBsb3NpbmcgY29udGV4dCBkdWUgdG8gdG9vIG1hbnkg
Y29udGV4dHMsIGdldEVycm9yKCkgZG9lcyBub3QgcmV0dXJuIENPTlRFWFRfTE9TVF9XRUJHTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1
ZjQxNDBjMmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0y
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZp
bmQoKSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdW
aWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAy
MDIyLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9t
ZSBsaW5rIG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4ZDBk
YzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5z
KFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hhcmFj
dGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0cmlu
Zyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9v
bCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAgc2l6
ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmluZChj
b25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5m
aW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9Cisg
ICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKKyAg
ICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIHNp
emVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1
bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQo
bWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5nKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRmOWJh
YjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0ZTRi
NmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2IEBA
IGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25zdCBj
aGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2VhcmNo
TGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJzLCAw
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBmaW5k
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0cmlu
Z0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1bnNp
Z25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQg
bWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExlbmd0
aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdMZW5n
dGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFu
Z2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3RyaW5n
TGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7
Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0ZpbmQu
Y2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwot
ICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291cmNl
LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFNl
YXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZU19J
TkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSog
c2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3Rl
cnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZQog
ICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1h
dGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFz
cz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29uc3Qg
U3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQgbmVl
ZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9PSAx
KSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5lZWRs
ZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJhY3Rl
cnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQotCi0g
ICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0KLSAg
ICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0OwotICAg
IGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxlLmlz
OEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJz
OCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBu
ZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3Rl
cnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgbmVl
ZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Ci0K
LSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
LX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQgaW4g
bm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVzZWQg
ZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUgdGhl
IGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2UyNjFh
Mjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFjNWNj
YWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIzICs5
MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJbXBs
OjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51bGwg
c3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5nKSkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0
Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJp
bmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJp
bmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlm
IChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KClb
MF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0
ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJh
Y3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBs
ZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYgKG1h
dGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0
ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAg
ICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcu
Y2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3RoIGlz
IGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGlz
OEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJz
OCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVy
KGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5ndGgo
KSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5j
aGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRjaFN0
cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKIAot
ICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElubmVy
KGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1wbCog
bWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3Ry
aW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sgZm9y
IG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFko
IW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJuIGZp
bmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3RyaW5n
SW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5n
KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlz
LCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9uKFN0
cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAgICAg
ICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3RyaW5n
SW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqbWF0
Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90IFN0
cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCkBA
IC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNl
RmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0dXJu
IGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCog
bWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VG
aW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8vIENo
ZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYgKCFt
YXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVuZ3Ro
KCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4
LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJl
dmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAv
LyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgogICAg
IGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwgKCpt
YXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQo
Y2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0
aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKICAg
ICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KQEAg
LTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmlu
Z0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4
Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5n
dGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRj
aFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsK
KyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIHJl
dmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwg
aW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJzZUZp
bmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgs
IG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hTdHJp
bmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
MTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNo
TGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBy
ZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJzZUZp
bmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRl
eCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5uZXIo
Y2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3VyTGVu
Z3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWxJ
bm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25z
dCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5ICsx
NDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRl
cm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9
CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRl
cm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogewog
ICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsK
IAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAgICB1
bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBhdHRl
cm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQgcmVw
U3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21lbnRT
dGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAvLyBD
b3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQocGF0
dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRjaENv
dW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9Ci0g
ICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBkbyBh
bnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50ICog
cGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBNYXhM
ZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsxNDQy
LDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNoQ291
bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3IGRh
dGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50TGVu
Z3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0ID0g
MDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1lbnRJ
czhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNlbWVu
dElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQgY2Fz
ZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAgICAg
Ly8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3ICsx
NDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1wbCog
cGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21lbnRM
ZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAgY29w
eUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwg
c3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExl
bmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxh
Y2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3Rl
cnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVu
Z3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAgICAg
ICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAgICAg
ICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAg
ICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxhY2Vt
ZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAgIGNv
cHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBT
dHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
cmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOworICAg
ICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hh
cmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zmc2V0
ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVu
ZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGM3NmNkNTIz
Njc2MTFjOTQyZDM0MmJmMDkxYjE2MmEwYTY3NzQ0ZTAuLjRjZWI2MGRmYzA4MDM1MzQwZDg1YjA0
ZDk1MDE2NjlhZGE1OTBiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzMsMTUg
KzQzMywxMyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgQUxXQVlTX0lOTElORSBz
aXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1
cm4gZmluZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3RyaW5nKSwgaW5kZXgpOyB9
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1Zp
ZXcsIHVuc2lnbmVkIGluZGV4KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VG
aW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBN
YXhMZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3Ry
aW5nVmlldywgdW5zaWduZWQgaW5kZXggPSBNYXhMZW5ndGgpOwogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7
CkBAIC00NjYsNyArNDY0LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVu
c2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3Ro
KTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVmPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1l
bnRMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8
U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIGxlbmd0aCwgU3RyaW5nSW1wbCopOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFy
RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDQ0OGFmNzY4
OWY3NGE4ODUwMjgxOWUyYzY2OWU4MmUzYmEwZGIxODAuLmE3M2RmMDUwOWVlNTFmZGVlMDI3MDVk
YmJjM2ZjYjAxM2U1OGM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMDk5LDYg
KzEwOTksMTQyIEBAIGlubGluZSBib29sIGhhc1VucGFpcmVkU3Vycm9nYXRlKFN0cmluZ1ZpZXcg
c3RyaW5nKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHNpemVfdCBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgaGF5c3RhY2ssIFN0cmluZ1ZpZXcgbmVlZGxlLCB1bnNpZ25lZCBzdGFydCkK
K3sKKyAgICB1bnNpZ25lZCBuZWVkbGVMZW5ndGggPSBuZWVkbGUubGVuZ3RoKCk7CisKKyAgICBp
ZiAobmVlZGxlTGVuZ3RoID09IDEpIHsKKyAgICAgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzOCgpLCBoYXlz
dGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6OmZp
bmQoaGF5c3RhY2suY2hhcmFjdGVyczE2KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0s
IHN0YXJ0KTsKKyAgICB9CisKKyAgICBpZiAoc3RhcnQgPiBoYXlzdGFjay5sZW5ndGgoKSkKKyAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKCFuZWVkbGVMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGFydDsKKworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGhheXN0YWNrLmxl
bmd0aCgpIC0gc3RhcnQ7CisgICAgaWYgKG5lZWRsZUxlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKSB7Cisg
ICAgICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZmluZElubmVy
KGhheXN0YWNrLmNoYXJhY3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0
YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSW5u
ZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCks
IHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG5l
ZWRsZS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0
aCwgbmVlZGxlTGVuZ3RoKTsKKworICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFj
dGVyczE2KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOworfQorCitpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3IHNvdXJjZSwgU3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KQoreworICAgIHVuc2lnbmVkIHNvdXJjZVN0cmluZ0xlbmd0aCA9IHNvdXJj
ZS5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IHN0cmluZ1RvRmluZC5sZW5n
dGgoKTsKKyAgICBpZiAoIW1hdGNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3Rh
cnRPZmZzZXQsIHNvdXJjZVN0cmluZ0xlbmd0aCk7CisKKyAgICAvLyBDaGVjayBzdGFydE9mZnNl
dCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KKyAgICBpZiAoc3RhcnRPZmZzZXQgPiBzb3Vy
Y2VTdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICB1bnNpZ25lZCBz
ZWFyY2hMZW5ndGggPSBzb3VyY2VTdHJpbmdMZW5ndGggLSBzdGFydE9mZnNldDsKKyAgICBpZiAo
bWF0Y2hMZW5ndGggPiBzZWFyY2hMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKwor
ICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN0cmluZ1RvRmluZC5pczhC
aXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291cmNlLmNo
YXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2Vh
cmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc291cmNlLmNoYXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYoKSwg
c3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgIH0KKworICAgIGlm
IChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc291cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczgoKSwg
c3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworCisgICAgcmV0dXJuIGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5j
aGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwor
fQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsK
K30KK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25l
ZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZykgOiBub3RGb3VuZDsK
K30KKworaW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQp
IDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpyZXZlcnNlRmluZChTdHJp
bmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKwor
aW5saW5lIGJvb2wgU3RyaW5nOjpjb250YWlucyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sK
KyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBT
dHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpICE9IG5vdEZvdW5k
OworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAoreworICAgIHJldHVy
biBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwg
U3RyaW5nVmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2lt
cGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAo
bV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwg
cmVwbGFjZW1lbnQuaW1wbCgpKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBzaXpl
X3QgQXRvbVN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7Cit9CisKK2lu
bGluZSBzaXplX3QgQXRvbVN0cmluZzo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
c3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAor
eworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFy
dE9mZnNldCk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcp
OworfQorCitpbmxpbmUgYm9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5YzE2NGEx
YTU4YzExZDRjZmQ1MzIxZTMyZjUyN2I0YzllZDYuLjVjZDBhN2EzOTRjZWE5N2EwOTgwNTU0M2Fi
Y2ZlZmEzZjI0ZDBlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTY0LDE3ICsxNjQs
MTcgQEAgcHVibGljOgogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywg
YWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5k
KFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCi0gICAg
c2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZp
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdCB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0K
LSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBj
b25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCks
IHN0YXJ0T2Zmc2V0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldykg
Y29uc3Q7CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0
OworICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7Cisg
ICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3Q7CiAKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24g
bWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpIDogbm90Rm91bmQ7IH0KICAgICBz
aXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6IG5vdEZvdW5k
OyB9CiAKICAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3RhbmNlIG9mIGEgc2luZ2xlIGNoYXJhY3Rl
ciBvciBzdHJpbmcuCiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5z
aWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5n
dGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLmlt
cGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5n
VmlldywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0
aG91dE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwpAQCAtMTgzLDkgKzE4Myw5IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBmaW5k
KGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFy
KiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAg
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQo
c3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZykgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7
IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90
Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wg
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0OwogCiAgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGgoc3RyaW5nLmltcGwoKSkgOiBz
dHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHko
KTsgfQpAQCAtMjEwLDcgKzIxMCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyYgcmVwbGFjZShV
Q2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNo
YXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKLSAgICBTdHJpbmcmIHJlcGxh
Y2UoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAg
IFN0cmluZyYgcmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVu
dCk7CiAgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOwogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJh
Y3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0
IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIApAQCAtNTA2LDIwICs1MDYs
NiBAQCBpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhpczsKIH0KIAotaW5saW5lIFN0cmlu
ZyYgU3RyaW5nOjpyZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50KQotewotICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+
cmVwbGFjZSh0YXJnZXQuaW1wbCgpLCByZXBsYWNlbWVudC5pbXBsKCkpOwotICAgIHJldHVybiAq
dGhpczsKLX0KLQotaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYg
KG1faW1wbCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHN0YXJ0LCBsZW5ndGgs
IHJlcGxhY2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKIHsKICAgICBpZiAobV9pbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCAzOWMxNDdkYWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIz
Li4yZmFmM2U5NWQzMWM5ODlmY2UxMmUwNTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWRO
YW1lKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0g
ZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5yZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1l
LnJlcGxhY2UoIiUyRSIsICIuIik7CiAKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJv
bUZpbGVuYW1lKG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggZDU3N2VhNjZlYWFhMDMxNzIwMjk1NTMwYjFhYzBkNTkzODM2ZjBmYi4u
MmYxMGNlZDg0MTMxZWQ3ZTlkZDE4N2EzNDAxY2ZkY2RlYzRiYTQzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9p
ZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbihjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBUZXh0RmllbGRFdmVudEIKICAgICAvLyBDb2RlIGVsc2V3aGVyZSBub3JtYWxpemVzIGxp
bmUgZW5kaW5ncyBhZGRlZCBieSB0aGUgdXNlciB2aWEgdGhlIGtleWJvYXJkIG9yIHBhc3Rpbmcu
CiAgICAgLy8gV2Ugbm9ybWFsaXplIGxpbmUgZW5kaW5ncyBjb21pbmcgZnJvbSBKYXZhU2NyaXB0
IGhlcmUuCiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRWYWx1ZSA9IG5ld1ZhbHVlLmlzTnVsbCgpID8g
ZW1wdHlTdHJpbmcoKSA6IG5ld1ZhbHVlOwotICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNlKCJc
clxuIl9zLCAiXG4iX3MpOworICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNlKCJcclxuIiwgIlxu
Iik7CiAgICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKICAgICAvLyBS
ZXR1cm4gZWFybHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIG1vdmUgdGhlIGNhcmV0IG9yIHRy
aWdnZXIgb3RoZXIgc2lkZSBlZmZlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggODY0M2E4NDc3NzY0NTkzMzFmNDNlYTI5OGZlOGVmNGYw
ODQxZjBhMi4uYTc1YjYzYTNiNWRmZWI5ZjY3Mjg5MjhlZWZjYjM2M2FmZjg2ZjRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNjaGVt
ZVNlcGFyYXRvcihNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiOi8vIikpOwogCi0gICAgc2l6ZV90
IHNjaGVtZUVuZFBvcyA9IHBhdHRlcm4uZmluZChzY2hlbWVTZXBhcmF0b3IpOworICAgIHNpemVf
dCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2NoZW1lU2VwYXJhdG9yLmdldCgpKTsKICAg
ICBpZiAoc2NoZW1lRW5kUG9zID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2UuaAppbmRleCA2Mjk0NWQ5NmUxNmY3ODIzNjA1OGE0OTg0NWFmYjg0MDM5YjA3NTIyLi5lNTBk
Y2NmNWQ1ZGQ0YmRjZjFiOGU4NDg4MTBmNDFhYTZhNjA5NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGFpclBvZHMoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkFpclBvZHMiKSk7CiAKLSAgICAg
ICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2
aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5jb250YWlucyhhaXJQb2RzKSkKKyAgICAgICAg
aWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2aWNl
VHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5jb250YWlucyhhaXJQb2RzLmdldCgpKSkKICAgICAg
ICAgICAgIHJldHVybiBhaXJQb2RzOwogCiAgICAgICAgIHJldHVybiBtX2xhYmVsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYmFkYWYxNTg3YTIwMTk3N2ViOWU3NGYxNDc5
Nzk0N2ViMjQ3MmYxZC4uZjRhNWQ0NGUxOTcxNTllNGEzMmE0Zjg4NmZmNDc2ODM5MmEyNTI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQg
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJh
bWUqIGZyYW1lKQogICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBzZWFy
Y2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0g
ICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIHNlYXJjaFN0cmlu
Zy5yZXBsYWNlKCIlMjAiLCAiKyIpOwogICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgImh0dHBz
Oi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgm
b2U9VVRGLTgiIH07CiAKICAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0
b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcAppbmRleCBkZmMwYWU1MTk2Njg5MjQzYWIwZjhmYzkwODY1Y2M5NmM1NjBlZWQ0
Li4xYmMzYzNkNTk4ZDQ3ZGFlMTgzNDk3NWVmNDI2M2NlNDhlNDU3YzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogICAg
IGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAg
IHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBzZWFyY2hTdHJpbmcgPSBlbmNv
ZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0gICAgc2VhcmNoU3RyaW5n
LnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAi
LCAiKyIpOwogICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgImh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAK
ICAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQ
cm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nSW1wbC5jcHAKaW5kZXggYWFkZjRmOWNlM2U1MWJmNTZkMTA4YzNiZTRkMDdiZjljM2Rl
MzZiZC4uYTQzZGRiODdmMzliMzRlNmIzNzBiNGE4MzYxZTc0YWEwNzJkYzE4NiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKQEAgLTMzNCwxMyArMzM0
LDEzIEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aEludmFs
aWRPZmZzZXQpCiBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZU9uTnVs
bCkKIHsKICAgICBhdXRvIHJlZmVyZW5jZSA9IHN0cmluZ0Zyb21VVEY4KCJBQkPDiUVGRyIpOwot
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVu
Y2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVND
SUlDYXNlKG51bGxwdHIsIDApKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihX
VEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwg
MykpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCBy
ZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCA3KSk7Ci0gICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDgpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
bnVsbHB0ciwgNDIpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5v
dEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcgeyB9KSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4o
V1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1Zp
ZXcgeyB9LCAwKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RG
b3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCAz
KSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJl
ZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA3KSk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA4KSk7CisgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA0MikpOworICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3IHsgfSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KSk7CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5nQVNDSUlDYXNlT25FbXB0
eSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455573</attachid>
            <date>2022-03-23 15:58:55 -0700</date>
            <delta_ts>2022-03-23 19:27:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323155854.patch</filename>
            <type>text/plain</type>
            <size>39281</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY4NzM2MjM2MjJhMGMwN2UxYWYyZTU4
OTQ2OTk1MmQwMGJkZDY1MmQuLmRmMjk2MDBiMDZlZGQ2NmFmNzQ2Yzc3OGJjNjFmM2NjZjRiYTYx
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgUENNIHRvIFNLQWROZXR3b3JrIGJyaWRnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBmMzhiZjJhNTA4YjlmNjA0NDk0YTgwNjYwMWMxNzhhNzFhNTY1ZWQuLjc3MmFk
ZmM2MzAwMTFkM2YxMzU4M2NhN2I1YTc1NWY5MDk1YjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMi0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxk
IHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6c2V0VmFsdWVDb21tb24pOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OmxhYmVsIGNvbnN0KToKKwogMjAy
Mi0wMy0yMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFmdGVyIGxvc2luZyBjb250ZXh0IGR1ZSB0byB0b28gbWFueSBjb250ZXh0cywgZ2V0RXJyb3Io
KSBkb2VzIG5vdCByZXR1cm4gQ09OVEVYVF9MT1NUX1dFQkdMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDllZGY2MWM4
ZGE5NmYxMjIzNTZlOTcxNWUyNzNjYjliZWEzZWUzOTMuLjY2NWMzNzNjNjFmNmM1MTZiMDEzYzcy
Mzc0YjZlYmY3MTI5NDFhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMjMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5k
KCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmll
dyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNo
V2l0aEdvb2dsZSk6CisKIDIwMjItMDMtMjMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZnRlciBsb3NpbmcgY29udGV4dCBkdWUgdG8gdG9vIG1hbnkg
Y29udGV4dHMsIGdldEVycm9yKCkgZG9lcyBub3QgcmV0dXJuIENPTlRFWFRfTE9TVF9XRUJHTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1
ZjQxNDBjMmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0y
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZp
bmQoKSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdW
aWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAy
MDIyLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9t
ZSBsaW5rIG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4ZDBk
YzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5z
KFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hhcmFj
dGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0cmlu
Zyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9v
bCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAgc2l6
ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmluZChj
b25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5m
aW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9Cisg
ICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKKyAg
ICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIHNp
emVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1
bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQo
bWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5nKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRmOWJh
YjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0ZTRi
NmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2IEBA
IGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25zdCBj
aGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2VhcmNo
TGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJzLCAw
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBmaW5k
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0cmlu
Z0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1bnNp
Z25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQg
bWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExlbmd0
aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdMZW5n
dGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFu
Z2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3RyaW5n
TGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7
Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0ZpbmQu
Y2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwot
ICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291cmNl
LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFNl
YXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZU19J
TkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSog
c2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3Rl
cnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZQog
ICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1h
dGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFz
cz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29uc3Qg
U3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQgbmVl
ZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9PSAx
KSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5lZWRs
ZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJhY3Rl
cnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQotCi0g
ICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0KLSAg
ICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0OwotICAg
IGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxlLmlz
OEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJz
OCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBu
ZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3Rl
cnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgbmVl
ZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Ci0K
LSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
LX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQgaW4g
bm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVzZWQg
ZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUgdGhl
IGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2UyNjFh
Mjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFjNWNj
YWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIzICs5
MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJbXBs
OjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51bGwg
c3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5nKSkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0
Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJp
bmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJp
bmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlm
IChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KClb
MF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0
ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJh
Y3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBs
ZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYgKG1h
dGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0
ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAg
ICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcu
Y2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3RoIGlz
IGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGlz
OEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJz
OCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVy
KGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5ndGgo
KSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5j
aGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRjaFN0
cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKIAot
ICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElubmVy
KGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1wbCog
bWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3Ry
aW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sgZm9y
IG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFko
IW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJuIGZp
bmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3RyaW5n
SW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5n
KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlz
LCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9uKFN0
cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAgICAg
ICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3RyaW5n
SW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqbWF0
Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90IFN0
cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCkBA
IC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNl
RmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0dXJu
IGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCog
bWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VG
aW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8vIENo
ZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYgKCFt
YXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVuZ3Ro
KCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4
LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJl
dmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAv
LyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgogICAg
IGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwgKCpt
YXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQo
Y2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0
aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKICAg
ICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KQEAg
LTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmlu
Z0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4
Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5n
dGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRj
aFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsK
KyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIHJl
dmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwg
aW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJzZUZp
bmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgs
IG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hTdHJp
bmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
MTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNo
TGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBy
ZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJzZUZp
bmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRl
eCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5uZXIo
Y2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3VyTGVu
Z3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWxJ
bm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25z
dCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5ICsx
NDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRl
cm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9
CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRl
cm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogewog
ICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsK
IAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAgICB1
bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBhdHRl
cm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQgcmVw
U3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21lbnRT
dGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAvLyBD
b3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQocGF0
dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRjaENv
dW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9Ci0g
ICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBkbyBh
bnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50ICog
cGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBNYXhM
ZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsxNDQy
LDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNoQ291
bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3IGRh
dGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50TGVu
Z3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0ID0g
MDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1lbnRJ
czhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNlbWVu
dElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQgY2Fz
ZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAgICAg
Ly8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3ICsx
NDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1wbCog
cGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21lbnRM
ZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAgY29w
eUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwg
c3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExl
bmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxh
Y2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3Rl
cnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVu
Z3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAgICAg
ICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAgICAg
ICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAg
ICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxhY2Vt
ZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAgIGNv
cHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBT
dHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
cmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOworICAg
ICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hh
cmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zmc2V0
ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVu
ZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGM3NmNkNTIz
Njc2MTFjOTQyZDM0MmJmMDkxYjE2MmEwYTY3NzQ0ZTAuLjRjZWI2MGRmYzA4MDM1MzQwZDg1YjA0
ZDk1MDE2NjlhZGE1OTBiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzMsMTUg
KzQzMywxMyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgQUxXQVlTX0lOTElORSBz
aXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1
cm4gZmluZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3RyaW5nKSwgaW5kZXgpOyB9
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1Zp
ZXcsIHVuc2lnbmVkIGluZGV4KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VG
aW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBN
YXhMZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3Ry
aW5nVmlldywgdW5zaWduZWQgaW5kZXggPSBNYXhMZW5ndGgpOwogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7
CkBAIC00NjYsNyArNDY0LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVu
c2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3Ro
KTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVmPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1l
bnRMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8
U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIGxlbmd0aCwgU3RyaW5nSW1wbCopOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFy
RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDQ0OGFmNzY4
OWY3NGE4ODUwMjgxOWUyYzY2OWU4MmUzYmEwZGIxODAuLmE3M2RmMDUwOWVlNTFmZGVlMDI3MDVk
YmJjM2ZjYjAxM2U1OGM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMDk5LDYg
KzEwOTksMTQyIEBAIGlubGluZSBib29sIGhhc1VucGFpcmVkU3Vycm9nYXRlKFN0cmluZ1ZpZXcg
c3RyaW5nKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHNpemVfdCBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgaGF5c3RhY2ssIFN0cmluZ1ZpZXcgbmVlZGxlLCB1bnNpZ25lZCBzdGFydCkK
K3sKKyAgICB1bnNpZ25lZCBuZWVkbGVMZW5ndGggPSBuZWVkbGUubGVuZ3RoKCk7CisKKyAgICBp
ZiAobmVlZGxlTGVuZ3RoID09IDEpIHsKKyAgICAgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzOCgpLCBoYXlz
dGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6OmZp
bmQoaGF5c3RhY2suY2hhcmFjdGVyczE2KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0s
IHN0YXJ0KTsKKyAgICB9CisKKyAgICBpZiAoc3RhcnQgPiBoYXlzdGFjay5sZW5ndGgoKSkKKyAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKCFuZWVkbGVMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGFydDsKKworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGhheXN0YWNrLmxl
bmd0aCgpIC0gc3RhcnQ7CisgICAgaWYgKG5lZWRsZUxlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKSB7Cisg
ICAgICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZmluZElubmVy
KGhheXN0YWNrLmNoYXJhY3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0
YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSW5u
ZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCks
IHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG5l
ZWRsZS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0
aCwgbmVlZGxlTGVuZ3RoKTsKKworICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFj
dGVyczE2KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOworfQorCitpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3IHNvdXJjZSwgU3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KQoreworICAgIHVuc2lnbmVkIHNvdXJjZVN0cmluZ0xlbmd0aCA9IHNvdXJj
ZS5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IHN0cmluZ1RvRmluZC5sZW5n
dGgoKTsKKyAgICBpZiAoIW1hdGNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3Rh
cnRPZmZzZXQsIHNvdXJjZVN0cmluZ0xlbmd0aCk7CisKKyAgICAvLyBDaGVjayBzdGFydE9mZnNl
dCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KKyAgICBpZiAoc3RhcnRPZmZzZXQgPiBzb3Vy
Y2VTdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICB1bnNpZ25lZCBz
ZWFyY2hMZW5ndGggPSBzb3VyY2VTdHJpbmdMZW5ndGggLSBzdGFydE9mZnNldDsKKyAgICBpZiAo
bWF0Y2hMZW5ndGggPiBzZWFyY2hMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKwor
ICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN0cmluZ1RvRmluZC5pczhC
aXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291cmNlLmNo
YXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2Vh
cmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc291cmNlLmNoYXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYoKSwg
c3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgIH0KKworICAgIGlm
IChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc291cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczgoKSwg
c3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworCisgICAgcmV0dXJuIGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5j
aGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwor
fQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsK
K30KK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25l
ZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZykgOiBub3RGb3VuZDsK
K30KKworaW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQp
IDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpyZXZlcnNlRmluZChTdHJp
bmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKwor
aW5saW5lIGJvb2wgU3RyaW5nOjpjb250YWlucyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sK
KyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBT
dHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpICE9IG5vdEZvdW5k
OworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAoreworICAgIHJldHVy
biBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwg
U3RyaW5nVmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2lt
cGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAo
bV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwg
cmVwbGFjZW1lbnQuaW1wbCgpKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBzaXpl
X3QgQXRvbVN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7Cit9CisKK2lu
bGluZSBzaXplX3QgQXRvbVN0cmluZzo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
c3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAor
eworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFy
dE9mZnNldCk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcp
OworfQorCitpbmxpbmUgYm9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5YzE2NGEx
YTU4YzExZDRjZmQ1MzIxZTMyZjUyN2I0YzllZDYuLjVjZDBhN2EzOTRjZWE5N2EwOTgwNTU0M2Fi
Y2ZlZmEzZjI0ZDBlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTY0LDE3ICsxNjQs
MTcgQEAgcHVibGljOgogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywg
YWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5k
KFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCi0gICAg
c2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZp
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdCB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0K
LSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBj
b25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCks
IHN0YXJ0T2Zmc2V0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldykg
Y29uc3Q7CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0
OworICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7Cisg
ICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3Q7CiAKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24g
bWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpIDogbm90Rm91bmQ7IH0KICAgICBz
aXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6IG5vdEZvdW5k
OyB9CiAKICAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3RhbmNlIG9mIGEgc2luZ2xlIGNoYXJhY3Rl
ciBvciBzdHJpbmcuCiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5z
aWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5n
dGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLmlt
cGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5n
VmlldywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0
aG91dE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwpAQCAtMTgzLDkgKzE4Myw5IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBmaW5k
KGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFy
KiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAg
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQo
c3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZykgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7
IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90
Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wg
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0OwogCiAgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGgoc3RyaW5nLmltcGwoKSkgOiBz
dHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHko
KTsgfQpAQCAtMjEwLDcgKzIxMCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyYgcmVwbGFjZShV
Q2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNo
YXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKLSAgICBTdHJpbmcmIHJlcGxh
Y2UoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAg
IFN0cmluZyYgcmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVu
dCk7CiAgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOwogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJh
Y3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0
IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIApAQCAtNTA2LDIwICs1MDYs
NiBAQCBpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhpczsKIH0KIAotaW5saW5lIFN0cmlu
ZyYgU3RyaW5nOjpyZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50KQotewotICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+
cmVwbGFjZSh0YXJnZXQuaW1wbCgpLCByZXBsYWNlbWVudC5pbXBsKCkpOwotICAgIHJldHVybiAq
dGhpczsKLX0KLQotaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYg
KG1faW1wbCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHN0YXJ0LCBsZW5ndGgs
IHJlcGxhY2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKIHsKICAgICBpZiAobV9pbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCAzOWMxNDdkYWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIz
Li4yZmFmM2U5NWQzMWM5ODlmY2UxMmUwNTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWRO
YW1lKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0g
ZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5yZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1l
LnJlcGxhY2UoIiUyRSIsICIuIik7CiAKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJv
bUZpbGVuYW1lKG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggZDU3N2VhNjZlYWFhMDMxNzIwMjk1NTMwYjFhYzBkNTkzODM2ZjBmYi4u
MmYxMGNlZDg0MTMxZWQ3ZTlkZDE4N2EzNDAxY2ZkY2RlYzRiYTQzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9p
ZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbihjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBUZXh0RmllbGRFdmVudEIKICAgICAvLyBDb2RlIGVsc2V3aGVyZSBub3JtYWxpemVzIGxp
bmUgZW5kaW5ncyBhZGRlZCBieSB0aGUgdXNlciB2aWEgdGhlIGtleWJvYXJkIG9yIHBhc3Rpbmcu
CiAgICAgLy8gV2Ugbm9ybWFsaXplIGxpbmUgZW5kaW5ncyBjb21pbmcgZnJvbSBKYXZhU2NyaXB0
IGhlcmUuCiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRWYWx1ZSA9IG5ld1ZhbHVlLmlzTnVsbCgpID8g
ZW1wdHlTdHJpbmcoKSA6IG5ld1ZhbHVlOwotICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNlKCJc
clxuIl9zLCAiXG4iX3MpOworICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNlKCJcclxuIiwgIlxu
Iik7CiAgICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKICAgICAvLyBS
ZXR1cm4gZWFybHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIG1vdmUgdGhlIGNhcmV0IG9yIHRy
aWdnZXIgb3RoZXIgc2lkZSBlZmZlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggODY0M2E4NDc3NzY0NTkzMzFmNDNlYTI5OGZlOGVmNGYw
ODQxZjBhMi4uYTc1YjYzYTNiNWRmZWI5ZjY3Mjg5MjhlZWZjYjM2M2FmZjg2ZjRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNjaGVt
ZVNlcGFyYXRvcihNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiOi8vIikpOwogCi0gICAgc2l6ZV90
IHNjaGVtZUVuZFBvcyA9IHBhdHRlcm4uZmluZChzY2hlbWVTZXBhcmF0b3IpOworICAgIHNpemVf
dCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2NoZW1lU2VwYXJhdG9yLmdldCgpKTsKICAg
ICBpZiAoc2NoZW1lRW5kUG9zID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKaW5kZXgg
MTM4NGM2YjExNGU3OWViYzcyZGQyNTdjZjA1NTgyMWZjNGE0NjM0YS4uNjZkYmVjNDBhYWMyYjcz
OTdhMTkzMzExNjZjNzJiZDYyNjE2ZTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKQEAgLTU1LDggKzU1LDggQEAgY29uc3QgVGV4dHVyZU1h
cHBlckNvbnRleHRBdHRyaWJ1dGVzJiBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6Omdl
dCgpCiAgICAgICAgIGF0dHJpYnV0ZXMuaXNHTEVTMkNvbXBsaWFudCA9IHRydWU7CiAKICAgICAg
ICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Z2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsKLSAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0
c05QT1RUZXh0dXJlcyA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoIkdMX09FU190ZXh0dXJl
X25wb3QiX3MpOwotICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSBl
eHRlbnNpb25zU3RyaW5nLmNvbnRhaW5zKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIl9zKTsKKyAg
ICAgICAgYXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcyA9IGV4dGVuc2lvbnNTdHJpbmcu
Y29udGFpbnMoIkdMX09FU190ZXh0dXJlX25wb3QiKTsKKyAgICAgICAgYXR0cmlidXRlcy5zdXBw
b3J0c1VucGFja1N1YmltYWdlID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xfRVhUX3Vu
cGFja19zdWJpbWFnZSIpOwogI2Vsc2UKICAgICAgICAgYXR0cmlidXRlcy5pc0dMRVMyQ29tcGxp
YW50ID0gZmFsc2U7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZS5oCmluZGV4IDYyOTQ1ZDk2ZTE2Zjc4MjM2MDU4YTQ5ODQ1YWZiODQwMzliMDc1MjIu
LmU1MGRjY2Y1ZDVkZDRiZGNmMWI4ZTg0ODgxMGY0MWFhNmE2MDk0OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gYWlyUG9kcyhNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiQWlyUG9kcyIpKTsKIAot
ICAgICAgICBpZiAoKG1fdHlwZSA9PSBEZXZpY2VUeXBlOjpNaWNyb3Bob25lIHx8IG1fdHlwZSA9
PSBEZXZpY2VUeXBlOjpTcGVha2VyKSAmJiBtX2xhYmVsLmNvbnRhaW5zKGFpclBvZHMpKQorICAg
ICAgICBpZiAoKG1fdHlwZSA9PSBEZXZpY2VUeXBlOjpNaWNyb3Bob25lIHx8IG1fdHlwZSA9PSBE
ZXZpY2VUeXBlOjpTcGVha2VyKSAmJiBtX2xhYmVsLmNvbnRhaW5zKGFpclBvZHMuZ2V0KCkpKQog
ICAgICAgICAgICAgcmV0dXJuIGFpclBvZHM7CiAKICAgICAgICAgcmV0dXJuIG1fbGFiZWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBiYWRhZjE1ODdhMjAxOTc3ZWI5ZTc0
ZjE0Nzk3OTQ3ZWIyNDcyZjFkLi5mNGE1ZDQ0ZTE5NzE1OWU0YTMyYTRmODg2ZmY0NzY4MzkyYTI1
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUpCiAgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCku
c2VsZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwogICAg
IHNlYXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5n
KTsKLSAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgc2VhcmNo
U3RyaW5nLnJlcGxhY2UoIiUyMCIsICIrIik7CiAgICAgYXV0byBzZWFyY2hVUkwgPSBVUkwgeyAi
aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZpZT1V
VEYtOCZvZT1VVEYtOCIgfTsKIAogICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGlu
ZGljYXRvciB7IFdlYkNvcmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCmluZGV4IGRmYzBhZTUxOTY2ODkyNDNhYjBmOGZjOTA4NjVjYzk2YzU2
MGVlZDQuLjFiYzNjM2Q1OThkNDdkYWUxODM0OTc1ZWY0MjYzY2U0OGU0NTdjOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUp
CiAgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7
CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIHNlYXJjaFN0cmluZyA9
IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKLSAgICBzZWFyY2hT
dHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgc2VhcmNoU3RyaW5nLnJlcGxhY2Uo
IiUyMCIsICIrIik7CiAgICAgYXV0byBzZWFyY2hVUkwgPSBVUkwgeyAiaHR0cHM6Ly93d3cuZ29v
Z2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIg
fTsKIAogICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNv
cmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCBhYWRmNGY5Y2UzZTUxYmY1NmQxMDhjM2JlNGQwN2Jm
OWMzZGUzNmJkLi5hNDNkZGI4N2YzOWIzNGU2YjM3MGI0YTgzNjFlNzRhYTA3MmRjMTg2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcApAQCAtMzM0LDEz
ICszMzQsMTMgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VXaXRo
SW52YWxpZE9mZnNldCkKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5nQVNDSUlDYXNl
T25OdWxsKQogewogICAgIGF1dG8gcmVmZXJlbmNlID0gc3RyaW5nRnJvbVVURjgoIkFCQ8OJRUZH
Iik7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJl
ZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsKLSAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3Jp
bmdBU0NJSUNhc2UobnVsbHB0ciwgMCkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXpl
X3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxs
cHRyLCAzKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3Vu
ZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDcpKTsKLSAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5m
aW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgOCkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShudWxscHRyLCA0MikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdU
Rjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyB7IH0pKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6
ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldyB7IH0sIDApKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6
Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7
IH0sIDMpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5k
KSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIDcpKTsK
KyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJl
bmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIDgpKTsKKyAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIDQyKSk7CisgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpKTsKIH0KIAogVEVTVChXVEYsIFN0cmluZ0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VP
bkVtcHR5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455598</attachid>
            <date>2022-03-23 19:27:12 -0700</date>
            <delta_ts>2022-03-23 22:01:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323192712.patch</filename>
            <type>text/plain</type>
            <size>58300</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMTUxYTRlNjAzOWFkM2RmMTFmNjk5
OGEyNTc2NTY1OTIxM2FiMjcuLjViNGZhYmVmMGM1NmYzMTgyMzAwM2QxOGFiODEzMWIwOTFhY2Yw
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcmVwYXJlIEpTQyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0
cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ4N2Y0OTMwMmZiZmFiYWFhMjQ4YmZkYjY1
YjIxYzQ2Nzk2N2YzMy4uN2E1ZjEzNTA1YWM2Y2Q3ODk0NzMwYmY5MGQxNDFmYjI4NDU5MTc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJzZUZpbmQo
KSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRh
YmFzZU5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbik6CisgICAg
ICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
bGFiZWwgY29uc3QpOgorCiAyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUHJlcGFyZSBKU0MgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNo
YXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNTk1MzhlYjBjNmFlZDIzMmFl
OWM1OWRjMTc0YjM5YjRjMDYwY2U5Li5iOTIwMTMzNzFkZGIyNjdjMWEwMzU4ZmMyMGFiNmI3NmZj
Y2UwYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJz
ZUZpbmQoKSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBv
ZiBhIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUp
OgorCiAyMDIyLTAzLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgQmlnU3VyKyBEZWJ1ZyB3azIgRVdTIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhl
LWlucHV0LXN0cmVhbS9xdWlya3Mud2luZG93Lmh0bWwgaXMgYSBmbGFreSBjcmFzaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1ZjQxNDBj
MmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZpbmQoKSAv
IHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGlu
c3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAyMDIyLTAz
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9tZSBsaW5r
IG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KaW5kZXggZjEyYTJjNDk1M2YwMDMyZGZiNGI3MmY2OGZmODBmZWRkYjY5MDM1NC4uZDNh
ZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgc3RhdGljIFN0cnVjdEhhbmRs
ZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyB2YWx1ZVdpdGg8Rm9vPjpjb250ZXh0OiBtZXRo
b2QuCiAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlS
ZXR1cm5UeXBlKG1ldGhvZCkpOwotICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0cmluZyB7IHR5cGUuZ2V0KCkgfSk7CisgICAgICAg
IFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQodHlw
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFnSGFuZGxlciYgaGFuZGxlciA9IGl0
ZXItPnZhbHVlOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3RhdGljIFN0cnVjdFRhZ0hhbmRsZXIq
IGhhbmRlckZvclN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNvZGVkVHlwZSkKIAogICAgIHN0YXRp
YyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFw
KCk7CiAKLSAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJz
LT5maW5kKFN0cmluZyB7IGVuY29kZWRUeXBlIH0pOworICAgIFN0cnVjdEhhbmRsZXJzOjppdGVy
YXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQoZW5jb2RlZFR5cGUpOwogICAgIGlmIChp
dGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuICZpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KaW5kZXggZjgyMWRmOGUzZWJlZDU3ZjU0MGNkMmYwMWQ2NGVjOTZkY2ZhODZjZC4uOTZlNDQ3
ODg3MGNkODFhNTg5OTdkMDJkYTZmYTRmYmEzNDZhZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgSlNDOjpK
U09iamVjdCogYWxsb2NhdGVDb25zdHJ1Y3RvckZvckN1c3RvbUNsYXNzKEpTQ29udGV4dCAqY29u
dGV4dCwgY29ucwogICAgICAgICBmb3JFYWNoTWV0aG9kSW5DbGFzcyhjdXJyZW50Q2xhc3MsIF4o
TWV0aG9kIG1ldGhvZCkgewogICAgICAgICAgICAgU0VMIHNlbGVjdG9yID0gbWV0aG9kX2dldE5h
bWUobWV0aG9kKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBzZWxfZ2V0TmFtZShz
ZWxlY3Rvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBpbml0VGFibGUuZmluZChTdHJpbmcg
eyBuYW1lIH0pOworICAgICAgICAgICAgYXV0byBpdGVyID0gaW5pdFRhYmxlLmZpbmQobmFtZSk7
CiAKICAgICAgICAgICAgIGlmIChpdGVyID09IGluaXRUYWJsZS5lbmQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGMyODc3MzZkNzFl
N2ViOWU4ODU1OGZmY2QwYjcwNDUyNWJmZmNmOTcuLjMwYWNhZjMzNDU4MDUzNzRkODFkYmIwYjFj
NWQ0OWZmN2FmMGE2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsK
IAotICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5z
cGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsg
dGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIl9zKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CisgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJ
bnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcg
eyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CiAKICAgICBJbmplY3RlZFNjcmlwdDo6RXhlY3V0ZU9wdGlvbnMgb3B0aW9uczsKICAgICBv
cHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYzg2N2VlZDI1YTlmNTgzN2I5
N2ZjMzdlYTExNGRkZGMyY2I2NGJmMy4uYmRkOTU5Y2VjNzkxZTQ0NzM2YjE3ZDRiZTU5NmEwYzhm
NGViNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIGR1bXBKSVRNZW1vcnkoY29u
c3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoZmQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgcGF0aCB7
IE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkgfTsKLSAgICAgICAgICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCIlcGlkIl9zLCBTdHJpbmc6Om51bWJlcihnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpKTsKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIlcGlkIiwgU3RyaW5n
OjpudW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiAgICAgICAgICAgICAgICAgZmQgPSBv
cGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIE9f
Q1JFQVQgfCBPX1RSVU5DIHwgT19BUFBFTkQgfCBPX1dST05MWSB8IE9fRVhMT0NLIHwgT19OT05C
TE9DSywgMDY2Nik7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmQgIT0gLTEpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAppbmRleCBkMjEzNDM5NjQ3MzYwZTljYjViNWQ5Mzk2YWNhYTQxMmRj
OGRjODRlLi44Y2QwZDVlOWM0NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5k
ZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAgICAgICAgIHJldHVy
biBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRl
eHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFj
dFNvdXJjZSk7Ci0gICAgYXV0byBub3RBRnVuY3Rpb25JbmRleCA9IG9yaWdpbmFsTWVzc2FnZS5y
ZXZlcnNlRmluZCgiaXMgbm90IGEgZnVuY3Rpb24iX3MpOworICAgIGF1dG8gbm90QUZ1bmN0aW9u
SW5kZXggPSBvcmlnaW5hbE1lc3NhZ2UucmV2ZXJzZUZpbmQoImlzIG5vdCBhIGZ1bmN0aW9uIik7
CiAgICAgUkVMRUFTRV9BU1NFUlQobm90QUZ1bmN0aW9uSW5kZXggIT0gbm90Rm91bmQpOwogICAg
IFN0cmluZ1ZpZXcgZGlzcGxheVZhbHVlOwogICAgIGlmIChvcmlnaW5hbE1lc3NhZ2UuaXM4Qml0
KCkpIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlcklu
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvCiAgICAgICAg
IHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91
bmRFeGFjdFNvdXJjZSk7Ci0gICAgYXV0byBpbkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmlu
ZCgiaW4iX3MpOworICAgIGF1dG8gaW5JbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImlu
Iik7CiAgICAgaWYgKGluSW5kZXggPT0gbm90Rm91bmQpIHsKICAgICAgICAgLy8gVGhpcyBzaG91
bGQgYmFzaWNhbGx5IG5ldmVyIGhhcHBlbiwgc2luY2UgSlMgY29kZSBtdXN0IHVzZSB0aGUgbGl0
ZXJhbAogICAgICAgICAvLyB0ZXh0ICJpbiIgZm9yIHRoZSBgaW5gIG9wZXJhdGlvbi4gSG93ZXZl
ciwgaWYgd2UgZmFpbCB0byBmaW5kICJpbiIKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbmxpbmUgU3Ry
aW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjbwogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJy
b3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1cnJlbmNl
ID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gaW5zdGFuY2Vv
ZkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiaW5zdGFuY2VvZiJfcyk7CisgICAgYXV0
byBpbnN0YW5jZW9mSW5kZXggPSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJpbnN0YW5jZW9mIik7
CiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gU3ltYm9sLmhhc0luc3RhbmNlIGZ1bmN0aW9u
IGlzIGRpcmVjdGx5IGNhbGxlZC4KICAgICBpZiAoaW5zdGFuY2VvZkluZGV4ID09IG5vdEZvdW5k
KQogICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXNzYWdlOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0
YXRpYyBTdHJpbmcgaW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNZXNzYWdlLCBjb25zCiAgICAgaWYgKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5j
ZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRBcHByb3hp
bWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCk7CiAKLSAgICBhdXRv
IGV4dGVuZHNJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiX3MpOworICAg
IGF1dG8gZXh0ZW5kc0luZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiZXh0ZW5kcyIpOwog
ICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRl
bmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5h
bE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRleHQsICInKSIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCA1ZmFiMWI4
MzA1M2MzODJlYmEwODJhOTRhZDhlNjNkNjlmNTc0NTk0Li43ZTFiY2UyOWJhZmVmZmJjYTY0ZmM1
NDVlYTRhYjg4YzhlZTFmZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgdm9pZCBUeXBlUHJvZmlsZXI6Omxv
Z1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24sIFZNJiB2bSkKIAog
ICAgIGRhdGFMb2coIlx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IFR5cGVQ
cm9maWxlclJldHVyblN0YXRlbWVudCA/ICJbUmV0dXJuIFN0YXRlbWVudF0iIDogIltOb3JtYWwg
U3RhdGVtZW50XSIsICJcbiIpOwogCi0gICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIl9z
LCAiXG5cdFx0Il9zKSwgIlxuIik7CisgICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIiwg
IlxuXHRcdCIpLCAiXG4iKTsKICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKLSAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iX3MsICJcblx0XHQiX3MpLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwogfQogCiB2
b2lkIFR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNzMzZjk4
MTJmMThlOGY2MThlNGVhOTA3ZjkxY2IyNTNmN2MwOGVjZC4uZDg4YmEyOGMzZjMwOTI3MmUzZGEy
ZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3Bl
cnR5SGFzaCgpCiAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICBmb3IgKGF1dG8mIGtleSA6
IG1fZmllbGRzKSB7CiAgICAgICAgIFN0cmluZyBwcm9wZXJ0eSA9IGtleS5nZXQoKTsKLSAgICAg
ICAgcHJvcGVydHkucmVwbGFjZSgiOiJfcywgIlxcOiJfcyk7IC8vIEVuc3VyZSB0aGF0IGhhc2go
eyJmb286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVzZSB3ZSdyZSB1
c2luZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwgY2hhcmFjdGVy
cyBpbiBmaWVsZCBuYW1lcyBpbiBKUy4KKyAgICAgICAgcHJvcGVydHkucmVwbGFjZSgiOiIsICJc
XDoiKTsgLy8gRW5zdXJlIHRoYXQgaGFzaCh7ImZvbzoiLCAiYmFyIn0pICE9IGhhc2goeyJmb28i
LCAiOmJhciJ9KSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGNvbG9ucyBhcyBhIHNlcGFyYXRvciBhbmQg
Y29sb25zIGFyZSBsZWdhbCBjaGFyYWN0ZXJzIGluIGZpZWxkIG5hbWVzIGluIEpTLgogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwcm9wZXJ0eSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA5NTY4NmJhMTkyMGJi
MGViMTI3NDA0ZjEzOTFiYjAyZjViYjE2MDg5Li41ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJjOTMx
NzVmZjc2ZmNiYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcm
IG5ldwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
U3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9yaWdDb2RlLnByb3ZpZGVyKCktPnNvdXJjZSgpLnRv
U3RyaW5nKCk7CiAgICAgdW5zaWduZWQgb3JpZ1N0YXJ0ID0gb3JpZ0NvZGUuc3RhcnRPZmZzZXQo
KTsKLSAgICB1bnNpZ25lZCBvcmlnRnVuY3Rpb25TdGFydCA9IG9yaWdQcm92aWRlclN0ci5yZXZl
cnNlRmluZCgiZnVuY3Rpb24iX3MsIG9yaWdTdGFydCk7CisgICAgdW5zaWduZWQgb3JpZ0Z1bmN0
aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ1N0
YXJ0KTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdQcm92aWRlclN0ci5maW5k
KCd7Jywgb3JpZ1N0YXJ0KTsKICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VT
dGFydCAtIG9yaWdGdW5jdGlvblN0YXJ0OwogICAgIFN0cmluZyBvcmlnSGVhZGVyID0gb3JpZ1By
b3ZpZGVyU3RyLnN1YnN0cmluZyhvcmlnRnVuY3Rpb25TdGFydCwgaGVhZGVyTGVuZ3RoKTsKQEAg
LTE0Nyw4ICsxNDcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0
IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcmIG5ldwogICAgIGluZm8ubGluZUNv
dW50ID0gMTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93
LgogICAgIGluZm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8g
RmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8u
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgiKCIpOwotICAgIGlu
Zm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgieyIpOwor
ICAgIGluZm8ucGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcp
OworICAgIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmlu
ZCgneycpOwogICAgIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3Ry
Lmxlbmd0aCgpIC0gMTsKIAogICAgIGluZm8uc291cmNlQ29kZSA9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4
ZDBkYzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRh
aW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hh
cmFjdGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0
cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAg
c2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy5maW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9
CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsK
KyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRj
aEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZp
bmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5n
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRm
OWJhYjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0
ZTRiNmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2
IEBAIGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25z
dCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2Vh
cmNoTGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJz
LCAwLCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1
bnNpZ25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWdu
ZWQgbWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdM
ZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3Ry
aW5nTGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVu
Z3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgp
KSB7Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0Zp
bmQuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgp
OwotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291
cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zm
c2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1l
IFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlw
ZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJh
Y3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0
ZQogICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+
KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29u
c3QgU3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQg
bmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9
PSAxKSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5l
ZWRsZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJh
Y3RlcnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0K
LSAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0Owot
ICAgIGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxl
LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7
Ci0KLSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQs
IG5lZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3Ro
KTsKLX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQg
aW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVz
ZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUg
dGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2Uy
NjFhMjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFj
NWNjYWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIz
ICs5MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJ
bXBsOjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51
bGwgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5n
KSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0g
bWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hT
dHJpbmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBz
dHJpbmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAg
IGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2
KClbMF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3Ry
aW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNo
YXJhY3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigp
LCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYg
KG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAg
ICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3Ro
IGlzIGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmlu
ZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5n
dGgoKSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5n
LT5jaGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRj
aFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYo
KSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsK
IAotICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sg
Zm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtF
TFkoIW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJu
IGZpbmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3Ry
aW5nKSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNl
KCp0aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNo
U3RyaW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAq
bWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90
IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgp
CkBAIC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZl
cnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0
dXJuIGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVy
c2VGaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8v
IENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYg
KCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVu
Z3RoKCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGlu
ZGV4LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6
OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAg
ICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgog
ICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwg
KCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsK
KyAgICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxl
bmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJz
ZUZpbmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsK
ICAgICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4K
QEAgLTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0
cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
OCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hM
ZW5ndGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3Ro
KTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
IHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgo
KSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5k
ZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hT
dHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0
ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1h
dGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBp
bmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5u
ZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1
YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBj
b25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5
ICsxNDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBh
dHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7
CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQog
ewogICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKIAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAg
ICB1bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBh
dHRlcm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWdu
ZWQgcmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21l
bnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAv
LyBDb3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQo
cGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRj
aENvdW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9
Ci0gICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBk
byBhbnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50
ICogcGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBN
YXhMZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsx
NDQyLDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwq
IHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNo
Q291bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3
IGRhdGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50
TGVuZ3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0
ID0gMDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1l
bnRJczhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNl
bWVudElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQg
Y2FzZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAg
ICAgLy8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3
ICsxNDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1w
bCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21l
bnRMZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVu
dExlbmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJh
Y3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3Ry
TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAg
ICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAg
ICAgICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAog
ICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxh
Y2VtZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCBy
ZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNl
dCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMo
ZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOwor
ICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQu
Y2hhcmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zm
c2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVu
dEVuZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDhkODBm
Nzg3NzgzZDQzYzU2MmY4ZTBjZDNlMzY3NWI5NzZiYTgyNTkuLjg1ZDdjNGVjNjhhZTQ1MDcxN2Fh
OTZlMGJiYWU3OTNiMTc0NzIzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzIs
MTYgKzQzMiwxMyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
LSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBs
JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gTWF4TGVuZ3Ro
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0lt
cGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFN0cmluZ0ltcGwmKSBjb25zdDsKQEAgLTQ2Niw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBj
aGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJl
cGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxhY2VtZW50
KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50
TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmlu
Z1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9v
bCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uYTcz
ZGYwNTA5ZWU1MWZkZWUwMjcwNWRiYmMzZmNiMDEzZTU4YzQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTEwOTksNiArMTA5OSwxNDIgQEAgaW5saW5lIGJvb2wgaGFzVW5wYWlyZWRT
dXJyb2dhdGUoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxp
bmUgc2l6ZV90IGZpbmRDb21tb24oU3RyaW5nVmlldyBoYXlzdGFjaywgU3RyaW5nVmlldyBuZWVk
bGUsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRs
ZS5sZW5ndGgoKTsKKworICAgIGlmIChuZWVkbGVMZW5ndGggPT0gMSkgeworICAgICAgICBpZiAo
aGF5c3RhY2suaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNr
LmNoYXJhY3RlcnM4KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2su
bGVuZ3RoKCksIG5lZWRsZVswXSwgc3RhcnQpOworICAgIH0KKworICAgIGlmIChzdGFydCA+IGhh
eXN0YWNrLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoIW5l
ZWRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0YXJ0OworCisgICAgdW5zaWduZWQgc2VhcmNo
TGVuZ3RoID0gaGF5c3RhY2subGVuZ3RoKCkgLSBzdGFydDsKKyAgICBpZiAobmVlZGxlTGVuZ3Ro
ID4gc2VhcmNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoaGF5
c3RhY2suaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVk
bGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBpZiAobmVlZGxlLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZmluZElu
bmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgp
LCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgpOworCisgICAgcmV0dXJuIGZpbmRJ
bm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2
KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Cit9CisKK2lubGluZSBzaXpl
X3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc291cmNlLCBTdHJpbmdWaWV3IHN0
cmluZ1RvRmluZCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpCit7CisgICAgdW5zaWduZWQgc291cmNl
U3RyaW5nTGVuZ3RoID0gc291cmNlLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gc3RyaW5nVG9GaW5kLmxlbmd0aCgpOworICAgIGlmICghbWF0Y2hMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGQ6Om1pbihzdGFydE9mZnNldCwgc291cmNlU3RyaW5nTGVuZ3RoKTsKKworICAg
IC8vIENoZWNrIHN0YXJ0T2Zmc2V0ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgorICAgIGlm
IChzdGFydE9mZnNldCA+IHNvdXJjZVN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IHNvdXJjZVN0cmluZ0xlbmd0aCAtIHN0
YXJ0T2Zmc2V0OworICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAg
cmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgeworICAgICAgICBp
ZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4
KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9G
aW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisgICAgfQorCisgICAgaWYgKHN0cmluZ1RvRmluZC5pczhCaXQoKSkKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1Rv
RmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmlu
Z1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQoraW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmQoU3RyaW5n
VmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNp
emVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNpemVfdCBTdHJp
bmc6OnJldmVyc2VGaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcsIHN0YXJ0
KSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0
T2Zmc2V0KSAhPSBub3RGb3VuZDsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KFN0cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQoreworICAgIGlmICht
X2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2Vt
ZW50KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVw
bGFjZShzdGFydCwgbGVuZ3RoLCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhp
czsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5n
LCB1bnNpZ25lZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJp
bmcsIHN0YXJ0KTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5n
LmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOworfQorCitpbmxpbmUgc2l6ZV90IEF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmlu
Zzo6Y29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3Ry
aW5nLmNvbnRhaW5zKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKaW5kZXggNDFlZDM1Y2NhNmU5ZjcxZjI2ZWRkYmQzNWE3OGFlNmFlNjQ3ODA4MS4uNWNkMGE3
YTM5NGNlYTk3YTA5ODA1NTQzYWJjZmVmYTNmMjRkMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC0xNjQsMTggKzE2NCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCkpIDogbm90Rm91
bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLmltcGwoKSwgc3RhcnRPZmZzZXQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXpl
X3QgZmluZChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1
bnNpZ25lZCBzdGFydCkgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkg
OiBub3RGb3VuZDsgfQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3Qg
aW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KICAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjaGFyYWN0ZXIsIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQor
ICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IE1heExl
bmd0aCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7
CkBAIC0xODQsOSArMTgzLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmlu
ZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQot
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywg
dW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMo
U3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CiAKICAgICBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29s
IHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CkBAIC0yMTEsNyArMjEwLDcgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1l
bnQpOwogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVwbGFjZShjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFN0cmluZ1ZpZXcg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7
CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdp
dGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0
ZXJDb3VudF0pOwogCkBAIC01MDcsMjAgKzUwNiw2IEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6
cmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYgKG1faW1w
bCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldC5pbXBsKCksIHJlcGxh
Y2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgU3RyaW5nJiBT
dHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudCkKLXsKLSAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdB
WVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQogewogICAgIGlmICht
X2ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IDZjZGY1NjhlOTRjNjUxMjNjNTU3ODk2Mjk3NjMwZmRjMTk2NTI4MDUu
LjkzNmE3ZTQzMDU2YzQ1NWUyOWIyNTUwZmI0MDEwYmVlZWMzYjM1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xNzYs
NyArMTc2LDcgQEAgUmVmUHRyPERPTUZvcm1EYXRhPiBGZXRjaEJvZHlDb25zdW1lcjo6cGFja2Fn
ZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKICAgICAgICAgaWYgKCFtaW1lVHlw
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRhcnki
X3MpOworICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZp
bmQoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbWltZVR5cGUtPnBh
cmFtZXRlcnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzOWMxNDdk
YWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIzLi4yZmFmM2U5NWQzMWM5ODlmY2UxMmUw
NTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURh
dGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWROYW1lKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0gZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5y
ZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSIsICIuIik7CiAK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKG5hbWUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNl
cy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5o
CmluZGV4IGI3NWMyNzMyMDFiMDM5NmE1MGRjODQ0NDIxNmQwZDY0MWZkYmRkNTcuLjRhNTFiNTY5
ZWI0OGJhNGJkN2I4Mjk2MGU3YWRiZmMzYzZiZDVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFBBTCB7CiAvLyBTZWUgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
UGVyY2VudC1lbmNvZGluZyNOb24tc3RhbmRhcmRfaW1wbGVtZW50YXRpb25zPi4KIHN0cnVjdCBV
bmljb2RlMTZCaXRFc2NhcGVTZXF1ZW5jZSB7CiAgICAgZW51bSB7IFNlcXVlbmNlU2l6ZSA9IDYg
fTsgLy8gZS5nLiAldTI2QzQKLSAgICBzdGF0aWMgc2l6ZV90IGZpbmRJblN0cmluZyhTdHJpbmdW
aWV3IHN0cmluZywgc2l6ZV90IHN0YXJ0UG9zaXRpb24pIHsgcmV0dXJuIHN0cmluZy5maW5kKFN0
cmluZ1ZpZXcoIiV1IiksIHN0YXJ0UG9zaXRpb24pOyB9CisgICAgc3RhdGljIHNpemVfdCBmaW5k
SW5TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBzdGFydFBvc2l0aW9uKSB7IHJldHVy
biBzdHJpbmcuZmluZCgiJXUiLCBzdGFydFBvc2l0aW9uKTsgfQogICAgIHN0YXRpYyBzaXplX3Qg
ZmluZEVuZE9mUnVuKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgc2l6
ZV90IGVuZFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgc2l6ZV90IHJ1bkVuZCA9IHN0YXJ0UG9z
aXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRDb2RlY1dp
bi5jcHAKaW5kZXggZTdmNGU5ZGMxODM0ZDBmNjM5YzZiYWJmNjk2NTYyMDZiODc2NzQwYy4uNmYx
OGYyYjBkNjgyYmViMThjZDZhMTMxOTY4MjNlYWIzYTJkNjIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIExhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgIGkgPSBj
b2RlUGFnZUNoYXJzZXRzKCkuc2V0KGNwSW5mby51aUNvZGVQYWdlLCBuYW1lKS5pdGVyYXRvcjsK
ICAgICAgICAgfQogICAgICAgICBpZiAoaSAhPSBjb2RlUGFnZUNoYXJzZXRzKCkuZW5kKCkpIHsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDaGFyc2V0SW5mbz46Oml0ZXJhdG9yIGogPSBr
bm93bkNoYXJzZXRzKCkuZmluZChTdHJpbmcoaS0+dmFsdWUuZGF0YSgpLCBpLT52YWx1ZS5sZW5n
dGgoKSkpOworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0
b3IgaiA9IGtub3duQ2hhcnNldHMoKS5maW5kKFN0cmluZ1ZpZXcgeyBpLT52YWx1ZS5kYXRhKCks
IGktPnZhbHVlLmxlbmd0aCgpIH0pOwogICAgICAgICAgICAgQVNTRVJUKGogIT0ga25vd25DaGFy
c2V0cygpLmVuZCgpKTsKICAgICAgICAgICAgIENoYXJzZXRJbmZvJiBpbmZvID0gai0+dmFsdWU7
CiAgICAgICAgICAgICBpbmZvLm1fbmFtZSA9IGktPnZhbHVlLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQ1NzdlYTY2ZWFhYTAzMTcy
MDI5NTUzMGIxYWMwZDU5MzgzNmYwZmIuLjJmMTBjZWQ4NDEzMWVkN2U5ZGQxODdhMzQwMWNmZGNk
ZWM0YmE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVD
b21tb24oY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29k
ZSBlbHNld2hlcmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlh
IHRoZSBrZXlib2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGlu
Z3MgY29taW5nIGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFs
dWUgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBu
b3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJfcywgIlxuIl9zKTsKKyAgICBub3JtYWxpemVk
VmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOwogICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNl
KCdccicsICdcbicpOwogCiAgICAgLy8gUmV0dXJuIGVhcmx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIHRoZSBjYXJldCBvciB0cmlnZ2VyIG90aGVyIHNpZGUgZWZmZWN0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDg2NDNhODQ3
Nzc2NDU5MzMxZjQzZWEyOThmZThlZjRmMDg0MWYwYTIuLmE3NWI2M2EzYjVkZmViOWY2NzI4OTI4
ZWVmY2IzNjNhZmY4NmY0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVTZXBhcmF0b3IoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjovLyIpKTsKIAotICAgIHNpemVfdCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2No
ZW1lU2VwYXJhdG9yKTsKKyAgICBzaXplX3Qgc2NoZW1lRW5kUG9zID0gcGF0dGVybi5maW5kKHNj
aGVtZVNlcGFyYXRvci5nZXQoKSk7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9PSBub3RGb3VuZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCA0YTllOGZhZTAzN2VlZjQwZGVkOWYyY2VhZjg3MmZhMTU4YTQzYWZiLi5kY2Nh
ODhhZjlmZTVhYjhlNDJlMGQ5YWI0ODkyN2E0NGFlNmFkY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVjaXNpb25zTWF0Y2goUGxhdGZvcm1HTE9iamVjdCB2ZXJ0ZXhTaGFk
ZXIsIFBsYQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGZyYWdtZW50RW50cnkudW5p
Zm9ybU1hcCkgewogICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWFwcGVkTmFtZSA9IGVudHJ5
LnZhbHVlLmdldCgpLm1hcHBlZE5hbWU7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHZlcnRleFN5bWJv
bCA9IHZlcnRleFN5bWJvbFByZWNpc2lvbk1hcC5maW5kKFN0cmluZyhtYXBwZWROYW1lLmNfc3Ry
KCksIG1hcHBlZE5hbWUubGVuZ3RoKCkpKTsKKyAgICAgICAgY29uc3QgYXV0byYgdmVydGV4U3lt
Ym9sID0gdmVydGV4U3ltYm9sUHJlY2lzaW9uTWFwLmZpbmQoU3RyaW5nVmlldyB7IG1hcHBlZE5h
bWUuY19zdHIoKSwgbWFwcGVkTmFtZS5sZW5ndGgoKSB9KTsKICAgICAgICAgaWYgKHZlcnRleFN5
bWJvbCAhPSB2ZXJ0ZXhTeW1ib2xQcmVjaXNpb25NYXAuZW5kKCkgJiYgdmVydGV4U3ltYm9sLT52
YWx1ZSAhPSBlbnRyeS52YWx1ZS5nZXQoKS5wcmVjaXNpb24pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1
dGVzLmNwcAppbmRleCAxMzg0YzZiMTE0ZTc5ZWJjNzJkZDI1N2NmMDU1ODIxZmM0YTQ2MzRhLi42
NmRiZWM0MGFhYzJiNzM5N2ExOTMzMTE2NmM3MmJkNjI2MTZlMDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRB
dHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcApAQCAtNTUsOCArNTUsOCBAQCBj
b25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMmIFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlczo6Z2V0KCkKICAgICAgICAgYXR0cmlidXRlcy5pc0dMRVMyQ29tcGxpYW50ID0g
dHJ1ZTsKIAogICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOwotICAgICAgICBhdHRy
aWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygi
R0xfT0VTX3RleHR1cmVfbnBvdCJfcyk7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBh
Y2tTdWJpbWFnZSA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoIkdMX0VYVF91bnBhY2tfc3Vi
aW1hZ2UiX3MpOworICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0
ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfbnBvdCIpOworICAgICAgICBh
dHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSBleHRlbnNpb25zU3RyaW5nLmNvbnRh
aW5zKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIik7CiAjZWxzZQogICAgICAgICBhdHRyaWJ1dGVz
LmlzR0xFUzJDb21wbGlhbnQgPSBmYWxzZTsKICAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0c05Q
T1RUZXh0dXJlcyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKaW5kZXggNjI5NDVkOTZlMTZmNzgyMzYwNThhNDk4NDVh
ZmI4NDAzOWIwNzUyMi4uZTUwZGNjZjVkNWRkNGJkY2YxYjhlODQ4ODEwZjQxYWE2YTYwOTQ5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhaXJQb2RzKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJB
aXJQb2RzIikpOwogCi0gICAgICAgIGlmICgobV90eXBlID09IERldmljZVR5cGU6Ok1pY3JvcGhv
bmUgfHwgbV90eXBlID09IERldmljZVR5cGU6OlNwZWFrZXIpICYmIG1fbGFiZWwuY29udGFpbnMo
YWlyUG9kcykpCisgICAgICAgIGlmICgobV90eXBlID09IERldmljZVR5cGU6Ok1pY3JvcGhvbmUg
fHwgbV90eXBlID09IERldmljZVR5cGU6OlNwZWFrZXIpICYmIG1fbGFiZWwuY29udGFpbnMoYWly
UG9kcy5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gYWlyUG9kczsKIAogICAgICAgICByZXR1
cm4gbV9sYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDIxOWJjZGU1NTExZDQ1YjRjMTM1YWZiNzMz
NmMzOGYwNmJmMWEyODEuLjdiNDY4NTVhMDUxNTc0N2Y0ZGRmYmRlNWM5MDlhYWI5ODcwNjAzZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6
OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOwogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBoZWFkZXJGaWVsZHMuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkg
ewotICAgICAgICBzaXplX3Qgc3BsaXRQb3NpdGlvbiA9IGl0LT5maW5kKCI6Iik7CisgICAgICAg
IHNpemVfdCBzcGxpdFBvc2l0aW9uID0gaXQtPmZpbmQoJzonKTsKICAgICAgICAgaWYgKHNwbGl0
UG9zaXRpb24gIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhU
VFBIZWFkZXJGaWVsZChpdC0+bGVmdChzcGxpdFBvc2l0aW9uKSwgaXQtPnN1YnN0cmluZyhzcGxp
dFBvc2l0aW9uKzEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgKytpdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcAppbmRleCBkMWU1ODYyNGFhZWUyZWNlODEyOWRkMzRlYTk4NjYyNmU2Y2Rm
MDY4Li42NmI2NmNmMjhhYjYzNGI1NDA2MjI4Yzc1ZDQwMzhhZDY2ZThmZjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVs
dGlwYXJ0SGFuZGxlPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJsTXVs
CiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5k
YXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgZm9yIChhdXRvIGhlYWRl
ciA6IHJlc3BvbnNlLmhlYWRlcnMpIHsKLSAgICAgICAgYXV0byBzcGxpdFBvc2lzdGlvbiA9IGhl
YWRlci5maW5kKCI6Iik7CisgICAgICAgIGF1dG8gc3BsaXRQb3Npc3Rpb24gPSBoZWFkZXIuZmlu
ZCgnOicpOwogICAgICAgICBpZiAoc3BsaXRQb3Npc3Rpb24gPT0gbm90Rm91bmQpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmQ2YjA5MTI4ODg1ZDdhYzk1MTM1NWMwODlm
OGE0OGU5MTdmNGM5OS4uZjNhNTViMzgxMWQ1Mjk5Mjk1ODAyYzUwOGJjNzA4YzhmOTI0ZDcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgaW50IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
RGVidWdJbmZvKGN1cmxfaW5mb3R5cGUgdHlwZSwgY2hhciogZGF0YSwgc2l6ZV90IHNpemUKICAg
ICAgICAgICAgIGhlYWRlckZpZWxkcy5yZW1vdmUoMCk7CiAKICAgICAgICAgZm9yIChhdXRvJiBo
ZWFkZXIgOiBoZWFkZXJGaWVsZHMpIHsKLSAgICAgICAgICAgIGF1dG8gcG9zID0gaGVhZGVyLmZp
bmQoIjoiKTsKKyAgICAgICAgICAgIGF1dG8gcG9zID0gaGVhZGVyLmZpbmQoJzonKTsKICAgICAg
ICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICBhdXRvIGtleSA9
IGhlYWRlci5sZWZ0KHBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICAgICAgYXV0
byB2YWx1ZSA9IGhlYWRlci5zdWJzdHJpbmcocG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNl
L1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCBiODk3ZTVjZDI3MDZiYjViYzQw
ODljNDU1ZDBmYTQ1YjJiYjk3NjcxLi41ZTQ0MDY3ZWYwYTI4YjFiODBhZWJmZjNjYWFiM2M4NGNk
NWE4ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikK
IAogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBpZiAoIXRhcmdldFN0cmlu
Zy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IHRhcmdldFN0cmluZy5yZXZl
cnNlRmluZCgiOiJfcyk7CisgICAgICAgIGF1dG8gcG9zaXRpb24gPSB0YXJnZXRTdHJpbmcucmV2
ZXJzZUZpbmQoJzonKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcubGVmdChwb3NpdGlvbik7CiAg
ICAgICAgICAgICBtX3RhcmdldFBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1aW50MTZfdD4oU3RyaW5nVmlldyB7IHRhcmdldFN0cmluZyB9LnN1YnN0cmluZyhwb3NpdGlv
biArIDEpKS52YWx1ZV9vcigwKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBXZWJEcml2ZXJTZXJ2aWNlOjp2YWxpZGF0ZWRDYXBhYmlsaXRpZXMoY29uc3QgSlNPTjo6
T2JqZWN0JgogICAgICAgICAgICAgaWYgKCF1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciB8fCAhZGVz
ZXJpYWxpemVVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcih1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcikp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICByZXN1bHQtPnNl
dFN0cmluZyhpdC0+a2V5LCB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcik7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoaXQtPmtleS5maW5kKCI6IikgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgfSBlbHNlIGlm
IChpdC0+a2V5LmZpbmQoJzonKSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwbGF0
Zm9ybVZhbGlkYXRlQ2FwYWJpbGl0eShpdC0+a2V5LCBpdC0+dmFsdWUpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShpdC0+a2V5
LCBpdC0+dmFsdWUuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggZWQ0Zjk1NWRmODc0
NDYwZDQzMDZmMmU4MjljNjU3ZjBmNDA0ZDQzNC4uZjJlZjI5MGM3MWNiNjFmNDZjNzhlYzczZTA1
MmEwZDVjM2Y5ZjA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGlj
IENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1
YWdlcykKICAgICBzaXplX3QgbGFuZ3VhZ2VzQ291bnQgPSBsYW5ndWFnZXMuc2l6ZSgpOwogCiAg
ICAgLy8gSWdub3JlICJDIiBsb2NhbGUuCi0gICAgc2l6ZV90IGNMb2NhbGVQb3NpdGlvbiA9IGxh
bmd1YWdlcy5maW5kKCJjIik7CisgICAgc2l6ZV90IGNMb2NhbGVQb3NpdGlvbiA9IGxhbmd1YWdl
cy5maW5kKCdjJyk7CiAgICAgaWYgKGNMb2NhbGVQb3NpdGlvbiAhPSBub3RGb3VuZCkKICAgICAg
ICAgbGFuZ3VhZ2VzQ291bnQtLTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4
aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCAzNDlkZDBkODdhYzcwMTI3YzlmMzYxODgxZTk5NGI4
MmE1Y2IxYjY3Li5iN2M1NGYyMWU2ODJlMjM2ODVjMDFlNTNmNjM2MjVkOTIwMWViMzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAt
NjQ1LDcgKzY0NSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VXNlckRpcmVjdG9yeVN1ZmZpeChjb25z
dCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0CiAgICAgYXV0byB1c2VyRGly
ZWN0b3J5U3VmZml4ID0gcGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5maW5kKCJ1
c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKICAgICBpZiAodXNlckRpcmVjdG9yeVN1ZmZpeCAhPSBw
YXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmVuZCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBzdWZmaXggPSB1c2VyRGlyZWN0b3J5U3VmZml4LT52YWx1ZTsKLSAgICAgICAgYXV0byBmaXJz
dFBhdGhTZXBhcmF0b3IgPSBzdWZmaXguZmluZCgiLyIpOworICAgICAgICBhdXRvIGZpcnN0UGF0
aFNlcGFyYXRvciA9IHN1ZmZpeC5maW5kKCcvJyk7CiAgICAgICAgIGlmIChmaXJzdFBhdGhTZXBh
cmF0b3IgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBzdWZmaXgudHJ1bmNhdGUoZmlyc3RQYXRo
U2VwYXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHN1ZmZpeDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCmluZGV4IGJhZGFmMTU4N2EyMDE5NzdlYjllNzRmMTQ3OTc5NDdlYjI0NzJmMWQu
LmY0YTVkNDRlMTk3MTU5ZTRhMzJhNGY4ODZmZjQ3NjgzOTJhMjUyODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51
Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAg
ICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAg
ICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgc2VhcmNoU3RyaW5nID0gZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIHNlYXJjaFN0cmlu
Zy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIw
IiwgIisiKTsKICAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7ICJodHRwczovL3d3dy5nb29nbGUu
Y29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9Owog
CiAgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29yZTo6
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5k
ZXggZGZjMGFlNTE5NjY4OTI0M2FiMGY4ZmM5MDg2NWNjOTZjNTYwZWVkNC4uMWJjM2MzZDU5OGQ0
N2RhZTE4MzQ5NzVlZjQyNjNjZTQ4ZTQ1N2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hX
aXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAgICBhdXRvIHNlYXJjaFN0
cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJpbmcu
c3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAi
X3MsICIrIl9zKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIiwgIisiKTsKICAgICBh
dXRvIHNlYXJjaFVSTCA9IFVSTCB7ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIg
KyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCiAgICAgV2ViQ29yZTo6
VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdJbXBsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3Bw
CmluZGV4IGFhZGY0ZjljZTNlNTFiZjU2ZDEwOGMzYmU0ZDA3YmY5YzNkZTM2YmQuLmE0M2RkYjg3
ZjM5YjM0ZTZiMzcwYjRhODM2MWU3NGFhMDcyZGMxODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCkBAIC0zMzQsMTMgKzMzNCwxMyBAQCBURVNUKFdU
RiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhJbnZhbGlkT2Zmc2V0KQogVEVT
VChXVEYsIFN0cmluZ0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VPbk51bGwpCiB7CiAgICAgYXV0
byByZWZlcmVuY2UgPSBzdHJpbmdGcm9tVVRGOCgiQUJDw4lFRkciKTsKLSAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3Jp
bmdBU0NJSUNhc2UobnVsbHB0cikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+
KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRy
LCAwKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCks
IHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDMpKTsKLSAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5k
SWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgNykpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShudWxscHRyLCA4KSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpu
b3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDQyKSk7
Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVy
ZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdU
Rjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3
IHsgfSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQp
LCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgMCkpOwor
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVu
Y2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgMykpOworICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgNykpOworICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgOCkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxz
aXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IHsgfSwgNDIpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihX
VEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dyB7IH0sIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwogfQogCiBURVNU
KFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZU9uRW1wdHkpCg==
</data>
<flag name="commit-queue"
          id="483646"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455601</attachid>
            <date>2022-03-23 21:09:39 -0700</date>
            <delta_ts>2022-03-23 22:08:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323210938.patch</filename>
            <type>text/plain</type>
            <size>59230</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMTUxYTRlNjAzOWFkM2RmMTFmNjk5
OGEyNTc2NTY1OTIxM2FiMjcuLjViNGZhYmVmMGM1NmYzMTgyMzAwM2QxOGFiODEzMWIwOTFhY2Yw
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcmVwYXJlIEpTQyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0
cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ4N2Y0OTMwMmZiZmFiYWFhMjQ4YmZkYjY1
YjIxYzQ2Nzk2N2YzMy4uN2E1ZjEzNTA1YWM2Y2Q3ODk0NzMwYmY5MGQxNDFmYjI4NDU5MTc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJzZUZpbmQo
KSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRh
YmFzZU5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbik6CisgICAg
ICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
bGFiZWwgY29uc3QpOgorCiAyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUHJlcGFyZSBKU0MgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNo
YXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNTk1MzhlYjBjNmFlZDIzMmFl
OWM1OWRjMTc0YjM5YjRjMDYwY2U5Li5iOTIwMTMzNzFkZGIyNjdjMWEwMzU4ZmMyMGFiNmI3NmZj
Y2UwYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJz
ZUZpbmQoKSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBv
ZiBhIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUp
OgorCiAyMDIyLTAzLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgQmlnU3VyKyBEZWJ1ZyB3azIgRVdTIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhl
LWlucHV0LXN0cmVhbS9xdWlya3Mud2luZG93Lmh0bWwgaXMgYSBmbGFreSBjcmFzaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1ZjQxNDBj
MmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZpbmQoKSAv
IHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGlu
c3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAyMDIyLTAz
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9tZSBsaW5r
IG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KaW5kZXggZjEyYTJjNDk1M2YwMDMyZGZiNGI3MmY2OGZmODBmZWRkYjY5MDM1NC4uZDNh
ZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgc3RhdGljIFN0cnVjdEhhbmRs
ZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyB2YWx1ZVdpdGg8Rm9vPjpjb250ZXh0OiBtZXRo
b2QuCiAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlS
ZXR1cm5UeXBlKG1ldGhvZCkpOwotICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0cmluZyB7IHR5cGUuZ2V0KCkgfSk7CisgICAgICAg
IFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQodHlw
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFnSGFuZGxlciYgaGFuZGxlciA9IGl0
ZXItPnZhbHVlOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3RhdGljIFN0cnVjdFRhZ0hhbmRsZXIq
IGhhbmRlckZvclN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNvZGVkVHlwZSkKIAogICAgIHN0YXRp
YyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFw
KCk7CiAKLSAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJz
LT5maW5kKFN0cmluZyB7IGVuY29kZWRUeXBlIH0pOworICAgIFN0cnVjdEhhbmRsZXJzOjppdGVy
YXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQoZW5jb2RlZFR5cGUpOwogICAgIGlmIChp
dGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuICZpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KaW5kZXggZjgyMWRmOGUzZWJlZDU3ZjU0MGNkMmYwMWQ2NGVjOTZkY2ZhODZjZC4uOTZlNDQ3
ODg3MGNkODFhNTg5OTdkMDJkYTZmYTRmYmEzNDZhZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgSlNDOjpK
U09iamVjdCogYWxsb2NhdGVDb25zdHJ1Y3RvckZvckN1c3RvbUNsYXNzKEpTQ29udGV4dCAqY29u
dGV4dCwgY29ucwogICAgICAgICBmb3JFYWNoTWV0aG9kSW5DbGFzcyhjdXJyZW50Q2xhc3MsIF4o
TWV0aG9kIG1ldGhvZCkgewogICAgICAgICAgICAgU0VMIHNlbGVjdG9yID0gbWV0aG9kX2dldE5h
bWUobWV0aG9kKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBzZWxfZ2V0TmFtZShz
ZWxlY3Rvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBpbml0VGFibGUuZmluZChTdHJpbmcg
eyBuYW1lIH0pOworICAgICAgICAgICAgYXV0byBpdGVyID0gaW5pdFRhYmxlLmZpbmQobmFtZSk7
CiAKICAgICAgICAgICAgIGlmIChpdGVyID09IGluaXRUYWJsZS5lbmQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGMyODc3MzZkNzFl
N2ViOWU4ODU1OGZmY2QwYjcwNDUyNWJmZmNmOTcuLjMwYWNhZjMzNDU4MDUzNzRkODFkYmIwYjFj
NWQ0OWZmN2FmMGE2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsK
IAotICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5z
cGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsg
dGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIl9zKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CisgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJ
bnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcg
eyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CiAKICAgICBJbmplY3RlZFNjcmlwdDo6RXhlY3V0ZU9wdGlvbnMgb3B0aW9uczsKICAgICBv
cHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYzg2N2VlZDI1YTlmNTgzN2I5
N2ZjMzdlYTExNGRkZGMyY2I2NGJmMy4uYmRkOTU5Y2VjNzkxZTQ0NzM2YjE3ZDRiZTU5NmEwYzhm
NGViNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIGR1bXBKSVRNZW1vcnkoY29u
c3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoZmQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgcGF0aCB7
IE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkgfTsKLSAgICAgICAgICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCIlcGlkIl9zLCBTdHJpbmc6Om51bWJlcihnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpKTsKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIlcGlkIiwgU3RyaW5n
OjpudW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiAgICAgICAgICAgICAgICAgZmQgPSBv
cGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIE9f
Q1JFQVQgfCBPX1RSVU5DIHwgT19BUFBFTkQgfCBPX1dST05MWSB8IE9fRVhMT0NLIHwgT19OT05C
TE9DSywgMDY2Nik7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmQgIT0gLTEpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAppbmRleCBkMjEzNDM5NjQ3MzYwZTljYjViNWQ5Mzk2YWNhYTQxMmRj
OGRjODRlLi44Y2QwZDVlOWM0NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5k
ZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAgICAgICAgIHJldHVy
biBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRl
eHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFj
dFNvdXJjZSk7Ci0gICAgYXV0byBub3RBRnVuY3Rpb25JbmRleCA9IG9yaWdpbmFsTWVzc2FnZS5y
ZXZlcnNlRmluZCgiaXMgbm90IGEgZnVuY3Rpb24iX3MpOworICAgIGF1dG8gbm90QUZ1bmN0aW9u
SW5kZXggPSBvcmlnaW5hbE1lc3NhZ2UucmV2ZXJzZUZpbmQoImlzIG5vdCBhIGZ1bmN0aW9uIik7
CiAgICAgUkVMRUFTRV9BU1NFUlQobm90QUZ1bmN0aW9uSW5kZXggIT0gbm90Rm91bmQpOwogICAg
IFN0cmluZ1ZpZXcgZGlzcGxheVZhbHVlOwogICAgIGlmIChvcmlnaW5hbE1lc3NhZ2UuaXM4Qml0
KCkpIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlcklu
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvCiAgICAgICAg
IHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91
bmRFeGFjdFNvdXJjZSk7Ci0gICAgYXV0byBpbkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmlu
ZCgiaW4iX3MpOworICAgIGF1dG8gaW5JbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImlu
Iik7CiAgICAgaWYgKGluSW5kZXggPT0gbm90Rm91bmQpIHsKICAgICAgICAgLy8gVGhpcyBzaG91
bGQgYmFzaWNhbGx5IG5ldmVyIGhhcHBlbiwgc2luY2UgSlMgY29kZSBtdXN0IHVzZSB0aGUgbGl0
ZXJhbAogICAgICAgICAvLyB0ZXh0ICJpbiIgZm9yIHRoZSBgaW5gIG9wZXJhdGlvbi4gSG93ZXZl
ciwgaWYgd2UgZmFpbCB0byBmaW5kICJpbiIKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbmxpbmUgU3Ry
aW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjbwogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJy
b3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1cnJlbmNl
ID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gaW5zdGFuY2Vv
ZkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiaW5zdGFuY2VvZiJfcyk7CisgICAgYXV0
byBpbnN0YW5jZW9mSW5kZXggPSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJpbnN0YW5jZW9mIik7
CiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gU3ltYm9sLmhhc0luc3RhbmNlIGZ1bmN0aW9u
IGlzIGRpcmVjdGx5IGNhbGxlZC4KICAgICBpZiAoaW5zdGFuY2VvZkluZGV4ID09IG5vdEZvdW5k
KQogICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXNzYWdlOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0
YXRpYyBTdHJpbmcgaW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNZXNzYWdlLCBjb25zCiAgICAgaWYgKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5j
ZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRBcHByb3hp
bWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCk7CiAKLSAgICBhdXRv
IGV4dGVuZHNJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiX3MpOworICAg
IGF1dG8gZXh0ZW5kc0luZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiZXh0ZW5kcyIpOwog
ICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRl
bmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5h
bE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRleHQsICInKSIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCA1ZmFiMWI4
MzA1M2MzODJlYmEwODJhOTRhZDhlNjNkNjlmNTc0NTk0Li43ZTFiY2UyOWJhZmVmZmJjYTY0ZmM1
NDVlYTRhYjg4YzhlZTFmZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgdm9pZCBUeXBlUHJvZmlsZXI6Omxv
Z1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24sIFZNJiB2bSkKIAog
ICAgIGRhdGFMb2coIlx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IFR5cGVQ
cm9maWxlclJldHVyblN0YXRlbWVudCA/ICJbUmV0dXJuIFN0YXRlbWVudF0iIDogIltOb3JtYWwg
U3RhdGVtZW50XSIsICJcbiIpOwogCi0gICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIl9z
LCAiXG5cdFx0Il9zKSwgIlxuIik7CisgICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIiwg
IlxuXHRcdCIpLCAiXG4iKTsKICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKLSAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iX3MsICJcblx0XHQiX3MpLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwogfQogCiB2
b2lkIFR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNzMzZjk4
MTJmMThlOGY2MThlNGVhOTA3ZjkxY2IyNTNmN2MwOGVjZC4uZDg4YmEyOGMzZjMwOTI3MmUzZGEy
ZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3Bl
cnR5SGFzaCgpCiAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICBmb3IgKGF1dG8mIGtleSA6
IG1fZmllbGRzKSB7CiAgICAgICAgIFN0cmluZyBwcm9wZXJ0eSA9IGtleS5nZXQoKTsKLSAgICAg
ICAgcHJvcGVydHkucmVwbGFjZSgiOiJfcywgIlxcOiJfcyk7IC8vIEVuc3VyZSB0aGF0IGhhc2go
eyJmb286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVzZSB3ZSdyZSB1
c2luZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwgY2hhcmFjdGVy
cyBpbiBmaWVsZCBuYW1lcyBpbiBKUy4KKyAgICAgICAgcHJvcGVydHkucmVwbGFjZSgiOiIsICJc
XDoiKTsgLy8gRW5zdXJlIHRoYXQgaGFzaCh7ImZvbzoiLCAiYmFyIn0pICE9IGhhc2goeyJmb28i
LCAiOmJhciJ9KSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGNvbG9ucyBhcyBhIHNlcGFyYXRvciBhbmQg
Y29sb25zIGFyZSBsZWdhbCBjaGFyYWN0ZXJzIGluIGZpZWxkIG5hbWVzIGluIEpTLgogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwcm9wZXJ0eSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA5NTY4NmJhMTkyMGJi
MGViMTI3NDA0ZjEzOTFiYjAyZjViYjE2MDg5Li41ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJjOTMx
NzVmZjc2ZmNiYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcm
IG5ldwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
U3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9yaWdDb2RlLnByb3ZpZGVyKCktPnNvdXJjZSgpLnRv
U3RyaW5nKCk7CiAgICAgdW5zaWduZWQgb3JpZ1N0YXJ0ID0gb3JpZ0NvZGUuc3RhcnRPZmZzZXQo
KTsKLSAgICB1bnNpZ25lZCBvcmlnRnVuY3Rpb25TdGFydCA9IG9yaWdQcm92aWRlclN0ci5yZXZl
cnNlRmluZCgiZnVuY3Rpb24iX3MsIG9yaWdTdGFydCk7CisgICAgdW5zaWduZWQgb3JpZ0Z1bmN0
aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ1N0
YXJ0KTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdQcm92aWRlclN0ci5maW5k
KCd7Jywgb3JpZ1N0YXJ0KTsKICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VT
dGFydCAtIG9yaWdGdW5jdGlvblN0YXJ0OwogICAgIFN0cmluZyBvcmlnSGVhZGVyID0gb3JpZ1By
b3ZpZGVyU3RyLnN1YnN0cmluZyhvcmlnRnVuY3Rpb25TdGFydCwgaGVhZGVyTGVuZ3RoKTsKQEAg
LTE0Nyw4ICsxNDcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0
IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcmIG5ldwogICAgIGluZm8ubGluZUNv
dW50ID0gMTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93
LgogICAgIGluZm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8g
RmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8u
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgiKCIpOwotICAgIGlu
Zm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgieyIpOwor
ICAgIGluZm8ucGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcp
OworICAgIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmlu
ZCgneycpOwogICAgIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3Ry
Lmxlbmd0aCgpIC0gMTsKIAogICAgIGluZm8uc291cmNlQ29kZSA9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4
ZDBkYzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRh
aW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hh
cmFjdGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0
cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAg
c2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy5maW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9
CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsK
KyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRj
aEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZp
bmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5n
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRm
OWJhYjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0
ZTRiNmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2
IEBAIGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25z
dCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2Vh
cmNoTGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJz
LCAwLCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1
bnNpZ25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWdu
ZWQgbWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdM
ZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3Ry
aW5nTGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVu
Z3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgp
KSB7Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0Zp
bmQuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgp
OwotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291
cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zm
c2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1l
IFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlw
ZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJh
Y3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0
ZQogICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+
KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29u
c3QgU3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQg
bmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9
PSAxKSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5l
ZWRsZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJh
Y3RlcnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0K
LSAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0Owot
ICAgIGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxl
LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7
Ci0KLSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQs
IG5lZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3Ro
KTsKLX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQg
aW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVz
ZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUg
dGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2Uy
NjFhMjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFj
NWNjYWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIz
ICs5MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJ
bXBsOjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51
bGwgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5n
KSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0g
bWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hT
dHJpbmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBz
dHJpbmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAg
IGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2
KClbMF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3Ry
aW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNo
YXJhY3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigp
LCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYg
KG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAg
ICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3Ro
IGlzIGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmlu
ZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5n
dGgoKSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5n
LT5jaGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRj
aFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYo
KSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsK
IAotICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sg
Zm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtF
TFkoIW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJu
IGZpbmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3Ry
aW5nKSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNl
KCp0aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNo
U3RyaW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAq
bWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90
IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgp
CkBAIC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZl
cnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0
dXJuIGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVy
c2VGaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8v
IENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYg
KCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVu
Z3RoKCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGlu
ZGV4LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6
OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAg
ICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgog
ICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwg
KCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsK
KyAgICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxl
bmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJz
ZUZpbmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsK
ICAgICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4K
QEAgLTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0
cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
OCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hM
ZW5ndGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3Ro
KTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
IHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgo
KSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5k
ZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hT
dHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0
ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1h
dGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBp
bmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5u
ZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1
YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBj
b25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5
ICsxNDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBh
dHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7
CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQog
ewogICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKIAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAg
ICB1bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBh
dHRlcm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWdu
ZWQgcmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21l
bnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAv
LyBDb3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQo
cGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRj
aENvdW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9
Ci0gICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBk
byBhbnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50
ICogcGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBN
YXhMZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsx
NDQyLDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwq
IHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNo
Q291bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3
IGRhdGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50
TGVuZ3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0
ID0gMDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1l
bnRJczhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNl
bWVudElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQg
Y2FzZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAg
ICAgLy8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3
ICsxNDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1w
bCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21l
bnRMZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVu
dExlbmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJh
Y3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3Ry
TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAg
ICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAg
ICAgICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAog
ICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxh
Y2VtZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCBy
ZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNl
dCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMo
ZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOwor
ICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQu
Y2hhcmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zm
c2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVu
dEVuZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDhkODBm
Nzg3NzgzZDQzYzU2MmY4ZTBjZDNlMzY3NWI5NzZiYTgyNTkuLjg1ZDdjNGVjNjhhZTQ1MDcxN2Fh
OTZlMGJiYWU3OTNiMTc0NzIzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzIs
MTYgKzQzMiwxMyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
LSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBs
JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gTWF4TGVuZ3Ro
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0lt
cGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFN0cmluZ0ltcGwmKSBjb25zdDsKQEAgLTQ2Niw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBj
aGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJl
cGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxhY2VtZW50
KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50
TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmlu
Z1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9v
bCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uYTcz
ZGYwNTA5ZWU1MWZkZWUwMjcwNWRiYmMzZmNiMDEzZTU4YzQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTEwOTksNiArMTA5OSwxNDIgQEAgaW5saW5lIGJvb2wgaGFzVW5wYWlyZWRT
dXJyb2dhdGUoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxp
bmUgc2l6ZV90IGZpbmRDb21tb24oU3RyaW5nVmlldyBoYXlzdGFjaywgU3RyaW5nVmlldyBuZWVk
bGUsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRs
ZS5sZW5ndGgoKTsKKworICAgIGlmIChuZWVkbGVMZW5ndGggPT0gMSkgeworICAgICAgICBpZiAo
aGF5c3RhY2suaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNr
LmNoYXJhY3RlcnM4KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2su
bGVuZ3RoKCksIG5lZWRsZVswXSwgc3RhcnQpOworICAgIH0KKworICAgIGlmIChzdGFydCA+IGhh
eXN0YWNrLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoIW5l
ZWRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0YXJ0OworCisgICAgdW5zaWduZWQgc2VhcmNo
TGVuZ3RoID0gaGF5c3RhY2subGVuZ3RoKCkgLSBzdGFydDsKKyAgICBpZiAobmVlZGxlTGVuZ3Ro
ID4gc2VhcmNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoaGF5
c3RhY2suaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVk
bGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBpZiAobmVlZGxlLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZmluZElu
bmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgp
LCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgpOworCisgICAgcmV0dXJuIGZpbmRJ
bm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2
KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Cit9CisKK2lubGluZSBzaXpl
X3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc291cmNlLCBTdHJpbmdWaWV3IHN0
cmluZ1RvRmluZCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpCit7CisgICAgdW5zaWduZWQgc291cmNl
U3RyaW5nTGVuZ3RoID0gc291cmNlLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gc3RyaW5nVG9GaW5kLmxlbmd0aCgpOworICAgIGlmICghbWF0Y2hMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGQ6Om1pbihzdGFydE9mZnNldCwgc291cmNlU3RyaW5nTGVuZ3RoKTsKKworICAg
IC8vIENoZWNrIHN0YXJ0T2Zmc2V0ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgorICAgIGlm
IChzdGFydE9mZnNldCA+IHNvdXJjZVN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IHNvdXJjZVN0cmluZ0xlbmd0aCAtIHN0
YXJ0T2Zmc2V0OworICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAg
cmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgeworICAgICAgICBp
ZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4
KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9G
aW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisgICAgfQorCisgICAgaWYgKHN0cmluZ1RvRmluZC5pczhCaXQoKSkKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1Rv
RmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmlu
Z1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQoraW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmQoU3RyaW5n
VmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNp
emVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNpemVfdCBTdHJp
bmc6OnJldmVyc2VGaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcsIHN0YXJ0
KSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0
T2Zmc2V0KSAhPSBub3RGb3VuZDsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KFN0cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQoreworICAgIGlmICht
X2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2Vt
ZW50KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVw
bGFjZShzdGFydCwgbGVuZ3RoLCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhp
czsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5n
LCB1bnNpZ25lZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJp
bmcsIHN0YXJ0KTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5n
LmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOworfQorCitpbmxpbmUgc2l6ZV90IEF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmlu
Zzo6Y29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3Ry
aW5nLmNvbnRhaW5zKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKaW5kZXggNDFlZDM1Y2NhNmU5ZjcxZjI2ZWRkYmQzNWE3OGFlNmFlNjQ3ODA4MS4uNWNkMGE3
YTM5NGNlYTk3YTA5ODA1NTQzYWJjZmVmYTNmMjRkMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC0xNjQsMTggKzE2NCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCkpIDogbm90Rm91
bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLmltcGwoKSwgc3RhcnRPZmZzZXQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXpl
X3QgZmluZChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1
bnNpZ25lZCBzdGFydCkgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkg
OiBub3RGb3VuZDsgfQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3Qg
aW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KICAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjaGFyYWN0ZXIsIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQor
ICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IE1heExl
bmd0aCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7
CkBAIC0xODQsOSArMTgzLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmlu
ZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQot
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywg
dW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMo
U3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CiAKICAgICBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29s
IHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CkBAIC0yMTEsNyArMjEwLDcgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1l
bnQpOwogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVwbGFjZShjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFN0cmluZ1ZpZXcg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7
CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdp
dGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0
ZXJDb3VudF0pOwogCkBAIC01MDcsMjAgKzUwNiw2IEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6
cmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYgKG1faW1w
bCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldC5pbXBsKCksIHJlcGxh
Y2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgU3RyaW5nJiBT
dHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudCkKLXsKLSAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdB
WVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQogewogICAgIGlmICht
X2ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IDZjZGY1NjhlOTRjNjUxMjNjNTU3ODk2Mjk3NjMwZmRjMTk2NTI4MDUu
LjkzNmE3ZTQzMDU2YzQ1NWUyOWIyNTUwZmI0MDEwYmVlZWMzYjM1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xNzYs
NyArMTc2LDcgQEAgUmVmUHRyPERPTUZvcm1EYXRhPiBGZXRjaEJvZHlDb25zdW1lcjo6cGFja2Fn
ZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKICAgICAgICAgaWYgKCFtaW1lVHlw
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRhcnki
X3MpOworICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZp
bmQoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbWltZVR5cGUtPnBh
cmFtZXRlcnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzOWMxNDdk
YWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIzLi4yZmFmM2U5NWQzMWM5ODlmY2UxMmUw
NTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURh
dGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWROYW1lKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0gZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5y
ZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSIsICIuIik7CiAK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKG5hbWUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNl
cy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5o
CmluZGV4IGI3NWMyNzMyMDFiMDM5NmE1MGRjODQ0NDIxNmQwZDY0MWZkYmRkNTcuLjRhNTFiNTY5
ZWI0OGJhNGJkN2I4Mjk2MGU3YWRiZmMzYzZiZDVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFBBTCB7CiAvLyBTZWUgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
UGVyY2VudC1lbmNvZGluZyNOb24tc3RhbmRhcmRfaW1wbGVtZW50YXRpb25zPi4KIHN0cnVjdCBV
bmljb2RlMTZCaXRFc2NhcGVTZXF1ZW5jZSB7CiAgICAgZW51bSB7IFNlcXVlbmNlU2l6ZSA9IDYg
fTsgLy8gZS5nLiAldTI2QzQKLSAgICBzdGF0aWMgc2l6ZV90IGZpbmRJblN0cmluZyhTdHJpbmdW
aWV3IHN0cmluZywgc2l6ZV90IHN0YXJ0UG9zaXRpb24pIHsgcmV0dXJuIHN0cmluZy5maW5kKFN0
cmluZ1ZpZXcoIiV1IiksIHN0YXJ0UG9zaXRpb24pOyB9CisgICAgc3RhdGljIHNpemVfdCBmaW5k
SW5TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBzdGFydFBvc2l0aW9uKSB7IHJldHVy
biBzdHJpbmcuZmluZCgiJXUiLCBzdGFydFBvc2l0aW9uKTsgfQogICAgIHN0YXRpYyBzaXplX3Qg
ZmluZEVuZE9mUnVuKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgc2l6
ZV90IGVuZFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgc2l6ZV90IHJ1bkVuZCA9IHN0YXJ0UG9z
aXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRDb2RlY1dp
bi5jcHAKaW5kZXggZTdmNGU5ZGMxODM0ZDBmNjM5YzZiYWJmNjk2NTYyMDZiODc2NzQwYy4uNmYx
OGYyYjBkNjgyYmViMThjZDZhMTMxOTY4MjNlYWIzYTJkNjIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIExhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgIGkgPSBj
b2RlUGFnZUNoYXJzZXRzKCkuc2V0KGNwSW5mby51aUNvZGVQYWdlLCBuYW1lKS5pdGVyYXRvcjsK
ICAgICAgICAgfQogICAgICAgICBpZiAoaSAhPSBjb2RlUGFnZUNoYXJzZXRzKCkuZW5kKCkpIHsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDaGFyc2V0SW5mbz46Oml0ZXJhdG9yIGogPSBr
bm93bkNoYXJzZXRzKCkuZmluZChTdHJpbmcoaS0+dmFsdWUuZGF0YSgpLCBpLT52YWx1ZS5sZW5n
dGgoKSkpOworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0
b3IgaiA9IGtub3duQ2hhcnNldHMoKS5maW5kKFN0cmluZ1ZpZXcgeyBpLT52YWx1ZS5kYXRhKCks
IGktPnZhbHVlLmxlbmd0aCgpIH0pOwogICAgICAgICAgICAgQVNTRVJUKGogIT0ga25vd25DaGFy
c2V0cygpLmVuZCgpKTsKICAgICAgICAgICAgIENoYXJzZXRJbmZvJiBpbmZvID0gai0+dmFsdWU7
CiAgICAgICAgICAgICBpbmZvLm1fbmFtZSA9IGktPnZhbHVlLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQ1NzdlYTY2ZWFhYTAzMTcy
MDI5NTUzMGIxYWMwZDU5MzgzNmYwZmIuLjJmMTBjZWQ4NDEzMWVkN2U5ZGQxODdhMzQwMWNmZGNk
ZWM0YmE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVD
b21tb24oY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29k
ZSBlbHNld2hlcmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlh
IHRoZSBrZXlib2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGlu
Z3MgY29taW5nIGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFs
dWUgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBu
b3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJfcywgIlxuIl9zKTsKKyAgICBub3JtYWxpemVk
VmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOwogICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNl
KCdccicsICdcbicpOwogCiAgICAgLy8gUmV0dXJuIGVhcmx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIHRoZSBjYXJldCBvciB0cmlnZ2VyIG90aGVyIHNpZGUgZWZmZWN0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDg2NDNhODQ3
Nzc2NDU5MzMxZjQzZWEyOThmZThlZjRmMDg0MWYwYTIuLmE3NWI2M2EzYjVkZmViOWY2NzI4OTI4
ZWVmY2IzNjNhZmY4NmY0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVTZXBhcmF0b3IoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjovLyIpKTsKIAotICAgIHNpemVfdCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2No
ZW1lU2VwYXJhdG9yKTsKKyAgICBzaXplX3Qgc2NoZW1lRW5kUG9zID0gcGF0dGVybi5maW5kKHNj
aGVtZVNlcGFyYXRvci5nZXQoKSk7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9PSBub3RGb3VuZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCA0YTllOGZhZTAzN2VlZjQwZGVkOWYyY2VhZjg3MmZhMTU4YTQzYWZiLi5kY2Nh
ODhhZjlmZTVhYjhlNDJlMGQ5YWI0ODkyN2E0NGFlNmFkY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVjaXNpb25zTWF0Y2goUGxhdGZvcm1HTE9iamVjdCB2ZXJ0ZXhTaGFk
ZXIsIFBsYQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGZyYWdtZW50RW50cnkudW5p
Zm9ybU1hcCkgewogICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWFwcGVkTmFtZSA9IGVudHJ5
LnZhbHVlLmdldCgpLm1hcHBlZE5hbWU7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHZlcnRleFN5bWJv
bCA9IHZlcnRleFN5bWJvbFByZWNpc2lvbk1hcC5maW5kKFN0cmluZyhtYXBwZWROYW1lLmNfc3Ry
KCksIG1hcHBlZE5hbWUubGVuZ3RoKCkpKTsKKyAgICAgICAgY29uc3QgYXV0byYgdmVydGV4U3lt
Ym9sID0gdmVydGV4U3ltYm9sUHJlY2lzaW9uTWFwLmZpbmQoU3RyaW5nVmlldyB7IG1hcHBlZE5h
bWUuY19zdHIoKSwgbWFwcGVkTmFtZS5sZW5ndGgoKSB9KTsKICAgICAgICAgaWYgKHZlcnRleFN5
bWJvbCAhPSB2ZXJ0ZXhTeW1ib2xQcmVjaXNpb25NYXAuZW5kKCkgJiYgdmVydGV4U3ltYm9sLT52
YWx1ZSAhPSBlbnRyeS52YWx1ZS5nZXQoKS5wcmVjaXNpb24pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1
dGVzLmNwcAppbmRleCAxMzg0YzZiMTE0ZTc5ZWJjNzJkZDI1N2NmMDU1ODIxZmM0YTQ2MzRhLi42
NmRiZWM0MGFhYzJiNzM5N2ExOTMzMTE2NmM3MmJkNjI2MTZlMDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRB
dHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcApAQCAtNTUsOCArNTUsOCBAQCBj
b25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMmIFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlczo6Z2V0KCkKICAgICAgICAgYXR0cmlidXRlcy5pc0dMRVMyQ29tcGxpYW50ID0g
dHJ1ZTsKIAogICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOwotICAgICAgICBhdHRy
aWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygi
R0xfT0VTX3RleHR1cmVfbnBvdCJfcyk7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBh
Y2tTdWJpbWFnZSA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoIkdMX0VYVF91bnBhY2tfc3Vi
aW1hZ2UiX3MpOworICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0
ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfbnBvdCIpOworICAgICAgICBh
dHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSBleHRlbnNpb25zU3RyaW5nLmNvbnRh
aW5zKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIik7CiAjZWxzZQogICAgICAgICBhdHRyaWJ1dGVz
LmlzR0xFUzJDb21wbGlhbnQgPSBmYWxzZTsKICAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0c05Q
T1RUZXh0dXJlcyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKaW5kZXggNjI5NDVkOTZlMTZmNzgyMzYwNThhNDk4NDVh
ZmI4NDAzOWIwNzUyMi4uZTUwZGNjZjVkNWRkNGJkY2YxYjhlODQ4ODEwZjQxYWE2YTYwOTQ5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhaXJQb2RzKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJB
aXJQb2RzIikpOwogCi0gICAgICAgIGlmICgobV90eXBlID09IERldmljZVR5cGU6Ok1pY3JvcGhv
bmUgfHwgbV90eXBlID09IERldmljZVR5cGU6OlNwZWFrZXIpICYmIG1fbGFiZWwuY29udGFpbnMo
YWlyUG9kcykpCisgICAgICAgIGlmICgobV90eXBlID09IERldmljZVR5cGU6Ok1pY3JvcGhvbmUg
fHwgbV90eXBlID09IERldmljZVR5cGU6OlNwZWFrZXIpICYmIG1fbGFiZWwuY29udGFpbnMoYWly
UG9kcy5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gYWlyUG9kczsKIAogICAgICAgICByZXR1
cm4gbV9sYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKaW5kZXgg
YjY2Mjk2MGNkMGFhM2Y2M2RjNmM3OGE0N2UyOGNjMjAxODZlMzU1OS4uMzYzY2IyZGU0MTdjNGY4
NmJjNjZmZmYzNGY0MTI0NDI4MWVjZmU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ3VybC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBTdHJpbmcgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnBhcnNlUmVhbG0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAg
ICBTdHJpbmcgcmVhbG07CiAgICAgYXV0byBhdXRoSGVhZGVyID0gcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKHJlc3BvbnNlLmlzVW5hdXRob3JpemVkKCkgPyB3d3dBdXRoZW50aWNhdGUgOiBwcm94
eUF1dGhlbnRpY2F0ZSk7Ci0gICAgYXV0byByZWFsbVBvcyA9IGF1dGhIZWFkZXIuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHJlYWxtU3RyaW5nKTsKKyAgICBhdXRvIHJlYWxtUG9zID0gYXV0aEhlYWRl
ci5maW5kSWdub3JpbmdBU0NJSUNhc2UocmVhbG1TdHJpbmcuZ2V0KCkpOwogICAgIGlmIChyZWFs
bVBvcyAhPSBub3RGb3VuZCkgewogICAgICAgICByZWFsbSA9IGF1dGhIZWFkZXIuc3Vic3RyaW5n
KHJlYWxtUG9zICsgcmVhbG1TdHJpbmcuZ2V0KCkubGVuZ3RoKCkpOwogICAgICAgICByZWFsbSA9
IHJlYWxtLmxlZnQocmVhbG0uZmluZCgnLCcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDIxOWJjZGU1
NTExZDQ1YjRjMTM1YWZiNzMzNmMzOGYwNmJmMWEyODEuLjdiNDY4NTVhMDUxNTc0N2Y0ZGRmYmRl
NWM5MDlhYWI5ODcwNjAzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGJv
b2wgQ3VybENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogICAgIFZlY3RvcjxTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOwogICAgIFZlY3Rv
cjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJGaWVsZHMuZW5kKCk7CiAgICAg
d2hpbGUgKGl0ICE9IGVuZCkgewotICAgICAgICBzaXplX3Qgc3BsaXRQb3NpdGlvbiA9IGl0LT5m
aW5kKCI6Iik7CisgICAgICAgIHNpemVfdCBzcGxpdFBvc2l0aW9uID0gaXQtPmZpbmQoJzonKTsK
ICAgICAgICAgaWYgKHNwbGl0UG9zaXRpb24gIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBtX2Nh
Y2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+bGVmdChzcGxpdFBvc2l0aW9uKSwg
aXQtPnN1YnN0cmluZyhzcGxpdFBvc2l0aW9uKzEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAg
ICAgKytpdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBkMWU1ODYyNGFhZWUyZWNlODEy
OWRkMzRlYTk4NjYyNmU2Y2RmMDY4Li42NmI2NmNmMjhhYjYzNGI1NDA2MjI4Yzc1ZDQwMzhhZDY2
ZThmZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxlPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVh
dGVJZk5lZWRlZChDdXJsTXVsCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhh
bmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgZm9yIChhdXRvIGhlYWRlciA6IHJlc3BvbnNlLmhlYWRlcnMpIHsKLSAgICAgICAgYXV0byBz
cGxpdFBvc2lzdGlvbiA9IGhlYWRlci5maW5kKCI6Iik7CisgICAgICAgIGF1dG8gc3BsaXRQb3Np
c3Rpb24gPSBoZWFkZXIuZmluZCgnOicpOwogICAgICAgICBpZiAoc3BsaXRQb3Npc3Rpb24gPT0g
bm90Rm91bmQpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmQ2YjA5MTI4
ODg1ZDdhYzk1MTM1NWMwODlmOGE0OGU5MTdmNGM5OS4uZjNhNTViMzgxMWQ1Mjk5Mjk1ODAyYzUw
OGJjNzA4YzhmOTI0ZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgaW50IEN1cmxS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGVidWdJbmZvKGN1cmxfaW5mb3R5cGUgdHlwZSwgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUKICAgICAgICAgICAgIGhlYWRlckZpZWxkcy5yZW1vdmUoMCk7CiAKICAg
ICAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiBoZWFkZXJGaWVsZHMpIHsKLSAgICAgICAgICAgIGF1
dG8gcG9zID0gaGVhZGVyLmZpbmQoIjoiKTsKKyAgICAgICAgICAgIGF1dG8gcG9zID0gaGVhZGVy
LmZpbmQoJzonKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGtleSA9IGhlYWRlci5sZWZ0KHBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CiAg
ICAgICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGhlYWRlci5zdWJzdHJpbmcocG9zICsgMSkuc3Ry
aXBXaGl0ZVNwYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCBi
ODk3ZTVjZDI3MDZiYjViYzQwODljNDU1ZDBmYTQ1YjJiYjk3NjcxLi41ZTQ0MDY3ZWYwYTI4YjFi
ODBhZWJmZjNjYWFiM2M4NGNkNWE4ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dl
YkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vydmlj
ZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBh
cmdjLCBjaGFyKiogYXJndikKIAogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAg
ICBpZiAoIXRhcmdldFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9
IHRhcmdldFN0cmluZy5yZXZlcnNlRmluZCgiOiJfcyk7CisgICAgICAgIGF1dG8gcG9zaXRpb24g
PSB0YXJnZXRTdHJpbmcucmV2ZXJzZUZpbmQoJzonKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcu
bGVmdChwb3NpdGlvbik7CiAgICAgICAgICAgICBtX3RhcmdldFBvcnQgPSBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IHRhcmdldFN0cmluZyB9
LnN1YnN0cmluZyhwb3NpdGlvbiArIDEpKS52YWx1ZV9vcigwKTsKQEAgLTYxNyw3ICs2MTcsNyBA
QCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBXZWJEcml2ZXJTZXJ2aWNlOjp2YWxpZGF0ZWRDYXBhYmls
aXRpZXMoY29uc3QgSlNPTjo6T2JqZWN0JgogICAgICAgICAgICAgaWYgKCF1bmhhbmRsZWRQcm9t
cHRCZWhhdmlvciB8fCAhZGVzZXJpYWxpemVVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcih1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgICAgICByZXN1bHQtPnNldFN0cmluZyhpdC0+a2V5LCB1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
cik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXQtPmtleS5maW5kKCI6IikgIT0gbm90Rm91bmQpIHsK
KyAgICAgICAgfSBlbHNlIGlmIChpdC0+a2V5LmZpbmQoJzonKSAhPSBub3RGb3VuZCkgewogICAg
ICAgICAgICAgaWYgKCFwbGF0Zm9ybVZhbGlkYXRlQ2FwYWJpbGl0eShpdC0+a2V5LCBpdC0+dmFs
dWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgcmVzdWx0
LT5zZXRWYWx1ZShpdC0+a2V5LCBpdC0+dmFsdWUuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAK
aW5kZXggZWQ0Zjk1NWRmODc0NDYwZDQzMDZmMmU4MjljNjU3ZjBmNDA0ZDQzNC4uZjJlZjI5MGM3
MWNiNjFmNDZjNzhlYzczZTA1MmEwZDVjM2Y5ZjA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgc3RhdGljIENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGxhbmd1YWdlcykKICAgICBzaXplX3QgbGFuZ3VhZ2VzQ291bnQgPSBsYW5n
dWFnZXMuc2l6ZSgpOwogCiAgICAgLy8gSWdub3JlICJDIiBsb2NhbGUuCi0gICAgc2l6ZV90IGNM
b2NhbGVQb3NpdGlvbiA9IGxhbmd1YWdlcy5maW5kKCJjIik7CisgICAgc2l6ZV90IGNMb2NhbGVQ
b3NpdGlvbiA9IGxhbmd1YWdlcy5maW5kKCdjJyk7CiAgICAgaWYgKGNMb2NhbGVQb3NpdGlvbiAh
PSBub3RGb3VuZCkKICAgICAgICAgbGFuZ3VhZ2VzQ291bnQtLTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCAzNDlkZDBkODdhYzcw
MTI3YzlmMzYxODgxZTk5NGI4MmE1Y2IxYjY3Li5iN2M1NGYyMWU2ODJlMjM2ODVjMDFlNTNmNjM2
MjVkOTIwMWViMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxp
YXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5
UHJvY2Vzc01hYy5tbQpAQCAtNjQ1LDcgKzY0NSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VXNlckRp
cmVjdG9yeVN1ZmZpeChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
CiAgICAgYXV0byB1c2VyRGlyZWN0b3J5U3VmZml4ID0gcGFyYW1ldGVycy5leHRyYUluaXRpYWxp
emF0aW9uRGF0YS5maW5kKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKICAgICBpZiAodXNlckRp
cmVjdG9yeVN1ZmZpeCAhPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmVuZCgp
KSB7CiAgICAgICAgIFN0cmluZyBzdWZmaXggPSB1c2VyRGlyZWN0b3J5U3VmZml4LT52YWx1ZTsK
LSAgICAgICAgYXV0byBmaXJzdFBhdGhTZXBhcmF0b3IgPSBzdWZmaXguZmluZCgiLyIpOworICAg
ICAgICBhdXRvIGZpcnN0UGF0aFNlcGFyYXRvciA9IHN1ZmZpeC5maW5kKCcvJyk7CiAgICAgICAg
IGlmIChmaXJzdFBhdGhTZXBhcmF0b3IgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBzdWZmaXgu
dHJ1bmNhdGUoZmlyc3RQYXRoU2VwYXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHN1ZmZpeDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGJhZGFmMTU4N2EyMDE5NzdlYjllNzRm
MTQ3OTc5NDdlYjI0NzJmMWQuLmY0YTVkNDRlMTk3MTU5ZTRhMzJhNGY4ODZmZjQ3NjgzOTJhMjUy
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lKiBmcmFtZSkKICAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAg
c2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcp
OwotICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBzZWFyY2hT
dHJpbmcucmVwbGFjZSgiJTIwIiwgIisiKTsKICAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7ICJo
dHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVU
Ri04Jm9lPVVURi04IiB9OwogCiAgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5k
aWNhdG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAKaW5kZXggZGZjMGFlNTE5NjY4OTI0M2FiMGY4ZmM5MDg2NWNjOTZjNTYw
ZWVkNC4uMWJjM2MzZDU5OGQ0N2RhZTE4MzQ5NzVlZjQyNjNjZTQ4ZTQ1N2M5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdlYkNvbnRleHRN
ZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkK
ICAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsK
ICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgc2VhcmNoU3RyaW5nID0g
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIHNlYXJjaFN0
cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgi
JTIwIiwgIisiKTsKICAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7ICJodHRwczovL3d3dy5nb29n
bGUuY29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9
OwogCiAgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29y
ZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0ltcGwuY3BwCmluZGV4IGFhZGY0ZjljZTNlNTFiZjU2ZDEwOGMzYmU0ZDA3YmY5
YzNkZTM2YmQuLmE0M2RkYjg3ZjM5YjM0ZTZiMzcwYjRhODM2MWU3NGFhMDcyZGMxODYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCkBAIC0zMzQsMTMg
KzMzNCwxMyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhJ
bnZhbGlkT2Zmc2V0KQogVEVTVChXVEYsIFN0cmluZ0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VP
bk51bGwpCiB7CiAgICAgYXV0byByZWZlcmVuY2UgPSBzdHJpbmdGcm9tVVRGOCgiQUJDw4lFRkci
KTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVm
ZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0cikpOwotICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShudWxscHRyLCAwKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVf
dD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxw
dHIsIDMpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5k
KSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgNykpOwotICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCA4KSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlD
YXNlKG51bGxwdHIsIDQyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RG
Ojpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOworICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdWaWV3IHsgfSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXpl
X3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHsgfSwgMCkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6
bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsg
fSwgMykpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQp
LCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgNykpOwor
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVu
Y2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgOCkpOworICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgNDIpKTsKKyAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkpOwogfQogCiBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZU9u
RW1wdHkpCg==
</data>
<flag name="commit-queue"
          id="483648"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455604</attachid>
            <date>2022-03-23 21:47:01 -0700</date>
            <delta_ts>2022-03-23 22:45:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323214659.patch</filename>
            <type>text/plain</type>
            <size>59227</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMTUxYTRlNjAzOWFkM2RmMTFmNjk5
OGEyNTc2NTY1OTIxM2FiMjcuLjViNGZhYmVmMGM1NmYzMTgyMzAwM2QxOGFiODEzMWIwOTFhY2Yw
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcmVwYXJlIEpTQyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0
cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ4N2Y0OTMwMmZiZmFiYWFhMjQ4YmZkYjY1
YjIxYzQ2Nzk2N2YzMy4uN2E1ZjEzNTA1YWM2Y2Q3ODk0NzMwYmY5MGQxNDFmYjI4NDU5MTc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJzZUZpbmQo
KSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRh
YmFzZU5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbik6CisgICAg
ICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
bGFiZWwgY29uc3QpOgorCiAyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUHJlcGFyZSBKU0MgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNo
YXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNTk1MzhlYjBjNmFlZDIzMmFl
OWM1OWRjMTc0YjM5YjRjMDYwY2U5Li5iOTIwMTMzNzFkZGIyNjdjMWEwMzU4ZmMyMGFiNmI3NmZj
Y2UwYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJz
ZUZpbmQoKSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBv
ZiBhIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUp
OgorCiAyMDIyLTAzLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgQmlnU3VyKyBEZWJ1ZyB3azIgRVdTIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhl
LWlucHV0LXN0cmVhbS9xdWlya3Mud2luZG93Lmh0bWwgaXMgYSBmbGFreSBjcmFzaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1ZjQxNDBj
MmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZpbmQoKSAv
IHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGlu
c3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAyMDIyLTAz
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9tZSBsaW5r
IG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KaW5kZXggZjEyYTJjNDk1M2YwMDMyZGZiNGI3MmY2OGZmODBmZWRkYjY5MDM1NC4uZDNh
ZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgc3RhdGljIFN0cnVjdEhhbmRs
ZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyB2YWx1ZVdpdGg8Rm9vPjpjb250ZXh0OiBtZXRo
b2QuCiAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlS
ZXR1cm5UeXBlKG1ldGhvZCkpOwotICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0cmluZyB7IHR5cGUuZ2V0KCkgfSk7CisgICAgICAg
IFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQodHlw
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFnSGFuZGxlciYgaGFuZGxlciA9IGl0
ZXItPnZhbHVlOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3RhdGljIFN0cnVjdFRhZ0hhbmRsZXIq
IGhhbmRlckZvclN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNvZGVkVHlwZSkKIAogICAgIHN0YXRp
YyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFw
KCk7CiAKLSAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJz
LT5maW5kKFN0cmluZyB7IGVuY29kZWRUeXBlIH0pOworICAgIFN0cnVjdEhhbmRsZXJzOjppdGVy
YXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQoZW5jb2RlZFR5cGUpOwogICAgIGlmIChp
dGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuICZpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KaW5kZXggZjgyMWRmOGUzZWJlZDU3ZjU0MGNkMmYwMWQ2NGVjOTZkY2ZhODZjZC4uOTZlNDQ3
ODg3MGNkODFhNTg5OTdkMDJkYTZmYTRmYmEzNDZhZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgSlNDOjpK
U09iamVjdCogYWxsb2NhdGVDb25zdHJ1Y3RvckZvckN1c3RvbUNsYXNzKEpTQ29udGV4dCAqY29u
dGV4dCwgY29ucwogICAgICAgICBmb3JFYWNoTWV0aG9kSW5DbGFzcyhjdXJyZW50Q2xhc3MsIF4o
TWV0aG9kIG1ldGhvZCkgewogICAgICAgICAgICAgU0VMIHNlbGVjdG9yID0gbWV0aG9kX2dldE5h
bWUobWV0aG9kKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBzZWxfZ2V0TmFtZShz
ZWxlY3Rvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBpbml0VGFibGUuZmluZChTdHJpbmcg
eyBuYW1lIH0pOworICAgICAgICAgICAgYXV0byBpdGVyID0gaW5pdFRhYmxlLmZpbmQobmFtZSk7
CiAKICAgICAgICAgICAgIGlmIChpdGVyID09IGluaXRUYWJsZS5lbmQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGMyODc3MzZkNzFl
N2ViOWU4ODU1OGZmY2QwYjcwNDUyNWJmZmNmOTcuLjMwYWNhZjMzNDU4MDUzNzRkODFkYmIwYjFj
NWQ0OWZmN2FmMGE2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsK
IAotICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5z
cGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsg
dGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIl9zKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CisgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJ
bnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcg
eyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CiAKICAgICBJbmplY3RlZFNjcmlwdDo6RXhlY3V0ZU9wdGlvbnMgb3B0aW9uczsKICAgICBv
cHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYzg2N2VlZDI1YTlmNTgzN2I5
N2ZjMzdlYTExNGRkZGMyY2I2NGJmMy4uYmRkOTU5Y2VjNzkxZTQ0NzM2YjE3ZDRiZTU5NmEwYzhm
NGViNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIGR1bXBKSVRNZW1vcnkoY29u
c3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoZmQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgcGF0aCB7
IE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkgfTsKLSAgICAgICAgICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCIlcGlkIl9zLCBTdHJpbmc6Om51bWJlcihnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpKTsKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIlcGlkIiwgU3RyaW5n
OjpudW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiAgICAgICAgICAgICAgICAgZmQgPSBv
cGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIE9f
Q1JFQVQgfCBPX1RSVU5DIHwgT19BUFBFTkQgfCBPX1dST05MWSB8IE9fRVhMT0NLIHwgT19OT05C
TE9DSywgMDY2Nik7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmQgIT0gLTEpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAppbmRleCBkMjEzNDM5NjQ3MzYwZTljYjViNWQ5Mzk2YWNhYTQxMmRj
OGRjODRlLi44Y2QwZDVlOWM0NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5k
ZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAgICAgICAgIHJldHVy
biBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRl
eHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFj
dFNvdXJjZSk7Ci0gICAgYXV0byBub3RBRnVuY3Rpb25JbmRleCA9IG9yaWdpbmFsTWVzc2FnZS5y
ZXZlcnNlRmluZCgiaXMgbm90IGEgZnVuY3Rpb24iX3MpOworICAgIGF1dG8gbm90QUZ1bmN0aW9u
SW5kZXggPSBvcmlnaW5hbE1lc3NhZ2UucmV2ZXJzZUZpbmQoImlzIG5vdCBhIGZ1bmN0aW9uIik7
CiAgICAgUkVMRUFTRV9BU1NFUlQobm90QUZ1bmN0aW9uSW5kZXggIT0gbm90Rm91bmQpOwogICAg
IFN0cmluZ1ZpZXcgZGlzcGxheVZhbHVlOwogICAgIGlmIChvcmlnaW5hbE1lc3NhZ2UuaXM4Qml0
KCkpIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlcklu
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvCiAgICAgICAg
IHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91
bmRFeGFjdFNvdXJjZSk7Ci0gICAgYXV0byBpbkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmlu
ZCgiaW4iX3MpOworICAgIGF1dG8gaW5JbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImlu
Iik7CiAgICAgaWYgKGluSW5kZXggPT0gbm90Rm91bmQpIHsKICAgICAgICAgLy8gVGhpcyBzaG91
bGQgYmFzaWNhbGx5IG5ldmVyIGhhcHBlbiwgc2luY2UgSlMgY29kZSBtdXN0IHVzZSB0aGUgbGl0
ZXJhbAogICAgICAgICAvLyB0ZXh0ICJpbiIgZm9yIHRoZSBgaW5gIG9wZXJhdGlvbi4gSG93ZXZl
ciwgaWYgd2UgZmFpbCB0byBmaW5kICJpbiIKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbmxpbmUgU3Ry
aW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjbwogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJy
b3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1cnJlbmNl
ID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gaW5zdGFuY2Vv
ZkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiaW5zdGFuY2VvZiJfcyk7CisgICAgYXV0
byBpbnN0YW5jZW9mSW5kZXggPSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJpbnN0YW5jZW9mIik7
CiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gU3ltYm9sLmhhc0luc3RhbmNlIGZ1bmN0aW9u
IGlzIGRpcmVjdGx5IGNhbGxlZC4KICAgICBpZiAoaW5zdGFuY2VvZkluZGV4ID09IG5vdEZvdW5k
KQogICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXNzYWdlOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0
YXRpYyBTdHJpbmcgaW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNZXNzYWdlLCBjb25zCiAgICAgaWYgKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5j
ZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRBcHByb3hp
bWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCk7CiAKLSAgICBhdXRv
IGV4dGVuZHNJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiX3MpOworICAg
IGF1dG8gZXh0ZW5kc0luZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiZXh0ZW5kcyIpOwog
ICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRl
bmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5h
bE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRleHQsICInKSIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCA1ZmFiMWI4
MzA1M2MzODJlYmEwODJhOTRhZDhlNjNkNjlmNTc0NTk0Li43ZTFiY2UyOWJhZmVmZmJjYTY0ZmM1
NDVlYTRhYjg4YzhlZTFmZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgdm9pZCBUeXBlUHJvZmlsZXI6Omxv
Z1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24sIFZNJiB2bSkKIAog
ICAgIGRhdGFMb2coIlx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IFR5cGVQ
cm9maWxlclJldHVyblN0YXRlbWVudCA/ICJbUmV0dXJuIFN0YXRlbWVudF0iIDogIltOb3JtYWwg
U3RhdGVtZW50XSIsICJcbiIpOwogCi0gICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIl9z
LCAiXG5cdFx0Il9zKSwgIlxuIik7CisgICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIiwg
IlxuXHRcdCIpLCAiXG4iKTsKICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKLSAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iX3MsICJcblx0XHQiX3MpLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwogfQogCiB2
b2lkIFR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNzMzZjk4
MTJmMThlOGY2MThlNGVhOTA3ZjkxY2IyNTNmN2MwOGVjZC4uZDg4YmEyOGMzZjMwOTI3MmUzZGEy
ZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3Bl
cnR5SGFzaCgpCiAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICBmb3IgKGF1dG8mIGtleSA6
IG1fZmllbGRzKSB7CiAgICAgICAgIFN0cmluZyBwcm9wZXJ0eSA9IGtleS5nZXQoKTsKLSAgICAg
ICAgcHJvcGVydHkucmVwbGFjZSgiOiJfcywgIlxcOiJfcyk7IC8vIEVuc3VyZSB0aGF0IGhhc2go
eyJmb286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVzZSB3ZSdyZSB1
c2luZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwgY2hhcmFjdGVy
cyBpbiBmaWVsZCBuYW1lcyBpbiBKUy4KKyAgICAgICAgcHJvcGVydHkucmVwbGFjZSgiOiIsICJc
XDoiKTsgLy8gRW5zdXJlIHRoYXQgaGFzaCh7ImZvbzoiLCAiYmFyIn0pICE9IGhhc2goeyJmb28i
LCAiOmJhciJ9KSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGNvbG9ucyBhcyBhIHNlcGFyYXRvciBhbmQg
Y29sb25zIGFyZSBsZWdhbCBjaGFyYWN0ZXJzIGluIGZpZWxkIG5hbWVzIGluIEpTLgogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwcm9wZXJ0eSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA5NTY4NmJhMTkyMGJi
MGViMTI3NDA0ZjEzOTFiYjAyZjViYjE2MDg5Li41ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJjOTMx
NzVmZjc2ZmNiYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcm
IG5ldwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
U3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9yaWdDb2RlLnByb3ZpZGVyKCktPnNvdXJjZSgpLnRv
U3RyaW5nKCk7CiAgICAgdW5zaWduZWQgb3JpZ1N0YXJ0ID0gb3JpZ0NvZGUuc3RhcnRPZmZzZXQo
KTsKLSAgICB1bnNpZ25lZCBvcmlnRnVuY3Rpb25TdGFydCA9IG9yaWdQcm92aWRlclN0ci5yZXZl
cnNlRmluZCgiZnVuY3Rpb24iX3MsIG9yaWdTdGFydCk7CisgICAgdW5zaWduZWQgb3JpZ0Z1bmN0
aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ1N0
YXJ0KTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdQcm92aWRlclN0ci5maW5k
KCd7Jywgb3JpZ1N0YXJ0KTsKICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VT
dGFydCAtIG9yaWdGdW5jdGlvblN0YXJ0OwogICAgIFN0cmluZyBvcmlnSGVhZGVyID0gb3JpZ1By
b3ZpZGVyU3RyLnN1YnN0cmluZyhvcmlnRnVuY3Rpb25TdGFydCwgaGVhZGVyTGVuZ3RoKTsKQEAg
LTE0Nyw4ICsxNDcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0
IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcmIG5ldwogICAgIGluZm8ubGluZUNv
dW50ID0gMTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93
LgogICAgIGluZm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8g
RmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8u
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgiKCIpOwotICAgIGlu
Zm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgieyIpOwor
ICAgIGluZm8ucGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcp
OworICAgIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmlu
ZCgneycpOwogICAgIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3Ry
Lmxlbmd0aCgpIC0gMTsKIAogICAgIGluZm8uc291cmNlQ29kZSA9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4
ZDBkYzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRh
aW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hh
cmFjdGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0
cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAg
c2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy5maW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9
CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsK
KyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRj
aEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZp
bmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5n
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRm
OWJhYjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0
ZTRiNmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2
IEBAIGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25z
dCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2Vh
cmNoTGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJz
LCAwLCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1
bnNpZ25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWdu
ZWQgbWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdM
ZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3Ry
aW5nTGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVu
Z3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgp
KSB7Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0Zp
bmQuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgp
OwotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291
cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zm
c2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1l
IFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlw
ZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJh
Y3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0
ZQogICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+
KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29u
c3QgU3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQg
bmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9
PSAxKSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5l
ZWRsZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJh
Y3RlcnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0K
LSAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0Owot
ICAgIGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxl
LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7
Ci0KLSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQs
IG5lZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3Ro
KTsKLX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQg
aW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVz
ZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUg
dGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2Uy
NjFhMjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFj
NWNjYWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIz
ICs5MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJ
bXBsOjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51
bGwgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5n
KSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0g
bWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hT
dHJpbmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBz
dHJpbmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAg
IGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2
KClbMF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3Ry
aW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNo
YXJhY3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigp
LCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYg
KG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAg
ICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3Ro
IGlzIGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmlu
ZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5n
dGgoKSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5n
LT5jaGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRj
aFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYo
KSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsK
IAotICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sg
Zm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtF
TFkoIW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJu
IGZpbmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3Ry
aW5nKSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNl
KCp0aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNo
U3RyaW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAq
bWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90
IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgp
CkBAIC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZl
cnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0
dXJuIGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVy
c2VGaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8v
IENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYg
KCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVu
Z3RoKCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGlu
ZGV4LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6
OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAg
ICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgog
ICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwg
KCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsK
KyAgICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxl
bmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJz
ZUZpbmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsK
ICAgICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4K
QEAgLTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0
cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
OCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hM
ZW5ndGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3Ro
KTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
IHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgo
KSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5k
ZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hT
dHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0
ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1h
dGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBp
bmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5u
ZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1
YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBj
b25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5
ICsxNDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBh
dHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7
CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQog
ewogICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKIAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAg
ICB1bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBh
dHRlcm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWdu
ZWQgcmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21l
bnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAv
LyBDb3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQo
cGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRj
aENvdW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9
Ci0gICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBk
byBhbnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50
ICogcGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBN
YXhMZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsx
NDQyLDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwq
IHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNo
Q291bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3
IGRhdGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50
TGVuZ3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0
ID0gMDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1l
bnRJczhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNl
bWVudElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQg
Y2FzZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAg
ICAgLy8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3
ICsxNDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1w
bCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21l
bnRMZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVu
dExlbmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJh
Y3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3Ry
TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAg
ICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAg
ICAgICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAog
ICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxh
Y2VtZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCBy
ZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNl
dCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMo
ZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOwor
ICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQu
Y2hhcmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zm
c2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVu
dEVuZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDhkODBm
Nzg3NzgzZDQzYzU2MmY4ZTBjZDNlMzY3NWI5NzZiYTgyNTkuLjg1ZDdjNGVjNjhhZTQ1MDcxN2Fh
OTZlMGJiYWU3OTNiMTc0NzIzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzIs
MTYgKzQzMiwxMyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
LSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBs
JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gTWF4TGVuZ3Ro
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0lt
cGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFN0cmluZ0ltcGwmKSBjb25zdDsKQEAgLTQ2Niw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBj
aGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJl
cGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxhY2VtZW50
KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50
TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmlu
Z1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9v
bCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uYTcz
ZGYwNTA5ZWU1MWZkZWUwMjcwNWRiYmMzZmNiMDEzZTU4YzQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTEwOTksNiArMTA5OSwxNDIgQEAgaW5saW5lIGJvb2wgaGFzVW5wYWlyZWRT
dXJyb2dhdGUoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxp
bmUgc2l6ZV90IGZpbmRDb21tb24oU3RyaW5nVmlldyBoYXlzdGFjaywgU3RyaW5nVmlldyBuZWVk
bGUsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRs
ZS5sZW5ndGgoKTsKKworICAgIGlmIChuZWVkbGVMZW5ndGggPT0gMSkgeworICAgICAgICBpZiAo
aGF5c3RhY2suaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNr
LmNoYXJhY3RlcnM4KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2su
bGVuZ3RoKCksIG5lZWRsZVswXSwgc3RhcnQpOworICAgIH0KKworICAgIGlmIChzdGFydCA+IGhh
eXN0YWNrLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoIW5l
ZWRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0YXJ0OworCisgICAgdW5zaWduZWQgc2VhcmNo
TGVuZ3RoID0gaGF5c3RhY2subGVuZ3RoKCkgLSBzdGFydDsKKyAgICBpZiAobmVlZGxlTGVuZ3Ro
ID4gc2VhcmNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoaGF5
c3RhY2suaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVk
bGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBpZiAobmVlZGxlLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZmluZElu
bmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgp
LCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgpOworCisgICAgcmV0dXJuIGZpbmRJ
bm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2
KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Cit9CisKK2lubGluZSBzaXpl
X3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc291cmNlLCBTdHJpbmdWaWV3IHN0
cmluZ1RvRmluZCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpCit7CisgICAgdW5zaWduZWQgc291cmNl
U3RyaW5nTGVuZ3RoID0gc291cmNlLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gc3RyaW5nVG9GaW5kLmxlbmd0aCgpOworICAgIGlmICghbWF0Y2hMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGQ6Om1pbihzdGFydE9mZnNldCwgc291cmNlU3RyaW5nTGVuZ3RoKTsKKworICAg
IC8vIENoZWNrIHN0YXJ0T2Zmc2V0ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgorICAgIGlm
IChzdGFydE9mZnNldCA+IHNvdXJjZVN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IHNvdXJjZVN0cmluZ0xlbmd0aCAtIHN0
YXJ0T2Zmc2V0OworICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAg
cmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgeworICAgICAgICBp
ZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4
KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9G
aW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisgICAgfQorCisgICAgaWYgKHN0cmluZ1RvRmluZC5pczhCaXQoKSkKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1Rv
RmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmlu
Z1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQoraW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmQoU3RyaW5n
VmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNp
emVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNpemVfdCBTdHJp
bmc6OnJldmVyc2VGaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcsIHN0YXJ0
KSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0
T2Zmc2V0KSAhPSBub3RGb3VuZDsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KFN0cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQoreworICAgIGlmICht
X2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2Vt
ZW50KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVw
bGFjZShzdGFydCwgbGVuZ3RoLCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhp
czsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5n
LCB1bnNpZ25lZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJp
bmcsIHN0YXJ0KTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5n
LmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOworfQorCitpbmxpbmUgc2l6ZV90IEF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmlu
Zzo6Y29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3Ry
aW5nLmNvbnRhaW5zKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKaW5kZXggNDFlZDM1Y2NhNmU5ZjcxZjI2ZWRkYmQzNWE3OGFlNmFlNjQ3ODA4MS4uNWNkMGE3
YTM5NGNlYTk3YTA5ODA1NTQzYWJjZmVmYTNmMjRkMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC0xNjQsMTggKzE2NCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCkpIDogbm90Rm91
bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLmltcGwoKSwgc3RhcnRPZmZzZXQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXpl
X3QgZmluZChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1
bnNpZ25lZCBzdGFydCkgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkg
OiBub3RGb3VuZDsgfQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3Qg
aW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KICAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjaGFyYWN0ZXIsIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQor
ICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IE1heExl
bmd0aCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7
CkBAIC0xODQsOSArMTgzLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmlu
ZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQot
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywg
dW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMo
U3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CiAKICAgICBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29s
IHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CkBAIC0yMTEsNyArMjEwLDcgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1l
bnQpOwogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVwbGFjZShjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFN0cmluZ1ZpZXcg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7
CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdp
dGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0
ZXJDb3VudF0pOwogCkBAIC01MDcsMjAgKzUwNiw2IEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6
cmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYgKG1faW1w
bCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldC5pbXBsKCksIHJlcGxh
Y2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgU3RyaW5nJiBT
dHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudCkKLXsKLSAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdB
WVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQogewogICAgIGlmICht
X2ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IDZjZGY1NjhlOTRjNjUxMjNjNTU3ODk2Mjk3NjMwZmRjMTk2NTI4MDUu
LjkzNmE3ZTQzMDU2YzQ1NWUyOWIyNTUwZmI0MDEwYmVlZWMzYjM1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xNzYs
NyArMTc2LDcgQEAgUmVmUHRyPERPTUZvcm1EYXRhPiBGZXRjaEJvZHlDb25zdW1lcjo6cGFja2Fn
ZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKICAgICAgICAgaWYgKCFtaW1lVHlw
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRhcnki
X3MpOworICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZp
bmQoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbWltZVR5cGUtPnBh
cmFtZXRlcnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzOWMxNDdk
YWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIzLi4yZmFmM2U5NWQzMWM5ODlmY2UxMmUw
NTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURh
dGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWROYW1lKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0gZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5y
ZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSIsICIuIik7CiAK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKG5hbWUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNl
cy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5o
CmluZGV4IGI3NWMyNzMyMDFiMDM5NmE1MGRjODQ0NDIxNmQwZDY0MWZkYmRkNTcuLjRhNTFiNTY5
ZWI0OGJhNGJkN2I4Mjk2MGU3YWRiZmMzYzZiZDVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFBBTCB7CiAvLyBTZWUgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
UGVyY2VudC1lbmNvZGluZyNOb24tc3RhbmRhcmRfaW1wbGVtZW50YXRpb25zPi4KIHN0cnVjdCBV
bmljb2RlMTZCaXRFc2NhcGVTZXF1ZW5jZSB7CiAgICAgZW51bSB7IFNlcXVlbmNlU2l6ZSA9IDYg
fTsgLy8gZS5nLiAldTI2QzQKLSAgICBzdGF0aWMgc2l6ZV90IGZpbmRJblN0cmluZyhTdHJpbmdW
aWV3IHN0cmluZywgc2l6ZV90IHN0YXJ0UG9zaXRpb24pIHsgcmV0dXJuIHN0cmluZy5maW5kKFN0
cmluZ1ZpZXcoIiV1IiksIHN0YXJ0UG9zaXRpb24pOyB9CisgICAgc3RhdGljIHNpemVfdCBmaW5k
SW5TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBzdGFydFBvc2l0aW9uKSB7IHJldHVy
biBzdHJpbmcuZmluZCgiJXUiLCBzdGFydFBvc2l0aW9uKTsgfQogICAgIHN0YXRpYyBzaXplX3Qg
ZmluZEVuZE9mUnVuKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgc2l6
ZV90IGVuZFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgc2l6ZV90IHJ1bkVuZCA9IHN0YXJ0UG9z
aXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRDb2RlY1dp
bi5jcHAKaW5kZXggZTdmNGU5ZGMxODM0ZDBmNjM5YzZiYWJmNjk2NTYyMDZiODc2NzQwYy4uNmYx
OGYyYjBkNjgyYmViMThjZDZhMTMxOTY4MjNlYWIzYTJkNjIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIExhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgIGkgPSBj
b2RlUGFnZUNoYXJzZXRzKCkuc2V0KGNwSW5mby51aUNvZGVQYWdlLCBuYW1lKS5pdGVyYXRvcjsK
ICAgICAgICAgfQogICAgICAgICBpZiAoaSAhPSBjb2RlUGFnZUNoYXJzZXRzKCkuZW5kKCkpIHsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDaGFyc2V0SW5mbz46Oml0ZXJhdG9yIGogPSBr
bm93bkNoYXJzZXRzKCkuZmluZChTdHJpbmcoaS0+dmFsdWUuZGF0YSgpLCBpLT52YWx1ZS5sZW5n
dGgoKSkpOworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0
b3IgaiA9IGtub3duQ2hhcnNldHMoKS5maW5kKFN0cmluZ1ZpZXcgeyBpLT52YWx1ZS5kYXRhKCks
IGktPnZhbHVlLmxlbmd0aCgpIH0pOwogICAgICAgICAgICAgQVNTRVJUKGogIT0ga25vd25DaGFy
c2V0cygpLmVuZCgpKTsKICAgICAgICAgICAgIENoYXJzZXRJbmZvJiBpbmZvID0gai0+dmFsdWU7
CiAgICAgICAgICAgICBpbmZvLm1fbmFtZSA9IGktPnZhbHVlLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQ1NzdlYTY2ZWFhYTAzMTcy
MDI5NTUzMGIxYWMwZDU5MzgzNmYwZmIuLjJmMTBjZWQ4NDEzMWVkN2U5ZGQxODdhMzQwMWNmZGNk
ZWM0YmE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVD
b21tb24oY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29k
ZSBlbHNld2hlcmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlh
IHRoZSBrZXlib2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGlu
Z3MgY29taW5nIGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFs
dWUgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBu
b3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJfcywgIlxuIl9zKTsKKyAgICBub3JtYWxpemVk
VmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOwogICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNl
KCdccicsICdcbicpOwogCiAgICAgLy8gUmV0dXJuIGVhcmx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIHRoZSBjYXJldCBvciB0cmlnZ2VyIG90aGVyIHNpZGUgZWZmZWN0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDg2NDNhODQ3
Nzc2NDU5MzMxZjQzZWEyOThmZThlZjRmMDg0MWYwYTIuLmE3NWI2M2EzYjVkZmViOWY2NzI4OTI4
ZWVmY2IzNjNhZmY4NmY0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVTZXBhcmF0b3IoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjovLyIpKTsKIAotICAgIHNpemVfdCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2No
ZW1lU2VwYXJhdG9yKTsKKyAgICBzaXplX3Qgc2NoZW1lRW5kUG9zID0gcGF0dGVybi5maW5kKHNj
aGVtZVNlcGFyYXRvci5nZXQoKSk7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9PSBub3RGb3VuZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCA0YTllOGZhZTAzN2VlZjQwZGVkOWYyY2VhZjg3MmZhMTU4YTQzYWZiLi5mZGU0
MWVmNGU5ZWFkYzk0ZjkwNDMzNDg2ODI0NjhkMTgzODNiYmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVjaXNpb25zTWF0Y2goUGxhdGZvcm1HTE9iamVjdCB2ZXJ0ZXhTaGFk
ZXIsIFBsYQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGZyYWdtZW50RW50cnkudW5p
Zm9ybU1hcCkgewogICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWFwcGVkTmFtZSA9IGVudHJ5
LnZhbHVlLmdldCgpLm1hcHBlZE5hbWU7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHZlcnRleFN5bWJv
bCA9IHZlcnRleFN5bWJvbFByZWNpc2lvbk1hcC5maW5kKFN0cmluZyhtYXBwZWROYW1lLmNfc3Ry
KCksIG1hcHBlZE5hbWUubGVuZ3RoKCkpKTsKKyAgICAgICAgY29uc3QgYXV0byYgdmVydGV4U3lt
Ym9sID0gdmVydGV4U3ltYm9sUHJlY2lzaW9uTWFwLmZpbmQoU3RyaW5nVmlldyhtYXBwZWROYW1l
LmNfc3RyKCksIG1hcHBlZE5hbWUubGVuZ3RoKCkpKTsKICAgICAgICAgaWYgKHZlcnRleFN5bWJv
bCAhPSB2ZXJ0ZXhTeW1ib2xQcmVjaXNpb25NYXAuZW5kKCkgJiYgdmVydGV4U3ltYm9sLT52YWx1
ZSAhPSBlbnRyeS52YWx1ZS5nZXQoKS5wcmVjaXNpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVz
LmNwcAppbmRleCAxMzg0YzZiMTE0ZTc5ZWJjNzJkZDI1N2NmMDU1ODIxZmM0YTQ2MzRhLi42NmRi
ZWM0MGFhYzJiNzM5N2ExOTMzMTE2NmM3MmJkNjI2MTZlMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRy
aWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcApAQCAtNTUsOCArNTUsOCBAQCBjb25z
dCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMmIFRleHR1cmVNYXBwZXJDb250ZXh0QXR0
cmlidXRlczo6Z2V0KCkKICAgICAgICAgYXR0cmlidXRlcy5pc0dMRVMyQ29tcGxpYW50ID0gdHJ1
ZTsKIAogICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOwotICAgICAgICBhdHRyaWJ1
dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xf
T0VTX3RleHR1cmVfbnBvdCJfcyk7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tT
dWJpbWFnZSA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoIkdMX0VYVF91bnBhY2tfc3ViaW1h
Z2UiX3MpOworICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0ZW5z
aW9uc1N0cmluZy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfbnBvdCIpOworICAgICAgICBhdHRy
aWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSBleHRlbnNpb25zU3RyaW5nLmNvbnRhaW5z
KCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIik7CiAjZWxzZQogICAgICAgICBhdHRyaWJ1dGVzLmlz
R0xFUzJDb21wbGlhbnQgPSBmYWxzZTsKICAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0c05QT1RU
ZXh0dXJlcyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlLmgKaW5kZXggNjI5NDVkOTZlMTZmNzgyMzYwNThhNDk4NDVhZmI4
NDAzOWIwNzUyMi4uZTUwZGNjZjVkNWRkNGJkY2YxYjhlODQ4ODEwZjQxYWE2YTYwOTQ5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhaXJQb2RzKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJBaXJQ
b2RzIikpOwogCi0gICAgICAgIGlmICgobV90eXBlID09IERldmljZVR5cGU6Ok1pY3JvcGhvbmUg
fHwgbV90eXBlID09IERldmljZVR5cGU6OlNwZWFrZXIpICYmIG1fbGFiZWwuY29udGFpbnMoYWly
UG9kcykpCisgICAgICAgIGlmICgobV90eXBlID09IERldmljZVR5cGU6Ok1pY3JvcGhvbmUgfHwg
bV90eXBlID09IERldmljZVR5cGU6OlNwZWFrZXIpICYmIG1fbGFiZWwuY29udGFpbnMoYWlyUG9k
cy5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gYWlyUG9kczsKIAogICAgICAgICByZXR1cm4g
bV9sYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKaW5kZXggYjY2
Mjk2MGNkMGFhM2Y2M2RjNmM3OGE0N2UyOGNjMjAxODZlMzU1OS4uMzYzY2IyZGU0MTdjNGY4NmJj
NjZmZmYzNGY0MTI0NDI4MWVjZmU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q3VybC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBTdHJpbmcgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OnBhcnNlUmVhbG0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBT
dHJpbmcgcmVhbG07CiAgICAgYXV0byBhdXRoSGVhZGVyID0gcmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKHJlc3BvbnNlLmlzVW5hdXRob3JpemVkKCkgPyB3d3dBdXRoZW50aWNhdGUgOiBwcm94eUF1
dGhlbnRpY2F0ZSk7Ci0gICAgYXV0byByZWFsbVBvcyA9IGF1dGhIZWFkZXIuZmluZElnbm9yaW5n
QVNDSUlDYXNlKHJlYWxtU3RyaW5nKTsKKyAgICBhdXRvIHJlYWxtUG9zID0gYXV0aEhlYWRlci5m
aW5kSWdub3JpbmdBU0NJSUNhc2UocmVhbG1TdHJpbmcuZ2V0KCkpOwogICAgIGlmIChyZWFsbVBv
cyAhPSBub3RGb3VuZCkgewogICAgICAgICByZWFsbSA9IGF1dGhIZWFkZXIuc3Vic3RyaW5nKHJl
YWxtUG9zICsgcmVhbG1TdHJpbmcuZ2V0KCkubGVuZ3RoKCkpOwogICAgICAgICByZWFsbSA9IHJl
YWxtLmxlZnQocmVhbG0uZmluZCgnLCcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDIxOWJjZGU1NTEx
ZDQ1YjRjMTM1YWZiNzMzNmMzOGYwNmJmMWEyODEuLjdiNDY4NTVhMDUxNTc0N2Y0ZGRmYmRlNWM5
MDlhYWI5ODcwNjAzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogICAgIFZlY3RvcjxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOwogICAgIFZlY3RvcjxT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJGaWVsZHMuZW5kKCk7CiAgICAgd2hp
bGUgKGl0ICE9IGVuZCkgewotICAgICAgICBzaXplX3Qgc3BsaXRQb3NpdGlvbiA9IGl0LT5maW5k
KCI6Iik7CisgICAgICAgIHNpemVfdCBzcGxpdFBvc2l0aW9uID0gaXQtPmZpbmQoJzonKTsKICAg
ICAgICAgaWYgKHNwbGl0UG9zaXRpb24gIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+bGVmdChzcGxpdFBvc2l0aW9uKSwgaXQt
PnN1YnN0cmluZyhzcGxpdFBvc2l0aW9uKzEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAg
KytpdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBkMWU1ODYyNGFhZWUyZWNlODEyOWRk
MzRlYTk4NjYyNmU2Y2RmMDY4Li42NmI2NmNmMjhhYjYzNGI1NDA2MjI4Yzc1ZDQwMzhhZDY2ZThm
ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxlPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJ
Zk5lZWRlZChDdXJsTXVsCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRs
ZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
Zm9yIChhdXRvIGhlYWRlciA6IHJlc3BvbnNlLmhlYWRlcnMpIHsKLSAgICAgICAgYXV0byBzcGxp
dFBvc2lzdGlvbiA9IGhlYWRlci5maW5kKCI6Iik7CisgICAgICAgIGF1dG8gc3BsaXRQb3Npc3Rp
b24gPSBoZWFkZXIuZmluZCgnOicpOwogICAgICAgICBpZiAoc3BsaXRQb3Npc3Rpb24gPT0gbm90
Rm91bmQpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmQ2YjA5MTI4ODg1
ZDdhYzk1MTM1NWMwODlmOGE0OGU5MTdmNGM5OS4uZjNhNTViMzgxMWQ1Mjk5Mjk1ODAyYzUwOGJj
NzA4YzhmOTI0ZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgaW50IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlRGVidWdJbmZvKGN1cmxfaW5mb3R5cGUgdHlwZSwgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUKICAgICAgICAgICAgIGhlYWRlckZpZWxkcy5yZW1vdmUoMCk7CiAKICAgICAg
ICAgZm9yIChhdXRvJiBoZWFkZXIgOiBoZWFkZXJGaWVsZHMpIHsKLSAgICAgICAgICAgIGF1dG8g
cG9zID0gaGVhZGVyLmZpbmQoIjoiKTsKKyAgICAgICAgICAgIGF1dG8gcG9zID0gaGVhZGVyLmZp
bmQoJzonKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGtleSA9IGhlYWRlci5sZWZ0KHBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAg
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGhlYWRlci5zdWJzdHJpbmcocG9zICsgMSkuc3RyaXBX
aGl0ZVNwYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZp
Y2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCBiODk3
ZTVjZDI3MDZiYjViYzQwODljNDU1ZDBmYTQ1YjJiYjk3NjcxLi41ZTQ0MDY3ZWYwYTI4YjFiODBh
ZWJmZjNjYWFiM2M4NGNkNWE4ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5j
cHAKQEAgLTExNiw3ICsxMTYsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdj
LCBjaGFyKiogYXJndikKIAogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBp
ZiAoIXRhcmdldFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IHRh
cmdldFN0cmluZy5yZXZlcnNlRmluZCgiOiJfcyk7CisgICAgICAgIGF1dG8gcG9zaXRpb24gPSB0
YXJnZXRTdHJpbmcucmV2ZXJzZUZpbmQoJzonKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5v
dEZvdW5kKSB7CiAgICAgICAgICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcubGVm
dChwb3NpdGlvbik7CiAgICAgICAgICAgICBtX3RhcmdldFBvcnQgPSBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IHRhcmdldFN0cmluZyB9LnN1
YnN0cmluZyhwb3NpdGlvbiArIDEpKS52YWx1ZV9vcigwKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBXZWJEcml2ZXJTZXJ2aWNlOjp2YWxpZGF0ZWRDYXBhYmlsaXRp
ZXMoY29uc3QgSlNPTjo6T2JqZWN0JgogICAgICAgICAgICAgaWYgKCF1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciB8fCAhZGVzZXJpYWxpemVVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcih1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICByZXN1bHQtPnNldFN0cmluZyhpdC0+a2V5LCB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcik7
Ci0gICAgICAgIH0gZWxzZSBpZiAoaXQtPmtleS5maW5kKCI6IikgIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgfSBlbHNlIGlmIChpdC0+a2V5LmZpbmQoJzonKSAhPSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgaWYgKCFwbGF0Zm9ybVZhbGlkYXRlQ2FwYWJpbGl0eShpdC0+a2V5LCBpdC0+dmFsdWUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgcmVzdWx0LT5z
ZXRWYWx1ZShpdC0+a2V5LCBpdC0+dmFsdWUuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5k
ZXggZWQ0Zjk1NWRmODc0NDYwZDQzMDZmMmU4MjljNjU3ZjBmNDA0ZDQzNC4uZjJlZjI5MGM3MWNi
NjFmNDZjNzhlYzczZTA1MmEwZDVjM2Y5ZjA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgc3RhdGljIENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGxhbmd1YWdlcykKICAgICBzaXplX3QgbGFuZ3VhZ2VzQ291bnQgPSBsYW5ndWFn
ZXMuc2l6ZSgpOwogCiAgICAgLy8gSWdub3JlICJDIiBsb2NhbGUuCi0gICAgc2l6ZV90IGNMb2Nh
bGVQb3NpdGlvbiA9IGxhbmd1YWdlcy5maW5kKCJjIik7CisgICAgc2l6ZV90IGNMb2NhbGVQb3Np
dGlvbiA9IGxhbmd1YWdlcy5maW5kKCdjJyk7CiAgICAgaWYgKGNMb2NhbGVQb3NpdGlvbiAhPSBu
b3RGb3VuZCkKICAgICAgICAgbGFuZ3VhZ2VzQ291bnQtLTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCAzNDlkZDBkODdhYzcwMTI3
YzlmMzYxODgxZTk5NGI4MmE1Y2IxYjY3Li5iN2M1NGYyMWU2ODJlMjM2ODVjMDFlNTNmNjM2MjVk
OTIwMWViMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5
UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJv
Y2Vzc01hYy5tbQpAQCAtNjQ1LDcgKzY0NSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VXNlckRpcmVj
dG9yeVN1ZmZpeChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0CiAg
ICAgYXV0byB1c2VyRGlyZWN0b3J5U3VmZml4ID0gcGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5maW5kKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKICAgICBpZiAodXNlckRpcmVj
dG9yeVN1ZmZpeCAhPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmVuZCgpKSB7
CiAgICAgICAgIFN0cmluZyBzdWZmaXggPSB1c2VyRGlyZWN0b3J5U3VmZml4LT52YWx1ZTsKLSAg
ICAgICAgYXV0byBmaXJzdFBhdGhTZXBhcmF0b3IgPSBzdWZmaXguZmluZCgiLyIpOworICAgICAg
ICBhdXRvIGZpcnN0UGF0aFNlcGFyYXRvciA9IHN1ZmZpeC5maW5kKCcvJyk7CiAgICAgICAgIGlm
IChmaXJzdFBhdGhTZXBhcmF0b3IgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBzdWZmaXgudHJ1
bmNhdGUoZmlyc3RQYXRoU2VwYXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHN1ZmZpeDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGJhZGFmMTU4N2EyMDE5NzdlYjllNzRmMTQ3
OTc5NDdlYjI0NzJmMWQuLmY0YTVkNDRlMTk3MTU5ZTRhMzJhNGY4ODZmZjQ3NjgzOTJhMjUyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSkKICAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxl
Y3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgc2Vh
cmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwot
ICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBzZWFyY2hTdHJp
bmcucmVwbGFjZSgiJTIwIiwgIisiKTsKICAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7ICJodHRw
czovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04
Jm9lPVVURi04IiB9OwogCiAgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNh
dG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5jcHAKaW5kZXggZGZjMGFlNTE5NjY4OTI0M2FiMGY4ZmM5MDg2NWNjOTZjNTYwZWVk
NC4uMWJjM2MzZDU5OGQ0N2RhZTE4MzQ5NzVlZjQyNjNjZTQ4ZTQ1N2M5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51
Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAg
ICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAg
ICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgc2VhcmNoU3RyaW5nID0gZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIHNlYXJjaFN0cmlu
Zy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIw
IiwgIisiKTsKICAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7ICJodHRwczovL3d3dy5nb29nbGUu
Y29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9Owog
CiAgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29yZTo6
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ0ltcGwuY3BwCmluZGV4IGFhZGY0ZjljZTNlNTFiZjU2ZDEwOGMzYmU0ZDA3YmY5YzNk
ZTM2YmQuLmE0M2RkYjg3ZjM5YjM0ZTZiMzcwYjRhODM2MWU3NGFhMDcyZGMxODYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCkBAIC0zMzQsMTMgKzMz
NCwxMyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhJbnZh
bGlkT2Zmc2V0KQogVEVTVChXVEYsIFN0cmluZ0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VPbk51
bGwpCiB7CiAgICAgYXV0byByZWZlcmVuY2UgPSBzdHJpbmdGcm9tVVRGOCgiQUJDw4lFRkciKTsK
LSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJl
bmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0cikpOwotICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShudWxscHRyLCAwKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4o
V1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIs
IDMpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwg
cmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgNykpOwotICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCA4KSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNl
KG51bGxwdHIsIDQyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpu
b3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3IHsgfSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+
KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3IHsgfSwgMCkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90
Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwg
MykpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCBy
ZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgNykpOworICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2Ut
PmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgOCkpOworICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgNDIpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2UoU3RyaW5nVmlldyB7IH0sIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkpOwogfQogCiBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZU9uRW1w
dHkpCg==
</data>
<flag name="commit-queue"
          id="483650"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455607</attachid>
            <date>2022-03-23 22:15:39 -0700</date>
            <delta_ts>2022-03-23 23:19:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323221538.patch</filename>
            <type>text/plain</type>
            <size>58215</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMTUxYTRlNjAzOWFkM2RmMTFmNjk5
OGEyNTc2NTY1OTIxM2FiMjcuLjViNGZhYmVmMGM1NmYzMTgyMzAwM2QxOGFiODEzMWIwOTFhY2Yw
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcmVwYXJlIEpTQyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0
cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ4N2Y0OTMwMmZiZmFiYWFhMjQ4YmZkYjY1
YjIxYzQ2Nzk2N2YzMy4uN2E1ZjEzNTA1YWM2Y2Q3ODk0NzMwYmY5MGQxNDFmYjI4NDU5MTc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJzZUZpbmQo
KSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRh
YmFzZU5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbik6CisgICAg
ICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
bGFiZWwgY29uc3QpOgorCiAyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUHJlcGFyZSBKU0MgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNo
YXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNTk1MzhlYjBjNmFlZDIzMmFl
OWM1OWRjMTc0YjM5YjRjMDYwY2U5Li5iOTIwMTMzNzFkZGIyNjdjMWEwMzU4ZmMyMGFiNmI3NmZj
Y2UwYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJz
ZUZpbmQoKSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBv
ZiBhIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUp
OgorCiAyMDIyLTAzLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgQmlnU3VyKyBEZWJ1ZyB3azIgRVdTIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhl
LWlucHV0LXN0cmVhbS9xdWlya3Mud2luZG93Lmh0bWwgaXMgYSBmbGFreSBjcmFzaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1ZjQxNDBj
MmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZpbmQoKSAv
IHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGlu
c3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAyMDIyLTAz
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9tZSBsaW5r
IG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KaW5kZXggZjEyYTJjNDk1M2YwMDMyZGZiNGI3MmY2OGZmODBmZWRkYjY5MDM1NC4uZDNh
ZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgc3RhdGljIFN0cnVjdEhhbmRs
ZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyB2YWx1ZVdpdGg8Rm9vPjpjb250ZXh0OiBtZXRo
b2QuCiAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlS
ZXR1cm5UeXBlKG1ldGhvZCkpOwotICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0cmluZyB7IHR5cGUuZ2V0KCkgfSk7CisgICAgICAg
IFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQodHlw
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFnSGFuZGxlciYgaGFuZGxlciA9IGl0
ZXItPnZhbHVlOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3RhdGljIFN0cnVjdFRhZ0hhbmRsZXIq
IGhhbmRlckZvclN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNvZGVkVHlwZSkKIAogICAgIHN0YXRp
YyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFw
KCk7CiAKLSAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJz
LT5maW5kKFN0cmluZyB7IGVuY29kZWRUeXBlIH0pOworICAgIFN0cnVjdEhhbmRsZXJzOjppdGVy
YXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQoZW5jb2RlZFR5cGUpOwogICAgIGlmIChp
dGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuICZpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KaW5kZXggZjgyMWRmOGUzZWJlZDU3ZjU0MGNkMmYwMWQ2NGVjOTZkY2ZhODZjZC4uOTZlNDQ3
ODg3MGNkODFhNTg5OTdkMDJkYTZmYTRmYmEzNDZhZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgSlNDOjpK
U09iamVjdCogYWxsb2NhdGVDb25zdHJ1Y3RvckZvckN1c3RvbUNsYXNzKEpTQ29udGV4dCAqY29u
dGV4dCwgY29ucwogICAgICAgICBmb3JFYWNoTWV0aG9kSW5DbGFzcyhjdXJyZW50Q2xhc3MsIF4o
TWV0aG9kIG1ldGhvZCkgewogICAgICAgICAgICAgU0VMIHNlbGVjdG9yID0gbWV0aG9kX2dldE5h
bWUobWV0aG9kKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBzZWxfZ2V0TmFtZShz
ZWxlY3Rvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBpbml0VGFibGUuZmluZChTdHJpbmcg
eyBuYW1lIH0pOworICAgICAgICAgICAgYXV0byBpdGVyID0gaW5pdFRhYmxlLmZpbmQobmFtZSk7
CiAKICAgICAgICAgICAgIGlmIChpdGVyID09IGluaXRUYWJsZS5lbmQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGMyODc3MzZkNzFl
N2ViOWU4ODU1OGZmY2QwYjcwNDUyNWJmZmNmOTcuLjMwYWNhZjMzNDU4MDUzNzRkODFkYmIwYjFj
NWQ0OWZmN2FmMGE2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsK
IAotICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5z
cGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsg
dGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIl9zKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CisgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJ
bnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcg
eyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CiAKICAgICBJbmplY3RlZFNjcmlwdDo6RXhlY3V0ZU9wdGlvbnMgb3B0aW9uczsKICAgICBv
cHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYzg2N2VlZDI1YTlmNTgzN2I5
N2ZjMzdlYTExNGRkZGMyY2I2NGJmMy4uYmRkOTU5Y2VjNzkxZTQ0NzM2YjE3ZDRiZTU5NmEwYzhm
NGViNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIGR1bXBKSVRNZW1vcnkoY29u
c3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoZmQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgcGF0aCB7
IE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkgfTsKLSAgICAgICAgICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCIlcGlkIl9zLCBTdHJpbmc6Om51bWJlcihnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpKTsKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIlcGlkIiwgU3RyaW5n
OjpudW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiAgICAgICAgICAgICAgICAgZmQgPSBv
cGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIE9f
Q1JFQVQgfCBPX1RSVU5DIHwgT19BUFBFTkQgfCBPX1dST05MWSB8IE9fRVhMT0NLIHwgT19OT05C
TE9DSywgMDY2Nik7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmQgIT0gLTEpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAppbmRleCBkMjEzNDM5NjQ3MzYwZTljYjViNWQ5Mzk2YWNhYTQxMmRj
OGRjODRlLi44Y2QwZDVlOWM0NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5k
ZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAgICAgICAgIHJldHVy
biBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRl
eHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFj
dFNvdXJjZSk7Ci0gICAgYXV0byBub3RBRnVuY3Rpb25JbmRleCA9IG9yaWdpbmFsTWVzc2FnZS5y
ZXZlcnNlRmluZCgiaXMgbm90IGEgZnVuY3Rpb24iX3MpOworICAgIGF1dG8gbm90QUZ1bmN0aW9u
SW5kZXggPSBvcmlnaW5hbE1lc3NhZ2UucmV2ZXJzZUZpbmQoImlzIG5vdCBhIGZ1bmN0aW9uIik7
CiAgICAgUkVMRUFTRV9BU1NFUlQobm90QUZ1bmN0aW9uSW5kZXggIT0gbm90Rm91bmQpOwogICAg
IFN0cmluZ1ZpZXcgZGlzcGxheVZhbHVlOwogICAgIGlmIChvcmlnaW5hbE1lc3NhZ2UuaXM4Qml0
KCkpIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlcklu
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvCiAgICAgICAg
IHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91
bmRFeGFjdFNvdXJjZSk7Ci0gICAgYXV0byBpbkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmlu
ZCgiaW4iX3MpOworICAgIGF1dG8gaW5JbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImlu
Iik7CiAgICAgaWYgKGluSW5kZXggPT0gbm90Rm91bmQpIHsKICAgICAgICAgLy8gVGhpcyBzaG91
bGQgYmFzaWNhbGx5IG5ldmVyIGhhcHBlbiwgc2luY2UgSlMgY29kZSBtdXN0IHVzZSB0aGUgbGl0
ZXJhbAogICAgICAgICAvLyB0ZXh0ICJpbiIgZm9yIHRoZSBgaW5gIG9wZXJhdGlvbi4gSG93ZXZl
ciwgaWYgd2UgZmFpbCB0byBmaW5kICJpbiIKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbmxpbmUgU3Ry
aW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjbwogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJy
b3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1cnJlbmNl
ID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gaW5zdGFuY2Vv
ZkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiaW5zdGFuY2VvZiJfcyk7CisgICAgYXV0
byBpbnN0YW5jZW9mSW5kZXggPSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJpbnN0YW5jZW9mIik7
CiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gU3ltYm9sLmhhc0luc3RhbmNlIGZ1bmN0aW9u
IGlzIGRpcmVjdGx5IGNhbGxlZC4KICAgICBpZiAoaW5zdGFuY2VvZkluZGV4ID09IG5vdEZvdW5k
KQogICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXNzYWdlOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0
YXRpYyBTdHJpbmcgaW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNZXNzYWdlLCBjb25zCiAgICAgaWYgKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5j
ZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRBcHByb3hp
bWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCk7CiAKLSAgICBhdXRv
IGV4dGVuZHNJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiX3MpOworICAg
IGF1dG8gZXh0ZW5kc0luZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiZXh0ZW5kcyIpOwog
ICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRl
bmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5h
bE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRleHQsICInKSIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCA1ZmFiMWI4
MzA1M2MzODJlYmEwODJhOTRhZDhlNjNkNjlmNTc0NTk0Li43ZTFiY2UyOWJhZmVmZmJjYTY0ZmM1
NDVlYTRhYjg4YzhlZTFmZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgdm9pZCBUeXBlUHJvZmlsZXI6Omxv
Z1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24sIFZNJiB2bSkKIAog
ICAgIGRhdGFMb2coIlx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IFR5cGVQ
cm9maWxlclJldHVyblN0YXRlbWVudCA/ICJbUmV0dXJuIFN0YXRlbWVudF0iIDogIltOb3JtYWwg
U3RhdGVtZW50XSIsICJcbiIpOwogCi0gICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIl9z
LCAiXG5cdFx0Il9zKSwgIlxuIik7CisgICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIiwg
IlxuXHRcdCIpLCAiXG4iKTsKICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKLSAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iX3MsICJcblx0XHQiX3MpLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwogfQogCiB2
b2lkIFR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNzMzZjk4
MTJmMThlOGY2MThlNGVhOTA3ZjkxY2IyNTNmN2MwOGVjZC4uZDg4YmEyOGMzZjMwOTI3MmUzZGEy
ZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3Bl
cnR5SGFzaCgpCiAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICBmb3IgKGF1dG8mIGtleSA6
IG1fZmllbGRzKSB7CiAgICAgICAgIFN0cmluZyBwcm9wZXJ0eSA9IGtleS5nZXQoKTsKLSAgICAg
ICAgcHJvcGVydHkucmVwbGFjZSgiOiJfcywgIlxcOiJfcyk7IC8vIEVuc3VyZSB0aGF0IGhhc2go
eyJmb286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVzZSB3ZSdyZSB1
c2luZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwgY2hhcmFjdGVy
cyBpbiBmaWVsZCBuYW1lcyBpbiBKUy4KKyAgICAgICAgcHJvcGVydHkucmVwbGFjZSgiOiIsICJc
XDoiKTsgLy8gRW5zdXJlIHRoYXQgaGFzaCh7ImZvbzoiLCAiYmFyIn0pICE9IGhhc2goeyJmb28i
LCAiOmJhciJ9KSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGNvbG9ucyBhcyBhIHNlcGFyYXRvciBhbmQg
Y29sb25zIGFyZSBsZWdhbCBjaGFyYWN0ZXJzIGluIGZpZWxkIG5hbWVzIGluIEpTLgogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwcm9wZXJ0eSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA5NTY4NmJhMTkyMGJi
MGViMTI3NDA0ZjEzOTFiYjAyZjViYjE2MDg5Li41ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJjOTMx
NzVmZjc2ZmNiYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcm
IG5ldwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
U3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9yaWdDb2RlLnByb3ZpZGVyKCktPnNvdXJjZSgpLnRv
U3RyaW5nKCk7CiAgICAgdW5zaWduZWQgb3JpZ1N0YXJ0ID0gb3JpZ0NvZGUuc3RhcnRPZmZzZXQo
KTsKLSAgICB1bnNpZ25lZCBvcmlnRnVuY3Rpb25TdGFydCA9IG9yaWdQcm92aWRlclN0ci5yZXZl
cnNlRmluZCgiZnVuY3Rpb24iX3MsIG9yaWdTdGFydCk7CisgICAgdW5zaWduZWQgb3JpZ0Z1bmN0
aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ1N0
YXJ0KTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdQcm92aWRlclN0ci5maW5k
KCd7Jywgb3JpZ1N0YXJ0KTsKICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VT
dGFydCAtIG9yaWdGdW5jdGlvblN0YXJ0OwogICAgIFN0cmluZyBvcmlnSGVhZGVyID0gb3JpZ1By
b3ZpZGVyU3RyLnN1YnN0cmluZyhvcmlnRnVuY3Rpb25TdGFydCwgaGVhZGVyTGVuZ3RoKTsKQEAg
LTE0Nyw4ICsxNDcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0
IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcmIG5ldwogICAgIGluZm8ubGluZUNv
dW50ID0gMTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93
LgogICAgIGluZm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8g
RmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8u
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgiKCIpOwotICAgIGlu
Zm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgieyIpOwor
ICAgIGluZm8ucGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcp
OworICAgIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmlu
ZCgneycpOwogICAgIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3Ry
Lmxlbmd0aCgpIC0gMTsKIAogICAgIGluZm8uc291cmNlQ29kZSA9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4
ZDBkYzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRh
aW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hh
cmFjdGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0
cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAg
c2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy5maW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9
CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsK
KyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRj
aEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZp
bmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5n
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRm
OWJhYjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0
ZTRiNmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2
IEBAIGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25z
dCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2Vh
cmNoTGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJz
LCAwLCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1
bnNpZ25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWdu
ZWQgbWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdM
ZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3Ry
aW5nTGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVu
Z3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgp
KSB7Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0Zp
bmQuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgp
OwotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291
cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zm
c2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1l
IFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlw
ZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJh
Y3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0
ZQogICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+
KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29u
c3QgU3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQg
bmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9
PSAxKSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5l
ZWRsZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJh
Y3RlcnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0K
LSAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0Owot
ICAgIGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxl
LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7
Ci0KLSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQs
IG5lZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3Ro
KTsKLX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQg
aW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVz
ZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUg
dGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2Uy
NjFhMjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFj
NWNjYWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIz
ICs5MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJ
bXBsOjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51
bGwgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5n
KSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0g
bWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hT
dHJpbmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBz
dHJpbmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAg
IGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2
KClbMF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3Ry
aW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNo
YXJhY3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigp
LCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYg
KG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAg
ICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3Ro
IGlzIGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmlu
ZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5n
dGgoKSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5n
LT5jaGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRj
aFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYo
KSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsK
IAotICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sg
Zm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtF
TFkoIW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJu
IGZpbmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3Ry
aW5nKSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNl
KCp0aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNo
U3RyaW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAq
bWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90
IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgp
CkBAIC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZl
cnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0
dXJuIGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVy
c2VGaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8v
IENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYg
KCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVu
Z3RoKCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGlu
ZGV4LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6
OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAg
ICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgog
ICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwg
KCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsK
KyAgICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxl
bmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJz
ZUZpbmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsK
ICAgICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4K
QEAgLTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0
cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
OCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hM
ZW5ndGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3Ro
KTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
IHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgo
KSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5k
ZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hT
dHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0
ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1h
dGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBp
bmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5u
ZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1
YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBj
b25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5
ICsxNDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBh
dHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7
CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQog
ewogICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKIAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAg
ICB1bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBh
dHRlcm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWdu
ZWQgcmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21l
bnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAv
LyBDb3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQo
cGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRj
aENvdW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9
Ci0gICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBk
byBhbnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50
ICogcGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBN
YXhMZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsx
NDQyLDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwq
IHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNo
Q291bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3
IGRhdGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50
TGVuZ3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0
ID0gMDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1l
bnRJczhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNl
bWVudElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQg
Y2FzZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAg
ICAgLy8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3
ICsxNDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1w
bCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21l
bnRMZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVu
dExlbmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJh
Y3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3Ry
TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAg
ICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAg
ICAgICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAog
ICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxh
Y2VtZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCBy
ZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNl
dCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMo
ZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOwor
ICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQu
Y2hhcmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zm
c2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVu
dEVuZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDhkODBm
Nzg3NzgzZDQzYzU2MmY4ZTBjZDNlMzY3NWI5NzZiYTgyNTkuLjg1ZDdjNGVjNjhhZTQ1MDcxN2Fh
OTZlMGJiYWU3OTNiMTc0NzIzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzIs
MTYgKzQzMiwxMyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
LSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBs
JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gTWF4TGVuZ3Ro
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0lt
cGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFN0cmluZ0ltcGwmKSBjb25zdDsKQEAgLTQ2Niw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBj
aGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJl
cGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxhY2VtZW50
KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50
TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmlu
Z1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9v
bCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uYTcz
ZGYwNTA5ZWU1MWZkZWUwMjcwNWRiYmMzZmNiMDEzZTU4YzQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTEwOTksNiArMTA5OSwxNDIgQEAgaW5saW5lIGJvb2wgaGFzVW5wYWlyZWRT
dXJyb2dhdGUoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxp
bmUgc2l6ZV90IGZpbmRDb21tb24oU3RyaW5nVmlldyBoYXlzdGFjaywgU3RyaW5nVmlldyBuZWVk
bGUsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRs
ZS5sZW5ndGgoKTsKKworICAgIGlmIChuZWVkbGVMZW5ndGggPT0gMSkgeworICAgICAgICBpZiAo
aGF5c3RhY2suaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNr
LmNoYXJhY3RlcnM4KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2su
bGVuZ3RoKCksIG5lZWRsZVswXSwgc3RhcnQpOworICAgIH0KKworICAgIGlmIChzdGFydCA+IGhh
eXN0YWNrLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoIW5l
ZWRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0YXJ0OworCisgICAgdW5zaWduZWQgc2VhcmNo
TGVuZ3RoID0gaGF5c3RhY2subGVuZ3RoKCkgLSBzdGFydDsKKyAgICBpZiAobmVlZGxlTGVuZ3Ro
ID4gc2VhcmNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoaGF5
c3RhY2suaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVk
bGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBpZiAobmVlZGxlLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZmluZElu
bmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgp
LCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgpOworCisgICAgcmV0dXJuIGZpbmRJ
bm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2
KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Cit9CisKK2lubGluZSBzaXpl
X3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc291cmNlLCBTdHJpbmdWaWV3IHN0
cmluZ1RvRmluZCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpCit7CisgICAgdW5zaWduZWQgc291cmNl
U3RyaW5nTGVuZ3RoID0gc291cmNlLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gc3RyaW5nVG9GaW5kLmxlbmd0aCgpOworICAgIGlmICghbWF0Y2hMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGQ6Om1pbihzdGFydE9mZnNldCwgc291cmNlU3RyaW5nTGVuZ3RoKTsKKworICAg
IC8vIENoZWNrIHN0YXJ0T2Zmc2V0ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgorICAgIGlm
IChzdGFydE9mZnNldCA+IHNvdXJjZVN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IHNvdXJjZVN0cmluZ0xlbmd0aCAtIHN0
YXJ0T2Zmc2V0OworICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAg
cmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgeworICAgICAgICBp
ZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4
KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9G
aW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisgICAgfQorCisgICAgaWYgKHN0cmluZ1RvRmluZC5pczhCaXQoKSkKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1Rv
RmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmlu
Z1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQoraW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmQoU3RyaW5n
VmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNp
emVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNpemVfdCBTdHJp
bmc6OnJldmVyc2VGaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcsIHN0YXJ0
KSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0
T2Zmc2V0KSAhPSBub3RGb3VuZDsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KFN0cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQoreworICAgIGlmICht
X2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2Vt
ZW50KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVw
bGFjZShzdGFydCwgbGVuZ3RoLCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhp
czsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5n
LCB1bnNpZ25lZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJp
bmcsIHN0YXJ0KTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5n
LmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOworfQorCitpbmxpbmUgc2l6ZV90IEF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmlu
Zzo6Y29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3Ry
aW5nLmNvbnRhaW5zKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKaW5kZXggNDFlZDM1Y2NhNmU5ZjcxZjI2ZWRkYmQzNWE3OGFlNmFlNjQ3ODA4MS4uNWNkMGE3
YTM5NGNlYTk3YTA5ODA1NTQzYWJjZmVmYTNmMjRkMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC0xNjQsMTggKzE2NCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCkpIDogbm90Rm91
bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLmltcGwoKSwgc3RhcnRPZmZzZXQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXpl
X3QgZmluZChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1
bnNpZ25lZCBzdGFydCkgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkg
OiBub3RGb3VuZDsgfQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3Qg
aW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KICAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjaGFyYWN0ZXIsIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQor
ICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IE1heExl
bmd0aCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7
CkBAIC0xODQsOSArMTgzLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmlu
ZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQot
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywg
dW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMo
U3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CiAKICAgICBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29s
IHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CkBAIC0yMTEsNyArMjEwLDcgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1l
bnQpOwogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVwbGFjZShjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFN0cmluZ1ZpZXcg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7
CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdp
dGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0
ZXJDb3VudF0pOwogCkBAIC01MDcsMjAgKzUwNiw2IEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6
cmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYgKG1faW1w
bCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldC5pbXBsKCksIHJlcGxh
Y2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgU3RyaW5nJiBT
dHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudCkKLXsKLSAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdB
WVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQogewogICAgIGlmICht
X2ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IDZjZGY1NjhlOTRjNjUxMjNjNTU3ODk2Mjk3NjMwZmRjMTk2NTI4MDUu
LjkzNmE3ZTQzMDU2YzQ1NWUyOWIyNTUwZmI0MDEwYmVlZWMzYjM1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xNzYs
NyArMTc2LDcgQEAgUmVmUHRyPERPTUZvcm1EYXRhPiBGZXRjaEJvZHlDb25zdW1lcjo6cGFja2Fn
ZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKICAgICAgICAgaWYgKCFtaW1lVHlw
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRhcnki
X3MpOworICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZp
bmQoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbWltZVR5cGUtPnBh
cmFtZXRlcnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzOWMxNDdk
YWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIzLi4yZmFmM2U5NWQzMWM5ODlmY2UxMmUw
NTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURh
dGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWROYW1lKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0gZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5y
ZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSIsICIuIik7CiAK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKG5hbWUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNl
cy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5o
CmluZGV4IGI3NWMyNzMyMDFiMDM5NmE1MGRjODQ0NDIxNmQwZDY0MWZkYmRkNTcuLjRhNTFiNTY5
ZWI0OGJhNGJkN2I4Mjk2MGU3YWRiZmMzYzZiZDVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFBBTCB7CiAvLyBTZWUgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
UGVyY2VudC1lbmNvZGluZyNOb24tc3RhbmRhcmRfaW1wbGVtZW50YXRpb25zPi4KIHN0cnVjdCBV
bmljb2RlMTZCaXRFc2NhcGVTZXF1ZW5jZSB7CiAgICAgZW51bSB7IFNlcXVlbmNlU2l6ZSA9IDYg
fTsgLy8gZS5nLiAldTI2QzQKLSAgICBzdGF0aWMgc2l6ZV90IGZpbmRJblN0cmluZyhTdHJpbmdW
aWV3IHN0cmluZywgc2l6ZV90IHN0YXJ0UG9zaXRpb24pIHsgcmV0dXJuIHN0cmluZy5maW5kKFN0
cmluZ1ZpZXcoIiV1IiksIHN0YXJ0UG9zaXRpb24pOyB9CisgICAgc3RhdGljIHNpemVfdCBmaW5k
SW5TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBzdGFydFBvc2l0aW9uKSB7IHJldHVy
biBzdHJpbmcuZmluZCgiJXUiLCBzdGFydFBvc2l0aW9uKTsgfQogICAgIHN0YXRpYyBzaXplX3Qg
ZmluZEVuZE9mUnVuKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgc2l6
ZV90IGVuZFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgc2l6ZV90IHJ1bkVuZCA9IHN0YXJ0UG9z
aXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRDb2RlY1dp
bi5jcHAKaW5kZXggZTdmNGU5ZGMxODM0ZDBmNjM5YzZiYWJmNjk2NTYyMDZiODc2NzQwYy4uNmYx
OGYyYjBkNjgyYmViMThjZDZhMTMxOTY4MjNlYWIzYTJkNjIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIExhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgIGkgPSBj
b2RlUGFnZUNoYXJzZXRzKCkuc2V0KGNwSW5mby51aUNvZGVQYWdlLCBuYW1lKS5pdGVyYXRvcjsK
ICAgICAgICAgfQogICAgICAgICBpZiAoaSAhPSBjb2RlUGFnZUNoYXJzZXRzKCkuZW5kKCkpIHsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDaGFyc2V0SW5mbz46Oml0ZXJhdG9yIGogPSBr
bm93bkNoYXJzZXRzKCkuZmluZChTdHJpbmcoaS0+dmFsdWUuZGF0YSgpLCBpLT52YWx1ZS5sZW5n
dGgoKSkpOworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0
b3IgaiA9IGtub3duQ2hhcnNldHMoKS5maW5kKFN0cmluZ1ZpZXcgeyBpLT52YWx1ZS5kYXRhKCks
IGktPnZhbHVlLmxlbmd0aCgpIH0pOwogICAgICAgICAgICAgQVNTRVJUKGogIT0ga25vd25DaGFy
c2V0cygpLmVuZCgpKTsKICAgICAgICAgICAgIENoYXJzZXRJbmZvJiBpbmZvID0gai0+dmFsdWU7
CiAgICAgICAgICAgICBpbmZvLm1fbmFtZSA9IGktPnZhbHVlLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQ1NzdlYTY2ZWFhYTAzMTcy
MDI5NTUzMGIxYWMwZDU5MzgzNmYwZmIuLjJmMTBjZWQ4NDEzMWVkN2U5ZGQxODdhMzQwMWNmZGNk
ZWM0YmE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVD
b21tb24oY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29k
ZSBlbHNld2hlcmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlh
IHRoZSBrZXlib2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGlu
Z3MgY29taW5nIGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFs
dWUgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBu
b3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJfcywgIlxuIl9zKTsKKyAgICBub3JtYWxpemVk
VmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOwogICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNl
KCdccicsICdcbicpOwogCiAgICAgLy8gUmV0dXJuIGVhcmx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIHRoZSBjYXJldCBvciB0cmlnZ2VyIG90aGVyIHNpZGUgZWZmZWN0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDg2NDNhODQ3
Nzc2NDU5MzMxZjQzZWEyOThmZThlZjRmMDg0MWYwYTIuLmE3NWI2M2EzYjVkZmViOWY2NzI4OTI4
ZWVmY2IzNjNhZmY4NmY0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVTZXBhcmF0b3IoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjovLyIpKTsKIAotICAgIHNpemVfdCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2No
ZW1lU2VwYXJhdG9yKTsKKyAgICBzaXplX3Qgc2NoZW1lRW5kUG9zID0gcGF0dGVybi5maW5kKHNj
aGVtZVNlcGFyYXRvci5nZXQoKSk7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9PSBub3RGb3VuZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29u
dGV4dEF0dHJpYnV0ZXMuY3BwCmluZGV4IDEzODRjNmIxMTRlNzllYmM3MmRkMjU3Y2YwNTU4MjFm
YzRhNDYzNGEuLjY2ZGJlYzQwYWFjMmI3Mzk3YTE5MzMxMTY2YzcyYmQ2MjYxNmUwNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCkBAIC01NSw4
ICs1NSw4IEBAIGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgVGV4dHVyZU1h
cHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKQogICAgICAgICBhdHRyaWJ1dGVzLmlzR0xFUzJD
b21wbGlhbnQgPSB0cnVlOwogCiAgICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7Ci0g
ICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSBleHRlbnNpb25zU3RyaW5n
LmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9ucG90Il9zKTsKLSAgICAgICAgYXR0cmlidXRlcy5z
dXBwb3J0c1VucGFja1N1YmltYWdlID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xfRVhU
X3VucGFja19zdWJpbWFnZSJfcyk7CisgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4
dHVyZXMgPSBleHRlbnNpb25zU3RyaW5nLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7
CisgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZSA9IGV4dGVuc2lvbnNT
dHJpbmcuY29udGFpbnMoIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiKTsKICNlbHNlCiAgICAgICAg
IGF0dHJpYnV0ZXMuaXNHTEVTMkNvbXBsaWFudCA9IGZhbHNlOwogICAgICAgICBhdHRyaWJ1dGVz
LnN1cHBvcnRzTlBPVFRleHR1cmVzID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAppbmRleCA2Mjk0NWQ5NmUxNmY3ODIz
NjA1OGE0OTg0NWFmYjg0MDM5YjA3NTIyLi5lNTBkY2NmNWQ1ZGQ0YmRjZjFiOGU4NDg4MTBmNDFh
YTZhNjA5NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFpclBvZHMoTUFLRV9TVEFUSUNfU1RS
SU5HX0lNUEwoIkFpclBvZHMiKSk7CiAKLSAgICAgICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlw
ZTo6TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJl
bC5jb250YWlucyhhaXJQb2RzKSkKKyAgICAgICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6
TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5j
b250YWlucyhhaXJQb2RzLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBhaXJQb2RzOwogCiAg
ICAgICAgIHJldHVybiBtX2xhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJs
LmNwcAppbmRleCBiNjYyOTYwY2QwYWEzZjYzZGM2Yzc4YTQ3ZTI4Y2MyMDE4NmUzNTU5Li4zNjNj
YjJkZTQxN2M0Zjg2YmM2NmZmZjM0ZjQxMjQ0MjgxZWNmZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDdXJsLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIFN0cmluZyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6cGFyc2VSZWFsbShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIAogICAgIFN0cmluZyByZWFsbTsKICAgICBhdXRvIGF1dGhIZWFkZXIgPSByZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQocmVzcG9uc2UuaXNVbmF1dGhvcml6ZWQoKSA/IHd3d0F1dGhlbnRp
Y2F0ZSA6IHByb3h5QXV0aGVudGljYXRlKTsKLSAgICBhdXRvIHJlYWxtUG9zID0gYXV0aEhlYWRl
ci5maW5kSWdub3JpbmdBU0NJSUNhc2UocmVhbG1TdHJpbmcpOworICAgIGF1dG8gcmVhbG1Qb3Mg
PSBhdXRoSGVhZGVyLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShyZWFsbVN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKHJlYWxtUG9zICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIHJlYWxtID0gYXV0aEhlYWRl
ci5zdWJzdHJpbmcocmVhbG1Qb3MgKyByZWFsbVN0cmluZy5nZXQoKS5sZW5ndGgoKSk7CiAgICAg
ICAgIHJlYWxtID0gcmVhbG0ubGVmdChyZWFsbS5maW5kKCcsJykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5k
ZXggMjE5YmNkZTU1MTFkNDViNGMxMzVhZmI3MzM2YzM4ZjA2YmYxYTI4MS4uN2I0Njg1NWEwNTE1
NzQ3ZjRkZGZiZGU1YzkwOWFhYjk4NzA2MDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xNjYsNyAr
MTY2LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZFJlc3BvbnNlSGVhZGVycygpCiAgICAg
VmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7
CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlckZpZWxkcy5l
bmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgIHNpemVfdCBzcGxpdFBvc2l0
aW9uID0gaXQtPmZpbmQoIjoiKTsKKyAgICAgICAgc2l6ZV90IHNwbGl0UG9zaXRpb24gPSBpdC0+
ZmluZCgnOicpOwogICAgICAgICBpZiAoc3BsaXRQb3NpdGlvbiAhPSBub3RGb3VuZCkKICAgICAg
ICAgICAgIG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5sZWZ0KHNwbGl0
UG9zaXRpb24pLCBpdC0+c3Vic3RyaW5nKHNwbGl0UG9zaXRpb24rMSkuc3RyaXBXaGl0ZVNwYWNl
KCkpOwogICAgICAgICArK2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGQxZTU4NjI0
YWFlZTJlY2U4MTI5ZGQzNGVhOTg2NjI2ZTZjZGYwNjguLjY2YjY2Y2YyOGFiNjM0YjU0MDYyMjhj
NzVkNDAzOGFkNjZlOGZmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnkoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBmb3IgKGF1dG8gaGVhZGVyIDogcmVzcG9uc2UuaGVhZGVycykgewotICAg
ICAgICBhdXRvIHNwbGl0UG9zaXN0aW9uID0gaGVhZGVyLmZpbmQoIjoiKTsKKyAgICAgICAgYXV0
byBzcGxpdFBvc2lzdGlvbiA9IGhlYWRlci5maW5kKCc6Jyk7CiAgICAgICAgIGlmIChzcGxpdFBv
c2lzdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRl
eCAyZDZiMDkxMjg4ODVkN2FjOTUxMzU1YzA4OWY4YTQ4ZTkxN2Y0Yzk5Li5mM2E1NWIzODExZDUy
OTkyOTU4MDJjNTA4YmM3MDhjOGY5MjRkNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTUzNiw3ICs1MzYsNyBA
QCBpbnQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEZWJ1Z0luZm8oY3VybF9pbmZvdHlwZSB0eXBl
LCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZQogICAgICAgICAgICAgaGVhZGVyRmllbGRzLnJlbW92
ZSgwKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlckZpZWxkcykgewotICAg
ICAgICAgICAgYXV0byBwb3MgPSBoZWFkZXIuZmluZCgiOiIpOworICAgICAgICAgICAgYXV0byBw
b3MgPSBoZWFkZXIuZmluZCgnOicpOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkg
ewogICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gaGVhZGVyLmxlZnQocG9zKS5zdHJpcFdoaXRl
U3BhY2UoKTsKICAgICAgICAgICAgICAgICBhdXRvIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZyhw
b3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
V2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2Uu
Y3BwCmluZGV4IGI4OTdlNWNkMjcwNmJiNWJjNDA4OWM0NTVkMGZhNDViMmJiOTc2NzEuLjVlNDQw
NjdlZjBhMjhiMWI4MGFlYmZmM2NhYWIzYzg0Y2Q1YThkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJE
cml2ZXJTZXJ2aWNlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNl
OjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRf
U0VSVkVSKQogICAgIGlmICghdGFyZ2V0U3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRv
IHBvc2l0aW9uID0gdGFyZ2V0U3RyaW5nLnJldmVyc2VGaW5kKCI6Il9zKTsKKyAgICAgICAgYXV0
byBwb3NpdGlvbiA9IHRhcmdldFN0cmluZy5yZXZlcnNlRmluZCgnOicpOwogICAgICAgICBpZiAo
cG9zaXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIG1fdGFyZ2V0QWRkcmVzcyA9IHRh
cmdldFN0cmluZy5sZWZ0KHBvc2l0aW9uKTsKICAgICAgICAgICAgIG1fdGFyZ2V0UG9ydCA9IHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PihTdHJpbmdWaWV3IHsgdGFy
Z2V0U3RyaW5nIH0uc3Vic3RyaW5nKHBvc2l0aW9uICsgMSkpLnZhbHVlX29yKDApOwpAQCAtNjE3
LDcgKzYxNyw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IFdlYkRyaXZlclNlcnZpY2U6OnZhbGlk
YXRlZENhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmCiAgICAgICAgICAgICBpZiAoIXVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIHx8ICFkZXNlcmlhbGl6ZVVuaGFuZGxlZFByb21wdEJlaGF2
aW9yKHVuaGFuZGxlZFByb21wdEJlaGF2aW9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKGl0LT5rZXksIHVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yKTsKLSAgICAgICAgfSBlbHNlIGlmIChpdC0+a2V5LmZpbmQoIjoiKSAhPSBu
b3RGb3VuZCkgeworICAgICAgICB9IGVsc2UgaWYgKGl0LT5rZXkuZmluZCgnOicpICE9IG5vdEZv
dW5kKSB7CiAgICAgICAgICAgICBpZiAoIXBsYXRmb3JtVmFsaWRhdGVDYXBhYmlsaXR5KGl0LT5r
ZXksIGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICByZXN1bHQtPnNldFZhbHVlKGl0LT5rZXksIGl0LT52YWx1ZS5jb3B5UmVmKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nl
c3NTb3VwLmNwcAppbmRleCBlZDRmOTU1ZGY4NzQ0NjBkNDMwNmYyZTgyOWM2NTdmMGY0MDRkNDM0
Li5mMmVmMjkwYzcxY2I2MWY0NmM3OGVjNzNlMDUyYTBkNWMzZjlmMDY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgQ1N0cmluZyBidWlsZEFjY2VwdExhbmd1YWdl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQogICAgIHNpemVfdCBsYW5ndWFnZXND
b3VudCA9IGxhbmd1YWdlcy5zaXplKCk7CiAKICAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4KLSAg
ICBzaXplX3QgY0xvY2FsZVBvc2l0aW9uID0gbGFuZ3VhZ2VzLmZpbmQoImMiKTsKKyAgICBzaXpl
X3QgY0xvY2FsZVBvc2l0aW9uID0gbGFuZ3VhZ2VzLmZpbmQoJ2MnKTsKICAgICBpZiAoY0xvY2Fs
ZVBvc2l0aW9uICE9IG5vdEZvdW5kKQogICAgICAgICBsYW5ndWFnZXNDb3VudC0tOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmluZGV4IDM0
OWRkMGQ4N2FjNzAxMjdjOWYzNjE4ODFlOTk0YjgyYTVjYjFiNjcuLmI3YzU0ZjIxZTY4MmUyMzY4
NWMwMWU1M2Y2MzYyNWQ5MjAxZWIzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC02NDUsNyArNjQ1LDcgQEAgc3RhdGljIFN0cmlu
ZyBnZXRVc2VyRGlyZWN0b3J5U3VmZml4KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXQKICAgICBhdXRvIHVzZXJEaXJlY3RvcnlTdWZmaXggPSBwYXJhbWV0ZXJzLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmZpbmQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOwogICAg
IGlmICh1c2VyRGlyZWN0b3J5U3VmZml4ICE9IHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlv
bkRhdGEuZW5kKCkpIHsKICAgICAgICAgU3RyaW5nIHN1ZmZpeCA9IHVzZXJEaXJlY3RvcnlTdWZm
aXgtPnZhbHVlOwotICAgICAgICBhdXRvIGZpcnN0UGF0aFNlcGFyYXRvciA9IHN1ZmZpeC5maW5k
KCIvIik7CisgICAgICAgIGF1dG8gZmlyc3RQYXRoU2VwYXJhdG9yID0gc3VmZml4LmZpbmQoJy8n
KTsKICAgICAgICAgaWYgKGZpcnN0UGF0aFNlcGFyYXRvciAhPSBub3RGb3VuZCkKICAgICAgICAg
ICAgIHN1ZmZpeC50cnVuY2F0ZShmaXJzdFBhdGhTZXBhcmF0b3IpOwogICAgICAgICByZXR1cm4g
c3VmZml4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYmFkYWYxNTg3YTIw
MTk3N2ViOWU3NGYxNDc5Nzk0N2ViMjQ3MmYxZC4uZjRhNWQ0NGUxOTcxNTllNGEzMmE0Zjg4NmZm
NDc2ODM5MmEyNTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29u
c3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICBzZWFyY2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNl
YXJjaFN0cmluZyk7Ci0gICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOwor
ICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiLCAiKyIpOwogICAgIGF1dG8gc2VhcmNoVVJM
ID0gVVJMIHsgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmlu
ZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAKICAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUlu
ZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBkZmMwYWU1MTk2Njg5MjQzYWIwZjhmYzkw
ODY1Y2M5NmM1NjBlZWQ0Li4xYmMzYzNkNTk4ZDQ3ZGFlMTgzNDk3NWVmNDI2M2NlNDhlNDU3Yzkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQg
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJh
bWUqIGZyYW1lKQogICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBzZWFy
Y2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0g
ICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIHNlYXJjaFN0cmlu
Zy5yZXBsYWNlKCIlMjAiLCAiKyIpOwogICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgImh0dHBz
Oi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgm
b2U9VVRGLTgiIH07CiAKICAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0
b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKaW5kZXggYWFkZjRmOWNlM2U1MWJmNTZkMTA4
YzNiZTRkMDdiZjljM2RlMzZiZC4uYTQzZGRiODdmMzliMzRlNmIzNzBiNGE4MzYxZTc0YWEwNzJk
YzE4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1w
bC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAK
QEAgLTMzNCwxMyArMzM0LDEzIEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5nQVND
SUlDYXNlV2l0aEludmFsaWRPZmZzZXQpCiBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZU9uTnVsbCkKIHsKICAgICBhdXRvIHJlZmVyZW5jZSA9IHN0cmluZ0Zyb21VVEY4
KCJBQkPDiUVGRyIpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90
Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7Ci0gICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDApKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2UobnVsbHB0ciwgMykpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdU
Rjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCA3
KSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJl
ZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDgpKTsKLSAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdu
b3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgNDIpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
bnVsbHB0ciwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+Zmlu
ZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9KSk7CisgICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCAwKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNp
emVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcgeyB9LCAzKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RG
Ojpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
eyB9LCA3KSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3Vu
ZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA4KSk7
CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVy
ZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA0MikpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSk7CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5n
QVNDSUlDYXNlT25FbXB0eSkK
</data>
<flag name="commit-queue"
          id="483654"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455610</attachid>
            <date>2022-03-23 23:03:40 -0700</date>
            <delta_ts>2022-03-24 08:28:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220323230340.patch</filename>
            <type>text/plain</type>
            <size>58217</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMTUxYTRlNjAzOWFkM2RmMTFmNjk5
OGEyNTc2NTY1OTIxM2FiMjcuLjViNGZhYmVmMGM1NmYzMTgyMzAwM2QxOGFiODEzMWIwOTFhY2Yw
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmcn
cyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3Ry
aW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IFN0cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRv
IHRoZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9u
J3QgcmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAg
ICAgICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJp
bmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
ZmluZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21T
dHJpbmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisKIDIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcmVwYXJlIEpTQyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0
cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ4N2Y0OTMwMmZiZmFiYWFhMjQ4YmZkYjY1
YjIxYzQ2Nzk2N2YzMy4uN2E1ZjEzNTA1YWM2Y2Q3ODk0NzMwYmY5MGQxNDFmYjI4NDU5MTc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJzZUZpbmQo
KSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRh
YmFzZU5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbik6CisgICAg
ICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
bGFiZWwgY29uc3QpOgorCiAyMDIyLTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUHJlcGFyZSBKU0MgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNo
YXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNTk1MzhlYjBjNmFlZDIzMmFl
OWM1OWRjMTc0YjM5YjRjMDYwY2U5Li5iOTIwMTMzNzFkZGIyNjdjMWEwMzU4ZmMyMGFiNmI3NmZj
Y2UwYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTIzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nJ3MgZmluZCgpIC8gcmV2ZXJz
ZUZpbmQoKSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBv
ZiBhIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUp
OgorCiAyMDIyLTAzLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgQmlnU3VyKyBEZWJ1ZyB3azIgRVdTIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhl
LWlucHV0LXN0cmVhbS9xdWlya3Mud2luZG93Lmh0bWwgaXMgYSBmbGFreSBjcmFzaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDZiZTA2NGUzODM4OTM3ZmRlNWU4NTI4Njk1ZjQxNDBj
MmQ4M2IyZGEuLjFiZDhkYmY1NjI1OTg1MjdkODBmNDJlMmYyMDZkNDdiYzg0NWYzM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZpbmQoKSAv
IHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGlu
c3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorCiAyMDIyLTAz
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSG9tZSBsaW5r
IG9uIHdlYXRoZXIuZ292IGlzIG5vdCB3b3JraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KaW5kZXggZjEyYTJjNDk1M2YwMDMyZGZiNGI3MmY2OGZmODBmZWRkYjY5MDM1NC4uZDNh
ZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgc3RhdGljIFN0cnVjdEhhbmRs
ZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyB2YWx1ZVdpdGg8Rm9vPjpjb250ZXh0OiBtZXRo
b2QuCiAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlS
ZXR1cm5UeXBlKG1ldGhvZCkpOwotICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0cmluZyB7IHR5cGUuZ2V0KCkgfSk7CisgICAgICAg
IFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQodHlw
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFnSGFuZGxlciYgaGFuZGxlciA9IGl0
ZXItPnZhbHVlOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3RhdGljIFN0cnVjdFRhZ0hhbmRsZXIq
IGhhbmRlckZvclN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNvZGVkVHlwZSkKIAogICAgIHN0YXRp
YyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFw
KCk7CiAKLSAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJz
LT5maW5kKFN0cmluZyB7IGVuY29kZWRUeXBlIH0pOworICAgIFN0cnVjdEhhbmRsZXJzOjppdGVy
YXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQoZW5jb2RlZFR5cGUpOwogICAgIGlmIChp
dGVyID09IHN0cnVjdEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuICZpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KaW5kZXggZjgyMWRmOGUzZWJlZDU3ZjU0MGNkMmYwMWQ2NGVjOTZkY2ZhODZjZC4uOTZlNDQ3
ODg3MGNkODFhNTg5OTdkMDJkYTZmYTRmYmEzNDZhZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgSlNDOjpK
U09iamVjdCogYWxsb2NhdGVDb25zdHJ1Y3RvckZvckN1c3RvbUNsYXNzKEpTQ29udGV4dCAqY29u
dGV4dCwgY29ucwogICAgICAgICBmb3JFYWNoTWV0aG9kSW5DbGFzcyhjdXJyZW50Q2xhc3MsIF4o
TWV0aG9kIG1ldGhvZCkgewogICAgICAgICAgICAgU0VMIHNlbGVjdG9yID0gbWV0aG9kX2dldE5h
bWUobWV0aG9kKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBzZWxfZ2V0TmFtZShz
ZWxlY3Rvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBpbml0VGFibGUuZmluZChTdHJpbmcg
eyBuYW1lIH0pOworICAgICAgICAgICAgYXV0byBpdGVyID0gaW5pdFRhYmxlLmZpbmQobmFtZSk7
CiAKICAgICAgICAgICAgIGlmIChpdGVyID09IGluaXRUYWJsZS5lbmQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGMyODc3MzZkNzFl
N2ViOWU4ODU1OGZmY2QwYjcwNDUyNWJmZmNmOTcuLjMwYWNhZjMzNDU4MDUzNzRkODFkYmIwYjFj
NWQ0OWZmN2FmMGE2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsK
IAotICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5z
cGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsg
dGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIl9zKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CisgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJ
bnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcg
eyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CiAKICAgICBJbmplY3RlZFNjcmlwdDo6RXhlY3V0ZU9wdGlvbnMgb3B0aW9uczsKICAgICBv
cHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYzg2N2VlZDI1YTlmNTgzN2I5
N2ZjMzdlYTExNGRkZGMyY2I2NGJmMy4uYmRkOTU5Y2VjNzkxZTQ0NzM2YjE3ZDRiZTU5NmEwYzhm
NGViNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIGR1bXBKSVRNZW1vcnkoY29u
c3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoZmQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgcGF0aCB7
IE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkgfTsKLSAgICAgICAgICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCIlcGlkIl9zLCBTdHJpbmc6Om51bWJlcihnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpKTsKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIlcGlkIiwgU3RyaW5n
OjpudW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiAgICAgICAgICAgICAgICAgZmQgPSBv
cGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIE9f
Q1JFQVQgfCBPX1RSVU5DIHwgT19BUFBFTkQgfCBPX1dST05MWSB8IE9fRVhMT0NLIHwgT19OT05C
TE9DSywgMDY2Nik7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmQgIT0gLTEpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAppbmRleCBkMjEzNDM5NjQ3MzYwZTljYjViNWQ5Mzk2YWNhYTQxMmRj
OGRjODRlLi44Y2QwZDVlOWM0NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5k
ZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAgICAgICAgIHJldHVy
biBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRl
eHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFj
dFNvdXJjZSk7Ci0gICAgYXV0byBub3RBRnVuY3Rpb25JbmRleCA9IG9yaWdpbmFsTWVzc2FnZS5y
ZXZlcnNlRmluZCgiaXMgbm90IGEgZnVuY3Rpb24iX3MpOworICAgIGF1dG8gbm90QUZ1bmN0aW9u
SW5kZXggPSBvcmlnaW5hbE1lc3NhZ2UucmV2ZXJzZUZpbmQoImlzIG5vdCBhIGZ1bmN0aW9uIik7
CiAgICAgUkVMRUFTRV9BU1NFUlQobm90QUZ1bmN0aW9uSW5kZXggIT0gbm90Rm91bmQpOwogICAg
IFN0cmluZ1ZpZXcgZGlzcGxheVZhbHVlOwogICAgIGlmIChvcmlnaW5hbE1lc3NhZ2UuaXM4Qml0
KCkpIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlcklu
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvCiAgICAgICAg
IHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQpOwogCiAgICAgQVNTRVJUKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91
bmRFeGFjdFNvdXJjZSk7Ci0gICAgYXV0byBpbkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmlu
ZCgiaW4iX3MpOworICAgIGF1dG8gaW5JbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImlu
Iik7CiAgICAgaWYgKGluSW5kZXggPT0gbm90Rm91bmQpIHsKICAgICAgICAgLy8gVGhpcyBzaG91
bGQgYmFzaWNhbGx5IG5ldmVyIGhhcHBlbiwgc2luY2UgSlMgY29kZSBtdXN0IHVzZSB0aGUgbGl0
ZXJhbAogICAgICAgICAvLyB0ZXh0ICJpbiIgZm9yIHRoZSBgaW5gIG9wZXJhdGlvbi4gSG93ZXZl
ciwgaWYgd2UgZmFpbCB0byBmaW5kICJpbiIKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbmxpbmUgU3Ry
aW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjbwogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJy
b3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1cnJlbmNl
ID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gaW5zdGFuY2Vv
ZkluZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiaW5zdGFuY2VvZiJfcyk7CisgICAgYXV0
byBpbnN0YW5jZW9mSW5kZXggPSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJpbnN0YW5jZW9mIik7
CiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gU3ltYm9sLmhhc0luc3RhbmNlIGZ1bmN0aW9u
IGlzIGRpcmVjdGx5IGNhbGxlZC4KICAgICBpZiAoaW5zdGFuY2VvZkluZGV4ID09IG5vdEZvdW5k
KQogICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXNzYWdlOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0
YXRpYyBTdHJpbmcgaW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNZXNzYWdlLCBjb25zCiAgICAgaWYgKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0YW5j
ZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRBcHByb3hp
bWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCk7CiAKLSAgICBhdXRv
IGV4dGVuZHNJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiX3MpOworICAg
IGF1dG8gZXh0ZW5kc0luZGV4ID0gc291cmNlVGV4dC5yZXZlcnNlRmluZCgiZXh0ZW5kcyIpOwog
ICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRl
bmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5h
bE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRleHQsICInKSIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCA1ZmFiMWI4
MzA1M2MzODJlYmEwODJhOTRhZDhlNjNkNjlmNTc0NTk0Li43ZTFiY2UyOWJhZmVmZmJjYTY0ZmM1
NDVlYTRhYjg4YzhlZTFmZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgdm9pZCBUeXBlUHJvZmlsZXI6Omxv
Z1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24sIFZNJiB2bSkKIAog
ICAgIGRhdGFMb2coIlx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IFR5cGVQ
cm9maWxlclJldHVyblN0YXRlbWVudCA/ICJbUmV0dXJuIFN0YXRlbWVudF0iIDogIltOb3JtYWwg
U3RhdGVtZW50XSIsICJcbiIpOwogCi0gICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIl9z
LCAiXG5cdFx0Il9zKSwgIlxuIik7CisgICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxuIiwg
IlxuXHRcdCIpLCAiXG4iKTsKICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKLSAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iX3MsICJcblx0XHQiX3MpLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+ZHVtcFR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwogfQogCiB2
b2lkIFR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNzMzZjk4
MTJmMThlOGY2MThlNGVhOTA3ZjkxY2IyNTNmN2MwOGVjZC4uZDg4YmEyOGMzZjMwOTI3MmUzZGEy
ZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3Bl
cnR5SGFzaCgpCiAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICBmb3IgKGF1dG8mIGtleSA6
IG1fZmllbGRzKSB7CiAgICAgICAgIFN0cmluZyBwcm9wZXJ0eSA9IGtleS5nZXQoKTsKLSAgICAg
ICAgcHJvcGVydHkucmVwbGFjZSgiOiJfcywgIlxcOiJfcyk7IC8vIEVuc3VyZSB0aGF0IGhhc2go
eyJmb286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVzZSB3ZSdyZSB1
c2luZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwgY2hhcmFjdGVy
cyBpbiBmaWVsZCBuYW1lcyBpbiBKUy4KKyAgICAgICAgcHJvcGVydHkucmVwbGFjZSgiOiIsICJc
XDoiKTsgLy8gRW5zdXJlIHRoYXQgaGFzaCh7ImZvbzoiLCAiYmFyIn0pICE9IGhhc2goeyJmb28i
LCAiOmJhciJ9KSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGNvbG9ucyBhcyBhIHNlcGFyYXRvciBhbmQg
Y29sb25zIGFyZSBsZWdhbCBjaGFyYWN0ZXJzIGluIGZpZWxkIG5hbWVzIGluIEpTLgogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwcm9wZXJ0eSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA5NTY4NmJhMTkyMGJi
MGViMTI3NDA0ZjEzOTFiYjAyZjViYjE2MDg5Li41ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJjOTMx
NzVmZjc2ZmNiYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcm
IG5ldwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
U3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9yaWdDb2RlLnByb3ZpZGVyKCktPnNvdXJjZSgpLnRv
U3RyaW5nKCk7CiAgICAgdW5zaWduZWQgb3JpZ1N0YXJ0ID0gb3JpZ0NvZGUuc3RhcnRPZmZzZXQo
KTsKLSAgICB1bnNpZ25lZCBvcmlnRnVuY3Rpb25TdGFydCA9IG9yaWdQcm92aWRlclN0ci5yZXZl
cnNlRmluZCgiZnVuY3Rpb24iX3MsIG9yaWdTdGFydCk7CisgICAgdW5zaWduZWQgb3JpZ0Z1bmN0
aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ1N0
YXJ0KTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdQcm92aWRlclN0ci5maW5k
KCd7Jywgb3JpZ1N0YXJ0KTsKICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VT
dGFydCAtIG9yaWdGdW5jdGlvblN0YXJ0OwogICAgIFN0cmluZyBvcmlnSGVhZGVyID0gb3JpZ1By
b3ZpZGVyU3RyLnN1YnN0cmluZyhvcmlnRnVuY3Rpb25TdGFydCwgaGVhZGVyTGVuZ3RoKTsKQEAg
LTE0Nyw4ICsxNDcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0
IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcmIG5ldwogICAgIGluZm8ubGluZUNv
dW50ID0gMTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93
LgogICAgIGluZm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8g
RmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8u
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgiKCIpOwotICAgIGlu
Zm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgieyIpOwor
ICAgIGluZm8ucGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcp
OworICAgIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmlu
ZCgneycpOwogICAgIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3Ry
Lmxlbmd0aCgpIC0gMTsKIAogICAgIGluZm8uc291cmNlQ29kZSA9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCmluZGV4IDMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIuLjY4
ZDBkYzEyOTdhZWQ4OGViMDdmOWVjNWUyODFjOWQwNmFmNWQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRh
aW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hh
cmFjdGVyKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQotICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0
cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7CisgICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogCiAgICAg
c2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy5maW5kKHN0cmluZywgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9
CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsK
KyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OworICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRj
aEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZp
bmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5n
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggOWQzNTVlNTRmODMwNDM4MDRm
OWJhYjE1YmMwNWIzMjE4YjlkZDI0MS4uZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0
ZTRiNmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC00ODAsMzMgKzQ4MCw2
IEBAIGlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25z
dCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDwgc2Vh
cmNoTGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFyYWN0ZXJz
LCAwLCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLXNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKLXsKLSAgICB1
bnNpZ25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7Ci0gICAgdW5zaWdu
ZWQgbWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VTdHJpbmdM
ZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgc3RhcnRPZmZzZXQgJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5nTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gc291cmNlU3Ry
aW5nTGVuZ3RoIC0gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVu
Z3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoc291cmNlLmlzOEJpdCgp
KSB7Ci0gICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0Zp
bmQuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgp
OwotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5n
dGgsIG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291
cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zm
c2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1l
IFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlw
ZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJh
Y3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoKQogewpAQCAtNTU5LDM5ICs1MzIsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0
ZQogICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+
KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcz4KLXNpemVfdCBmaW5kQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBoYXlzdGFjaywgY29u
c3QgU3RyaW5nQ2xhc3MmIG5lZWRsZSwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQg
bmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aCgpOwotCi0gICAgaWYgKG5lZWRsZUxlbmd0aCA9
PSAxKSB7Ci0gICAgICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6OmZpbmQoaGF5c3RhY2suY2hhcmFjdGVyczgoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5l
ZWRsZVswXSwgc3RhcnQpOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJh
Y3RlcnMxNigpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmICghbmVlZGxlTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RhcnQ7Ci0K
LSAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBoYXlzdGFjay5sZW5ndGgoKSAtIHN0YXJ0Owot
ICAgIGlmIChuZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLQotICAgIGlmIChoYXlzdGFjay5pczhCaXQoKSkgewotICAgICAgICBpZiAobmVlZGxl
LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0
ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3Ro
LCBuZWVkbGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVu
Z3RoLCBuZWVkbGVMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7
Ci0KLSAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQs
IG5lZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3Ro
KTsKLX0KLQogLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQg
aW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVz
ZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUg
dGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2Uy
NjFhMjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLmQyYWZhNjJmOGE4YTM5YmY5YjE1Mjg2ZWFj
NWNjYWQ4ZTg2NjFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTE5LDIz
ICs5MTksMjMgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKK3NpemVfdCBTdHJpbmdJ
bXBsOjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51
bGwgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoU3RyaW5n
KSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0g
bWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hT
dHJpbmcubGVuZ3RoKCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBz
dHJpbmdzIG9mIGxlbmd0aCAxLgogICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAg
IGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2
KClbMF0pOworICAgICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCksIG1hdGNoU3Ry
aW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNo
YXJhY3RlcnM4KClbMF0pOwotICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigp
LCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgaWYg
KG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KClbMF0pOworICAg
ICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KClbMF0pOwogICAgIH0KIAogICAgIC8vIENoZWNrIG1hdGNoTGVuZ3Ro
IGlzIGluIHJhbmdlLgpAQCAtOTQ3LDQ4ICs5NDcsMzggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZmlu
ZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCAwLCBsZW5n
dGgoKSwgbWF0Y2hMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5n
LT5jaGFyYWN0ZXJzOCgpLCAwLCBsZW5ndGgoKSwgbWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRj
aFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYo
KSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsK
IAotICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
U3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQ2hlY2sg
Zm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoVU5MSUtF
TFkoIW1hdGNoU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgcmV0dXJu
IGZpbmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwotfQotCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3Ry
aW5nKSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0
aGlzLCBtYXRjaFN0cmluZywgMCk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNl
KCp0aGlzLCBtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiBmaW5kQ29tbW9u
KFN0cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi1zaXplX3Qg
U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNo
U3RyaW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCAwKTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwotICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAq
bWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAogc2l6ZV90
IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgp
CkBAIC0xMDI1LDEyICsxMDE1LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZl
cnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoCiAgICAgcmV0
dXJuIGRlbHRhOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVy
c2VGaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIC8v
IENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYg
KCFtYXRjaFN0cmluZykKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVu
Z3RoKCk7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGlu
ZGV4LCBvdXJMZW5ndGgpOwpAQCAtMTAzOCw4ICsxMDI4LDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6
OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAg
ICAvLyBPcHRpbWl6YXRpb24gMTogZmFzdCBjYXNlIGZvciBzdHJpbmdzIG9mIGxlbmd0aCAxLgog
ICAgIGlmIChtYXRjaExlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxlbmd0aCwg
KCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsK
KyAgICAgICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG91ckxl
bmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJz
ZUZpbmQoY2hhcmFjdGVyczE2KCksIG91ckxlbmd0aCwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsK
ICAgICB9CiAKICAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4K
QEAgLTEwNDcsMTUgKzEwMzcsMTUgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0
cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJz
OCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hM
ZW5ndGgpOwotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3Ro
KTsKKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
IHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgo
KSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgaW5k
ZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF0Y2hT
dHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0
ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgsIG1h
dGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBp
bmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5u
ZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1
YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBj
b25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCkBAIC0xNDIwLDI5
ICsxNDEwLDI5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBh
dHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAgICAgcmV0dXJuIG5ld0ltcGw7
CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQog
ewogICAgIGlmICghcGF0dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKIAotICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLT5sZW5ndGgoKTsKKyAg
ICB1bnNpZ25lZCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBpZiAoIXBh
dHRlcm5MZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgCi0gICAgdW5zaWdu
ZWQgcmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQtPmxlbmd0aCgpOworCisgICAgdW5zaWduZWQg
cmVwU3RyTGVuZ3RoID0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgc2l6ZV90IHNyY1NlZ21l
bnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7Ci0gICAgCisKICAgICAv
LyBDb3VudCB0aGUgbWF0Y2hlcy4KICAgICB3aGlsZSAoKHNyY1NlZ21lbnRTdGFydCA9IGZpbmQo
cGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgKyttYXRj
aENvdW50OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgKz0gcGF0dGVybkxlbmd0aDsKICAgICB9
Ci0gICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIDAgbWF0Y2hlcywgd2UgZG9uJ3QgaGF2ZSB0byBk
byBhbnkgbW9yZSB3b3JrCiAgICAgaWYgKCFtYXRjaENvdW50KQogICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgCisKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50
ICogcGF0dGVybkxlbmd0aDsKICAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBN
YXhMZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CkBAIC0xNDUyLDE1ICsx
NDQyLDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwq
IHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAKICAgICBuZXdTaXplICs9IG1hdGNo
Q291bnQgKiByZXBTdHJMZW5ndGg7CiAKLSAgICAKKwogICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3
IGRhdGEKICAgICBzaXplX3Qgc3JjU2VnbWVudEVuZDsKICAgICB1bnNpZ25lZCBzcmNTZWdtZW50
TGVuZ3RoOwogICAgIHNyY1NlZ21lbnRTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZHN0T2Zmc2V0
ID0gMDsKICAgICBib29sIHNyY0lzOEJpdCA9IGlzOEJpdCgpOwotICAgIGJvb2wgcmVwbGFjZW1l
bnRJczhCaXQgPSByZXBsYWNlbWVudC0+aXM4Qml0KCk7Ci0gICAgCisgICAgYm9vbCByZXBsYWNl
bWVudElzOEJpdCA9IHJlcGxhY2VtZW50LmlzOEJpdCgpOworCiAgICAgLy8gVGhlcmUgYXJlIDQg
Y2FzZXM6CiAgICAgLy8gMS4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggOCBiaXQuCiAg
ICAgLy8gMi4gVGhpcyBhbmQgcmVwbGFjZW1lbnQgYXJlIGJvdGggMTYgYml0LgpAQCAtMTQ3NCw3
ICsxNDY0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1w
bCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICAgICAgICAgIHNyY1NlZ21l
bnRMZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwogICAgICAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVu
dExlbmd0aDsKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJh
Y3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3Ry
TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAg
ICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKICAg
ICAgICAgfQpAQCAtMTUwMSwxMCArMTQ5MSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAog
ICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKHJlcGxh
Y2VtZW50SXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlcyAyICYgMy4KLSAgICAgICAgICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCBy
ZXBTdHJMZW5ndGgpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNl
dCwgcmVwbGFjZW1lbnQuY2hhcmFjdGVyczgoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIENhc2UgNAotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMo
ZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOwor
ICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQu
Y2hhcmFjdGVyczE2KCksIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zm
c2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVu
dEVuZCArIHBhdHRlcm5MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDhkODBm
Nzg3NzgzZDQzYzU2MmY4ZTBjZDNlMzY3NWI5NzZiYTgyNTkuLjg1ZDdjNGVjNjhhZTQ1MDcxN2Fh
OTZlMGJiYWU3OTNiMTc0NzIzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00MzIs
MTYgKzQzMiwxMyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
LSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBs
JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gTWF4TGVuZ3Ro
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0lt
cGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFN0cmluZ0ltcGwmKSBjb25zdDsKQEAgLTQ2Niw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBj
aGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJl
cGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxhY2VtZW50
KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50
TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmlu
Z1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9v
bCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uYTcz
ZGYwNTA5ZWU1MWZkZWUwMjcwNWRiYmMzZmNiMDEzZTU4YzQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTEwOTksNiArMTA5OSwxNDIgQEAgaW5saW5lIGJvb2wgaGFzVW5wYWlyZWRT
dXJyb2dhdGUoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxp
bmUgc2l6ZV90IGZpbmRDb21tb24oU3RyaW5nVmlldyBoYXlzdGFjaywgU3RyaW5nVmlldyBuZWVk
bGUsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRs
ZS5sZW5ndGgoKTsKKworICAgIGlmIChuZWVkbGVMZW5ndGggPT0gMSkgeworICAgICAgICBpZiAo
aGF5c3RhY2suaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNr
LmNoYXJhY3RlcnM4KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2su
bGVuZ3RoKCksIG5lZWRsZVswXSwgc3RhcnQpOworICAgIH0KKworICAgIGlmIChzdGFydCA+IGhh
eXN0YWNrLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoIW5l
ZWRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0YXJ0OworCisgICAgdW5zaWduZWQgc2VhcmNo
TGVuZ3RoID0gaGF5c3RhY2subGVuZ3RoKCkgLSBzdGFydDsKKyAgICBpZiAobmVlZGxlTGVuZ3Ro
ID4gc2VhcmNoTGVuZ3RoKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoaGF5
c3RhY2suaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVk
bGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5l
ZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBpZiAobmVlZGxlLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZmluZElu
bmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgp
LCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgpOworCisgICAgcmV0dXJuIGZpbmRJ
bm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2
KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Cit9CisKK2lubGluZSBzaXpl
X3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc291cmNlLCBTdHJpbmdWaWV3IHN0
cmluZ1RvRmluZCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpCit7CisgICAgdW5zaWduZWQgc291cmNl
U3RyaW5nTGVuZ3RoID0gc291cmNlLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
ID0gc3RyaW5nVG9GaW5kLmxlbmd0aCgpOworICAgIGlmICghbWF0Y2hMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGQ6Om1pbihzdGFydE9mZnNldCwgc291cmNlU3RyaW5nTGVuZ3RoKTsKKworICAg
IC8vIENoZWNrIHN0YXJ0T2Zmc2V0ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgorICAgIGlm
IChzdGFydE9mZnNldCA+IHNvdXJjZVN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IHNvdXJjZVN0cmluZ0xlbmd0aCAtIHN0
YXJ0T2Zmc2V0OworICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAg
cmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgeworICAgICAgICBp
ZiAoc3RyaW5nVG9GaW5kLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4
KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9G
aW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisgICAgfQorCisgICAgaWYgKHN0cmluZ1RvRmluZC5pczhCaXQoKSkKKyAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1Rv
RmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7CisKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kKFN0cmlu
Z1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQoraW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmQoU3RyaW5n
VmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNp
emVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nKSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNpemVfdCBTdHJp
bmc6OnJldmVyc2VGaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcsIHN0YXJ0
KSA6IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zKFN0cmluZ1Zp
ZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7
Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKK2lubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0
T2Zmc2V0KSAhPSBub3RGb3VuZDsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KFN0cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQoreworICAgIGlmICht
X2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2Vt
ZW50KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVw
bGFjZShzdGFydCwgbGVuZ3RoLCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhp
czsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5n
LCB1bnNpZ25lZCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJp
bmcsIHN0YXJ0KTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5n
LmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOworfQorCitpbmxpbmUgc2l6ZV90IEF0b21T
dHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmlu
Zzo6Y29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3Ry
aW5nLmNvbnRhaW5zKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKaW5kZXggNDFlZDM1Y2NhNmU5ZjcxZjI2ZWRkYmQzNWE3OGFlNmFlNjQ3ODA4MS4uNWNkMGE3
YTM5NGNlYTk3YTA5ODA1NTQzYWJjZmVmYTNmMjRkMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC0xNjQsMTggKzE2NCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCkpIDogbm90Rm91
bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLmltcGwoKSwgc3RhcnRPZmZzZXQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXpl
X3QgZmluZChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1
bnNpZ25lZCBzdGFydCkgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIHNpemVfdCBmaW5kKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkg
OiBub3RGb3VuZDsgfQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmlu
Zywgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3Qg
aW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KICAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjaGFyYWN0ZXIsIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5yZXZlcnNlRmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQor
ICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IE1heExl
bmd0aCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7
CkBAIC0xODQsOSArMTgzLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmlu
ZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQot
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywg
dW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMo
U3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CiAKICAgICBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29s
IHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CkBAIC0yMTEsNyArMjEwLDcgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1l
bnQpOwogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVwbGFjZShjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFN0cmluZ1ZpZXcg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7
CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdp
dGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0
ZXJDb3VudF0pOwogCkBAIC01MDcsMjAgKzUwNiw2IEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6
cmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCi17Ci0gICAgaWYgKG1faW1w
bCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldC5pbXBsKCksIHJlcGxh
Y2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgU3RyaW5nJiBT
dHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudCkKLXsKLSAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdB
WVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQogewogICAgIGlmICht
X2ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IDZjZGY1NjhlOTRjNjUxMjNjNTU3ODk2Mjk3NjMwZmRjMTk2NTI4MDUu
LjkzNmE3ZTQzMDU2YzQ1NWUyOWIyNTUwZmI0MDEwYmVlZWMzYjM1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xNzYs
NyArMTc2LDcgQEAgUmVmUHRyPERPTUZvcm1EYXRhPiBGZXRjaEJvZHlDb25zdW1lcjo6cGFja2Fn
ZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKICAgICAgICAgaWYgKCFtaW1lVHlw
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRhcnki
X3MpOworICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZp
bmQoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbWltZVR5cGUtPnBh
cmFtZXRlcnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzOWMxNDdk
YWE3OGNlMmNhYzRjNTUxODU5NzIwZjFkNDg2ODM5ZDIzLi4yZmFmM2U5NWQzMWM5ODlmY2UxMmUw
NTdmMDZjMjJlMmZmNzNjNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtOTI4LDcgKzkyOCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURh
dGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWROYW1lKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBuYW1lID0gZW5jb2RlZE5hbWU7Ci0gICAgbmFtZS5y
ZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSIsICIuIik7CiAK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKG5hbWUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNl
cy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5o
CmluZGV4IGI3NWMyNzMyMDFiMDM5NmE1MGRjODQ0NDIxNmQwZDY0MWZkYmRkNTcuLjRhNTFiNTY5
ZWI0OGJhNGJkN2I4Mjk2MGU3YWRiZmMzYzZiZDVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFBBTCB7CiAvLyBTZWUgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
UGVyY2VudC1lbmNvZGluZyNOb24tc3RhbmRhcmRfaW1wbGVtZW50YXRpb25zPi4KIHN0cnVjdCBV
bmljb2RlMTZCaXRFc2NhcGVTZXF1ZW5jZSB7CiAgICAgZW51bSB7IFNlcXVlbmNlU2l6ZSA9IDYg
fTsgLy8gZS5nLiAldTI2QzQKLSAgICBzdGF0aWMgc2l6ZV90IGZpbmRJblN0cmluZyhTdHJpbmdW
aWV3IHN0cmluZywgc2l6ZV90IHN0YXJ0UG9zaXRpb24pIHsgcmV0dXJuIHN0cmluZy5maW5kKFN0
cmluZ1ZpZXcoIiV1IiksIHN0YXJ0UG9zaXRpb24pOyB9CisgICAgc3RhdGljIHNpemVfdCBmaW5k
SW5TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBzdGFydFBvc2l0aW9uKSB7IHJldHVy
biBzdHJpbmcuZmluZCgiJXUiLCBzdGFydFBvc2l0aW9uKTsgfQogICAgIHN0YXRpYyBzaXplX3Qg
ZmluZEVuZE9mUnVuKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgc2l6
ZV90IGVuZFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgc2l6ZV90IHJ1bkVuZCA9IHN0YXJ0UG9z
aXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRDb2RlY1dp
bi5jcHAKaW5kZXggZTdmNGU5ZGMxODM0ZDBmNjM5YzZiYWJmNjk2NTYyMDZiODc2NzQwYy4uNmYx
OGYyYjBkNjgyYmViMThjZDZhMTMxOTY4MjNlYWIzYTJkNjIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIExhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgIGkgPSBj
b2RlUGFnZUNoYXJzZXRzKCkuc2V0KGNwSW5mby51aUNvZGVQYWdlLCBuYW1lKS5pdGVyYXRvcjsK
ICAgICAgICAgfQogICAgICAgICBpZiAoaSAhPSBjb2RlUGFnZUNoYXJzZXRzKCkuZW5kKCkpIHsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDaGFyc2V0SW5mbz46Oml0ZXJhdG9yIGogPSBr
bm93bkNoYXJzZXRzKCkuZmluZChTdHJpbmcoaS0+dmFsdWUuZGF0YSgpLCBpLT52YWx1ZS5sZW5n
dGgoKSkpOworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0
b3IgaiA9IGtub3duQ2hhcnNldHMoKS5maW5kKFN0cmluZ1ZpZXcgeyBpLT52YWx1ZS5kYXRhKCks
IGktPnZhbHVlLmxlbmd0aCgpIH0pOwogICAgICAgICAgICAgQVNTRVJUKGogIT0ga25vd25DaGFy
c2V0cygpLmVuZCgpKTsKICAgICAgICAgICAgIENoYXJzZXRJbmZvJiBpbmZvID0gai0+dmFsdWU7
CiAgICAgICAgICAgICBpbmZvLm1fbmFtZSA9IGktPnZhbHVlLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQ1NzdlYTY2ZWFhYTAzMTcy
MDI5NTUzMGIxYWMwZDU5MzgzNmYwZmIuLjJmMTBjZWQ4NDEzMWVkN2U5ZGQxODdhMzQwMWNmZGNk
ZWM0YmE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVD
b21tb24oY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29k
ZSBlbHNld2hlcmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlh
IHRoZSBrZXlib2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGlu
Z3MgY29taW5nIGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFs
dWUgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBu
b3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJfcywgIlxuIl9zKTsKKyAgICBub3JtYWxpemVk
VmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOwogICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNl
KCdccicsICdcbicpOwogCiAgICAgLy8gUmV0dXJuIGVhcmx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIHRoZSBjYXJldCBvciB0cmlnZ2VyIG90aGVyIHNpZGUgZWZmZWN0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDg2NDNhODQ3
Nzc2NDU5MzMxZjQzZWEyOThmZThlZjRmMDg0MWYwYTIuLmE3NWI2M2EzYjVkZmViOWY2NzI4OTI4
ZWVmY2IzNjNhZmY4NmY0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVTZXBhcmF0b3IoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjovLyIpKTsKIAotICAgIHNpemVfdCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2No
ZW1lU2VwYXJhdG9yKTsKKyAgICBzaXplX3Qgc2NoZW1lRW5kUG9zID0gcGF0dGVybi5maW5kKHNj
aGVtZVNlcGFyYXRvci5nZXQoKSk7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9PSBub3RGb3VuZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29u
dGV4dEF0dHJpYnV0ZXMuY3BwCmluZGV4IDEzODRjNmIxMTRlNzllYmM3MmRkMjU3Y2YwNTU4MjFm
YzRhNDYzNGEuLjY2ZGJlYzQwYWFjMmI3Mzk3YTE5MzMxMTY2YzcyYmQ2MjYxNmUwNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCkBAIC01NSw4
ICs1NSw4IEBAIGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgVGV4dHVyZU1h
cHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKQogICAgICAgICBhdHRyaWJ1dGVzLmlzR0xFUzJD
b21wbGlhbnQgPSB0cnVlOwogCiAgICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7Ci0g
ICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSBleHRlbnNpb25zU3RyaW5n
LmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9ucG90Il9zKTsKLSAgICAgICAgYXR0cmlidXRlcy5z
dXBwb3J0c1VucGFja1N1YmltYWdlID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xfRVhU
X3VucGFja19zdWJpbWFnZSJfcyk7CisgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4
dHVyZXMgPSBleHRlbnNpb25zU3RyaW5nLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7
CisgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZSA9IGV4dGVuc2lvbnNT
dHJpbmcuY29udGFpbnMoIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiKTsKICNlbHNlCiAgICAgICAg
IGF0dHJpYnV0ZXMuaXNHTEVTMkNvbXBsaWFudCA9IGZhbHNlOwogICAgICAgICBhdHRyaWJ1dGVz
LnN1cHBvcnRzTlBPVFRleHR1cmVzID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAppbmRleCA2Mjk0NWQ5NmUxNmY3ODIz
NjA1OGE0OTg0NWFmYjg0MDM5YjA3NTIyLi5lNTBkY2NmNWQ1ZGQ0YmRjZjFiOGU4NDg4MTBmNDFh
YTZhNjA5NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFpclBvZHMoTUFLRV9TVEFUSUNfU1RS
SU5HX0lNUEwoIkFpclBvZHMiKSk7CiAKLSAgICAgICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlw
ZTo6TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJl
bC5jb250YWlucyhhaXJQb2RzKSkKKyAgICAgICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6
TWljcm9waG9uZSB8fCBtX3R5cGUgPT0gRGV2aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5j
b250YWlucyhhaXJQb2RzLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBhaXJQb2RzOwogCiAg
ICAgICAgIHJldHVybiBtX2xhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJs
LmNwcAppbmRleCBiNjYyOTYwY2QwYWEzZjYzZGM2Yzc4YTQ3ZTI4Y2MyMDE4NmUzNTU5Li4zNjNj
YjJkZTQxN2M0Zjg2YmM2NmZmZjM0ZjQxMjQ0MjgxZWNmZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDdXJsLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIFN0cmluZyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6cGFyc2VSZWFsbShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIAogICAgIFN0cmluZyByZWFsbTsKICAgICBhdXRvIGF1dGhIZWFkZXIgPSByZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQocmVzcG9uc2UuaXNVbmF1dGhvcml6ZWQoKSA/IHd3d0F1dGhlbnRp
Y2F0ZSA6IHByb3h5QXV0aGVudGljYXRlKTsKLSAgICBhdXRvIHJlYWxtUG9zID0gYXV0aEhlYWRl
ci5maW5kSWdub3JpbmdBU0NJSUNhc2UocmVhbG1TdHJpbmcpOworICAgIGF1dG8gcmVhbG1Qb3Mg
PSBhdXRoSGVhZGVyLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShyZWFsbVN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKHJlYWxtUG9zICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIHJlYWxtID0gYXV0aEhlYWRl
ci5zdWJzdHJpbmcocmVhbG1Qb3MgKyByZWFsbVN0cmluZy5nZXQoKS5sZW5ndGgoKSk7CiAgICAg
ICAgIHJlYWxtID0gcmVhbG0ubGVmdChyZWFsbS5maW5kKCcsJykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5k
ZXggMjE5YmNkZTU1MTFkNDViNGMxMzVhZmI3MzM2YzM4ZjA2YmYxYTI4MS4uN2I0Njg1NWEwNTE1
NzQ3ZjRkZGZiZGU1YzkwOWFhYjk4NzA2MDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xNjYsNyAr
MTY2LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZFJlc3BvbnNlSGVhZGVycygpCiAgICAg
VmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7
CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlckZpZWxkcy5l
bmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgIHNpemVfdCBzcGxpdFBvc2l0
aW9uID0gaXQtPmZpbmQoIjoiKTsKKyAgICAgICAgc2l6ZV90IHNwbGl0UG9zaXRpb24gPSBpdC0+
ZmluZCgnOicpOwogICAgICAgICBpZiAoc3BsaXRQb3NpdGlvbiAhPSBub3RGb3VuZCkKICAgICAg
ICAgICAgIG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5sZWZ0KHNwbGl0
UG9zaXRpb24pLCBpdC0+c3Vic3RyaW5nKHNwbGl0UG9zaXRpb24rMSkuc3RyaXBXaGl0ZVNwYWNl
KCkpOwogICAgICAgICArK2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGQxZTU4NjI0
YWFlZTJlY2U4MTI5ZGQzNGVhOTg2NjI2ZTZjZGYwNjguLjY2YjY2Y2YyOGFiNjM0YjU0MDYyMjhj
NzVkNDAzOGFkNjZlOGZmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnkoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBmb3IgKGF1dG8gaGVhZGVyIDogcmVzcG9uc2UuaGVhZGVycykgewotICAg
ICAgICBhdXRvIHNwbGl0UG9zaXN0aW9uID0gaGVhZGVyLmZpbmQoIjoiKTsKKyAgICAgICAgYXV0
byBzcGxpdFBvc2lzdGlvbiA9IGhlYWRlci5maW5kKCc6Jyk7CiAgICAgICAgIGlmIChzcGxpdFBv
c2lzdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRl
eCAyZDZiMDkxMjg4ODVkN2FjOTUxMzU1YzA4OWY4YTQ4ZTkxN2Y0Yzk5Li5mM2E1NWIzODExZDUy
OTkyOTU4MDJjNTA4YmM3MDhjOGY5MjRkNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTUzNiw3ICs1MzYsNyBA
QCBpbnQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEZWJ1Z0luZm8oY3VybF9pbmZvdHlwZSB0eXBl
LCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZQogICAgICAgICAgICAgaGVhZGVyRmllbGRzLnJlbW92
ZSgwKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlckZpZWxkcykgewotICAg
ICAgICAgICAgYXV0byBwb3MgPSBoZWFkZXIuZmluZCgiOiIpOworICAgICAgICAgICAgYXV0byBw
b3MgPSBoZWFkZXIuZmluZCgnOicpOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkg
ewogICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gaGVhZGVyLmxlZnQocG9zKS5zdHJpcFdoaXRl
U3BhY2UoKTsKICAgICAgICAgICAgICAgICBhdXRvIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZyhw
b3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
V2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2Uu
Y3BwCmluZGV4IGI4OTdlNWNkMjcwNmJiNWJjNDA4OWM0NTVkMGZhNDViMmJiOTc2NzEuLjVlNDQw
NjdlZjBhMjhiMWI4MGFlYmZmM2NhYWIzYzg0Y2Q1YThkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJE
cml2ZXJTZXJ2aWNlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNl
OjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRf
U0VSVkVSKQogICAgIGlmICghdGFyZ2V0U3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRv
IHBvc2l0aW9uID0gdGFyZ2V0U3RyaW5nLnJldmVyc2VGaW5kKCI6Il9zKTsKKyAgICAgICAgYXV0
byBwb3NpdGlvbiA9IHRhcmdldFN0cmluZy5yZXZlcnNlRmluZCgnOicpOwogICAgICAgICBpZiAo
cG9zaXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIG1fdGFyZ2V0QWRkcmVzcyA9IHRh
cmdldFN0cmluZy5sZWZ0KHBvc2l0aW9uKTsKICAgICAgICAgICAgIG1fdGFyZ2V0UG9ydCA9IHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PihTdHJpbmdWaWV3IHsgdGFy
Z2V0U3RyaW5nIH0uc3Vic3RyaW5nKHBvc2l0aW9uICsgMSkpLnZhbHVlX29yKDApOwpAQCAtNjE3
LDcgKzYxNyw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IFdlYkRyaXZlclNlcnZpY2U6OnZhbGlk
YXRlZENhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmCiAgICAgICAgICAgICBpZiAoIXVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIHx8ICFkZXNlcmlhbGl6ZVVuaGFuZGxlZFByb21wdEJlaGF2
aW9yKHVuaGFuZGxlZFByb21wdEJlaGF2aW9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKGl0LT5rZXksIHVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yKTsKLSAgICAgICAgfSBlbHNlIGlmIChpdC0+a2V5LmZpbmQoIjoiKSAhPSBu
b3RGb3VuZCkgeworICAgICAgICB9IGVsc2UgaWYgKGl0LT5rZXkuZmluZCgnOicpICE9IG5vdEZv
dW5kKSB7CiAgICAgICAgICAgICBpZiAoIXBsYXRmb3JtVmFsaWRhdGVDYXBhYmlsaXR5KGl0LT5r
ZXksIGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICByZXN1bHQtPnNldFZhbHVlKGl0LT5rZXksIGl0LT52YWx1ZS5jb3B5UmVmKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nl
c3NTb3VwLmNwcAppbmRleCBlZDRmOTU1ZGY4NzQ0NjBkNDMwNmYyZTgyOWM2NTdmMGY0MDRkNDM0
Li4xMjA3YTIwZGU5MzA1ZTNjYmYzZDhkZTE0NjU2YzMwZWU5YzNhNDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgQ1N0cmluZyBidWlsZEFjY2VwdExhbmd1YWdl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQogICAgIHNpemVfdCBsYW5ndWFnZXND
b3VudCA9IGxhbmd1YWdlcy5zaXplKCk7CiAKICAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4KLSAg
ICBzaXplX3QgY0xvY2FsZVBvc2l0aW9uID0gbGFuZ3VhZ2VzLmZpbmQoImMiKTsKKyAgICBzaXpl
X3QgY0xvY2FsZVBvc2l0aW9uID0gbGFuZ3VhZ2VzLmZpbmQoImMiX3MpOwogICAgIGlmIChjTG9j
YWxlUG9zaXRpb24gIT0gbm90Rm91bmQpCiAgICAgICAgIGxhbmd1YWdlc0NvdW50LS07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXgg
MzQ5ZGQwZDg3YWM3MDEyN2M5ZjM2MTg4MWU5OTRiODJhNWNiMWI2Ny4uYjdjNTRmMjFlNjgyZTIz
Njg1YzAxZTUzZjYzNjI1ZDkyMDFlYjMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KQEAgLTY0NSw3ICs2NDUsNyBAQCBzdGF0aWMgU3Ry
aW5nIGdldFVzZXJEaXJlY3RvcnlTdWZmaXgoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldAogICAgIGF1dG8gdXNlckRpcmVjdG9yeVN1ZmZpeCA9IHBhcmFtZXRlcnMu
ZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZmluZCgidXNlci1kaXJlY3Rvcnktc3VmZml4Iik7CiAg
ICAgaWYgKHVzZXJEaXJlY3RvcnlTdWZmaXggIT0gcGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5lbmQoKSkgewogICAgICAgICBTdHJpbmcgc3VmZml4ID0gdXNlckRpcmVjdG9yeVN1
ZmZpeC0+dmFsdWU7Ci0gICAgICAgIGF1dG8gZmlyc3RQYXRoU2VwYXJhdG9yID0gc3VmZml4LmZp
bmQoIi8iKTsKKyAgICAgICAgYXV0byBmaXJzdFBhdGhTZXBhcmF0b3IgPSBzdWZmaXguZmluZCgn
LycpOwogICAgICAgICBpZiAoZmlyc3RQYXRoU2VwYXJhdG9yICE9IG5vdEZvdW5kKQogICAgICAg
ICAgICAgc3VmZml4LnRydW5jYXRlKGZpcnN0UGF0aFNlcGFyYXRvcik7CiAgICAgICAgIHJldHVy
biBzdWZmaXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBiYWRhZjE1ODdh
MjAxOTc3ZWI5ZTc0ZjE0Nzk3OTQ3ZWIyNDcyZjFkLi5mNGE1ZDQ0ZTE5NzE1OWU0YTMyYTRmODg2
ZmY0NzY4MzkyYTI1Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShj
b25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiAgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVT
cGFjZSgpOwogICAgIHNlYXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMo
c2VhcmNoU3RyaW5nKTsKLSAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7
CisgICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCIsICIrIik7CiAgICAgYXV0byBzZWFyY2hV
UkwgPSBVUkwgeyAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3Ry
aW5nICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAogICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJl
SW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGRmYzBhZTUxOTY2ODkyNDNhYjBmOGZj
OTA4NjVjYzk2YzU2MGVlZDQuLjFiYzNjM2Q1OThkNDdkYWUxODM0OTc1ZWY0MjYzY2U0OGU0NTdj
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpG
cmFtZSogZnJhbWUpCiAgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIHNl
YXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsK
LSAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgc2VhcmNoU3Ry
aW5nLnJlcGxhY2UoIiUyMCIsICIrIik7CiAgICAgYXV0byBzZWFyY2hVUkwgPSBVUkwgeyAiaHR0
cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZpZT1VVEYt
OCZvZT1VVEYtOCIgfTsKIAogICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGlj
YXRvciB7IFdlYkNvcmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCBhYWRmNGY5Y2UzZTUxYmY1NmQx
MDhjM2JlNGQwN2JmOWMzZGUzNmJkLi5hNDNkZGI4N2YzOWIzNGU2YjM3MGI0YTgzNjFlNzRhYTA3
MmRjMTg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJ
bXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNw
cApAQCAtMzM0LDEzICszMzQsMTMgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxGaW5kSWdub3JpbmdB
U0NJSUNhc2VXaXRoSW52YWxpZE9mZnNldCkKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9y
aW5nQVNDSUlDYXNlT25OdWxsKQogewogICAgIGF1dG8gcmVmZXJlbmNlID0gc3RyaW5nRnJvbVVU
RjgoIkFCQ8OJRUZHIik7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpu
b3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsKLSAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNl
LT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgMCkpOwotICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShudWxscHRyLCAzKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4o
V1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIs
IDcpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwg
cmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgOCkpOwotICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCA0MikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShudWxscHRyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5m
aW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0pKTsKKyAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIDApKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
U3RyaW5nVmlldyB7IH0sIDMpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihX
VEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dyB7IH0sIDcpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZv
dW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIDgp
KTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVm
ZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIDQyKSk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpKTsKIH0KIAogVEVTVChXVEYsIFN0cmluZ0ltcGxGaW5kSWdub3Jp
bmdBU0NJSUNhc2VPbkVtcHR5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455641</attachid>
            <date>2022-03-24 08:28:33 -0700</date>
            <delta_ts>2022-03-24 08:35:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220324082833.patch</filename>
            <type>text/plain</type>
            <size>73963</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZkMGY0OTkwMmU5ZDUxOTgzZWYyM2Ey
YmRhMTJiZWEwZGNhNGFmMGIuLjliYzMwYjhlNmVjZDJkN2MzOWJjMjIwMDE1NzU5YmM0ODUyMWM3
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTdHJpbmcncyBm
aW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5n
VmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5IFN0
cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRvIHRo
ZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9uJ3Qg
cmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAgICAg
ICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcu
aDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6Zmlu
ZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAg
IChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAg
ICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21TdHJp
bmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21TdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6
CisKIDIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbmxpbmUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgY29uc3RydWN0b3Igc28gdGhlIGNvbXBpbGVy
IGNhbiBvcHRpbWl6ZSBvdXQgc3RybGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZjUwNzcxMWZmOTYxYjJl
MDlhNGNmZmY2YWY2Y2RjM2YwNDkxZDQ5Li42MmYzZDc4NjgzNzI4NjIzMmNjYTliOWVlNzg3ZWE2
ZmUwY2E4M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDMtMjQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyBy
ZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0
ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzgyODcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
Y29kZURhdGFiYXNlTmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9u
KToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlOjpsYWJlbCBjb25zdCk6CisKIDIwMjItMDMtMjQgIEFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtJRkNdW0ludGVncmF0aW9uXSBSZW5kZXJUZXh0Ojpjb21w
dXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcgc2hvdWxkIHRha2UgZmlyc3QtbGluZSBz
dHlsZSBpbnRvIGFjY291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWY0MzFjOWVkNjM0M2Y3MmExOGFiNzY5MmU2
M2FiMzc0ZjI4MDU3Zi4uYjk0YzNhZmE3MjQzY2YxY2FkZTgxMDVhNjZkZmQzN2Y5ZDE2ODdkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkg
LyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODI4
NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKwogMjAyMi0w
My0yNCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFJFR1JFU1NJT04ocjI5MTYxMyk6IEJ1aWxkIGJyb2tlbiB3aXRoIFVTRV9HVEs0
ICsgRU5BQkxFX0FDQ0VTU0lCSUxJVFkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA2
YmUwNjRlMzgzODkzN2ZkZTVlODUyODY5NWY0MTQwYzJkODNiMmRhLi40NTBkZTZiYmE4ZmYyYTFk
Y2Y3ZGE2ZTdlZjc3NDdlZWM2NjdkYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
ZWFyY2hXaXRoR29vZ2xlKToKKwogMjAyMi0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEhvbWUgbGluayBvbiB3ZWF0aGVyLmdvdiBpcyBub3Qgd29ya2lu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGYxMmEyYzQ5NTNmMDAzMmRm
YjRiNzJmNjhmZjgwZmVkZGI2OTAzNTQuLmQzYWQwODBlMWRkZjRmZTZlZmJhOTEzNWJhMjY4NzZj
NzdkY2JjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTExNzksNyAr
MTE3OSw3IEBAIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogY3JlYXRlU3RydWN0SGFuZGxlck1hcCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC8vIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcg
dmFsdWVXaXRoPEZvbz46Y29udGV4dDogbWV0aG9kLgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9w
dFN5c3RlbTxjaGFyW10+KG1ldGhvZF9jb3B5UmV0dXJuVHlwZShtZXRob2QpKTsKLSAgICAgICAg
U3RydWN0SGFuZGxlcnM6Oml0ZXJhdG9yIGl0ZXIgPSBzdHJ1Y3RIYW5kbGVycy0+ZmluZChTdHJp
bmcgeyB0eXBlLmdldCgpIH0pOworICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKHR5cGUuZ2V0KCkpOwogICAgICAgICBpZiAoaXRlciA9
PSBzdHJ1Y3RIYW5kbGVycy0+ZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFN0
cnVjdFRhZ0hhbmRsZXImIGhhbmRsZXIgPSBpdGVyLT52YWx1ZTsKQEAgLTEyMTcsNyArMTIxNyw3
IEBAIHN0YXRpYyBTdHJ1Y3RUYWdIYW5kbGVyKiBoYW5kZXJGb3JTdHJ1Y3RUYWcoY29uc3QgY2hh
ciogZW5jb2RlZFR5cGUpCiAKICAgICBzdGF0aWMgU3RydWN0SGFuZGxlcnMqIHN0cnVjdEhhbmRs
ZXJzID0gY3JlYXRlU3RydWN0SGFuZGxlck1hcCgpOwogCi0gICAgU3RydWN0SGFuZGxlcnM6Oml0
ZXJhdG9yIGl0ZXIgPSBzdHJ1Y3RIYW5kbGVycy0+ZmluZChTdHJpbmcgeyBlbmNvZGVkVHlwZSB9
KTsKKyAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJzLT5m
aW5kKGVuY29kZWRUeXBlKTsKICAgICBpZiAoaXRlciA9PSBzdHJ1Y3RIYW5kbGVycy0+ZW5kKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmaXRlci0+dmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmluZGV4IGY4MjFkZjhlM2ViZWQ1N2Y1NDBj
ZDJmMDFkNjRlYzk2ZGNmYTg2Y2QuLjk2ZTQ0Nzg4NzBjZDgxYTU4OTk3ZDAyZGE2ZmE0ZmJhMzQ2
YWYxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFw
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC00
NTEsNyArNDUxLDcgQEAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGFsbG9jYXRlQ29uc3RydWN0b3JG
b3JDdXN0b21DbGFzcyhKU0NvbnRleHQgKmNvbnRleHQsIGNvbnMKICAgICAgICAgZm9yRWFjaE1l
dGhvZEluQ2xhc3MoY3VycmVudENsYXNzLCBeKE1ldGhvZCBtZXRob2QpIHsKICAgICAgICAgICAg
IFNFTCBzZWxlY3RvciA9IG1ldGhvZF9nZXROYW1lKG1ldGhvZCk7CiAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lID0gc2VsX2dldE5hbWUoc2VsZWN0b3IpOwotICAgICAgICAgICAgYXV0byBp
dGVyID0gaW5pdFRhYmxlLmZpbmQoU3RyaW5nIHsgbmFtZSB9KTsKKyAgICAgICAgICAgIGF1dG8g
aXRlciA9IGluaXRUYWJsZS5maW5kKG5hbWUpOwogCiAgICAgICAgICAgICBpZiAoaXRlciA9PSBp
bml0VGFibGUuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRp
dEFnZW50LmNwcAppbmRleCBjMjg3NzM2ZDcxZTdlYjllODg1NThmZmNkMGI3MDQ1MjViZmZjZjk3
Li4zMGFjYWYzMzQ1ODA1Mzc0ZDgxZGJiMGIxYzVkNDlmZjdhZjBhNmUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpv
cAogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAKLSAgICBhdXRvIGZ1bmN0aW9uU3RyaW5nID0g
bWFrZVN0cmluZygiKGZ1bmN0aW9uKFdlYkluc3BlY3RvckF1ZGl0KSB7IFwidXNlIHN0cmljdFwi
OyByZXR1cm4gZXZhbChgKCIsIFN0cmluZyB7IHRlc3QgfS5yZXBsYWNlKCdgJywgIlxcYCJfcyks
ICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOworICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcg
PSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0
XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsgdGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIiks
ICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQ6OkV4
ZWN1dGVPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5vYmplY3RHcm91cCA9ICJhdWRpdCJf
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwCmluZGV4IGM4NjdlZWQyNWE5ZjU4MzdiOTdmYzM3ZWExMTRkZGRjMmNiNjRiZjMuLmJkZDk1
OWNlYzc5MWU0NDczNmIxN2Q0YmU1OTZhMGM4ZjRlYjRkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMTE1Myw3ICsxMTUz
LDcgQEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqIGRzdCwgY29uc3Qgdm9pZCogc3Jj
LCBzaXplX3Qgc2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGZkID09IC0xKSB7CiAg
ICAgICAgICAgICAgICAgU3RyaW5nIHBhdGggeyBPcHRpb25zOjpkdW1wSklUTWVtb3J5UGF0aCgp
IH07Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiJXBpZCJfcywgU3RyaW5n
OjpudW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CisgICAgICAgICAgICAgICAgcGF0aCA9
IHBhdGgucmVwbGFjZSgiJXBpZCIsIFN0cmluZzo6bnVtYmVyKGdldEN1cnJlbnRQcm9jZXNzSUQo
KSkpOwogICAgICAgICAgICAgICAgIGZkID0gb3BlbihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fQVBQRU5EIHwg
T19XUk9OTFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGZkICE9IC0xKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDIxMzQz
OTY0NzM2MGU5Y2I1YjVkOTM5NmFjYWE0MTJkYzhkYzg0ZS4uOGNkMGQ1ZTljNDRmMTA4Mzg5MjI5
MDdhY2UzYTA0ZmY2NGYyZjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgU3Ry
aW5nIG5vdEFGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNz
YWdlLCBjb25zdCBTdAogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJy
b3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1cnJlbmNl
ID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gbm90QUZ1bmN0
aW9uSW5kZXggPSBvcmlnaW5hbE1lc3NhZ2UucmV2ZXJzZUZpbmQoImlzIG5vdCBhIGZ1bmN0aW9u
Il9zKTsKKyAgICBhdXRvIG5vdEFGdW5jdGlvbkluZGV4ID0gb3JpZ2luYWxNZXNzYWdlLnJldmVy
c2VGaW5kKCJpcyBub3QgYSBmdW5jdGlvbiIpOwogICAgIFJFTEVBU0VfQVNTRVJUKG5vdEFGdW5j
dGlvbkluZGV4ICE9IG5vdEZvdW5kKTsKICAgICBTdHJpbmdWaWV3IGRpc3BsYXlWYWx1ZTsKICAg
ICBpZiAob3JpZ2luYWxNZXNzYWdlLmlzOEJpdCgpKSAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0
aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNZXNzYWdlLCBjbwogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291
cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1
cnJlbmNlID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gaW5J
bmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImluIl9zKTsKKyAgICBhdXRvIGluSW5kZXgg
PSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJpbiIpOwogICAgIGlmIChpbkluZGV4ID09IG5vdEZv
dW5kKSB7CiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJhc2ljYWxseSBuZXZlciBoYXBwZW4sIHNp
bmNlIEpTIGNvZGUgbXVzdCB1c2UgdGhlIGxpdGVyYWwKICAgICAgICAgLy8gdGV4dCAiaW4iIGZv
ciB0aGUgYGluYCBvcGVyYXRpb24uIEhvd2V2ZXIsIGlmIHdlIGZhaWwgdG8gZmluZCAiaW4iCkBA
IC0yMTgsNyArMjE4LDcgQEAgaW5saW5lIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2Vv
ZlNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgY29udGVudCwgY28KICAgICAgICAgcmV0dXJu
IGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4
dCk7CiAKICAgICBBU1NFUlQob2NjdXJyZW5jZSA9PSBFcnJvckluc3RhbmNlOjpGb3VuZEV4YWN0
U291cmNlKTsKLSAgICBhdXRvIGluc3RhbmNlb2ZJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZp
bmQoImluc3RhbmNlb2YiX3MpOworICAgIGF1dG8gaW5zdGFuY2VvZkluZGV4ID0gc291cmNlVGV4
dC5yZXZlcnNlRmluZCgiaW5zdGFuY2VvZiIpOwogICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVu
IFN5bWJvbC5oYXNJbnN0YW5jZSBmdW5jdGlvbiBpcyBkaXJlY3RseSBjYWxsZWQuCiAgICAgaWYg
KGluc3RhbmNlb2ZJbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWVz
c2FnZTsKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVT
b3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29ucwogICAgIGlm
IChvY2N1cnJlbmNlID09IEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpCiAg
ICAgICAgIHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3Nh
Z2UsIHNvdXJjZVRleHQpOwogCi0gICAgYXV0byBleHRlbmRzSW5kZXggPSBzb3VyY2VUZXh0LnJl
dmVyc2VGaW5kKCJleHRlbmRzIl9zKTsKKyAgICBhdXRvIGV4dGVuZHNJbmRleCA9IHNvdXJjZVRl
eHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiKTsKICAgICBpZiAoZXh0ZW5kc0luZGV4ID09IG5vdEZv
dW5kIHx8IHNvdXJjZVRleHQuZmluZCgiZXh0ZW5kcyIpICE9IGV4dGVuZHNJbmRleCkKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcob3JpZ2luYWxNZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBz
b3VyY2VUZXh0LCAiJykiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlci5jcHAKaW5kZXggNWZhYjFiODMwNTNjMzgyZWJhMDgyYTk0YWQ4ZTYzZDY5ZjU3
NDU5NC4uN2UxYmNlMjliYWZlZmZiY2E2NGZjNTQ1ZWE0YWI4OGM4ZWUxZmQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC01Myw5ICs1
Myw5IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9j
YXRpb24qIGxvY2F0aW9uLCBWTSYgdm0pCiAKICAgICBkYXRhTG9nKCJcdFx0IiwgbG9jYXRpb24t
Pm1fZ2xvYmFsVmFyaWFibGVJRCA9PSBUeXBlUHJvZmlsZXJSZXR1cm5TdGF0ZW1lbnQgPyAiW1Jl
dHVybiBTdGF0ZW1lbnRdIiA6ICJbTm9ybWFsIFN0YXRlbWVudF0iLCAiXG4iKTsKIAotICAgIGRh
dGFMb2coIlx0XHQjTG9jYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0
LT5kdW1wVHlwZXMoKS5yZXBsYWNlKCJcbiJfcywgIlxuXHRcdCJfcyksICJcbiIpOworICAgIGRh
dGFMb2coIlx0XHQjTG9jYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0
LT5kdW1wVHlwZXMoKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwgIlxuIik7CiAgICAgaWYgKGxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQpCi0gICAgICAgIGRhdGFMb2coIlx0XHQjR2xvYmFsI1xu
XHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxu
Il9zLCAiXG5cdFx0Il9zKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIlx0XHQjR2xvYmFsI1xu
XHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxu
IiwgIlxuXHRcdCIpLCAiXG4iKTsKIH0KIAogdm9pZCBUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xv
Y2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuY3BwCmluZGV4IDczM2Y5ODEyZjE4ZThmNjE4ZTRlYTkwN2Y5MWNiMjUzZjdj
MDhlY2QuLmQ4OGJhMjhjM2YzMDkyNzJlM2RhMmVjNDI2YjkzOWVkMWU5OTUxY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAg
U3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgIGJ1aWxkZXIuYXBwZW5k
KCc6Jyk7CiAgICAgZm9yIChhdXRvJiBrZXkgOiBtX2ZpZWxkcykgewogICAgICAgICBTdHJpbmcg
cHJvcGVydHkgPSBrZXkuZ2V0KCk7Ci0gICAgICAgIHByb3BlcnR5LnJlcGxhY2UoIjoiX3MsICJc
XDoiX3MpOyAvLyBFbnN1cmUgdGhhdCBoYXNoKHsiZm9vOiIsICJiYXIifSkgIT0gaGFzaCh7ImZv
byIsICI6YmFyIn0pIGJlY2F1c2Ugd2UncmUgdXNpbmcgY29sb25zIGFzIGEgc2VwYXJhdG9yIGFu
ZCBjb2xvbnMgYXJlIGxlZ2FsIGNoYXJhY3RlcnMgaW4gZmllbGQgbmFtZXMgaW4gSlMuCisgICAg
ICAgIHByb3BlcnR5LnJlcGxhY2UoIjoiLCAiXFw6Iik7IC8vIEVuc3VyZSB0aGF0IGhhc2goeyJm
b286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVzZSB3ZSdyZSB1c2lu
ZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwgY2hhcmFjdGVycyBp
biBmaWVsZCBuYW1lcyBpbiBKUy4KICAgICAgICAgYnVpbGRlci5hcHBlbmQocHJvcGVydHkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9u
T3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJy
aWRlcy5jcHAKaW5kZXggOTU2ODZiYTE5MjBiYjBlYjEyNzQwNGYxMzkxYmIwMmY1YmIxNjA4OS4u
NWUzMjA4Y2IyNjAxMDMyYzdlMzBjMjZiYzkzMTc1ZmY3NmZjYmEzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VD
b2RlJiBvcmlnQ29kZSwgY29uc3QgU3RyaW5nJiBuZXcKICAgICBGdW5jdGlvbk92ZXJyaWRlc0Fz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFN0cmluZyBvcmlnUHJvdmlkZXJTdHIgPSBvcmln
Q29kZS5wcm92aWRlcigpLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAgIHVuc2lnbmVkIG9yaWdT
dGFydCA9IG9yaWdDb2RlLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgb3JpZ0Z1bmN0aW9u
U3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIl9zLCBvcmlnU3Rh
cnQpOworICAgIHVuc2lnbmVkIG9yaWdGdW5jdGlvblN0YXJ0ID0gb3JpZ1Byb3ZpZGVyU3RyLnJl
dmVyc2VGaW5kKCJmdW5jdGlvbiIsIG9yaWdTdGFydCk7CiAgICAgdW5zaWduZWQgb3JpZ0JyYWNl
U3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIuZmluZCgneycsIG9yaWdTdGFydCk7CiAgICAgdW5zaWdu
ZWQgaGVhZGVyTGVuZ3RoID0gb3JpZ0JyYWNlU3RhcnQgLSBvcmlnRnVuY3Rpb25TdGFydDsKICAg
ICBTdHJpbmcgb3JpZ0hlYWRlciA9IG9yaWdQcm92aWRlclN0ci5zdWJzdHJpbmcob3JpZ0Z1bmN0
aW9uU3RhcnQsIGhlYWRlckxlbmd0aCk7CkBAIC0xNDcsOCArMTQ3LDggQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29uc3Qg
U3RyaW5nJiBuZXcKICAgICBpbmZvLmxpbmVDb3VudCA9IDE7IC8vIEZha2luZyBpdC4gVGhpcyBk
b2Vzbid0IHJlYWxseSBtYXR0ZXIgZm9yIG5vdy4KICAgICBpbmZvLnN0YXJ0Q29sdW1uID0gMTsK
ICAgICBpbmZvLmVuZENvbHVtbiA9IDE7IC8vIEZha2luZyBpdC4gVGhpcyBkb2Vzbid0IHJlYWxs
eSBtYXR0ZXIgZm9yIG5vdy4KLSAgICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNldCA9IG5ld1By
b3ZpZGVyU3RyLmZpbmQoIigiKTsKLSAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9
IG5ld1Byb3ZpZGVyU3RyLmZpbmQoInsiKTsKKyAgICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNl
dCA9IG5ld1Byb3ZpZGVyU3RyLmZpbmQoJygnKTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmZpbmQoJ3snKTsKICAgICBpbmZvLnR5cGVQcm9maWxp
bmdFbmRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5sZW5ndGgoKSAtIDE7CiAKICAgICBpbmZvLnNv
dXJjZUNvZGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCAzM2IwZTU5NThkODM5NTYz
YTY1ZTEzZGNhMjBhMjdiZjMzMTk0YmYyLi5jNjZjOGM1YzgxY2RkMGI2YmIzMDU2NzJiMDg1MzFk
YTBhNzcyYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtMTE0LDE0ICsxMTQsMTQg
QEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGNoYXJhY3Rlcik7IH0KICAgICBib29sIGNvbnRhaW5z
KGNvbnN0IExDaGFyKiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0
cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcpOyB9Ci0gICAgYm9vbCBjb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRh
aW5zKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3Rlciwg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKGNoYXJhY3Rl
ciwgc3RhcnQpOyB9CiAgICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWdu
ZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3RhcnQp
OyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsgfQotICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9Ci0gICAg
c2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsgfQorICAgIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2Rl
VW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQogCiAgICAg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5zdGFydHNXaXRoKHN0cmluZyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCmlu
ZGV4IDlkMzU1ZTU0ZjgzMDQzODA0ZjliYWIxNWJjMDViMzIxOGI5ZGQyNDEuLmRhNzkzOWVmM2Rh
N2FjZTZlMDYzZTgxOTU4MGYwMDM5NGU0YjZhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21t
b24uaApAQCAtNDgwLDMzICs0ODAsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZVdpdGhvdXRMZW5ndGgoY29uc3QgY2hhciogc291cmNlLCBjb25zdCBjaGFyKgogICAgIHJl
dHVybiBtYXRjaExlbmd0aCA8IHNlYXJjaExlbmd0aCA/IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShz
b3VyY2UsIG1hdGNoQ2hhcmFjdGVycywgMCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCkgOiBu
b3RGb3VuZDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBT
dHJpbmdDbGFzc0I+Ci1zaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0Ns
YXNzQSYgc291cmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHN0cmluZ1RvRmluZCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQpCi17Ci0gICAgdW5zaWduZWQgc291cmNlU3RyaW5nTGVuZ3RoID0gc291cmNl
Lmxlbmd0aCgpOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gc3RyaW5nVG9GaW5kLmxlbmd0
aCgpOwotICAgIGlmICghbWF0Y2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGFy
dE9mZnNldCwgc291cmNlU3RyaW5nTGVuZ3RoKTsKLQotICAgIC8vIENoZWNrIHN0YXJ0T2Zmc2V0
ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgotICAgIGlmIChzdGFydE9mZnNldCA+IHNvdXJj
ZVN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIHNl
YXJjaExlbmd0aCA9IHNvdXJjZVN0cmluZ0xlbmd0aCAtIHN0YXJ0T2Zmc2V0OwotICAgIGlmICht
YXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotCi0g
ICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewotICAgICAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJp
dCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hh
cmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFy
Y2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBz
dGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgfQotCi0gICAgaWYg
KHN0cmluZ1RvRmluZC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBz
dGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0KLSAgICByZXR1cm4gZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVG9GaW5kLmNo
YXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci19
Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRj
aENoYXJhY3RlclR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgZmluZElubmVyKGNv
bnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hh
cmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc2Vh
cmNoTGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKIHsKQEAgLTU1OSwzOSArNTMyLDYgQEAg
aW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGUKICAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBsZW5n
dGgsIHN0YXRpY19jYXN0PExDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1zaXplX3QgZmluZENvbW1vbihjb25zdCBTdHJp
bmdDbGFzcyYgaGF5c3RhY2ssIGNvbnN0IFN0cmluZ0NsYXNzJiBuZWVkbGUsIHVuc2lnbmVkIHN0
YXJ0KQotewotICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRsZS5sZW5ndGgoKTsKLQot
ICAgIGlmIChuZWVkbGVMZW5ndGggPT0gMSkgewotICAgICAgICBpZiAoaGF5c3RhY2suaXM4Qml0
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJhY3RlcnM4KCks
IGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5lZWRs
ZVswXSwgc3RhcnQpOwotICAgIH0KLQotICAgIGlmIChzdGFydCA+IGhheXN0YWNrLmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoIW5lZWRsZUxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIHN0YXJ0OwotCi0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gaGF5c3Rh
Y2subGVuZ3RoKCkgLSBzdGFydDsKLSAgICBpZiAobmVlZGxlTGVuZ3RoID4gc2VhcmNoTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoaGF5c3RhY2suaXM4Qml0KCkp
IHsKLSAgICAgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBmaW5k
SW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczgo
KSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZp
bmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJz
MTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBp
ZiAobmVlZGxlLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNo
YXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNo
TGVuZ3RoLCBuZWVkbGVMZW5ndGgpOwotCi0gICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5j
aGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBzZWFy
Y2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Ci19Ci0KIC8vIFRoaXMgaXMgbWFya2VkIGlubGluZSBz
aW5jZSBpdCdzIG1vc3RseSB1c2VkIGluIG5vbi1pbmxpbmUgZnVuY3Rpb25zIGZvciBlYWNoIHN0
cmluZyB0eXBlLgogLy8gV2hlbiB1c2VkIGRpcmVjdGx5IGluIGNvZGUgaXQncyBwcm9iYWJseSBP
SyB0byBiZSBpbmxpbmU7IG1heWJlIHRoZSBsb29wIHdpbGwgYmUgdW5yb2xsZWQuCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBs
b3dlcmNhc2VMZXR0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAppbmRleCA0NjIwMTNkZTViNTZjY2Y4ODBkNjg2ZjZjZmIyMDNkYWRlNGVkZjk0Li42ZTY1
NWMxNGVhNDQ2MmM4ZWNhMGMzOTliOTIzZDgyZTE0ZjdhMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKQEAgLTg0Miw3ICs4NDIsNyBAQCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQpCiAgICAg
cmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24s
IHN0YXJ0KTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNo
U3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0IExD
aGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51
bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoIW1hdGNoU3RyaW5n
KQpAQCAtODUyLDE5ICs4NTIsMTkgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENo
YXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgQ1JBU0goKTsKICAgICB1
bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nTGVuZ3RoOwogICAgIGlmICghbWF0Y2hM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoKCkpOworICAgICAg
ICByZXR1cm4gc3RkOjptaW4oc3RhcnQsIGxlbmd0aCgpKTsKIAogICAgIC8vIE9wdGltaXphdGlv
biAxOiBmYXN0IGNhc2UgZm9yIHN0cmluZ3Mgb2YgbGVuZ3RoIDEuCiAgICAgaWYgKG1hdGNoTGVu
Z3RoID09IDEpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsK
LSAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksICptYXRj
aFN0cmluZywgaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJz
OCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmdbMF0sIHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksICptYXRjaFN0cmluZywgc3RhcnQpOwog
ICAgIH0KIAotICAgIC8vIENoZWNrIGluZGV4ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgot
ICAgIGlmIChpbmRleCA+IGxlbmd0aCgpKQorICAgIC8vIENoZWNrIHN0YXJ0ICYgbWF0Y2hMZW5n
dGggYXJlIGluIHJhbmdlLgorICAgIGlmIChzdGFydCA+IGxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gbGVuZ3RoKCkgLSBpbmRl
eDsKKyAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBsZW5ndGgoKSAtIHN0YXJ0OwogICAgIGlm
IChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwog
ICAgIC8vIGRlbHRhIGlzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBk
ZWx0YSA9PSAwIG1lYW5zIHRlc3Qgb25seSBvbmNlLgpAQCAtODc0LDcgKzg3NCw3IEBAIHNpemVf
dCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5k
ZXgpCiAgICAgLy8gb25seSBjYWxsIGVxdWFsIGlmIHRoZSBoYXNoZXMgbWF0Y2guCiAKICAgICBp
ZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgY29uc3QgTENoYXIqIHNlYXJjaENoYXJhY3RlcnMgPSBj
aGFyYWN0ZXJzOCgpICsgaW5kZXg7CisgICAgICAgIGNvbnN0IExDaGFyKiBzZWFyY2hDaGFyYWN0
ZXJzID0gY2hhcmFjdGVyczgoKSArIHN0YXJ0OwogCiAgICAgICAgIHVuc2lnbmVkIHNlYXJjaEhh
c2ggPSAwOwogICAgICAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwpAQCAtODkxLDEwICs4OTEs
MTAgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1
bnNpZ25lZCBpbmRleCkKICAgICAgICAgICAgIHNlYXJjaEhhc2ggLT0gc2VhcmNoQ2hhcmFjdGVy
c1tpXTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gaW5kZXgg
KyBpOworICAgICAgICByZXR1cm4gc3RhcnQgKyBpOwogICAgIH0KIAotICAgIGNvbnN0IFVDaGFy
KiBzZWFyY2hDaGFyYWN0ZXJzID0gY2hhcmFjdGVyczE2KCkgKyBpbmRleDsKKyAgICBjb25zdCBV
Q2hhciogc2VhcmNoQ2hhcmFjdGVycyA9IGNoYXJhY3RlcnMxNigpICsgc3RhcnQ7CiAKICAgICB1
bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKICAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwpAQCAt
OTExLDI2ICs5MTEsMjYgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgc2VhcmNoSGFzaCAtPSBzZWFyY2hD
aGFyYWN0ZXJzW2ldOwogICAgICAgICArK2k7CiAgICAgfQotICAgIHJldHVybiBpbmRleCArIGk7
CisgICAgcmV0dXJuIHN0YXJ0ICsgaTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3Ry
aW5nSW1wbCogbWF0Y2hTdHJpbmcpCitzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChTdHJpbmdWaWV3
IG1hdGNoU3RyaW5nKQogewogICAgIC8vIENoZWNrIGZvciBudWxsIHN0cmluZyB0byBtYXRjaCBh
Z2FpbnN0CiAgICAgaWYgKFVOTElLRUxZKCFtYXRjaFN0cmluZykpCiAgICAgICAgIHJldHVybiBu
b3RGb3VuZDsKLSAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nLT5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nLmxlbmd0aCgpOwogCiAg
ICAgLy8gT3B0aW1pemF0aW9uIDE6IGZhc3QgY2FzZSBmb3Igc3RyaW5ncyBvZiBsZW5ndGggMS4K
ICAgICBpZiAobWF0Y2hMZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoaXM4Qml0KCkpIHsKLSAg
ICAgICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJh
Y3RlcnM4KClbMF0pOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgp
LCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgICAg
IGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpWzBd
KTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCks
IG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpWzBdKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
bWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpWzBdKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKVswXSk7CisgICAgICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQo
KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgp
LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpWzBdKTsKKyAgICAgICAgcmV0dXJuIFdURjo6Zmlu
ZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpWzBd
KTsKICAgICB9CiAKICAgICAvLyBDaGVjayBtYXRjaExlbmd0aCBpcyBpbiByYW5nZS4KQEAgLTk0
Miw2NSArOTQyLDU1IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNo
U3RyaW5nKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChpczhCaXQoKSkgewotICAgICAg
ICBpZiAobWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5l
cihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIDAsIGxlbmd0aCgpLCBtYXRjaExlbmd0aCk7Cisg
ICAgICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmaW5k
SW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgp
LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsK
ICAgICB9CiAKLSAgICBpZiAobWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4g
ZmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgMCwg
bGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJh
Y3RlcnM4KCksIDAsIGxlbmd0aCgpLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIDAsIGxlbmd0
aCgpLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIDAsIGxlbmd0aCgpLCBtYXRjaExlbmd0aCk7CiB9
CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNp
Z25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0KQogewogICAgIC8vIENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0
cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYgKFVOTElLRUxZKCFtYXRjaFN0cmluZykpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHJldHVybiBmaW5kQ29tbW9uKCp0aGlzLCAq
bWF0Y2hTdHJpbmcsIGluZGV4KTsKLX0KLQotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDAp
OworICAgIHJldHVybiBmaW5kQ29tbW9uKFN0cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmlu
Zywgc3RhcnQpOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3QKLXsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0
Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKLX0KLQotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykgY29uc3QKK3NpemVf
dCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmlu
ZykgY29uc3QKIHsKICAgICBpZiAoIW1hdGNoU3RyaW5nKQogICAgICAgICByZXR1cm4gbm90Rm91
bmQ7Ci0gICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsICptYXRj
aFN0cmluZywgMCk7CisgICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRo
aXMsIG1hdGNoU3RyaW5nLCAwKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0CitzaXplX3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogewogICAgIGlmICgh
bWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6
OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCBzdGFydE9mZnNldCk7
CisgICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIG1hdGNoU3Ry
aW5nLCBzdGFydCk7CiB9CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChVQ2hhciBj
aGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5k
KFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwg
Y2hhcmFjdGVyLCBpbmRleCk7Ci0gICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVy
czE2KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6
cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwgc3RhcnQpOwor
ICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hh
cmFjdGVyLCBzdGFydCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJU
eXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBz
aXplX3QgcmV2ZXJzZUZpbmRJbm5lcihjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzZWFyY2hD
aGFyYWN0ZXJzLCBjb25zdCBNYXRjaENoYXJhY3RlclR5cGUqIG1hdGNoQ2hhcmFjdGVycywgdW5z
aWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgcmV2ZXJzZUZpbmRJbm5lcihjb25zdCBTZWFyY2hDaGFy
YWN0ZXJUeXBlKiBzZWFyY2hDaGFyYWN0ZXJzLCBjb25zdCBNYXRjaENoYXJhY3RlclR5cGUqIG1h
dGNoQ2hhcmFjdGVycywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
bWF0Y2hMZW5ndGgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9uOiBrZWVwIGEgcnVubmluZyBoYXNo
IG9mIHRoZSBzdHJpbmdzLAogICAgIC8vIG9ubHkgY2FsbCBlcXVhbCBpZiB0aGUgaGFzaGVzIG1h
dGNoLgogCiAgICAgLy8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRpbWVzIHRv
IHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0gICAgdW5zaWduZWQgZGVs
dGEgPSBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoIC0gbWF0Y2hMZW5ndGgpOworICAgIHVuc2lnbmVk
IGRlbHRhID0gc3RkOjptaW4oc3RhcnQsIGxlbmd0aCAtIG1hdGNoTGVuZ3RoKTsKICAgICAKICAg
ICB1bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKICAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwpA
QCAtMTAyMCw2NiArMTAxMCw2NiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgcmV2ZXJz
ZUZpbmRJbm5lcihjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzZWFyY2hDaAogICAgIHJldHVy
biBkZWx0YTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNl
RmluZChTdHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICAvLyBD
aGVjayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdAogICAgIGlmICgh
bWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBtYXRj
aExlbmd0aCA9IG1hdGNoU3RyaW5nLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0
aCA9IG1hdGNoU3RyaW5nLmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIG91ckxlbmd0aCA9IGxlbmd0
aCgpOwogICAgIGlmICghbWF0Y2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihpbmRl
eCwgb3VyTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0LCBvdXJMZW5ndGgp
OwogCiAgICAgLy8gT3B0aW1pemF0aW9uIDE6IGZhc3QgY2FzZSBmb3Igc3RyaW5ncyBvZiBsZW5n
dGggMS4KICAgICBpZiAobWF0Y2hMZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoaXM4Qml0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgpLCBvdXJM
ZW5ndGgsICgqbWF0Y2hTdHJpbmcpWzBdLCBpbmRleCk7Ci0gICAgICAgIHJldHVybiBXVEY6OnJl
dmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBvdXJMZW5ndGgsICgqbWF0Y2hTdHJpbmcpWzBdLCBp
bmRleCk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgp
LCBvdXJMZW5ndGgsIG1hdGNoU3RyaW5nWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6
OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBvdXJMZW5ndGgsIG1hdGNoU3RyaW5nWzBdLCBz
dGFydCk7CiAgICAgfQogCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCisgICAgLy8gQ2hlY2sgc3RhcnQgJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCiAg
ICAgaWYgKG1hdGNoTGVuZ3RoID4gb3VyTGVuZ3RoKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7
CiAKICAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQo
KSkKLSAgICAgICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1h
dGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7
Ci0gICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAg
ICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdGFy
dCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVybiByZXZlcnNlRmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAgICAgfQogICAgIAotICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5n
dGgpOworICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHJldmVy
c2VGaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKIAotICAgIHJldHVybiByZXZlcnNlRmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBv
dXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFy
YWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBvdXJMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVy
KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IGNo
YXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKK0FMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0
YXJ0LCBjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCiB7CiAg
ICAgQVNTRVJUKG1hdGNoTGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKHN0
YXJ0T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQo
c3RhcnQgKyBtYXRjaExlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsg
c3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyks
IG1hdGNoTGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsg
c3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyks
IG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgp
ICsgc3RhcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1h
dGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3Rh
cnQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVu
Z3RoKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0IFN0
cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IFN0cmluZ0ltcGwm
IG1hdGNoU3RyaW5nKQorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0
IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIGNvbnN0IFN0cmluZ0ltcGwmIG1h
dGNoU3RyaW5nKQogewotICAgIGlmIChzdGFydE9mZnNldCA+IHN0cmluZy5sZW5ndGgoKSkKKyAg
ICBpZiAoc3RhcnQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgKyBzdGFydE9mZnNldCA+
IHN0cmluZy5sZW5ndGgoKSkKKyAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgKyBzdGFydCA+
IHN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkgewogICAgICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgbWF0
Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBy
ZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBlcXVhbChz
dHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9m
ZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgbWF0
Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAg
cmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGVxdWFsKHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgo
Y29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKSBjb25zdApAQCAtMTExMiw5ICsxMTAyLDkgQEAgYm9v
bCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25l
ZCBtYXRjaExlbmd0aCkgY29uc3QKICAgICByZXR1cm4gbWF0Y2hMZW5ndGggPD0gbGVuZ3RoKCkg
JiYgZXF1YWxJbm5lcigqdGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKTsKIH0KIAot
Ym9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0
Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAorYm9vbCBTdHJpbmdJbXBsOjpo
YXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVk
IHN0YXJ0KSBjb25zdAogewotICAgIHJldHVybiBlcXVhbElubmVyKCp0aGlzLCBzdGFydE9mZnNl
dCwgbWF0Y2hTdHJpbmcpOworICAgIHJldHVybiBlcXVhbElubmVyKCp0aGlzLCBzdGFydCwgbWF0
Y2hTdHJpbmcpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwqIHN1
ZmZpeCkKQEAgLTE0MTUsMjkgKzE0MDUsMjkgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgVUNoYXIqIHJlcGxhY2VtZW50LCB1bnMKICAg
ICByZXR1cm4gbmV3SW1wbDsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxh
Y2UoU3RyaW5nSW1wbCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQpCitSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdWaWV3IHBhdHRlcm4sIFN0cmluZ1Zp
ZXcgcmVwbGFjZW1lbnQpCiB7CiAgICAgaWYgKCFwYXR0ZXJuIHx8ICFyZXBsYWNlbWVudCkKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgdW5zaWduZWQgcGF0dGVybkxlbmd0aCA9IHBhdHRl
cm4tPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLmxlbmd0
aCgpOwogICAgIGlmICghcGF0dGVybkxlbmd0aCkKICAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
ICAgICAKLSAgICB1bnNpZ25lZCByZXBTdHJMZW5ndGggPSByZXBsYWNlbWVudC0+bGVuZ3RoKCk7
CisKKyAgICB1bnNpZ25lZCByZXBTdHJMZW5ndGggPSByZXBsYWNlbWVudC5sZW5ndGgoKTsKICAg
ICBzaXplX3Qgc3JjU2VnbWVudFN0YXJ0ID0gMDsKICAgICB1bnNpZ25lZCBtYXRjaENvdW50ID0g
MDsKLSAgICAKKwogICAgIC8vIENvdW50IHRoZSBtYXRjaGVzLgogICAgIHdoaWxlICgoc3JjU2Vn
bWVudFN0YXJ0ID0gZmluZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkg
ewogICAgICAgICArK21hdGNoQ291bnQ7CiAgICAgICAgIHNyY1NlZ21lbnRTdGFydCArPSBwYXR0
ZXJuTGVuZ3RoOwogICAgIH0KLSAgICAKKwogICAgIC8vIElmIHdlIGhhdmUgMCBtYXRjaGVzLCB3
ZSBkb24ndCBoYXZlIHRvIGRvIGFueSBtb3JlIHdvcmsKICAgICBpZiAoIW1hdGNoQ291bnQpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICAKKwogICAgIHVuc2lnbmVkIG5ld1NpemUgPSBtX2xl
bmd0aCAtIG1hdGNoQ291bnQgKiBwYXR0ZXJuTGVuZ3RoOwogICAgIGlmIChyZXBTdHJMZW5ndGgg
JiYgbWF0Y2hDb3VudCA+IE1heExlbmd0aCAvIHJlcFN0ckxlbmd0aCkKICAgICAgICAgQ1JBU0go
KTsKQEAgLTE0NDcsMTUgKzE0MzcsMTUgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
cGxhY2UoU3RyaW5nSW1wbCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKIAogICAg
IG5ld1NpemUgKz0gbWF0Y2hDb3VudCAqIHJlcFN0ckxlbmd0aDsKIAotICAgIAorCiAgICAgLy8g
Q29uc3RydWN0IHRoZSBuZXcgZGF0YQogICAgIHNpemVfdCBzcmNTZWdtZW50RW5kOwogICAgIHVu
c2lnbmVkIHNyY1NlZ21lbnRMZW5ndGg7CiAgICAgc3JjU2VnbWVudFN0YXJ0ID0gMDsKICAgICB1
bnNpZ25lZCBkc3RPZmZzZXQgPSAwOwogICAgIGJvb2wgc3JjSXM4Qml0ID0gaXM4Qml0KCk7Ci0g
ICAgYm9vbCByZXBsYWNlbWVudElzOEJpdCA9IHJlcGxhY2VtZW50LT5pczhCaXQoKTsKLSAgICAK
KyAgICBib29sIHJlcGxhY2VtZW50SXM4Qml0ID0gcmVwbGFjZW1lbnQuaXM4Qml0KCk7CisKICAg
ICAvLyBUaGVyZSBhcmUgNCBjYXNlczoKICAgICAvLyAxLiBUaGlzIGFuZCByZXBsYWNlbWVudCBh
cmUgYm90aCA4IGJpdC4KICAgICAvLyAyLiBUaGlzIGFuZCByZXBsYWNlbWVudCBhcmUgYm90aCAx
NiBiaXQuCkBAIC0xNDY5LDcgKzE0NTksNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAg
ICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3Rh
cnQ7CiAgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4
ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9m
ZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CisgICAg
ICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudC5jaGFy
YWN0ZXJzOCgpLCByZXBTdHJMZW5ndGgpOwogICAgICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0
ckxlbmd0aDsKICAgICAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyBw
YXR0ZXJuTGVuZ3RoOwogICAgICAgICB9CkBAIC0xNDk2LDEwICsxNDg2LDEwIEBAIFJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0lt
cGwqIHJlcGxhY2VtZW50CiAgICAgICAgIGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwog
ICAgICAgICBpZiAocmVwbGFjZW1lbnRJczhCaXQpIHsKICAgICAgICAgICAgIC8vIENhc2VzIDIg
JiAzLgotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFj
ZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVy
cyhkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudC5jaGFyYWN0ZXJzOCgpLCByZXBTdHJMZW5n
dGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ2FzZSA0Ci0gICAgICAgICAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudC0+bV9kYXRhMTYs
IHJlcFN0ckxlbmd0aCk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zm
c2V0LCByZXBsYWNlbWVudC5jaGFyYWN0ZXJzMTYoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAg
fQogICAgICAgICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICBzcmNTZWdtZW50
U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKaW5kZXggNTMwYmFjNzVjYjNiNWY0MTZiMzU4ZDJkY2ViNmNlMjVjNTE0NTViZS4uOTQ5
NTBjMzU0NWEwZmFlM2YyZTkxYjZlN2E1OGNmNWEwZDY5NDM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTQyOCwxOCArNDI4LDE1IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmluZChM
Q2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoY2hh
ciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
aW5kZXggPSAwKTsKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0
cmluZywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwq
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQg
aW5kZXggPSBNYXhMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJz
ZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gTWF4TGVuZ3RoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25l
ZCBzdGFydCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChjb25zdCBM
Q2hhciosIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChT
dHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWdu
ZWQgc3RhcnQpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNl
RmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSBN
YXhMZW5ndGgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRz
V2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CkBAIC00NDgsNyArNDQ1LDcgQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2ln
bmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0
aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29u
c3QgeyByZXR1cm4gc3RhcnRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1w
bCYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0
KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFN0cmluZ0lt
cGwqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsJik7
CkBAIC00NjQsOCArNDYxLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVu
c2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3Ro
KTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVmPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1l
bnRMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8
U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJp
bmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNl
KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJ
bXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdy
aXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsK
IApAQCAtNTkyLDEyICs1ODksMTIgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmLAogdGVtcGxhdGU8
dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0LCB0eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rp
b24sIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0
TWF0Y2hGdW5jdGlvbiwgQ29kZVVuaXQ+PiogPSBudWxscHRyPgotc2l6ZV90IGZpbmQoY29uc3Qg
Q29kZVVuaXQqLCB1bnNpZ25lZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiYmLCB1bnNp
Z25lZCBpbmRleCA9IDApOworc2l6ZV90IGZpbmQoY29uc3QgQ29kZVVuaXQqLCB1bnNpZ25lZCBs
ZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiYmLCB1bnNpZ25lZCBzdGFydCA9IDApOwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgcmV2ZXJzZUZpbmRMaW5lVGVy
bWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBp
bmRleCA9IFN0cmluZ0ltcGw6Ok1heExlbmd0aCk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVk
IGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBT
dHJpbmdJbXBsOjpNYXhMZW5ndGgpOwotc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBMQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBT
dHJpbmdJbXBsOjpNYXhMZW5ndGgpOwotc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBT
dHJpbmdJbXBsOjpNYXhMZW5ndGgpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQgPSBTdHJpbmdJbXBsOjpNYXhMZW5ndGgpOwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0
IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFy
YWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKK3NpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFy
YWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKK3NpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFy
YWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKIAogdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0
IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiwgU3RyaW5nSW1wbCopOwogCkBAIC02NDIs
NTQgKzYzOSw1NCBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIFN0cmlu
Z0ltcGw6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q29kZVVuaXQsIHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBDb2Rl
VW5pdD4+Kj4KLWlubGluZSBzaXplX3QgZmluZChjb25zdCBDb2RlVW5pdCogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24mJiBtYXRjaEZ1bmN0aW9uLCB1
bnNpZ25lZCBpbmRleCkKK2lubGluZSBzaXplX3QgZmluZChjb25zdCBDb2RlVW5pdCogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24mJiBtYXRjaEZ1bmN0
aW9uLCB1bnNpZ25lZCBzdGFydCkKIHsKLSAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAg
ICAgICAgaWYgKG1hdGNoRnVuY3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQotICAgICAgICAgICAg
cmV0dXJuIGluZGV4OwotICAgICAgICArK2luZGV4OworICAgIHdoaWxlIChzdGFydCA8IGxlbmd0
aCkgeworICAgICAgICBpZiAobWF0Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW3N0YXJ0XSkpCisgICAg
ICAgICAgICByZXR1cm4gc3RhcnQ7CisgICAgICAgICsrc3RhcnQ7CiAgICAgfQogICAgIHJldHVy
biBub3RGb3VuZDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5l
IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5hdG9yKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXgpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0
b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCBzdGFydCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OwotICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCi0gICAgICAgIGluZGV4ID0gbGVuZ3RoIC0gMTsK
LSAgICBhdXRvIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbaW5kZXhdOworICAgIGlmIChzdGFydCA+
PSBsZW5ndGgpCisgICAgICAgIHN0YXJ0ID0gbGVuZ3RoIC0gMTsKKyAgICBhdXRvIGNoYXJhY3Rl
ciA9IGNoYXJhY3RlcnNbc3RhcnRdOwogICAgIHdoaWxlIChjaGFyYWN0ZXIgIT0gJ1xuJyAmJiBj
aGFyYWN0ZXIgIT0gJ1xyJykgewotICAgICAgICBpZiAoIWluZGV4LS0pCisgICAgICAgIGlmICgh
c3RhcnQtLSkKICAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgY2hhcmFjdGVy
ID0gY2hhcmFjdGVyc1tpbmRleF07CisgICAgICAgIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbc3Rh
cnRdOwogICAgIH0KLSAgICByZXR1cm4gaW5kZXg7CisgICAgcmV0dXJuIHN0YXJ0OwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5k
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFj
dGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENo
YXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQotICAgICAgICBpbmRleCA9
IGxlbmd0aCAtIDE7Ci0gICAgd2hpbGUgKGNoYXJhY3RlcnNbaW5kZXhdICE9IG1hdGNoQ2hhcmFj
dGVyKSB7Ci0gICAgICAgIGlmICghaW5kZXgtLSkKKyAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQor
ICAgICAgICBzdGFydCA9IGxlbmd0aCAtIDE7CisgICAgd2hpbGUgKGNoYXJhY3RlcnNbc3RhcnRd
ICE9IG1hdGNoQ2hhcmFjdGVyKSB7CisgICAgICAgIGlmICghc3RhcnQtLSkKICAgICAgICAgICAg
IHJldHVybiBub3RGb3VuZDsKICAgICB9Ci0gICAgcmV0dXJuIGluZGV4OworICAgIHJldHVybiBz
dGFydDsKIH0KIAotQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2ln
bmVkIGluZGV4KQorQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2ln
bmVkIHN0YXJ0KQogewotICAgIHJldHVybiByZXZlcnNlRmluZChjaGFyYWN0ZXJzLCBsZW5ndGgs
IHN0YXRpY19jYXN0PFVDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKKyAgICByZXR1cm4g
cmV2ZXJzZUZpbmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxVQ2hhcj4obWF0Y2hD
aGFyYWN0ZXIpLCBzdGFydCk7CiB9CiAKLWlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIs
IHVuc2lnbmVkIGluZGV4KQoraW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgc3RhcnQpCiB7CiAgICAgaWYgKCFpc0xhdGluMShtYXRjaENoYXJhY3RlcikpCiAgICAgICAg
IHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gcmV2ZXJzZUZpbmQoY2hhcmFjdGVycywgbGVu
Z3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRleCk7CisgICAgcmV0
dXJuIHJldmVyc2VGaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1h
dGNoQ2hhcmFjdGVyKSwgc3RhcnQpOwogfQogCiBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoTENoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uNzMwZGU5
NWExZGM0ZGM1NGEyYzkyYjcyYjQ1NmRmZTg5NzA2MmUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHJldmVyc2VGaW5k
KFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJ
SUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsK
QEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
Y29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBj
b25zdDsKIAogICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9v
bCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKQEAgLTYwNiwxMSArNjA2LDExIEBA
IGlubGluZSBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24mJiBt
YXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzCiAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJz
MTYoKSwgbV9sZW5ndGgsIHN0ZDo6Zm9yd2FyZDxDb2RlVW5pdE1hdGNoRnVuY3Rpb24+KG1hdGNo
RnVuY3Rpb24pLCBzdGFydCk7CiB9CiAKLWlubGluZSBzaXplX3QgU3RyaW5nVmlldzo6cmV2ZXJz
ZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCkgY29uc3QKK2lubGluZSBzaXpl
X3QgU3RyaW5nVmlldzo6cmV2ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFy
dCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBXVEY6OnJldmVy
c2VGaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIGluZGV4KTsKLSAgICBy
ZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rl
ciwgaW5kZXgpOworICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgp
LCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CisgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIHN0YXJ0KTsKIH0KIAogI2lm
ICFDSEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCkBAIC0xMDk5LDYgKzEwOTksMTQyIEBAIGlubGlu
ZSBib29sIGhhc1VucGFpcmVkU3Vycm9nYXRlKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAoraW5saW5lIHNpemVfdCBmaW5kQ29tbW9uKFN0cmluZ1ZpZXcgaGF5c3Rh
Y2ssIFN0cmluZ1ZpZXcgbmVlZGxlLCB1bnNpZ25lZCBzdGFydCkKK3sKKyAgICB1bnNpZ25lZCBu
ZWVkbGVMZW5ndGggPSBuZWVkbGUubGVuZ3RoKCk7CisKKyAgICBpZiAobmVlZGxlTGVuZ3RoID09
IDEpIHsKKyAgICAgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzOCgpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVl
ZGxlWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6OmZpbmQoaGF5c3RhY2suY2hhcmFj
dGVyczE2KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKKyAgICB9CisK
KyAgICBpZiAoc3RhcnQgPiBoYXlzdGFjay5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworCisgICAgaWYgKCFuZWVkbGVMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGFydDsKKwor
ICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGhheXN0YWNrLmxlbmd0aCgpIC0gc3RhcnQ7Cisg
ICAgaWYgKG5lZWRsZUxlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworCisgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKSB7CisgICAgICAgIGlmIChuZWVkbGUu
aXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3Rl
cnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgs
IG5lZWRsZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFj
dGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBzZWFyY2hMZW5n
dGgsIG5lZWRsZUxlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBu
ZWVkbGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
KworICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgp
OworfQorCitpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHNv
dXJjZSwgU3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHVu
c2lnbmVkIHNvdXJjZVN0cmluZ0xlbmd0aCA9IHNvdXJjZS5sZW5ndGgoKTsKKyAgICB1bnNpZ25l
ZCBtYXRjaExlbmd0aCA9IHN0cmluZ1RvRmluZC5sZW5ndGgoKTsKKyAgICBpZiAoIW1hdGNoTGVu
Z3RoKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RhcnQsIHNvdXJjZVN0cmluZ0xlbmd0aCk7
CisKKyAgICAvLyBDaGVjayBzdGFydCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KKyAgICBp
ZiAoc3RhcnQgPiBzb3VyY2VTdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsK
KyAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBzb3VyY2VTdHJpbmdMZW5ndGggLSBzdGFydDsK
KyAgICBpZiAobWF0Y2hMZW5ndGggPiBzZWFyY2hMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RG
b3VuZDsKKworICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN0cmluZ1Rv
RmluZC5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uo
c291cmNlLmNoYXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydCwg
c2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdB
U0NJSUNhc2Uoc291cmNlLmNoYXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYo
KSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgIH0KKworICAgIGlmIChz
dHJpbmdUb0ZpbmQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNh
c2Uoc291cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczgoKSwgc3Rh
cnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworCisgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJz
MTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworfQorCitpbmxpbmUgc2l6
ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsKK30KK2lubGluZSBzaXpl
X3QgU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDogbm90
Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kSWdub3JpbmdBU0NJSUNhc2Uo
U3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZykgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNp
emVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5z
aWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBz
aXplX3QgU3RyaW5nOjpyZXZlcnNlRmluZChTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3Ry
aW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIGJvb2wgU3RyaW5nOjpjb250YWlu
cyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9
IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6
OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0
YXJ0KSBjb25zdAoreworICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBz
dGFydCkgIT0gbm90Rm91bmQ7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShT
dHJpbmdWaWV3IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9p
bXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVu
dCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxh
Y2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxh
Y2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKK2lubGluZSBzaXplX3QgQXRvbVN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZywg
dW5zaWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5n
LCBzdGFydCk7Cit9CisKK2lubGluZSBzaXplX3QgQXRvbVN0cmluZzo6ZmluZElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5m
aW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3Ry
aW5nOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0
YXJ0KSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCBzdGFydCk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRhaW5zKFN0
cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlucyhz
dHJpbmcpOworfQorCitpbmxpbmUgYm9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5j
b250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiB1c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDA2YTRi
NzMyZTFhZDI0ZDg3Yzg1MjVkYWI2NTMyOWQ3ZDg1NjczOGEuLjI2YTkxNWY4ZTIxZjg4NDA0OGUz
OGU4ZDE5YzFiMzVhMGJkMzg4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTU5LDE4
ICsxNTksMTcgQEAgcHVibGljOgogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0
cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVf
dCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQog
Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6
ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdCB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91
bmQ7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5p
bXBsKCksIHN0YXJ0T2Zmc2V0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoU3RyaW5n
VmlldykgY29uc3Q7CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQp
IGNvbnN0OworICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29u
c3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25l
ZCBzdGFydCkgY29uc3Q7CiAKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24g
bWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpIDogbm90Rm91bmQ7IH0KICAgICBz
aXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6IG5vdEZvdW5k
OyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9
IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKICAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3RhbmNlIG9mIGEgc2luZ2xl
IGNoYXJhY3RlciBvciBzdHJpbmcuCiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJh
Y3RlciwgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAg
IHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQg
PSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQo
c3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZp
bmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0OwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFy
YWN0ZXJzV2l0aG91dE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwpAQCAtMTc5LDE1ICsxNzgsMTUg
QEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsg
cmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQogICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZv
dW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyBy
ZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBmaW5kSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zm
c2V0KSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7
CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owor
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBz
dGFydCkgY29uc3Q7CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgp
KSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNF
bXB0eSgpOyB9CiAgICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+c3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9CiAgICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgm
cHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Rh
cnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJvb2wg
aGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIHByZWZpeC5pbXBsKCkgJiYgbV9pbXBsLT5o
YXNJbmZpeFN0YXJ0aW5nQXQoKnByZWZpeC5pbXBsKCksIHN0YXJ0T2Zmc2V0KTsgfQorICAgIGJv
b2wgaGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBzdGFy
dCkgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIHByZWZpeC5pbXBsKCkgJiYgbV9pbXBsLT5oYXNJ
bmZpeFN0YXJ0aW5nQXQoKnByZWZpeC5pbXBsKCksIHN0YXJ0KTsgfQogCiAgICAgYm9vbCBlbmRz
V2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29s
IGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcu
aW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KQEAgLTIwNiw3ICsyMDUsNyBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCk7
CiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCk7Ci0gICAgU3RyaW5nJiByZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoU3RyaW5nVmlldyB0YXJn
ZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwogICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKICAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExp
dGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNv
dW50XSk7CiAKQEAgLTUwNywyMCArNTA2LDYgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBs
YWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKICAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLWlubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShjb25zdCBTdHJpbmcm
IHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKLXsKLSAgICBpZiAobV9pbXBsKQot
ICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LmltcGwoKSwgcmVwbGFjZW1l
bnQuaW1wbCgpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBTdHJpbmcmIFN0cmlu
Zzo6cmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50KQotewotICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1w
bC0+cmVwbGFjZShzdGFydCwgbGVuZ3RoLCByZXBsYWNlbWVudC5pbXBsKCkpOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQogdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19J
TkxJTkUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNv
bnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCiB7CiAgICAgaWYgKG1faW1w
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKaW5kZXggNmNkZjU2OGU5NGM2NTEyM2M1NTc4OTYyOTc2MzBmZGMxOTY1MjgwNS4uOTM2
YTdlNDMwNTZjNDU1ZTI5YjI1NTBmYjQwMTBiZWVlYzNiMzVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTE3Niw3ICsx
NzYsNyBAQCBSZWZQdHI8RE9NRm9ybURhdGE+IEZldGNoQm9keUNvbnN1bWVyOjpwYWNrYWdlRm9y
bURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYwogICAgICAgICBpZiAoIW1pbWVUeXBlKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobWltZVR5cGUtPnR5cGUsICJtdWx0aXBhcnQiKSAmJiBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG1pbWVUeXBlLT5zdWJ0eXBlLCAiZm9ybS1kYXRhIikpIHsKLSAgICAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtaW1lVHlwZS0+cGFyYW1ldGVycy5maW5kKCJib3VuZGFyeSJfcyk7
CisgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgi
Ym91bmRhcnkiKTsKICAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBtaW1lVHlwZS0+cGFyYW1l
dGVycy5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM5YzE0N2RhYTc4
Y2UyY2FjNGM1NTE4NTk3MjBmMWQ0ODY4MzlkMjMuLjJmYWYzZTk1ZDMxYzk4OWZjZTEyZTA1N2Yw
NmMyMmUyZmY3M2M0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC05
MjgsNyArOTI4LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJh
c2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCiAgICAgU3RyaW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKLSAgICBuYW1lLnJlcGxh
Y2UoIiUyRSJfcywgIi4iX3MpOworICAgIG5hbWUucmVwbGFjZSgiJTJFIiwgIi4iKTsKIAogICAg
IHJldHVybiBGaWxlU3lzdGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUobmFtZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKaW5k
ZXggYjc1YzI3MzIwMWIwMzk2YTUwZGM4NDQ0MjE2ZDBkNjQxZmRiZGQ1Ny4uNGE1MWI1NjllYjQ4
YmE0YmQ3YjgyOTYwZTdhZGJmYzNjNmJkNWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgUEFMIHsKIC8vIFNlZSA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXJj
ZW50LWVuY29kaW5nI05vbi1zdGFuZGFyZF9pbXBsZW1lbnRhdGlvbnM+Lgogc3RydWN0IFVuaWNv
ZGUxNkJpdEVzY2FwZVNlcXVlbmNlIHsKICAgICBlbnVtIHsgU2VxdWVuY2VTaXplID0gNiB9OyAv
LyBlLmcuICV1MjZDNAotICAgIHN0YXRpYyBzaXplX3QgZmluZEluU3RyaW5nKFN0cmluZ1ZpZXcg
c3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbikgeyByZXR1cm4gc3RyaW5nLmZpbmQoU3RyaW5n
VmlldygiJXUiKSwgc3RhcnRQb3NpdGlvbik7IH0KKyAgICBzdGF0aWMgc2l6ZV90IGZpbmRJblN0
cmluZyhTdHJpbmdWaWV3IHN0cmluZywgc2l6ZV90IHN0YXJ0UG9zaXRpb24pIHsgcmV0dXJuIHN0
cmluZy5maW5kKCIldSIsIHN0YXJ0UG9zaXRpb24pOyB9CiAgICAgc3RhdGljIHNpemVfdCBmaW5k
RW5kT2ZSdW4oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBzdGFydFBvc2l0aW9uLCBzaXplX3Qg
ZW5kUG9zaXRpb24pCiAgICAgewogICAgICAgICBzaXplX3QgcnVuRW5kID0gc3RhcnRQb3NpdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVj
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVjV2luLmNw
cAppbmRleCBlN2Y0ZTlkYzE4MzRkMGY2MzljNmJhYmY2OTY1NjIwNmI4NzY3NDBjLi42ZjE4ZjJi
MGQ2ODJiZWIxOGNkNmExMzE5NjgyM2VhYjNhMmQ2MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAg
TGFuZ3VhZ2VNYW5hZ2VyOjpMYW5ndWFnZU1hbmFnZXIoKQogICAgICAgICAgICAgaSA9IGNvZGVQ
YWdlQ2hhcnNldHMoKS5zZXQoY3BJbmZvLnVpQ29kZVBhZ2UsIG5hbWUpLml0ZXJhdG9yOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChpICE9IGNvZGVQYWdlQ2hhcnNldHMoKS5lbmQoKSkgewotICAg
ICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0b3IgaiA9IGtub3du
Q2hhcnNldHMoKS5maW5kKFN0cmluZyhpLT52YWx1ZS5kYXRhKCksIGktPnZhbHVlLmxlbmd0aCgp
KSk7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgQ2hhcnNldEluZm8+OjppdGVyYXRvciBq
ID0ga25vd25DaGFyc2V0cygpLmZpbmQoU3RyaW5nVmlldyB7IGktPnZhbHVlLmRhdGEoKSwgaS0+
dmFsdWUubGVuZ3RoKCkgfSk7CiAgICAgICAgICAgICBBU1NFUlQoaiAhPSBrbm93bkNoYXJzZXRz
KCkuZW5kKCkpOwogICAgICAgICAgICAgQ2hhcnNldEluZm8mIGluZm8gPSBqLT52YWx1ZTsKICAg
ICAgICAgICAgIGluZm8ubV9uYW1lID0gaS0+dmFsdWUuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggZDU3N2VhNjZlYWFhMDMxNzIwMjk1
NTMwYjFhYzBkNTkzODM2ZjBmYi4uMmYxMGNlZDg0MTMxZWQ3ZTlkZDE4N2EzNDAxY2ZkY2RlYzRi
YTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBA
IC0zOTUsNyArMzk1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1v
bihjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEIKICAgICAvLyBDb2RlIGVs
c2V3aGVyZSBub3JtYWxpemVzIGxpbmUgZW5kaW5ncyBhZGRlZCBieSB0aGUgdXNlciB2aWEgdGhl
IGtleWJvYXJkIG9yIHBhc3RpbmcuCiAgICAgLy8gV2Ugbm9ybWFsaXplIGxpbmUgZW5kaW5ncyBj
b21pbmcgZnJvbSBKYXZhU2NyaXB0IGhlcmUuCiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRWYWx1ZSA9
IG5ld1ZhbHVlLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IG5ld1ZhbHVlOwotICAgIG5vcm1h
bGl6ZWRWYWx1ZS5yZXBsYWNlKCJcclxuIl9zLCAiXG4iX3MpOworICAgIG5vcm1hbGl6ZWRWYWx1
ZS5yZXBsYWNlKCJcclxuIiwgIlxuIik7CiAgICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoJ1xy
JywgJ1xuJyk7CiAKICAgICAvLyBSZXR1cm4gZWFybHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRv
IG1vdmUgdGhlIGNhcmV0IG9yIHRyaWdnZXIgb3RoZXIgc2lkZSBlZmZlY3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggODY0M2E4NDc3NzY0
NTkzMzFmNDNlYTI5OGZlOGVmNGYwODQxZjBhMi4uN2MzNmNmYTIwOGM1Mzc2OWY3NjdlMDZjMTg4
MWM3NjQ0ZTcyNmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6
bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPgogCiBi
b29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNjaGVtZVNlcGFyYXRv
cihNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiOi8vIikpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsIHNjaGVtZVNlcGFyYXRvciA9ICI6Ly8iX3M7CiAKICAgICBzaXplX3Qgc2No
ZW1lRW5kUG9zID0gcGF0dGVybi5maW5kKHNjaGVtZVNlcGFyYXRvcik7CiAgICAgaWYgKHNjaGVt
ZUVuZFBvcyA9PSBub3RGb3VuZCkKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBVc2VyQ29udGVudFVS
TFBhdHRlcm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIAogICAgIG1fc2NoZW1lID0g
cGF0dGVybi5sZWZ0KHNjaGVtZUVuZFBvcyk7CiAKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRQb3Mg
PSBzY2hlbWVFbmRQb3MgKyBzY2hlbWVTZXBhcmF0b3IuZ2V0KCkubGVuZ3RoKCk7CisgICAgdW5z
aWduZWQgaG9zdFN0YXJ0UG9zID0gc2NoZW1lRW5kUG9zICsgc2NoZW1lU2VwYXJhdG9yLmxlbmd0
aCgpOwogICAgIGlmIChob3N0U3RhcnRQb3MgPj0gcGF0dGVybi5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJp
YnV0ZXMuY3BwCmluZGV4IDEzODRjNmIxMTRlNzllYmM3MmRkMjU3Y2YwNTU4MjFmYzRhNDYzNGEu
LjY2ZGJlYzQwYWFjMmI3Mzk3YTE5MzMxMTY2YzcyYmQ2MjYxNmUwNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4
dEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCkBAIC01NSw4ICs1NSw4IEBA
IGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgVGV4dHVyZU1hcHBlckNvbnRl
eHRBdHRyaWJ1dGVzOjpnZXQoKQogICAgICAgICBhdHRyaWJ1dGVzLmlzR0xFUzJDb21wbGlhbnQg
PSB0cnVlOwogCiAgICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7Ci0gICAgICAgIGF0
dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSBleHRlbnNpb25zU3RyaW5nLmNvbnRhaW5z
KCJHTF9PRVNfdGV4dHVyZV9ucG90Il9zKTsKLSAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0c1Vu
cGFja1N1YmltYWdlID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xfRVhUX3VucGFja19z
dWJpbWFnZSJfcyk7CisgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSBl
eHRlbnNpb25zU3RyaW5nLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAg
IGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZSA9IGV4dGVuc2lvbnNTdHJpbmcuY29u
dGFpbnMoIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiKTsKICNlbHNlCiAgICAgICAgIGF0dHJpYnV0
ZXMuaXNHTEVTMkNvbXBsaWFudCA9IGZhbHNlOwogICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRz
TlBPVFRleHR1cmVzID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAppbmRleCA2Mjk0NWQ5NmUxNmY3ODIzNjA1OGE0OTg0
NWFmYjg0MDM5YjA3NTIyLi5lNTBkY2NmNWQ1ZGQ0YmRjZjFiOGU4NDg4MTBmNDFhYTZhNjA5NDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJl
RGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFpclBvZHMoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
IkFpclBvZHMiKSk7CiAKLSAgICAgICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6TWljcm9w
aG9uZSB8fCBtX3R5cGUgPT0gRGV2aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5jb250YWlu
cyhhaXJQb2RzKSkKKyAgICAgICAgaWYgKChtX3R5cGUgPT0gRGV2aWNlVHlwZTo6TWljcm9waG9u
ZSB8fCBtX3R5cGUgPT0gRGV2aWNlVHlwZTo6U3BlYWtlcikgJiYgbV9sYWJlbC5jb250YWlucyhh
aXJQb2RzLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBhaXJQb2RzOwogCiAgICAgICAgIHJl
dHVybiBtX2xhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcAppbmRl
eCBiNjYyOTYwY2QwYWEzZjYzZGM2Yzc4YTQ3ZTI4Y2MyMDE4NmUzNTU5Li4zNjNjYjJkZTQxN2M0
Zjg2YmM2NmZmZjM0ZjQxMjQ0MjgxZWNmZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDdXJsLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIFN0cmluZyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6cGFyc2VSZWFsbShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAog
ICAgIFN0cmluZyByZWFsbTsKICAgICBhdXRvIGF1dGhIZWFkZXIgPSByZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQocmVzcG9uc2UuaXNVbmF1dGhvcml6ZWQoKSA/IHd3d0F1dGhlbnRpY2F0ZSA6IHBy
b3h5QXV0aGVudGljYXRlKTsKLSAgICBhdXRvIHJlYWxtUG9zID0gYXV0aEhlYWRlci5maW5kSWdu
b3JpbmdBU0NJSUNhc2UocmVhbG1TdHJpbmcpOworICAgIGF1dG8gcmVhbG1Qb3MgPSBhdXRoSGVh
ZGVyLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShyZWFsbVN0cmluZy5nZXQoKSk7CiAgICAgaWYgKHJl
YWxtUG9zICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIHJlYWxtID0gYXV0aEhlYWRlci5zdWJzdHJp
bmcocmVhbG1Qb3MgKyByZWFsbVN0cmluZy5nZXQoKS5sZW5ndGgoKSk7CiAgICAgICAgIHJlYWxt
ID0gcmVhbG0ubGVmdChyZWFsbS5maW5kKCcsJykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggMjE5YmNk
ZTU1MTFkNDViNGMxMzVhZmI3MzM2YzM4ZjA2YmYxYTI4MS4uN2I0Njg1NWEwNTE1NzQ3ZjRkZGZi
ZGU1YzkwOWFhYjk4NzA2MDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAg
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZFJlc3BvbnNlSGVhZGVycygpCiAgICAgVmVjdG9yPFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7CiAgICAgVmVj
dG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlckZpZWxkcy5lbmQoKTsKICAg
ICB3aGlsZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgIHNpemVfdCBzcGxpdFBvc2l0aW9uID0gaXQt
PmZpbmQoIjoiKTsKKyAgICAgICAgc2l6ZV90IHNwbGl0UG9zaXRpb24gPSBpdC0+ZmluZCgnOicp
OwogICAgICAgICBpZiAoc3BsaXRQb3NpdGlvbiAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIG1f
Y2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5sZWZ0KHNwbGl0UG9zaXRpb24p
LCBpdC0+c3Vic3RyaW5nKHNwbGl0UG9zaXRpb24rMSkuc3RyaXBXaGl0ZVNwYWNlKCkpOwogICAg
ICAgICArK2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGQxZTU4NjI0YWFlZTJlY2U4
MTI5ZGQzNGVhOTg2NjI2ZTZjZGYwNjguLmM0ODQ5MmU3NGJkYzg1NTI1ZjgwOWJkYWVjZTMwNjFm
NjIxYWQ4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTUyLDE1ICs1MiwxNSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpcGFydEhhbmRsZT4gQ3VybE11bHRpcGFydEhhbmRsZTo6
Y3JlYXRlSWZOZWVkZWQoQ3VybE11bAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBh
cnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIGZvciAoYXV0byBoZWFkZXIgOiByZXNwb25zZS5oZWFkZXJzKSB7Ci0gICAgICAgIGF1
dG8gc3BsaXRQb3Npc3Rpb24gPSBoZWFkZXIuZmluZCgiOiIpOwotICAgICAgICBpZiAoc3BsaXRQ
b3Npc3Rpb24gPT0gbm90Rm91bmQpCisgICAgICAgIGF1dG8gc3BsaXRQb3NpdGlvbiA9IGhlYWRl
ci5maW5kKCc6Jyk7CisgICAgICAgIGlmIChzcGxpdFBvc2l0aW9uID09IG5vdEZvdW5kKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBrZXkgPSBoZWFkZXIubGVmdChzcGxp
dFBvc2lzdGlvbikuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGF1dG8ga2V5ID0gaGVhZGVy
LmxlZnQoc3BsaXRQb3NpdGlvbikuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlmICghZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJDb250ZW50LVR5cGUiKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGF1dG8gY29udGVudFR5cGUgPSBoZWFkZXIuc3Vic3RyaW5nKHNw
bGl0UG9zaXN0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGF1dG8gY29udGVu
dFR5cGUgPSBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zaXRpb24gKyAxKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICAgICAgYXV0byBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29udGVudFR5cGUpOwogICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWlt
ZVR5cGUsICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIikpCiAgICAgICAgICAgICBjb250aW51
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCmluZGV4IDJkNmIwOTEyODg4NWQ3YWM5NTEzNTVjMDg5ZjhhNDhlOTE3ZjRjOTku
LmYzYTU1YjM4MTFkNTI5OTI5NTgwMmM1MDhiYzcwOGM4ZjkyNGQ3MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAt
NTM2LDcgKzUzNiw3IEBAIGludCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURlYnVnSW5mbyhjdXJs
X2luZm90eXBlIHR5cGUsIGNoYXIqIGRhdGEsIHNpemVfdCBzaXplCiAgICAgICAgICAgICBoZWFk
ZXJGaWVsZHMucmVtb3ZlKDApOwogCiAgICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDogaGVhZGVy
RmllbGRzKSB7Ci0gICAgICAgICAgICBhdXRvIHBvcyA9IGhlYWRlci5maW5kKCI6Iik7CisgICAg
ICAgICAgICBhdXRvIHBvcyA9IGhlYWRlci5maW5kKCc6Jyk7CiAgICAgICAgICAgICBpZiAocG9z
ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBoZWFkZXIubGVmdChw
b3MpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBoZWFk
ZXIuc3Vic3RyaW5nKHBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2Vi
RHJpdmVyU2VydmljZS5jcHAKaW5kZXggYjg5N2U1Y2QyNzA2YmI1YmM0MDg5YzQ1NWQwZmE0NWIy
YmI5NzY3MS4uNWU0NDA2N2VmMGEyOGIxYjgwYWViZmYzY2FhYjNjODRjZDVhOGRiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgaW50IFdl
YkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICNpZiBVU0UoSU5T
UEVDVE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgaWYgKCF0YXJnZXRTdHJpbmcuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGF1dG8gcG9zaXRpb24gPSB0YXJnZXRTdHJpbmcucmV2ZXJzZUZpbmQoIjoiX3Mp
OworICAgICAgICBhdXRvIHBvc2l0aW9uID0gdGFyZ2V0U3RyaW5nLnJldmVyc2VGaW5kKCc6Jyk7
CiAgICAgICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgbV90YXJn
ZXRBZGRyZXNzID0gdGFyZ2V0U3RyaW5nLmxlZnQocG9zaXRpb24pOwogICAgICAgICAgICAgbV90
YXJnZXRQb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0
cmluZ1ZpZXcgeyB0YXJnZXRTdHJpbmcgfS5zdWJzdHJpbmcocG9zaXRpb24gKyAxKSkudmFsdWVf
b3IoMCk7CkBAIC02MTcsNyArNjE3LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gV2ViRHJpdmVy
U2VydmljZTo6dmFsaWRhdGVkQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYKICAgICAg
ICAgICAgIGlmICghdW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IgfHwgIWRlc2VyaWFsaXplVW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IodW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoaXQtPmtl
eSwgdW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IpOwotICAgICAgICB9IGVsc2UgaWYgKGl0LT5rZXku
ZmluZCgiOiIpICE9IG5vdEZvdW5kKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXQtPmtleS5maW5k
KCc6JykgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIGlmICghcGxhdGZvcm1WYWxpZGF0ZUNh
cGFiaWxpdHkoaXQtPmtleSwgaXQtPnZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0VmFsdWUoaXQtPmtleSwgaXQtPnZhbHVlLmNv
cHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IGVkNGY5NTVkZjg3NDQ2MGQ0MzA2ZjJlODI5
YzY1N2YwZjQwNGQ0MzQuLjEyMDdhMjBkZTkzMDVlM2NiZjNkOGRlMTQ2NTZjMzBlZTljM2E0NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBDU3RyaW5nIGJ1aWxk
QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCiAgICAgc2l6
ZV90IGxhbmd1YWdlc0NvdW50ID0gbGFuZ3VhZ2VzLnNpemUoKTsKIAogICAgIC8vIElnbm9yZSAi
QyIgbG9jYWxlLgotICAgIHNpemVfdCBjTG9jYWxlUG9zaXRpb24gPSBsYW5ndWFnZXMuZmluZCgi
YyIpOworICAgIHNpemVfdCBjTG9jYWxlUG9zaXRpb24gPSBsYW5ndWFnZXMuZmluZCgiYyJfcyk7
CiAgICAgaWYgKGNMb2NhbGVQb3NpdGlvbiAhPSBub3RGb3VuZCkKICAgICAgICAgbGFuZ3VhZ2Vz
Q291bnQtLTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbQppbmRleCAzNDlkZDBkODdhYzcwMTI3YzlmMzYxODgxZTk5NGI4MmE1Y2IxYjY3Li5i
N2M1NGYyMWU2ODJlMjM2ODVjMDFlNTNmNjM2MjVkOTIwMWViMzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtNjQ1LDcgKzY0NSw3
IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VXNlckRpcmVjdG9yeVN1ZmZpeChjb25zdCBBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0CiAgICAgYXV0byB1c2VyRGlyZWN0b3J5U3VmZml4
ID0gcGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5maW5kKCJ1c2VyLWRpcmVjdG9y
eS1zdWZmaXgiKTsKICAgICBpZiAodXNlckRpcmVjdG9yeVN1ZmZpeCAhPSBwYXJhbWV0ZXJzLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyBzdWZmaXggPSB1
c2VyRGlyZWN0b3J5U3VmZml4LT52YWx1ZTsKLSAgICAgICAgYXV0byBmaXJzdFBhdGhTZXBhcmF0
b3IgPSBzdWZmaXguZmluZCgiLyIpOworICAgICAgICBhdXRvIGZpcnN0UGF0aFNlcGFyYXRvciA9
IHN1ZmZpeC5maW5kKCcvJyk7CiAgICAgICAgIGlmIChmaXJzdFBhdGhTZXBhcmF0b3IgIT0gbm90
Rm91bmQpCiAgICAgICAgICAgICBzdWZmaXgudHJ1bmNhdGUoZmlyc3RQYXRoU2VwYXJhdG9yKTsK
ICAgICAgICAgcmV0dXJuIHN1ZmZpeDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmlu
ZGV4IGJhZGFmMTU4N2EyMDE5NzdlYjllNzRmMTQ3OTc5NDdlYjI0NzJmMWQuLmY0YTVkNDRlMTk3
MTU5ZTRhMzJhNGY4ODZmZjQ3NjgzOTJhMjUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFy
Y2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAgICBhdXRvIHNlYXJj
aFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVz
Y2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIl
MjAiX3MsICIrIl9zKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIiwgIisiKTsKICAg
ICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9x
PSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCiAgICAgV2ViQ29y
ZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggZGZjMGFlNTE5
NjY4OTI0M2FiMGY4ZmM5MDg2NWNjOTZjNTYwZWVkNC4uMWJjM2MzZDU5OGQ0N2RhZTE4MzQ5NzVl
ZjQyNjNjZTQ4ZTQ1N2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTgs
NyArNTgsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNv
bnN0IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNw
YWNlKCk7CiAgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhz
ZWFyY2hTdHJpbmcpOwotICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsK
KyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIiwgIisiKTsKICAgICBhdXRvIHNlYXJjaFVS
TCA9IFVSTCB7ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJp
bmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCiAgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJ
bmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCmluZGV4IDYzMDY0
YTM5MGU2YzM1MGRiNWYyOGEyNjg3NzMxMTQ4YTAyMTI1ZWIuLmQ2MjllZmNkNDczNjBiNDc4MmQ4
MzZhMGVlOGI5MjRkYjdlNmUwY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ0ltcGwuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ0ltcGwuY3BwCkBAIC0zMzQsMTMgKzMzNCwxMyBAQCBURVNUKFdURiwgU3RyaW5nSW1w
bEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhJbnZhbGlkT2Zmc2V0KQogVEVTVChXVEYsIFN0cmlu
Z0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VPbk51bGwpCiB7CiAgICAgYXV0byByZWZlcmVuY2Ug
PSBzdHJpbmdGcm9tVVRGOCgiQUJDw4lFRkciKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
bnVsbHB0cikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91
bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCAwKSk7Ci0gICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDMpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2UobnVsbHB0ciwgNykpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdU
Rjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCA4
KSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJl
ZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIDQyKSk7Ci0gICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKG51bGxwdHIsIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQp
LCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSkpOworICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2Ut
PmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgMCkpOworICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSwgMykpOworICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3IHsgfSwgNykpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXpl
X3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHsgfSwgOCkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6
bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsg
fSwgNDIpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5k
KSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0sIHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwogfQogCiBURVNUKFdURiwgU3RyaW5n
SW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZU9uRW1wdHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455642</attachid>
            <date>2022-03-24 08:36:03 -0700</date>
            <delta_ts>2022-03-24 09:55:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238287-20220324083602.patch</filename>
            <type>text/plain</type>
            <size>73986</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZkMGY0OTkwMmU5ZDUxOTgzZWYyM2Ey
YmRhMTJiZWEwZGNhNGFmMGIuLjliYzMwYjhlNmVjZDJkN2MzOWJjMjIwMDE1NzU5YmM0ODUyMWM3
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8g
cmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTdHJpbmcncyBm
aW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5n
VmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5IFN0
cmluZyBjb25zdHJ1Y3Rpb24gaW4gbWFueSBjYXNlcy4gV2Ugc2hvdWxkIHByb2JhYmx5IGRvIHRo
ZSBzYW1lIGZvcgorICAgICAgICBtb3JlIFN0cmluZyBmdW5jdGlvbnMgd2hlcmUgd2UgZG9uJ3Qg
cmVhbGx5IG5lZWQgYSBTdHJpbmcgcGFyYW1ldGVyLCBidXQgdGhvc2Ugd2lsbCBiZQorICAgICAg
ICBhZGRyZXNzZWQgc2VwYXJhdGVseS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcu
aDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6Zmlu
ZENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpmaW5kSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OmZpbmRDb21tb24pOgorICAgICAgICAoV1RGOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmQgY29uc3QpOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAg
IChXVEY6OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAg
ICAgKFdURjo6QXRvbVN0cmluZzo6ZmluZCBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21TdHJp
bmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OkF0b21TdHJp
bmc6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6Y29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6
CisKIDIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbmxpbmUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgY29uc3RydWN0b3Igc28gdGhlIGNvbXBpbGVy
IGNhbiBvcHRpbWl6ZSBvdXQgc3RybGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZjUwNzcxMWZmOTYxYjJl
MDlhNGNmZmY2YWY2Y2RjM2YwNDkxZDQ5Li42MmYzZDc4NjgzNzI4NjIzMmNjYTliOWVlNzg3ZWE2
ZmUwY2E4M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDMtMjQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyBy
ZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0
ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzgyODcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
Y29kZURhdGFiYXNlTmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9u
KToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlOjpsYWJlbCBjb25zdCk6CisKIDIwMjItMDMtMjQgIEFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtJRkNdW0ludGVncmF0aW9uXSBSZW5kZXJUZXh0Ojpjb21w
dXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcgc2hvdWxkIHRha2UgZmlyc3QtbGluZSBz
dHlsZSBpbnRvIGFjY291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWY0MzFjOWVkNjM0M2Y3MmExOGFiNzY5MmU2
M2FiMzc0ZjI4MDU3Zi4uYjk0YzNhZmE3MjQzY2YxY2FkZTgxMDVhNjZkZmQzN2Y5ZDE2ODdkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkg
LyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODI4
NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKwogMjAyMi0w
My0yNCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFJFR1JFU1NJT04ocjI5MTYxMyk6IEJ1aWxkIGJyb2tlbiB3aXRoIFVTRV9HVEs0
ICsgRU5BQkxFX0FDQ0VTU0lCSUxJVFkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA2
YmUwNjRlMzgzODkzN2ZkZTVlODUyODY5NWY0MTQwYzJkODNiMmRhLi40NTBkZTZiYmE4ZmYyYTFk
Y2Y3ZGE2ZTdlZjc3NDdlZWM2NjdkYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBTdHJpbmcncyBmaW5kKCkgLyByZXZlcnNlRmluZCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
ZWFyY2hXaXRoR29vZ2xlKToKKwogMjAyMi0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEhvbWUgbGluayBvbiB3ZWF0aGVyLmdvdiBpcyBub3Qgd29ya2lu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGYxMmEyYzQ5NTNmMDAzMmRm
YjRiNzJmNjhmZjgwZmVkZGI2OTAzNTQuLmQzYWQwODBlMWRkZjRmZTZlZmJhOTEzNWJhMjY4NzZj
NzdkY2JjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTExNzksNyAr
MTE3OSw3IEBAIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogY3JlYXRlU3RydWN0SGFuZGxlck1hcCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC8vIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcg
dmFsdWVXaXRoPEZvbz46Y29udGV4dDogbWV0aG9kLgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9w
dFN5c3RlbTxjaGFyW10+KG1ldGhvZF9jb3B5UmV0dXJuVHlwZShtZXRob2QpKTsKLSAgICAgICAg
U3RydWN0SGFuZGxlcnM6Oml0ZXJhdG9yIGl0ZXIgPSBzdHJ1Y3RIYW5kbGVycy0+ZmluZChTdHJp
bmcgeyB0eXBlLmdldCgpIH0pOworICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKHR5cGUuZ2V0KCkpOwogICAgICAgICBpZiAoaXRlciA9
PSBzdHJ1Y3RIYW5kbGVycy0+ZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFN0
cnVjdFRhZ0hhbmRsZXImIGhhbmRsZXIgPSBpdGVyLT52YWx1ZTsKQEAgLTEyMTcsNyArMTIxNyw3
IEBAIHN0YXRpYyBTdHJ1Y3RUYWdIYW5kbGVyKiBoYW5kZXJGb3JTdHJ1Y3RUYWcoY29uc3QgY2hh
ciogZW5jb2RlZFR5cGUpCiAKICAgICBzdGF0aWMgU3RydWN0SGFuZGxlcnMqIHN0cnVjdEhhbmRs
ZXJzID0gY3JlYXRlU3RydWN0SGFuZGxlck1hcCgpOwogCi0gICAgU3RydWN0SGFuZGxlcnM6Oml0
ZXJhdG9yIGl0ZXIgPSBzdHJ1Y3RIYW5kbGVycy0+ZmluZChTdHJpbmcgeyBlbmNvZGVkVHlwZSB9
KTsKKyAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJzLT5m
aW5kKGVuY29kZWRUeXBlKTsKICAgICBpZiAoaXRlciA9PSBzdHJ1Y3RIYW5kbGVycy0+ZW5kKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmaXRlci0+dmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmluZGV4IGY4MjFkZjhlM2ViZWQ1N2Y1NDBj
ZDJmMDFkNjRlYzk2ZGNmYTg2Y2QuLjk2ZTQ0Nzg4NzBjZDgxYTU4OTk3ZDAyZGE2ZmE0ZmJhMzQ2
YWYxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFw
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC00
NTEsNyArNDUxLDcgQEAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGFsbG9jYXRlQ29uc3RydWN0b3JG
b3JDdXN0b21DbGFzcyhKU0NvbnRleHQgKmNvbnRleHQsIGNvbnMKICAgICAgICAgZm9yRWFjaE1l
dGhvZEluQ2xhc3MoY3VycmVudENsYXNzLCBeKE1ldGhvZCBtZXRob2QpIHsKICAgICAgICAgICAg
IFNFTCBzZWxlY3RvciA9IG1ldGhvZF9nZXROYW1lKG1ldGhvZCk7CiAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lID0gc2VsX2dldE5hbWUoc2VsZWN0b3IpOwotICAgICAgICAgICAgYXV0byBp
dGVyID0gaW5pdFRhYmxlLmZpbmQoU3RyaW5nIHsgbmFtZSB9KTsKKyAgICAgICAgICAgIGF1dG8g
aXRlciA9IGluaXRUYWJsZS5maW5kKG5hbWUpOwogCiAgICAgICAgICAgICBpZiAoaXRlciA9PSBp
bml0VGFibGUuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRp
dEFnZW50LmNwcAppbmRleCBjMjg3NzM2ZDcxZTdlYjllODg1NThmZmNkMGI3MDQ1MjViZmZjZjk3
Li4zMGFjYWYzMzQ1ODA1Mzc0ZDgxZGJiMGIxYzVkNDlmZjdhZjBhNmUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpv
cAogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAKLSAgICBhdXRvIGZ1bmN0aW9uU3RyaW5nID0g
bWFrZVN0cmluZygiKGZ1bmN0aW9uKFdlYkluc3BlY3RvckF1ZGl0KSB7IFwidXNlIHN0cmljdFwi
OyByZXR1cm4gZXZhbChgKCIsIFN0cmluZyB7IHRlc3QgfS5yZXBsYWNlKCdgJywgIlxcYCJfcyks
ICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOworICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcg
PSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0
XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsgdGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIiks
ICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQ6OkV4
ZWN1dGVPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5vYmplY3RHcm91cCA9ICJhdWRpdCJf
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwCmluZGV4IGM4NjdlZWQyNWE5ZjU4MzdiOTdmYzM3ZWExMTRkZGRjMmNiNjRiZjMuLmJkZDk1
OWNlYzc5MWU0NDczNmIxN2Q0YmU1OTZhMGM4ZjRlYjRkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMTE1Myw3ICsxMTUz
LDcgQEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqIGRzdCwgY29uc3Qgdm9pZCogc3Jj
LCBzaXplX3Qgc2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGZkID09IC0xKSB7CiAg
ICAgICAgICAgICAgICAgU3RyaW5nIHBhdGggeyBPcHRpb25zOjpkdW1wSklUTWVtb3J5UGF0aCgp
IH07Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiJXBpZCJfcywgU3RyaW5n
OjpudW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CisgICAgICAgICAgICAgICAgcGF0aCA9
IHBhdGgucmVwbGFjZSgiJXBpZCIsIFN0cmluZzo6bnVtYmVyKGdldEN1cnJlbnRQcm9jZXNzSUQo
KSkpOwogICAgICAgICAgICAgICAgIGZkID0gb3BlbihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fQVBQRU5EIHwg
T19XUk9OTFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGZkICE9IC0xKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDIxMzQz
OTY0NzM2MGU5Y2I1YjVkOTM5NmFjYWE0MTJkYzhkYzg0ZS4uOGNkMGQ1ZTljNDRmMTA4Mzg5MjI5
MDdhY2UzYTA0ZmY2NGYyZjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgU3Ry
aW5nIG5vdEFGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNz
YWdlLCBjb25zdCBTdAogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJy
b3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1cnJlbmNl
ID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gbm90QUZ1bmN0
aW9uSW5kZXggPSBvcmlnaW5hbE1lc3NhZ2UucmV2ZXJzZUZpbmQoImlzIG5vdCBhIGZ1bmN0aW9u
Il9zKTsKKyAgICBhdXRvIG5vdEFGdW5jdGlvbkluZGV4ID0gb3JpZ2luYWxNZXNzYWdlLnJldmVy
c2VGaW5kKCJpcyBub3QgYSBmdW5jdGlvbiIpOwogICAgIFJFTEVBU0VfQVNTRVJUKG5vdEFGdW5j
dGlvbkluZGV4ICE9IG5vdEZvdW5kKTsKICAgICBTdHJpbmdWaWV3IGRpc3BsYXlWYWx1ZTsKICAg
ICBpZiAob3JpZ2luYWxNZXNzYWdlLmlzOEJpdCgpKSAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0
aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNZXNzYWdlLCBjbwogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291
cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKIAogICAgIEFTU0VSVChvY2N1
cnJlbmNlID09IEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwotICAgIGF1dG8gaW5J
bmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImluIl9zKTsKKyAgICBhdXRvIGluSW5kZXgg
PSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJpbiIpOwogICAgIGlmIChpbkluZGV4ID09IG5vdEZv
dW5kKSB7CiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJhc2ljYWxseSBuZXZlciBoYXBwZW4sIHNp
bmNlIEpTIGNvZGUgbXVzdCB1c2UgdGhlIGxpdGVyYWwKICAgICAgICAgLy8gdGV4dCAiaW4iIGZv
ciB0aGUgYGluYCBvcGVyYXRpb24uIEhvd2V2ZXIsIGlmIHdlIGZhaWwgdG8gZmluZCAiaW4iCkBA
IC0yMTgsNyArMjE4LDcgQEAgaW5saW5lIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2Vv
ZlNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgY29udGVudCwgY28KICAgICAgICAgcmV0dXJu
IGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4
dCk7CiAKICAgICBBU1NFUlQob2NjdXJyZW5jZSA9PSBFcnJvckluc3RhbmNlOjpGb3VuZEV4YWN0
U291cmNlKTsKLSAgICBhdXRvIGluc3RhbmNlb2ZJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZp
bmQoImluc3RhbmNlb2YiX3MpOworICAgIGF1dG8gaW5zdGFuY2VvZkluZGV4ID0gc291cmNlVGV4
dC5yZXZlcnNlRmluZCgiaW5zdGFuY2VvZiIpOwogICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVu
IFN5bWJvbC5oYXNJbnN0YW5jZSBmdW5jdGlvbiBpcyBkaXJlY3RseSBjYWxsZWQuCiAgICAgaWYg
KGluc3RhbmNlb2ZJbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWVz
c2FnZTsKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVT
b3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29ucwogICAgIGlm
IChvY2N1cnJlbmNlID09IEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpCiAg
ICAgICAgIHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3Nh
Z2UsIHNvdXJjZVRleHQpOwogCi0gICAgYXV0byBleHRlbmRzSW5kZXggPSBzb3VyY2VUZXh0LnJl
dmVyc2VGaW5kKCJleHRlbmRzIl9zKTsKKyAgICBhdXRvIGV4dGVuZHNJbmRleCA9IHNvdXJjZVRl
eHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiKTsKICAgICBpZiAoZXh0ZW5kc0luZGV4ID09IG5vdEZv
dW5kIHx8IHNvdXJjZVRleHQuZmluZCgiZXh0ZW5kcyIpICE9IGV4dGVuZHNJbmRleCkKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcob3JpZ2luYWxNZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBz
b3VyY2VUZXh0LCAiJykiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlci5jcHAKaW5kZXggNWZhYjFiODMwNTNjMzgyZWJhMDgyYTk0YWQ4ZTYzZDY5ZjU3
NDU5NC4uN2UxYmNlMjliYWZlZmZiY2E2NGZjNTQ1ZWE0YWI4OGM4ZWUxZmQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC01Myw5ICs1
Myw5IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9j
YXRpb24qIGxvY2F0aW9uLCBWTSYgdm0pCiAKICAgICBkYXRhTG9nKCJcdFx0IiwgbG9jYXRpb24t
Pm1fZ2xvYmFsVmFyaWFibGVJRCA9PSBUeXBlUHJvZmlsZXJSZXR1cm5TdGF0ZW1lbnQgPyAiW1Jl
dHVybiBTdGF0ZW1lbnRdIiA6ICJbTm9ybWFsIFN0YXRlbWVudF0iLCAiXG4iKTsKIAotICAgIGRh
dGFMb2coIlx0XHQjTG9jYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0
LT5kdW1wVHlwZXMoKS5yZXBsYWNlKCJcbiJfcywgIlxuXHRcdCJfcyksICJcbiIpOworICAgIGRh
dGFMb2coIlx0XHQjTG9jYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0
LT5kdW1wVHlwZXMoKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwgIlxuIik7CiAgICAgaWYgKGxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQpCi0gICAgICAgIGRhdGFMb2coIlx0XHQjR2xvYmFsI1xu
XHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxu
Il9zLCAiXG5cdFx0Il9zKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIlx0XHQjR2xvYmFsI1xu
XHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmR1bXBUeXBlcygpLnJlcGxhY2UoIlxu
IiwgIlxuXHRcdCIpLCAiXG4iKTsKIH0KIAogdm9pZCBUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xv
Y2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuY3BwCmluZGV4IDczM2Y5ODEyZjE4ZThmNjE4ZTRlYTkwN2Y5MWNiMjUzZjdj
MDhlY2QuLmQ4OGJhMjhjM2YzMDkyNzJlM2RhMmVjNDI2YjkzOWVkMWU5OTUxY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAg
U3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgIGJ1aWxkZXIuYXBwZW5k
KCc6Jyk7CiAgICAgZm9yIChhdXRvJiBrZXkgOiBtX2ZpZWxkcykgewogICAgICAgICBTdHJpbmcg
cHJvcGVydHkgPSBrZXkuZ2V0KCk7Ci0gICAgICAgIHByb3BlcnR5LnJlcGxhY2UoIjoiX3MsICJc
XDoiX3MpOyAvLyBFbnN1cmUgdGhhdCBoYXNoKHsiZm9vOiIsICJiYXIifSkgIT0gaGFzaCh7ImZv
byIsICI6YmFyIn0pIGJlY2F1c2Ugd2UncmUgdXNpbmcgY29sb25zIGFzIGEgc2VwYXJhdG9yIGFu
ZCBjb2xvbnMgYXJlIGxlZ2FsIGNoYXJhY3RlcnMgaW4gZmllbGQgbmFtZXMgaW4gSlMuCisgICAg
ICAgIHByb3BlcnR5LnJlcGxhY2UoIjoiLCAiXFw6Iik7IC8vIEVuc3VyZSB0aGF0IGhhc2goeyJm
b286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVzZSB3ZSdyZSB1c2lu
ZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwgY2hhcmFjdGVycyBp
biBmaWVsZCBuYW1lcyBpbiBKUy4KICAgICAgICAgYnVpbGRlci5hcHBlbmQocHJvcGVydHkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9u
T3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJy
aWRlcy5jcHAKaW5kZXggOTU2ODZiYTE5MjBiYjBlYjEyNzQwNGYxMzkxYmIwMmY1YmIxNjA4OS4u
NWUzMjA4Y2IyNjAxMDMyYzdlMzBjMjZiYzkzMTc1ZmY3NmZjYmEzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VD
b2RlJiBvcmlnQ29kZSwgY29uc3QgU3RyaW5nJiBuZXcKICAgICBGdW5jdGlvbk92ZXJyaWRlc0Fz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFN0cmluZyBvcmlnUHJvdmlkZXJTdHIgPSBvcmln
Q29kZS5wcm92aWRlcigpLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAgIHVuc2lnbmVkIG9yaWdT
dGFydCA9IG9yaWdDb2RlLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgb3JpZ0Z1bmN0aW9u
U3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIl9zLCBvcmlnU3Rh
cnQpOworICAgIHVuc2lnbmVkIG9yaWdGdW5jdGlvblN0YXJ0ID0gb3JpZ1Byb3ZpZGVyU3RyLnJl
dmVyc2VGaW5kKCJmdW5jdGlvbiIsIG9yaWdTdGFydCk7CiAgICAgdW5zaWduZWQgb3JpZ0JyYWNl
U3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIuZmluZCgneycsIG9yaWdTdGFydCk7CiAgICAgdW5zaWdu
ZWQgaGVhZGVyTGVuZ3RoID0gb3JpZ0JyYWNlU3RhcnQgLSBvcmlnRnVuY3Rpb25TdGFydDsKICAg
ICBTdHJpbmcgb3JpZ0hlYWRlciA9IG9yaWdQcm92aWRlclN0ci5zdWJzdHJpbmcob3JpZ0Z1bmN0
aW9uU3RhcnQsIGhlYWRlckxlbmd0aCk7CkBAIC0xNDcsOCArMTQ3LDggQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29uc3Qg
U3RyaW5nJiBuZXcKICAgICBpbmZvLmxpbmVDb3VudCA9IDE7IC8vIEZha2luZyBpdC4gVGhpcyBk
b2Vzbid0IHJlYWxseSBtYXR0ZXIgZm9yIG5vdy4KICAgICBpbmZvLnN0YXJ0Q29sdW1uID0gMTsK
ICAgICBpbmZvLmVuZENvbHVtbiA9IDE7IC8vIEZha2luZyBpdC4gVGhpcyBkb2Vzbid0IHJlYWxs
eSBtYXR0ZXIgZm9yIG5vdy4KLSAgICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNldCA9IG5ld1By
b3ZpZGVyU3RyLmZpbmQoIigiKTsKLSAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9
IG5ld1Byb3ZpZGVyU3RyLmZpbmQoInsiKTsKKyAgICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNl
dCA9IG5ld1Byb3ZpZGVyU3RyLmZpbmQoJygnKTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmZpbmQoJ3snKTsKICAgICBpbmZvLnR5cGVQcm9maWxp
bmdFbmRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5sZW5ndGgoKSAtIDE7CiAKICAgICBpbmZvLnNv
dXJjZUNvZGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCAzM2IwZTU5NThkODM5NTYz
YTY1ZTEzZGNhMjBhMjdiZjMzMTk0YmYyLi5jNjZjOGM1YzgxY2RkMGI2YmIzMDU2NzJiMDg1MzFk
YTBhNzcyYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtMTE0LDE0ICsxMTQsMTQg
QEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGNoYXJhY3Rlcik7IH0KICAgICBib29sIGNvbnRhaW5z
KGNvbnN0IExDaGFyKiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0
cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcpOyB9Ci0gICAgYm9vbCBjb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRh
aW5zKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3Rlciwg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKGNoYXJhY3Rl
ciwgc3RhcnQpOyB9CiAgICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWdu
ZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3RhcnQp
OyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsgfQotICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9Ci0gICAg
c2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsgfQorICAgIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2Rl
VW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQogCiAgICAg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5zdGFydHNXaXRoKHN0cmluZyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCmlu
ZGV4IDlkMzU1ZTU0ZjgzMDQzODA0ZjliYWIxNWJjMDViMzIxOGI5ZGQyNDEuLmRhNzkzOWVmM2Rh
N2FjZTZlMDYzZTgxOTU4MGYwMDM5NGU0YjZhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21t
b24uaApAQCAtNDgwLDMzICs0ODAsNiBAQCBpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZVdpdGhvdXRMZW5ndGgoY29uc3QgY2hhciogc291cmNlLCBjb25zdCBjaGFyKgogICAgIHJl
dHVybiBtYXRjaExlbmd0aCA8IHNlYXJjaExlbmd0aCA/IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShz
b3VyY2UsIG1hdGNoQ2hhcmFjdGVycywgMCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCkgOiBu
b3RGb3VuZDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBT
dHJpbmdDbGFzc0I+Ci1zaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0Ns
YXNzQSYgc291cmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHN0cmluZ1RvRmluZCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQpCi17Ci0gICAgdW5zaWduZWQgc291cmNlU3RyaW5nTGVuZ3RoID0gc291cmNl
Lmxlbmd0aCgpOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gc3RyaW5nVG9GaW5kLmxlbmd0
aCgpOwotICAgIGlmICghbWF0Y2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGFy
dE9mZnNldCwgc291cmNlU3RyaW5nTGVuZ3RoKTsKLQotICAgIC8vIENoZWNrIHN0YXJ0T2Zmc2V0
ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgotICAgIGlmIChzdGFydE9mZnNldCA+IHNvdXJj
ZVN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIHNl
YXJjaExlbmd0aCA9IHNvdXJjZVN0cmluZ0xlbmd0aCAtIHN0YXJ0T2Zmc2V0OwotICAgIGlmICht
YXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotCi0g
ICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewotICAgICAgICBpZiAoc3RyaW5nVG9GaW5kLmlzOEJp
dCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hh
cmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFy
Y2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShzb3VyY2UuY2hhcmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBz
dGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgfQotCi0gICAgaWYg
KHN0cmluZ1RvRmluZC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBz
dGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0KLSAgICByZXR1cm4gZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVG9GaW5kLmNo
YXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci19
Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRj
aENoYXJhY3RlclR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgZmluZElubmVyKGNv
bnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hh
cmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc2Vh
cmNoTGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKIHsKQEAgLTU1OSwzOSArNTMyLDYgQEAg
aW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGUKICAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBsZW5n
dGgsIHN0YXRpY19jYXN0PExDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1zaXplX3QgZmluZENvbW1vbihjb25zdCBTdHJp
bmdDbGFzcyYgaGF5c3RhY2ssIGNvbnN0IFN0cmluZ0NsYXNzJiBuZWVkbGUsIHVuc2lnbmVkIHN0
YXJ0KQotewotICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRsZS5sZW5ndGgoKTsKLQot
ICAgIGlmIChuZWVkbGVMZW5ndGggPT0gMSkgewotICAgICAgICBpZiAoaGF5c3RhY2suaXM4Qml0
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJhY3RlcnM4KCks
IGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5lZWRs
ZVswXSwgc3RhcnQpOwotICAgIH0KLQotICAgIGlmIChzdGFydCA+IGhheXN0YWNrLmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoIW5lZWRsZUxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIHN0YXJ0OwotCi0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gaGF5c3Rh
Y2subGVuZ3RoKCkgLSBzdGFydDsKLSAgICBpZiAobmVlZGxlTGVuZ3RoID4gc2VhcmNoTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoaGF5c3RhY2suaXM4Qml0KCkp
IHsKLSAgICAgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBmaW5k
SW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczgo
KSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZp
bmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJz
MTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBp
ZiAobmVlZGxlLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNo
YXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNo
TGVuZ3RoLCBuZWVkbGVMZW5ndGgpOwotCi0gICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5j
aGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBzZWFy
Y2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7Ci19Ci0KIC8vIFRoaXMgaXMgbWFya2VkIGlubGluZSBz
aW5jZSBpdCdzIG1vc3RseSB1c2VkIGluIG5vbi1pbmxpbmUgZnVuY3Rpb25zIGZvciBlYWNoIHN0
cmluZyB0eXBlLgogLy8gV2hlbiB1c2VkIGRpcmVjdGx5IGluIGNvZGUgaXQncyBwcm9iYWJseSBP
SyB0byBiZSBpbmxpbmU7IG1heWJlIHRoZSBsb29wIHdpbGwgYmUgdW5yb2xsZWQuCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBs
b3dlcmNhc2VMZXR0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAppbmRleCA0NjIwMTNkZTViNTZjY2Y4ODBkNjg2ZjZjZmIyMDNkYWRlNGVkZjk0Li42ZTY1
NWMxNGVhNDQ2MmM4ZWNhMGMzOTliOTIzZDgyZTE0ZjdhMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKQEAgLTg0Miw3ICs4NDIsNyBAQCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQpCiAgICAg
cmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24s
IHN0YXJ0KTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNo
U3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0IExD
aGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51
bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKICAgICBpZiAoIW1hdGNoU3RyaW5n
KQpAQCAtODUyLDE5ICs4NTIsMTkgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENo
YXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgQ1JBU0goKTsKICAgICB1
bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nTGVuZ3RoOwogICAgIGlmICghbWF0Y2hM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoKCkpOworICAgICAg
ICByZXR1cm4gc3RkOjptaW4oc3RhcnQsIGxlbmd0aCgpKTsKIAogICAgIC8vIE9wdGltaXphdGlv
biAxOiBmYXN0IGNhc2UgZm9yIHN0cmluZ3Mgb2YgbGVuZ3RoIDEuCiAgICAgaWYgKG1hdGNoTGVu
Z3RoID09IDEpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmdbMF0sIGluZGV4KTsK
LSAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksICptYXRj
aFN0cmluZywgaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJz
OCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmdbMF0sIHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksICptYXRjaFN0cmluZywgc3RhcnQpOwog
ICAgIH0KIAotICAgIC8vIENoZWNrIGluZGV4ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgot
ICAgIGlmIChpbmRleCA+IGxlbmd0aCgpKQorICAgIC8vIENoZWNrIHN0YXJ0ICYgbWF0Y2hMZW5n
dGggYXJlIGluIHJhbmdlLgorICAgIGlmIChzdGFydCA+IGxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gbGVuZ3RoKCkgLSBpbmRl
eDsKKyAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBsZW5ndGgoKSAtIHN0YXJ0OwogICAgIGlm
IChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwog
ICAgIC8vIGRlbHRhIGlzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBk
ZWx0YSA9PSAwIG1lYW5zIHRlc3Qgb25seSBvbmNlLgpAQCAtODc0LDcgKzg3NCw3IEBAIHNpemVf
dCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5k
ZXgpCiAgICAgLy8gb25seSBjYWxsIGVxdWFsIGlmIHRoZSBoYXNoZXMgbWF0Y2guCiAKICAgICBp
ZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgY29uc3QgTENoYXIqIHNlYXJjaENoYXJhY3RlcnMgPSBj
aGFyYWN0ZXJzOCgpICsgaW5kZXg7CisgICAgICAgIGNvbnN0IExDaGFyKiBzZWFyY2hDaGFyYWN0
ZXJzID0gY2hhcmFjdGVyczgoKSArIHN0YXJ0OwogCiAgICAgICAgIHVuc2lnbmVkIHNlYXJjaEhh
c2ggPSAwOwogICAgICAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwpAQCAtODkxLDEwICs4OTEs
MTAgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1
bnNpZ25lZCBpbmRleCkKICAgICAgICAgICAgIHNlYXJjaEhhc2ggLT0gc2VhcmNoQ2hhcmFjdGVy
c1tpXTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gaW5kZXgg
KyBpOworICAgICAgICByZXR1cm4gc3RhcnQgKyBpOwogICAgIH0KIAotICAgIGNvbnN0IFVDaGFy
KiBzZWFyY2hDaGFyYWN0ZXJzID0gY2hhcmFjdGVyczE2KCkgKyBpbmRleDsKKyAgICBjb25zdCBV
Q2hhciogc2VhcmNoQ2hhcmFjdGVycyA9IGNoYXJhY3RlcnMxNigpICsgc3RhcnQ7CiAKICAgICB1
bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKICAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwpAQCAt
OTExLDI2ICs5MTEsMjYgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgc2VhcmNoSGFzaCAtPSBzZWFyY2hD
aGFyYWN0ZXJzW2ldOwogICAgICAgICArK2k7CiAgICAgfQotICAgIHJldHVybiBpbmRleCArIGk7
CisgICAgcmV0dXJuIHN0YXJ0ICsgaTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3Ry
aW5nSW1wbCogbWF0Y2hTdHJpbmcpCitzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChTdHJpbmdWaWV3
IG1hdGNoU3RyaW5nKQogewogICAgIC8vIENoZWNrIGZvciBudWxsIHN0cmluZyB0byBtYXRjaCBh
Z2FpbnN0CiAgICAgaWYgKFVOTElLRUxZKCFtYXRjaFN0cmluZykpCiAgICAgICAgIHJldHVybiBu
b3RGb3VuZDsKLSAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nLT5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nLmxlbmd0aCgpOwogCiAg
ICAgLy8gT3B0aW1pemF0aW9uIDE6IGZhc3QgY2FzZSBmb3Igc3RyaW5ncyBvZiBsZW5ndGggMS4K
ICAgICBpZiAobWF0Y2hMZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoaXM4Qml0KCkpIHsKLSAg
ICAgICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJh
Y3RlcnM4KClbMF0pOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgp
LCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdKTsKKyAgICAgICAgICAg
IGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpWzBd
KTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCks
IG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpWzBdKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
bWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpWzBdKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKVswXSk7CisgICAgICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQo
KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgp
LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpWzBdKTsKKyAgICAgICAgcmV0dXJuIFdURjo6Zmlu
ZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpWzBd
KTsKICAgICB9CiAKICAgICAvLyBDaGVjayBtYXRjaExlbmd0aCBpcyBpbiByYW5nZS4KQEAgLTk0
Miw2NSArOTQyLDU1IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNo
U3RyaW5nKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChpczhCaXQoKSkgewotICAgICAg
ICBpZiAobWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJbm5l
cihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgMCwgbGVuZ3RoKCks
IG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIDAsIGxlbmd0aCgpLCBtYXRjaExlbmd0aCk7Cisg
ICAgICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmaW5k
SW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgMCwgbGVuZ3Ro
KCksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzOCgp
LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgMCwgbGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsK
ICAgICB9CiAKLSAgICBpZiAobWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4g
ZmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgMCwg
bGVuZ3RoKCksIG1hdGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJh
Y3RlcnM4KCksIDAsIGxlbmd0aCgpLCBtYXRjaExlbmd0aCk7CiAKLSAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIDAsIGxlbmd0
aCgpLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIGZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIDAsIGxlbmd0aCgpLCBtYXRjaExlbmd0aCk7CiB9
CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNp
Z25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0KQogewogICAgIC8vIENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0
cmluZyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgaWYgKFVOTElLRUxZKCFtYXRjaFN0cmluZykpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHJldHVybiBmaW5kQ29tbW9uKCp0aGlzLCAq
bWF0Y2hTdHJpbmcsIGluZGV4KTsKLX0KLQotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDAp
OworICAgIHJldHVybiBmaW5kQ29tbW9uKFN0cmluZ1ZpZXcgeyAqdGhpcyB9LCBtYXRjaFN0cmlu
Zywgc3RhcnQpOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3QKLXsKLSAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0
Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKLX0KLQotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykgY29uc3QKK3NpemVf
dCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmlu
ZykgY29uc3QKIHsKICAgICBpZiAoIW1hdGNoU3RyaW5nKQogICAgICAgICByZXR1cm4gbm90Rm91
bmQ7Ci0gICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsICptYXRj
aFN0cmluZywgMCk7CisgICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRo
aXMsIG1hdGNoU3RyaW5nLCAwKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0CitzaXplX3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogewogICAgIGlmICgh
bWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gOjpXVEY6
OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCBzdGFydE9mZnNldCk7
CisgICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIG1hdGNoU3Ry
aW5nLCBzdGFydCk7CiB9CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChVQ2hhciBj
aGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5k
KFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwg
Y2hhcmFjdGVyLCBpbmRleCk7Ci0gICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVy
czE2KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6
cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwgc3RhcnQpOwor
ICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hh
cmFjdGVyLCBzdGFydCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJU
eXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBz
aXplX3QgcmV2ZXJzZUZpbmRJbm5lcihjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzZWFyY2hD
aGFyYWN0ZXJzLCBjb25zdCBNYXRjaENoYXJhY3RlclR5cGUqIG1hdGNoQ2hhcmFjdGVycywgdW5z
aWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgcmV2ZXJzZUZpbmRJbm5lcihjb25zdCBTZWFyY2hDaGFy
YWN0ZXJUeXBlKiBzZWFyY2hDaGFyYWN0ZXJzLCBjb25zdCBNYXRjaENoYXJhY3RlclR5cGUqIG1h
dGNoQ2hhcmFjdGVycywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
bWF0Y2hMZW5ndGgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9uOiBrZWVwIGEgcnVubmluZyBoYXNo
IG9mIHRoZSBzdHJpbmdzLAogICAgIC8vIG9ubHkgY2FsbCBlcXVhbCBpZiB0aGUgaGFzaGVzIG1h
dGNoLgogCiAgICAgLy8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRpbWVzIHRv
IHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0gICAgdW5zaWduZWQgZGVs
dGEgPSBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoIC0gbWF0Y2hMZW5ndGgpOworICAgIHVuc2lnbmVk
IGRlbHRhID0gc3RkOjptaW4oc3RhcnQsIGxlbmd0aCAtIG1hdGNoTGVuZ3RoKTsKICAgICAKICAg
ICB1bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKICAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwpA
QCAtMTAyMCw2NiArMTAxMCw2NiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgcmV2ZXJz
ZUZpbmRJbm5lcihjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzZWFyY2hDaAogICAgIHJldHVy
biBkZWx0YTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNl
RmluZChTdHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICAvLyBD
aGVjayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdAogICAgIGlmICgh
bWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBtYXRj
aExlbmd0aCA9IG1hdGNoU3RyaW5nLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0
aCA9IG1hdGNoU3RyaW5nLmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIG91ckxlbmd0aCA9IGxlbmd0
aCgpOwogICAgIGlmICghbWF0Y2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihpbmRl
eCwgb3VyTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0LCBvdXJMZW5ndGgp
OwogCiAgICAgLy8gT3B0aW1pemF0aW9uIDE6IGZhc3QgY2FzZSBmb3Igc3RyaW5ncyBvZiBsZW5n
dGggMS4KICAgICBpZiAobWF0Y2hMZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoaXM4Qml0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgpLCBvdXJM
ZW5ndGgsICgqbWF0Y2hTdHJpbmcpWzBdLCBpbmRleCk7Ci0gICAgICAgIHJldHVybiBXVEY6OnJl
dmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBvdXJMZW5ndGgsICgqbWF0Y2hTdHJpbmcpWzBdLCBp
bmRleCk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgp
LCBvdXJMZW5ndGgsIG1hdGNoU3RyaW5nWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6
OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBvdXJMZW5ndGgsIG1hdGNoU3RyaW5nWzBdLCBz
dGFydCk7CiAgICAgfQogCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCisgICAgLy8gQ2hlY2sgc3RhcnQgJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCiAg
ICAgaWYgKG1hdGNoTGVuZ3RoID4gb3VyTGVuZ3RoKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7
CiAKICAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQo
KSkKLSAgICAgICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1h
dGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7
Ci0gICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAg
ICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gcmV2ZXJz
ZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdGFy
dCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVybiByZXZlcnNlRmluZElu
bmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAgICAgfQogICAgIAotICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigp
LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5n
dGgpOworICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHJldmVy
c2VGaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKIAotICAgIHJldHVybiByZXZlcnNlRmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBv
dXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFy
YWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBvdXJMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVy
KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IGNo
YXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKK0FMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0
YXJ0LCBjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCiB7CiAg
ICAgQVNTRVJUKG1hdGNoTGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKHN0
YXJ0T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQo
c3RhcnQgKyBtYXRjaExlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsg
c3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyks
IG1hdGNoTGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsg
c3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyks
IG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgp
ICsgc3RhcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1h
dGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3Rh
cnQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVu
Z3RoKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0IFN0
cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IFN0cmluZ0ltcGwm
IG1hdGNoU3RyaW5nKQorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0
IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIGNvbnN0IFN0cmluZ0ltcGwmIG1h
dGNoU3RyaW5nKQogewotICAgIGlmIChzdGFydE9mZnNldCA+IHN0cmluZy5sZW5ndGgoKSkKKyAg
ICBpZiAoc3RhcnQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgKyBzdGFydE9mZnNldCA+
IHN0cmluZy5sZW5ndGgoKSkKKyAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgKyBzdGFydCA+
IHN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkgewogICAgICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgbWF0
Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBy
ZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBlcXVhbChz
dHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9m
ZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgbWF0
Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAg
cmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGVxdWFsKHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgo
Y29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKSBjb25zdApAQCAtMTExMiw5ICsxMTAyLDkgQEAgYm9v
bCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25l
ZCBtYXRjaExlbmd0aCkgY29uc3QKICAgICByZXR1cm4gbWF0Y2hMZW5ndGggPD0gbGVuZ3RoKCkg
JiYgZXF1YWxJbm5lcigqdGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKTsKIH0KIAot
Ym9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0
Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAorYm9vbCBTdHJpbmdJbXBsOjpo
YXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVk
IHN0YXJ0KSBjb25zdAogewotICAgIHJldHVybiBlcXVhbElubmVyKCp0aGlzLCBzdGFydE9mZnNl
dCwgbWF0Y2hTdHJpbmcpOworICAgIHJldHVybiBlcXVhbElubmVyKCp0aGlzLCBzdGFydCwgbWF0
Y2hTdHJpbmcpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwqIHN1
ZmZpeCkKQEAgLTE0MTUsMjkgKzE0MDUsMjkgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgVUNoYXIqIHJlcGxhY2VtZW50LCB1bnMKICAg
ICByZXR1cm4gbmV3SW1wbDsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxh
Y2UoU3RyaW5nSW1wbCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQpCitSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdWaWV3IHBhdHRlcm4sIFN0cmluZ1Zp
ZXcgcmVwbGFjZW1lbnQpCiB7CiAgICAgaWYgKCFwYXR0ZXJuIHx8ICFyZXBsYWNlbWVudCkKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgdW5zaWduZWQgcGF0dGVybkxlbmd0aCA9IHBhdHRl
cm4tPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLmxlbmd0
aCgpOwogICAgIGlmICghcGF0dGVybkxlbmd0aCkKICAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
ICAgICAKLSAgICB1bnNpZ25lZCByZXBTdHJMZW5ndGggPSByZXBsYWNlbWVudC0+bGVuZ3RoKCk7
CisKKyAgICB1bnNpZ25lZCByZXBTdHJMZW5ndGggPSByZXBsYWNlbWVudC5sZW5ndGgoKTsKICAg
ICBzaXplX3Qgc3JjU2VnbWVudFN0YXJ0ID0gMDsKICAgICB1bnNpZ25lZCBtYXRjaENvdW50ID0g
MDsKLSAgICAKKwogICAgIC8vIENvdW50IHRoZSBtYXRjaGVzLgogICAgIHdoaWxlICgoc3JjU2Vn
bWVudFN0YXJ0ID0gZmluZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkg
ewogICAgICAgICArK21hdGNoQ291bnQ7CiAgICAgICAgIHNyY1NlZ21lbnRTdGFydCArPSBwYXR0
ZXJuTGVuZ3RoOwogICAgIH0KLSAgICAKKwogICAgIC8vIElmIHdlIGhhdmUgMCBtYXRjaGVzLCB3
ZSBkb24ndCBoYXZlIHRvIGRvIGFueSBtb3JlIHdvcmsKICAgICBpZiAoIW1hdGNoQ291bnQpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICAKKwogICAgIHVuc2lnbmVkIG5ld1NpemUgPSBtX2xl
bmd0aCAtIG1hdGNoQ291bnQgKiBwYXR0ZXJuTGVuZ3RoOwogICAgIGlmIChyZXBTdHJMZW5ndGgg
JiYgbWF0Y2hDb3VudCA+IE1heExlbmd0aCAvIHJlcFN0ckxlbmd0aCkKICAgICAgICAgQ1JBU0go
KTsKQEAgLTE0NDcsMTUgKzE0MzcsMTUgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
cGxhY2UoU3RyaW5nSW1wbCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKIAogICAg
IG5ld1NpemUgKz0gbWF0Y2hDb3VudCAqIHJlcFN0ckxlbmd0aDsKIAotICAgIAorCiAgICAgLy8g
Q29uc3RydWN0IHRoZSBuZXcgZGF0YQogICAgIHNpemVfdCBzcmNTZWdtZW50RW5kOwogICAgIHVu
c2lnbmVkIHNyY1NlZ21lbnRMZW5ndGg7CiAgICAgc3JjU2VnbWVudFN0YXJ0ID0gMDsKICAgICB1
bnNpZ25lZCBkc3RPZmZzZXQgPSAwOwogICAgIGJvb2wgc3JjSXM4Qml0ID0gaXM4Qml0KCk7Ci0g
ICAgYm9vbCByZXBsYWNlbWVudElzOEJpdCA9IHJlcGxhY2VtZW50LT5pczhCaXQoKTsKLSAgICAK
KyAgICBib29sIHJlcGxhY2VtZW50SXM4Qml0ID0gcmVwbGFjZW1lbnQuaXM4Qml0KCk7CisKICAg
ICAvLyBUaGVyZSBhcmUgNCBjYXNlczoKICAgICAvLyAxLiBUaGlzIGFuZCByZXBsYWNlbWVudCBh
cmUgYm90aCA4IGJpdC4KICAgICAvLyAyLiBUaGlzIGFuZCByZXBsYWNlbWVudCBhcmUgYm90aCAx
NiBiaXQuCkBAIC0xNDY5LDcgKzE0NTksNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAg
ICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3Rh
cnQ7CiAgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4
ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9m
ZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CisgICAg
ICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudC5jaGFy
YWN0ZXJzOCgpLCByZXBTdHJMZW5ndGgpOwogICAgICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0
ckxlbmd0aDsKICAgICAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyBw
YXR0ZXJuTGVuZ3RoOwogICAgICAgICB9CkBAIC0xNDk2LDEwICsxNDg2LDEwIEBAIFJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0lt
cGwqIHJlcGxhY2VtZW50CiAgICAgICAgIGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwog
ICAgICAgICBpZiAocmVwbGFjZW1lbnRJczhCaXQpIHsKICAgICAgICAgICAgIC8vIENhc2VzIDIg
JiAzLgotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFj
ZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVy
cyhkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudC5jaGFyYWN0ZXJzOCgpLCByZXBTdHJMZW5n
dGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ2FzZSA0Ci0gICAgICAgICAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudC0+bV9kYXRhMTYs
IHJlcFN0ckxlbmd0aCk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zm
c2V0LCByZXBsYWNlbWVudC5jaGFyYWN0ZXJzMTYoKSwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAg
fQogICAgICAgICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICBzcmNTZWdtZW50
U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKaW5kZXggNTMwYmFjNzVjYjNiNWY0MTZiMzU4ZDJkY2ViNmNlMjVjNTE0NTViZS4uOTQ5
NTBjMzU0NWEwZmFlM2YyZTkxYjZlN2E1OGNmNWEwZDY5NDM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTQyOCwxOCArNDI4LDE1IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmluZChM
Q2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoY2hh
ciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
aW5kZXggPSAwKTsKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0
cmluZywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwq
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwotCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQg
aW5kZXggPSBNYXhMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJz
ZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gTWF4TGVuZ3RoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25l
ZCBzdGFydCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChjb25zdCBM
Q2hhciosIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChT
dHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWdu
ZWQgc3RhcnQpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNl
RmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSBN
YXhMZW5ndGgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRz
V2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CkBAIC00NDgsNyArNDQ1LDcgQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2ln
bmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0
aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29u
c3QgeyByZXR1cm4gc3RhcnRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1w
bCYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0
KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFN0cmluZ0lt
cGwqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsJik7
CkBAIC00NjQsOCArNDYxLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVu
c2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3Ro
KTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVmPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1l
bnRMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8
U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJp
bmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNl
KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJ
bXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdy
aXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsK
IApAQCAtNTkyLDEyICs1ODksMTIgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmLAogdGVtcGxhdGU8
dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0LCB0eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rp
b24sIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0
TWF0Y2hGdW5jdGlvbiwgQ29kZVVuaXQ+PiogPSBudWxscHRyPgotc2l6ZV90IGZpbmQoY29uc3Qg
Q29kZVVuaXQqLCB1bnNpZ25lZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiYmLCB1bnNp
Z25lZCBpbmRleCA9IDApOworc2l6ZV90IGZpbmQoY29uc3QgQ29kZVVuaXQqLCB1bnNpZ25lZCBs
ZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiYmLCB1bnNpZ25lZCBzdGFydCA9IDApOwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgcmV2ZXJzZUZpbmRMaW5lVGVy
bWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBp
bmRleCA9IFN0cmluZ0ltcGw6Ok1heExlbmd0aCk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVk
IGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBT
dHJpbmdJbXBsOjpNYXhMZW5ndGgpOwotc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBMQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBT
dHJpbmdJbXBsOjpNYXhMZW5ndGgpOwotc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBT
dHJpbmdJbXBsOjpNYXhMZW5ndGgpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQgPSBTdHJpbmdJbXBsOjpNYXhMZW5ndGgpOwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0
IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFy
YWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKK3NpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFy
YWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKK3NpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFy
YWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKIAogdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0
IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiwgU3RyaW5nSW1wbCopOwogCkBAIC02NDIs
NTQgKzYzOSw1NCBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIFN0cmlu
Z0ltcGw6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q29kZVVuaXQsIHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBDb2Rl
VW5pdD4+Kj4KLWlubGluZSBzaXplX3QgZmluZChjb25zdCBDb2RlVW5pdCogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24mJiBtYXRjaEZ1bmN0aW9uLCB1
bnNpZ25lZCBpbmRleCkKK2lubGluZSBzaXplX3QgZmluZChjb25zdCBDb2RlVW5pdCogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24mJiBtYXRjaEZ1bmN0
aW9uLCB1bnNpZ25lZCBzdGFydCkKIHsKLSAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAg
ICAgICAgaWYgKG1hdGNoRnVuY3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQotICAgICAgICAgICAg
cmV0dXJuIGluZGV4OwotICAgICAgICArK2luZGV4OworICAgIHdoaWxlIChzdGFydCA8IGxlbmd0
aCkgeworICAgICAgICBpZiAobWF0Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW3N0YXJ0XSkpCisgICAg
ICAgICAgICByZXR1cm4gc3RhcnQ7CisgICAgICAgICsrc3RhcnQ7CiAgICAgfQogICAgIHJldHVy
biBub3RGb3VuZDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5l
IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5hdG9yKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXgpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0
b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCBzdGFydCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OwotICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCi0gICAgICAgIGluZGV4ID0gbGVuZ3RoIC0gMTsK
LSAgICBhdXRvIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbaW5kZXhdOworICAgIGlmIChzdGFydCA+
PSBsZW5ndGgpCisgICAgICAgIHN0YXJ0ID0gbGVuZ3RoIC0gMTsKKyAgICBhdXRvIGNoYXJhY3Rl
ciA9IGNoYXJhY3RlcnNbc3RhcnRdOwogICAgIHdoaWxlIChjaGFyYWN0ZXIgIT0gJ1xuJyAmJiBj
aGFyYWN0ZXIgIT0gJ1xyJykgewotICAgICAgICBpZiAoIWluZGV4LS0pCisgICAgICAgIGlmICgh
c3RhcnQtLSkKICAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgY2hhcmFjdGVy
ID0gY2hhcmFjdGVyc1tpbmRleF07CisgICAgICAgIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbc3Rh
cnRdOwogICAgIH0KLSAgICByZXR1cm4gaW5kZXg7CisgICAgcmV0dXJuIHN0YXJ0OwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5k
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFj
dGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENo
YXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQotICAgICAgICBpbmRleCA9
IGxlbmd0aCAtIDE7Ci0gICAgd2hpbGUgKGNoYXJhY3RlcnNbaW5kZXhdICE9IG1hdGNoQ2hhcmFj
dGVyKSB7Ci0gICAgICAgIGlmICghaW5kZXgtLSkKKyAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQor
ICAgICAgICBzdGFydCA9IGxlbmd0aCAtIDE7CisgICAgd2hpbGUgKGNoYXJhY3RlcnNbc3RhcnRd
ICE9IG1hdGNoQ2hhcmFjdGVyKSB7CisgICAgICAgIGlmICghc3RhcnQtLSkKICAgICAgICAgICAg
IHJldHVybiBub3RGb3VuZDsKICAgICB9Ci0gICAgcmV0dXJuIGluZGV4OworICAgIHJldHVybiBz
dGFydDsKIH0KIAotQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2ln
bmVkIGluZGV4KQorQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2ln
bmVkIHN0YXJ0KQogewotICAgIHJldHVybiByZXZlcnNlRmluZChjaGFyYWN0ZXJzLCBsZW5ndGgs
IHN0YXRpY19jYXN0PFVDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKKyAgICByZXR1cm4g
cmV2ZXJzZUZpbmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxVQ2hhcj4obWF0Y2hD
aGFyYWN0ZXIpLCBzdGFydCk7CiB9CiAKLWlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIs
IHVuc2lnbmVkIGluZGV4KQoraW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgc3RhcnQpCiB7CiAgICAgaWYgKCFpc0xhdGluMShtYXRjaENoYXJhY3RlcikpCiAgICAgICAg
IHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gcmV2ZXJzZUZpbmQoY2hhcmFjdGVycywgbGVu
Z3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRleCk7CisgICAgcmV0
dXJuIHJldmVyc2VGaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1h
dGNoQ2hhcmFjdGVyKSwgc3RhcnQpOwogfQogCiBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoTENoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uNzMwZGU5
NWExZGM0ZGM1NGEyYzkyYjcyYjQ1NmRmZTg5NzA2MmUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHJldmVyc2VGaW5k
KFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJ
SUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsK
QEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
Y29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBj
b25zdDsKIAogICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9v
bCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKQEAgLTYwNiwxMSArNjA2LDExIEBA
IGlubGluZSBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24mJiBt
YXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzCiAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJz
MTYoKSwgbV9sZW5ndGgsIHN0ZDo6Zm9yd2FyZDxDb2RlVW5pdE1hdGNoRnVuY3Rpb24+KG1hdGNo
RnVuY3Rpb24pLCBzdGFydCk7CiB9CiAKLWlubGluZSBzaXplX3QgU3RyaW5nVmlldzo6cmV2ZXJz
ZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCkgY29uc3QKK2lubGluZSBzaXpl
X3QgU3RyaW5nVmlldzo6cmV2ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFy
dCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBXVEY6OnJldmVy
c2VGaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIGluZGV4KTsKLSAgICBy
ZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rl
ciwgaW5kZXgpOworICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgp
LCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CisgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZp
bmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIHN0YXJ0KTsKIH0KIAogI2lm
ICFDSEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCkBAIC0xMDk5LDYgKzEwOTksMTQyIEBAIGlubGlu
ZSBib29sIGhhc1VucGFpcmVkU3Vycm9nYXRlKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAoraW5saW5lIHNpemVfdCBmaW5kQ29tbW9uKFN0cmluZ1ZpZXcgaGF5c3Rh
Y2ssIFN0cmluZ1ZpZXcgbmVlZGxlLCB1bnNpZ25lZCBzdGFydCkKK3sKKyAgICB1bnNpZ25lZCBu
ZWVkbGVMZW5ndGggPSBuZWVkbGUubGVuZ3RoKCk7CisKKyAgICBpZiAobmVlZGxlTGVuZ3RoID09
IDEpIHsKKyAgICAgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzOCgpLCBoYXlzdGFjay5sZW5ndGgoKSwgbmVl
ZGxlWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6OmZpbmQoaGF5c3RhY2suY2hhcmFj
dGVyczE2KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKKyAgICB9CisK
KyAgICBpZiAoc3RhcnQgPiBoYXlzdGFjay5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworCisgICAgaWYgKCFuZWVkbGVMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGFydDsKKwor
ICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGhheXN0YWNrLmxlbmd0aCgpIC0gc3RhcnQ7Cisg
ICAgaWYgKG5lZWRsZUxlbmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworCisgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKSB7CisgICAgICAgIGlmIChuZWVkbGUu
aXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3Rl
cnM4KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgs
IG5lZWRsZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFj
dGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBzZWFyY2hMZW5n
dGgsIG5lZWRsZUxlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBu
ZWVkbGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsK
KworICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgp
OworfQorCitpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHNv
dXJjZSwgU3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHVu
c2lnbmVkIHNvdXJjZVN0cmluZ0xlbmd0aCA9IHNvdXJjZS5sZW5ndGgoKTsKKyAgICB1bnNpZ25l
ZCBtYXRjaExlbmd0aCA9IHN0cmluZ1RvRmluZC5sZW5ndGgoKTsKKyAgICBpZiAoIW1hdGNoTGVu
Z3RoKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RhcnQsIHNvdXJjZVN0cmluZ0xlbmd0aCk7
CisKKyAgICAvLyBDaGVjayBzdGFydCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KKyAgICBp
ZiAoc3RhcnQgPiBzb3VyY2VTdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsK
KyAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBzb3VyY2VTdHJpbmdMZW5ndGggLSBzdGFydDsK
KyAgICBpZiAobWF0Y2hMZW5ndGggPiBzZWFyY2hMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RG
b3VuZDsKKworICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN0cmluZ1Rv
RmluZC5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uo
c291cmNlLmNoYXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydCwg
c2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdB
U0NJSUNhc2Uoc291cmNlLmNoYXJhY3RlcnM4KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYo
KSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgIH0KKworICAgIGlmIChz
dHJpbmdUb0ZpbmQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNh
c2Uoc291cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczgoKSwgc3Rh
cnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworCisgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJz
MTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOworfQorCitpbmxpbmUgc2l6
ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsKK30KK2lubGluZSBzaXpl
X3QgU3RyaW5nOjpmaW5kKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDogbm90
Rm91bmQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nOjpmaW5kSWdub3JpbmdBU0NJSUNhc2Uo
U3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZykgOiBub3RGb3VuZDsKK30KKworaW5saW5lIHNp
emVfdCBTdHJpbmc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgdW5z
aWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7Cit9CisKK2lubGluZSBz
aXplX3QgU3RyaW5nOjpyZXZlcnNlRmluZChTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3Ry
aW5nLCBzdGFydCkgOiBub3RGb3VuZDsKK30KKworaW5saW5lIGJvb2wgU3RyaW5nOjpjb250YWlu
cyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9
IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmc6
OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0
YXJ0KSBjb25zdAoreworICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBz
dGFydCkgIT0gbm90Rm91bmQ7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShT
dHJpbmdWaWV3IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9p
bXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVu
dCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxh
Y2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxh
Y2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKK2lubGluZSBzaXplX3QgQXRvbVN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZywg
dW5zaWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5n
LCBzdGFydCk7Cit9CisKK2lubGluZSBzaXplX3QgQXRvbVN0cmluZzo6ZmluZElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5m
aW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKworaW5saW5lIHNpemVfdCBBdG9tU3Ry
aW5nOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcsIHVuc2lnbmVkIHN0
YXJ0KSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCBzdGFydCk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OmNvbnRhaW5zKFN0
cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5jb250YWlucyhz
dHJpbmcpOworfQorCitpbmxpbmUgYm9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5j
b250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiB1c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDA2YTRi
NzMyZTFhZDI0ZDg3Yzg1MjVkYWI2NTMyOWQ3ZDg1NjczOGEuLjI2YTkxNWY4ZTIxZjg4NDA0OGUz
OGU4ZDE5YzFiMzVhMGJkMzg4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTU5LDE4
ICsxNTksMTcgQEAgcHVibGljOgogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0
cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVf
dCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQog
Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6
ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdCB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91
bmQ7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5p
bXBsKCksIHN0YXJ0T2Zmc2V0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoU3RyaW5n
VmlldykgY29uc3Q7CisgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQp
IGNvbnN0OworICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29u
c3Q7CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25l
ZCBzdGFydCkgY29uc3Q7CiAKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24g
bWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpIDogbm90Rm91bmQ7IH0KICAgICBz
aXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6IG5vdEZvdW5k
OyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9
IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKICAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3RhbmNlIG9mIGEgc2luZ2xl
IGNoYXJhY3RlciBvciBzdHJpbmcuCiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJh
Y3RlciwgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAg
IHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQg
PSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQo
c3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZp
bmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpIGNvbnN0OwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFy
YWN0ZXJzV2l0aG91dE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwpAQCAtMTc5LDE1ICsxNzgsMTUg
QEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsg
cmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQogICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZv
dW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyBy
ZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBmaW5kSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zm
c2V0KSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldykgY29uc3Q7
CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owor
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBz
dGFydCkgY29uc3Q7CiAKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgp
KSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNF
bXB0eSgpOyB9CiAgICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+c3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9CiAgICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgm
cHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Rh
cnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJvb2wg
aGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIHByZWZpeC5pbXBsKCkgJiYgbV9pbXBsLT5o
YXNJbmZpeFN0YXJ0aW5nQXQoKnByZWZpeC5pbXBsKCksIHN0YXJ0T2Zmc2V0KTsgfQorICAgIGJv
b2wgaGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBzdGFy
dCkgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIHByZWZpeC5pbXBsKCkgJiYgbV9pbXBsLT5oYXNJ
bmZpeFN0YXJ0aW5nQXQoKnByZWZpeC5pbXBsKCksIHN0YXJ0KTsgfQogCiAgICAgYm9vbCBlbmRz
V2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29s
IGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcu
aW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KQEAgLTIwNiw3ICsyMDUsNyBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCk7
CiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCk7Ci0gICAgU3RyaW5nJiByZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoU3RyaW5nVmlldyB0YXJn
ZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwogICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKICAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExp
dGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNv
dW50XSk7CiAKQEAgLTUwNywyMCArNTA2LDYgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBs
YWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKICAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLWlubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShjb25zdCBTdHJpbmcm
IHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKLXsKLSAgICBpZiAobV9pbXBsKQot
ICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LmltcGwoKSwgcmVwbGFjZW1l
bnQuaW1wbCgpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBTdHJpbmcmIFN0cmlu
Zzo6cmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50KQotewotICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1w
bC0+cmVwbGFjZShzdGFydCwgbGVuZ3RoLCByZXBsYWNlbWVudC5pbXBsKCkpOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQogdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19J
TkxJTkUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNv
bnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCiB7CiAgICAgaWYgKG1faW1w
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKaW5kZXggNmNkZjU2OGU5NGM2NTEyM2M1NTc4OTYyOTc2MzBmZGMxOTY1MjgwNS4uOTM2
YTdlNDMwNTZjNDU1ZTI5YjI1NTBmYjQwMTBiZWVlYzNiMzVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTE3Niw3ICsx
NzYsNyBAQCBSZWZQdHI8RE9NRm9ybURhdGE+IEZldGNoQm9keUNvbnN1bWVyOjpwYWNrYWdlRm9y
bURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYwogICAgICAgICBpZiAoIW1pbWVUeXBlKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobWltZVR5cGUtPnR5cGUsICJtdWx0aXBhcnQiKSAmJiBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG1pbWVUeXBlLT5zdWJ0eXBlLCAiZm9ybS1kYXRhIikpIHsKLSAgICAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtaW1lVHlwZS0+cGFyYW1ldGVycy5maW5kKCJib3VuZGFyeSJfcyk7
CisgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgi
Ym91bmRhcnkiKTsKICAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBtaW1lVHlwZS0+cGFyYW1l
dGVycy5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM5YzE0N2RhYTc4
Y2UyY2FjNGM1NTE4NTk3MjBmMWQ0ODY4MzlkMjMuLjJmYWYzZTk1ZDMxYzk4OWZjZTEyZTA1N2Yw
NmMyMmUyZmY3M2M0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC05
MjgsNyArOTI4LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJh
c2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCiAgICAgU3RyaW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKLSAgICBuYW1lLnJlcGxh
Y2UoIiUyRSJfcywgIi4iX3MpOworICAgIG5hbWUucmVwbGFjZSgiJTJFIiwgIi4iKTsKIAogICAg
IHJldHVybiBGaWxlU3lzdGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUobmFtZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKaW5k
ZXggYjc1YzI3MzIwMWIwMzk2YTUwZGM4NDQ0MjE2ZDBkNjQxZmRiZGQ1Ny4uNGE1MWI1NjllYjQ4
YmE0YmQ3YjgyOTYwZTdhZGJmYzNjNmJkNWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgUEFMIHsKIC8vIFNlZSA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXJj
ZW50LWVuY29kaW5nI05vbi1zdGFuZGFyZF9pbXBsZW1lbnRhdGlvbnM+Lgogc3RydWN0IFVuaWNv
ZGUxNkJpdEVzY2FwZVNlcXVlbmNlIHsKICAgICBlbnVtIHsgU2VxdWVuY2VTaXplID0gNiB9OyAv
LyBlLmcuICV1MjZDNAotICAgIHN0YXRpYyBzaXplX3QgZmluZEluU3RyaW5nKFN0cmluZ1ZpZXcg
c3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbikgeyByZXR1cm4gc3RyaW5nLmZpbmQoU3RyaW5n
VmlldygiJXUiKSwgc3RhcnRQb3NpdGlvbik7IH0KKyAgICBzdGF0aWMgc2l6ZV90IGZpbmRJblN0
cmluZyhTdHJpbmdWaWV3IHN0cmluZywgc2l6ZV90IHN0YXJ0UG9zaXRpb24pIHsgcmV0dXJuIHN0
cmluZy5maW5kKCIldSIsIHN0YXJ0UG9zaXRpb24pOyB9CiAgICAgc3RhdGljIHNpemVfdCBmaW5k
RW5kT2ZSdW4oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBzdGFydFBvc2l0aW9uLCBzaXplX3Qg
ZW5kUG9zaXRpb24pCiAgICAgewogICAgICAgICBzaXplX3QgcnVuRW5kID0gc3RhcnRQb3NpdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVj
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC93aW4vVGV4dENvZGVjV2luLmNw
cAppbmRleCBlN2Y0ZTlkYzE4MzRkMGY2MzljNmJhYmY2OTY1NjIwNmI4NzY3NDBjLi42ZjE4ZjJi
MGQ2ODJiZWIxOGNkNmExMzE5NjgyM2VhYjNhMmQ2MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAg
TGFuZ3VhZ2VNYW5hZ2VyOjpMYW5ndWFnZU1hbmFnZXIoKQogICAgICAgICAgICAgaSA9IGNvZGVQ
YWdlQ2hhcnNldHMoKS5zZXQoY3BJbmZvLnVpQ29kZVBhZ2UsIG5hbWUpLml0ZXJhdG9yOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChpICE9IGNvZGVQYWdlQ2hhcnNldHMoKS5lbmQoKSkgewotICAg
ICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0b3IgaiA9IGtub3du
Q2hhcnNldHMoKS5maW5kKFN0cmluZyhpLT52YWx1ZS5kYXRhKCksIGktPnZhbHVlLmxlbmd0aCgp
KSk7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgQ2hhcnNldEluZm8+OjppdGVyYXRvciBq
ID0ga25vd25DaGFyc2V0cygpLmZpbmQoU3RyaW5nVmlldyB7IGktPnZhbHVlLmRhdGEoKSwgaS0+
dmFsdWUubGVuZ3RoKCkgfSk7CiAgICAgICAgICAgICBBU1NFUlQoaiAhPSBrbm93bkNoYXJzZXRz
KCkuZW5kKCkpOwogICAgICAgICAgICAgQ2hhcnNldEluZm8mIGluZm8gPSBqLT52YWx1ZTsKICAg
ICAgICAgICAgIGluZm8ubV9uYW1lID0gaS0+dmFsdWUuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggZDU3N2VhNjZlYWFhMDMxNzIwMjk1
NTMwYjFhYzBkNTkzODM2ZjBmYi4uMmYxMGNlZDg0MTMxZWQ3ZTlkZDE4N2EzNDAxY2ZkY2RlYzRi
YTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBA
IC0zOTUsNyArMzk1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1v
bihjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEIKICAgICAvLyBDb2RlIGVs
c2V3aGVyZSBub3JtYWxpemVzIGxpbmUgZW5kaW5ncyBhZGRlZCBieSB0aGUgdXNlciB2aWEgdGhl
IGtleWJvYXJkIG9yIHBhc3RpbmcuCiAgICAgLy8gV2Ugbm9ybWFsaXplIGxpbmUgZW5kaW5ncyBj
b21pbmcgZnJvbSBKYXZhU2NyaXB0IGhlcmUuCiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRWYWx1ZSA9
IG5ld1ZhbHVlLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IG5ld1ZhbHVlOwotICAgIG5vcm1h
bGl6ZWRWYWx1ZS5yZXBsYWNlKCJcclxuIl9zLCAiXG4iX3MpOworICAgIG5vcm1hbGl6ZWRWYWx1
ZS5yZXBsYWNlKCJcclxuIiwgIlxuIik7CiAgICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoJ1xy
JywgJ1xuJyk7CiAKICAgICAvLyBSZXR1cm4gZWFybHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRv
IG1vdmUgdGhlIGNhcmV0IG9yIHRyaWdnZXIgb3RoZXIgc2lkZSBlZmZlY3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggODY0M2E4NDc3NzY0
NTkzMzFmNDNlYTI5OGZlOGVmNGYwODQxZjBhMi4uNzU5MmQxZmMyMjEzZGZkYTIwMDQ3MTUxNmUz
ZGEzOWNjNTg1OTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcApAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjptYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAK
IGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4p
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2NoZW1lU2VwYXJh
dG9yKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCI6Ly8iKSk7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwgc2NoZW1lU2VwYXJhdG9yID0gIjovLyJfczsKIAotICAgIHNpemVfdCBz
Y2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2NoZW1lU2VwYXJhdG9yKTsKKyAgICBzaXplX3Qg
c2NoZW1lRW5kUG9zID0gcGF0dGVybi5maW5kKFN0cmluZ1ZpZXcgeyBzY2hlbWVTZXBhcmF0b3Ig
fSk7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgbV9zY2hlbWUgPSBwYXR0ZXJuLmxlZnQoc2NoZW1lRW5kUG9zKTsKIAotICAg
IHVuc2lnbmVkIGhvc3RTdGFydFBvcyA9IHNjaGVtZUVuZFBvcyArIHNjaGVtZVNlcGFyYXRvci5n
ZXQoKS5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRQb3MgPSBzY2hlbWVFbmRQb3Mg
KyBzY2hlbWVTZXBhcmF0b3IubGVuZ3RoKCk7CiAgICAgaWYgKGhvc3RTdGFydFBvcyA+PSBwYXR0
ZXJuLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKaW5kZXggMTM4NGM2YjExNGU3OWViYzcy
ZGQyNTdjZjA1NTgyMWZjNGE0NjM0YS4uNjZkYmVjNDBhYWMyYjczOTdhMTkzMzExNjZjNzJiZDYy
NjE2ZTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRl
cy5jcHAKQEAgLTU1LDggKzU1LDggQEAgY29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1
dGVzJiBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpCiAgICAgICAgIGF0dHJp
YnV0ZXMuaXNHTEVTMkNvbXBsaWFudCA9IHRydWU7CiAKICAgICAgICAgU3RyaW5nIGV4dGVuc2lv
bnNTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmcoR0xfRVhU
RU5TSU9OUykpKTsKLSAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcyA9IGV4
dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX25wb3QiX3MpOwotICAgICAg
ICBhdHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSBleHRlbnNpb25zU3RyaW5nLmNv
bnRhaW5zKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIl9zKTsKKyAgICAgICAgYXR0cmlidXRlcy5z
dXBwb3J0c05QT1RUZXh0dXJlcyA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoIkdMX09FU190
ZXh0dXJlX25wb3QiKTsKKyAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0c1VucGFja1N1YmltYWdl
ID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucygiR0xfRVhUX3VucGFja19zdWJpbWFnZSIpOwog
I2Vsc2UKICAgICAgICAgYXR0cmlidXRlcy5pc0dMRVMyQ29tcGxpYW50ID0gZmFsc2U7CiAgICAg
ICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCmluZGV4IDYy
OTQ1ZDk2ZTE2Zjc4MjM2MDU4YTQ5ODQ1YWZiODQwMzliMDc1MjIuLmU1MGRjY2Y1ZDVkZDRiZGNm
MWI4ZTg0ODgxMGY0MWFhNmE2MDk0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlyUG9kcyhN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiQWlyUG9kcyIpKTsKIAotICAgICAgICBpZiAoKG1fdHlw
ZSA9PSBEZXZpY2VUeXBlOjpNaWNyb3Bob25lIHx8IG1fdHlwZSA9PSBEZXZpY2VUeXBlOjpTcGVh
a2VyKSAmJiBtX2xhYmVsLmNvbnRhaW5zKGFpclBvZHMpKQorICAgICAgICBpZiAoKG1fdHlwZSA9
PSBEZXZpY2VUeXBlOjpNaWNyb3Bob25lIHx8IG1fdHlwZSA9PSBEZXZpY2VUeXBlOjpTcGVha2Vy
KSAmJiBtX2xhYmVsLmNvbnRhaW5zKGFpclBvZHMuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJu
IGFpclBvZHM7CiAKICAgICAgICAgcmV0dXJuIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUN1cmwuY3BwCmluZGV4IGI2NjI5NjBjZDBhYTNmNjNkYzZjNzhhNDdlMjhjYzIw
MTg2ZTM1NTkuLjM2M2NiMmRlNDE3YzRmODZiYzY2ZmZmMzRmNDEyNDQyODFlY2ZlNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAg
U3RyaW5nIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwYXJzZVJlYWxtKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogCiAgICAgU3RyaW5nIHJlYWxtOwogICAgIGF1dG8gYXV0aEhl
YWRlciA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChyZXNwb25zZS5pc1VuYXV0aG9yaXplZCgp
ID8gd3d3QXV0aGVudGljYXRlIDogcHJveHlBdXRoZW50aWNhdGUpOwotICAgIGF1dG8gcmVhbG1Q
b3MgPSBhdXRoSGVhZGVyLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShyZWFsbVN0cmluZyk7CisgICAg
YXV0byByZWFsbVBvcyA9IGF1dGhIZWFkZXIuZmluZElnbm9yaW5nQVNDSUlDYXNlKHJlYWxtU3Ry
aW5nLmdldCgpKTsKICAgICBpZiAocmVhbG1Qb3MgIT0gbm90Rm91bmQpIHsKICAgICAgICAgcmVh
bG0gPSBhdXRoSGVhZGVyLnN1YnN0cmluZyhyZWFsbVBvcyArIHJlYWxtU3RyaW5nLmdldCgpLmxl
bmd0aCgpKTsKICAgICAgICAgcmVhbG0gPSByZWFsbS5sZWZ0KHJlYWxtLmZpbmQoJywnKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcAppbmRleCAyMTliY2RlNTUxMWQ0NWI0YzEzNWFmYjczMzZjMzhmMDZiZjFhMjgx
Li43YjQ2ODU1YTA1MTU3NDdmNGRkZmJkZTVjOTA5YWFiOTg3MDYwM2Y4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkUmVzcG9uc2VI
ZWFkZXJzKCkKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJG
aWVsZHMuYmVnaW4oKTsKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
aGVhZGVyRmllbGRzLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgc2l6
ZV90IHNwbGl0UG9zaXRpb24gPSBpdC0+ZmluZCgiOiIpOworICAgICAgICBzaXplX3Qgc3BsaXRQ
b3NpdGlvbiA9IGl0LT5maW5kKCc6Jyk7CiAgICAgICAgIGlmIChzcGxpdFBvc2l0aW9uICE9IG5v
dEZvdW5kKQogICAgICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQo
aXQtPmxlZnQoc3BsaXRQb3NpdGlvbiksIGl0LT5zdWJzdHJpbmcoc3BsaXRQb3NpdGlvbisxKS5z
dHJpcFdoaXRlU3BhY2UoKSk7CiAgICAgICAgICsraXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
aW5kZXggZDFlNTg2MjRhYWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OC4uYzQ4NDkyZTc0
YmRjODU1MjVmODA5YmRhZWNlMzA2MWY2MjFhZDhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cApAQCAtNTIsMTUgKzUyLDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxl
PiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJsTXVsCiBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1
cmxSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgZm9yIChhdXRvIGhlYWRlciA6IHJlc3BvbnNl
LmhlYWRlcnMpIHsKLSAgICAgICAgYXV0byBzcGxpdFBvc2lzdGlvbiA9IGhlYWRlci5maW5kKCI6
Iik7Ci0gICAgICAgIGlmIChzcGxpdFBvc2lzdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgYXV0
byBzcGxpdFBvc2l0aW9uID0gaGVhZGVyLmZpbmQoJzonKTsKKyAgICAgICAgaWYgKHNwbGl0UG9z
aXRpb24gPT0gbm90Rm91bmQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IGtleSA9IGhlYWRlci5sZWZ0KHNwbGl0UG9zaXN0aW9uKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAg
ICAgICAgYXV0byBrZXkgPSBoZWFkZXIubGVmdChzcGxpdFBvc2l0aW9uKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleSwgIkNvbnRlbnQt
VHlwZSIpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBjb250ZW50VHlw
ZSA9IGhlYWRlci5zdWJzdHJpbmcoc3BsaXRQb3Npc3Rpb24gKyAxKS5zdHJpcFdoaXRlU3BhY2Uo
KTsKKyAgICAgICAgYXV0byBjb250ZW50VHlwZSA9IGhlYWRlci5zdWJzdHJpbmcoc3BsaXRQb3Np
dGlvbiArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICBhdXRvIG1pbWVUeXBlID0gZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CiAgICAgICAgIGlmICghZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2Ui
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmQ2YjA5MTI4ODg1ZDdhYzk1
MTM1NWMwODlmOGE0OGU5MTdmNGM5OS4uZjNhNTViMzgxMWQ1Mjk5Mjk1ODAyYzUwOGJjNzA4Yzhm
OTI0ZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgaW50IEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGVidWdJbmZvKGN1cmxfaW5mb3R5cGUgdHlwZSwgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUKICAgICAgICAgICAgIGhlYWRlckZpZWxkcy5yZW1vdmUoMCk7CiAKICAgICAgICAgZm9y
IChhdXRvJiBoZWFkZXIgOiBoZWFkZXJGaWVsZHMpIHsKLSAgICAgICAgICAgIGF1dG8gcG9zID0g
aGVhZGVyLmZpbmQoIjoiKTsKKyAgICAgICAgICAgIGF1dG8gcG9zID0gaGVhZGVyLmZpbmQoJzon
KTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICBh
dXRvIGtleSA9IGhlYWRlci5sZWZ0KHBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAg
ICAgICAgYXV0byB2YWx1ZSA9IGhlYWRlci5zdWJzdHJpbmcocG9zICsgMSkuc3RyaXBXaGl0ZVNw
YWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
IGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCBiODk3ZTVjZDI3
MDZiYjViYzQwODljNDU1ZDBmYTQ1YjJiYjk3NjcxLi41ZTQ0MDY3ZWYwYTI4YjFiODBhZWJmZjNj
YWFiM2M4NGNkNWE4ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAg
LTExNiw3ICsxMTYsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFy
KiogYXJndikKIAogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBpZiAoIXRh
cmdldFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IHRhcmdldFN0
cmluZy5yZXZlcnNlRmluZCgiOiJfcyk7CisgICAgICAgIGF1dG8gcG9zaXRpb24gPSB0YXJnZXRT
dHJpbmcucmV2ZXJzZUZpbmQoJzonKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5k
KSB7CiAgICAgICAgICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcubGVmdChwb3Np
dGlvbik7CiAgICAgICAgICAgICBtX3RhcmdldFBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IHRhcmdldFN0cmluZyB9LnN1YnN0cmlu
Zyhwb3NpdGlvbiArIDEpKS52YWx1ZV9vcigwKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBXZWJEcml2ZXJTZXJ2aWNlOjp2YWxpZGF0ZWRDYXBhYmlsaXRpZXMoY29u
c3QgSlNPTjo6T2JqZWN0JgogICAgICAgICAgICAgaWYgKCF1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciB8fCAhZGVzZXJpYWxpemVVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcih1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBy
ZXN1bHQtPnNldFN0cmluZyhpdC0+a2V5LCB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcik7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXQtPmtleS5maW5kKCI6IikgIT0gbm90Rm91bmQpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChpdC0+a2V5LmZpbmQoJzonKSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAg
aWYgKCFwbGF0Zm9ybVZhbGlkYXRlQ2FwYWJpbGl0eShpdC0+a2V5LCBpdC0+dmFsdWUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgcmVzdWx0LT5zZXRWYWx1
ZShpdC0+a2V5LCBpdC0+dmFsdWUuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggZWQ0
Zjk1NWRmODc0NDYwZDQzMDZmMmU4MjljNjU3ZjBmNDA0ZDQzNC4uMTIwN2EyMGRlOTMwNWUzY2Jm
M2Q4ZGUxNDY1NmMzMGVlOWMzYTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgc3RhdGljIENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGxhbmd1YWdlcykKICAgICBzaXplX3QgbGFuZ3VhZ2VzQ291bnQgPSBsYW5ndWFnZXMuc2l6
ZSgpOwogCiAgICAgLy8gSWdub3JlICJDIiBsb2NhbGUuCi0gICAgc2l6ZV90IGNMb2NhbGVQb3Np
dGlvbiA9IGxhbmd1YWdlcy5maW5kKCJjIik7CisgICAgc2l6ZV90IGNMb2NhbGVQb3NpdGlvbiA9
IGxhbmd1YWdlcy5maW5kKCJjIl9zKTsKICAgICBpZiAoY0xvY2FsZVBvc2l0aW9uICE9IG5vdEZv
dW5kKQogICAgICAgICBsYW5ndWFnZXNDb3VudC0tOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmluZGV4IDM0OWRkMGQ4N2FjNzAxMjdjOWYz
NjE4ODFlOTk0YjgyYTVjYjFiNjcuLmI3YzU0ZjIxZTY4MmUyMzY4NWMwMWU1M2Y2MzYyNWQ5MjAx
ZWIzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNz
TWFjLm1tCkBAIC02NDUsNyArNjQ1LDcgQEAgc3RhdGljIFN0cmluZyBnZXRVc2VyRGlyZWN0b3J5
U3VmZml4KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXQKICAgICBh
dXRvIHVzZXJEaXJlY3RvcnlTdWZmaXggPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmZpbmQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOwogICAgIGlmICh1c2VyRGlyZWN0b3J5
U3VmZml4ICE9IHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZW5kKCkpIHsKICAg
ICAgICAgU3RyaW5nIHN1ZmZpeCA9IHVzZXJEaXJlY3RvcnlTdWZmaXgtPnZhbHVlOwotICAgICAg
ICBhdXRvIGZpcnN0UGF0aFNlcGFyYXRvciA9IHN1ZmZpeC5maW5kKCIvIik7CisgICAgICAgIGF1
dG8gZmlyc3RQYXRoU2VwYXJhdG9yID0gc3VmZml4LmZpbmQoJy8nKTsKICAgICAgICAgaWYgKGZp
cnN0UGF0aFNlcGFyYXRvciAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIHN1ZmZpeC50cnVuY2F0
ZShmaXJzdFBhdGhTZXBhcmF0b3IpOwogICAgICAgICByZXR1cm4gc3VmZml4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYmFkYWYxNTg3YTIwMTk3N2ViOWU3NGYxNDc5Nzk0
N2ViMjQ3MmYxZC4uZjRhNWQ0NGUxOTcxNTllNGEzMmE0Zjg4NmZmNDc2ODM5MmEyNTI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUq
IGZyYW1lKQogICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVk
VGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBzZWFyY2hT
dHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0gICAg
c2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIHNlYXJjaFN0cmluZy5y
ZXBsYWNlKCIlMjAiLCAiKyIpOwogICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgImh0dHBzOi8v
d3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9
VVRGLTgiIH07CiAKICAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3Ig
eyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmNwcAppbmRleCBkZmMwYWU1MTk2Njg5MjQzYWIwZjhmYzkwODY1Y2M5NmM1NjBlZWQ0Li4x
YmMzYzNkNTk4ZDQ3ZGFlMTgzNDk3NWVmNDI2M2NlNDhlNDU3YzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGll
bnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogICAgIGF1
dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHNl
YXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBzZWFyY2hTdHJpbmcgPSBlbmNvZGVX
aXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0gICAgc2VhcmNoU3RyaW5nLnJl
cGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiLCAi
KyIpOwogICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20v
c2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAKICAg
ICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9j
ZXNzaW5nVXNlckdlc3R1cmUgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ0ltcGwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nSW1wbC5jcHAKaW5kZXggNjMwNjRhMzkwZTZjMzUwZGI1ZjI4YTI2ODc3MzExNDhhMDIxMjVl
Yi4uZDYyOWVmY2Q0NzM2MGI0NzgyZDgzNmEwZWU4YjkyNGRiN2U2ZTBjYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKQEAgLTMzNCwxMyArMzM0LDEz
IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aEludmFsaWRP
ZmZzZXQpCiBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25vcmluZ0FTQ0lJQ2FzZU9uTnVsbCkK
IHsKICAgICBhdXRvIHJlZmVyZW5jZSA9IHN0cmluZ0Zyb21VVEY4KCJBQkPDiUVGRyIpOwotICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2Ut
PmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlD
YXNlKG51bGxwdHIsIDApKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6
Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgMykp
OwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZl
cmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyLCA3KSk7Ci0gICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9y
aW5nQVNDSUlDYXNlKG51bGxwdHIsIDgpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6
ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVs
bHB0ciwgNDIpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZv
dW5kKSwgcmVmZXJlbmNlLT5maW5kSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0ciwgc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcgeyB9KSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RG
Ojpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
eyB9LCAwKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3Vu
ZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCAzKSk7
CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVy
ZW5jZS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA3KSk7CisgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+Zmlu
ZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA4KSk7CisgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZS0+ZmluZElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9LCA0MikpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2UtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShTdHJpbmdWaWV3IHsgfSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7
CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5nQVNDSUlDYXNlT25FbXB0eSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>