<?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>222588</bug_id>
          
          <creation_ts>2021-03-01 23:10:22 -0800</creation_ts>
          <short_desc>Eliminate ScrollAnimatorGeneric::m_smoothAnimation</short_desc>
          <delta_ts>2021-04-20 03:54:47 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>224686</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>clord</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1734771</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-01 23:10:22 -0800</bug_when>
    <thetext>The base class already contains a ScrollAnimationSmooth, so ScrollAnimatorGeneric can reuse that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734773</commentid>
    <comment_count>1</comment_count>
      <attachid>421909</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-01 23:42:01 -0800</bug_when>
    <thetext>Created attachment 421909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734775</commentid>
    <comment_count>2</comment_count>
      <attachid>421911</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-01 23:55:47 -0800</bug_when>
    <thetext>Created attachment 421911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734790</commentid>
    <comment_count>3</comment_count>
      <attachid>421911</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-02 02:36:01 -0800</bug_when>
    <thetext>Comment on attachment 421911
Patch

fwiw, this looks good to me.

I find these class names quite confusing though... So we have ScrollAnimator for animating programmatic scrolls, then ScrollAnimatorGeneric for animating user-initiated scrolling? &apos;Generic&apos; doesn&apos;t really imply that to me, something like ScrollAnimatorUserInitiated would make the distinction clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734798</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-02 03:12:46 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #3)
&gt; Comment on attachment 421911 [details]
&gt; Patch
&gt; 
&gt; fwiw, this looks good to me.
&gt; 
&gt; I find these class names quite confusing though... So we have ScrollAnimator
&gt; for animating programmatic scrolls, then ScrollAnimatorGeneric for animating
&gt; user-initiated scrolling? &apos;Generic&apos; doesn&apos;t really imply that to me,
&gt; something like ScrollAnimatorUserInitiated would make the distinction
&gt; clearer.

Thanks for taking a look at this!

The way I understand the ScrollAnimator / ScrollAnimatorGeneric split is that ScrollAnimator is an abstract parent class that knows hows animate things using platform-independent animations. Some implementations of this abstract class, such as ScrollAnimatorMac rely on platform-specific APIs to animate scrolling.

ScrollAnimatorGeneric is another implementation that uses the ScrollAnimator fallbacks to scroll and also implements kinetic scrolling using cross-platform animations. What might make sense is to merge ScrollAnimatorGeneric into ScrollAnimator (making it also the fallback for kinetic scrolling) or to simply move kinetic scrolling into a new ScrollController so that it can also be used by the scrolling tree. This is what Mac does for rubber banding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734801</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-02 03:16:43 -0800</bug_when>
    <thetext>(In reply to Martin Robinson from comment #4)
&gt; (In reply to Chris Lord from comment #3)
&gt; &gt; Comment on attachment 421911 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; fwiw, this looks good to me.
&gt; &gt; 
&gt; &gt; I find these class names quite confusing though... So we have ScrollAnimator
&gt; &gt; for animating programmatic scrolls, then ScrollAnimatorGeneric for animating
&gt; &gt; user-initiated scrolling? &apos;Generic&apos; doesn&apos;t really imply that to me,
&gt; &gt; something like ScrollAnimatorUserInitiated would make the distinction
&gt; &gt; clearer.
&gt; 
&gt; Thanks for taking a look at this!
&gt; 
&gt; The way I understand the ScrollAnimator / ScrollAnimatorGeneric split is
&gt; that ScrollAnimator is an abstract parent class that knows hows animate
&gt; things using platform-independent animations. Some implementations of this
&gt; abstract class, such as ScrollAnimatorMac rely on platform-specific APIs to
&gt; animate scrolling.
&gt; 
&gt; ScrollAnimatorGeneric is another implementation that uses the ScrollAnimator
&gt; fallbacks to scroll and also implements kinetic scrolling using
&gt; cross-platform animations. What might make sense is to merge
&gt; ScrollAnimatorGeneric into ScrollAnimator (making it also the fallback for
&gt; kinetic scrolling) or to simply move kinetic scrolling into a new
&gt; ScrollController so that it can also be used by the scrolling tree. This is
&gt; what Mac does for rubber banding.

Thanks for the explanation, this makes sense - any idea that brings us closer to what Mac does is a good idea imo too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734896</commentid>
    <comment_count>6</comment_count>
      <attachid>421911</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-02 09:53:16 -0800</bug_when>
    <thetext>Comment on attachment 421911
Patch

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734899</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-02 09:57:58 -0800</bug_when>
    <thetext>Committed r273733: &lt;https://commits.webkit.org/r273733&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421911.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734900</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-02 09:58:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74934452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751185</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-04-16 12:23:54 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 224686</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751787</commentid>
    <comment_count>10</comment_count>
      <attachid>426423</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-04-19 08:22:26 -0700</bug_when>
    <thetext>Created attachment 426423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751789</commentid>
    <comment_count>11</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-04-19 08:23:44 -0700</bug_when>
    <thetext>The new version of this change adds the following lines in `ScrollAnimator::scroll`:

111        if (!m_scrollAnimation-&gt;isActive())
112            m_scrollAnimation-&gt;setCurrentPosition(m_currentPosition); 

The check here is required or else the new scroll will stomp on the currently running animation.  This is the behavior that ScrollAnimatorGeneric was using and now it is ported to ScrollAnimator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752188</commentid>
    <comment_count>12</comment_count>
      <attachid>426529</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-04-20 02:25:35 -0700</bug_when>
    <thetext>Created attachment 426529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752206</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-20 03:21:01 -0700</bug_when>
    <thetext>Zan Dobersek found in /Volumes/Data/worker/Commit-Queue/build/Source/WebCore/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/worker/Commit-Queue/build/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752207</commentid>
    <comment_count>14</comment_count>
      <attachid>426534</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-04-20 03:22:51 -0700</bug_when>
    <thetext>Created attachment 426534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752215</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-20 03:54:45 -0700</bug_when>
    <thetext>Committed r276299 (236781@main): &lt;https://commits.webkit.org/236781@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426534.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421909</attachid>
            <date>2021-03-01 23:42:01 -0800</date>
            <delta_ts>2021-03-02 00:21:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222588-20210302084159.patch</filename>
            <type>text/plain</type>
            <size>12355</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBmMTllZTkyZWQ1MWZm
ZDc1NzE0N2ZkNzgyOWZhMjkxYzVlNzJiMy4uOTQ3MjM1NzRjMDJjZGRjMWZhY2Q0MzQ4NTBmNmNm
NWIzOTliNGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTAzLTAxICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBFbGltaW5hdGUg
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptX3Ntb290aEFuaW1hdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGNoYW5n
ZSBzaG91bGQgbm90IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICBFbGltaW5hdGUgdGhlIGV4
dHJhIFNjcm9sbEFuaW1hdGlvblNtb290aCBpbiBTY3JvbGxBbmltYXRvckdlbmVyaWMuIFRoZSBi
YXNlCisgICAgICAgIGNsYXNzIGFscmVhZHkga25vd3MgaG93IHRvIGRvIHNjcm9sbCBhbmltYXRp
b25zIGZvciBwcm9ncmFtbWF0aWMgc2Nyb2xscywKKyAgICAgICAgc28gd2UgY2FuIHJldXNlIHRo
YXQgYW5pbWF0aW9uIGZvciBkb2luZyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKC4uLikuIFRoaXMK
KyAgICAgICAgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIHNob3VsZCBz
aW1wbGlmeSBtYW5hZ2luZyBpbnRlcmFjdGlvbnMKKyAgICAgICAgYmV0d2VlbiB0aGUgZGlmZmVy
ZW50IGFuaW1hdGlvbnMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxB
bmltYXRvcik6IFJlbmFtZWQgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwKKyAgICAgICAg
dG8gbV9zY3JvbGxBbmltYXRpb24uIFRoZSBtb3JlIGdlbmVyaWMgbmFtZSByZWZsZWN0cyB0aGUg
ZmFjdCB0aGF0IGl0IGlzIGFsc28KKyAgICAgICAgdXNlZCBmb3IgZG9pbmcgc2Nyb2xsaW5nIGZy
b20gVUkgaW50ZXJhY3Rpb24gbm93LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OnNjcm9sbCk6IFVzZSB0aGUgU2Nyb2xsQW5pbWF0aW9uU21vb3RoIG1lbWJlciB0byBkbworICAg
ICAgICBhbmltYXRlZCBzY3JvbGxzIHdoZW4gbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKTogTWFrZSBz
dXJlIHRoZSBhbmltYXRpb24KKyAgICAgICAgaXMgdXAgdG8gZGF0ZSB3aXRoIHRoZSBjdXJyZW50
IHBvc2l0aW9uIHdoZW4gc2Nyb2xsaW5nIHdpdGhvdXQgaXQuIFRoaXMgaXMKKyAgICAgICAgaG93
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYyB0cmVhdGVkIGl0cyBTY3JvbGxBbmltYXRpb25TbW9vdGgu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhB
bmltYXRpb24pOiBSZW5hbWUgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OmNhbmNlbEFuaW1hdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKTogRWxp
bWluYXRlIFNjcm9sbEFuaW1hdGlvblNtb290aC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGljYWxT
Y3JvbGxiYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxs
RW5kTGl2ZVJlc2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3Jv
bGxBbmltYXRvckdlbmVyaWMuaDoKKwogMjAyMS0wMy0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gTW92ZSBzaW1wbGlmaWVkIGJhc2VsaW5l
IGFsaWdubWVudCB0byBhIGRlZGljYXRlZCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGQzZjRhZjcxNDhiYjIwZmNlOWU2Mzc3ZjMyNGYy
ZGFlZmQ5OTM3MTQuLmI0Yzk0ZTNlNGIxNTQxZDAwOWYzY2Q1NzM1NzQ1NWRlMmZmNTJmZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhJiBzY3Jv
bGxhYmxlQXJlYSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVS
X0JBTkRJTkcpCiAgICAgLCBtX3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAjZW5kaWYKLSAgICAs
IG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPigKKyAgICAsIG1fc2Nyb2xsQW5pbWF0aW9uKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
aW9uU21vb3RoPigKICAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CiAgICAgICAg
ICAgICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBt
X3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVh
LnZpc2libGVTaXplKCkgfTsKICAgICAgICAgfSwKQEAgLTk5LDcgKzk5LDE1IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHkKICAgICBVTlVTRURfUEFSQU0oYmVoYXZpb3IpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
aWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpIHsKKyAgICAgICAg
bV9zY3JvbGxBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBn
cmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllcik7CisgICAgfQorI2Vsc2UKICAgICByZXR1cm4g
c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24ocG9zaXRpb25Gcm9tU3RlcChvcmllbnRh
dGlvbiwgc3RlcCwgbXVsdGlwbGllcikpOworCisjZW5kaWYKIH0KIAogYm9vbCBTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9m
ZnNldCwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCkBAIC0xMTcsNiArMTI1LDcgQEAgYm9vbCBT
Y3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxv
YXRQb2ludCYgcG9zaXRpb24KICAgICBpZiAoYWRqdXN0ZWRQb3NpdGlvbiA9PSBjdXJyZW50UG9z
aXRpb24gJiYgYWRqdXN0ZWRQb3NpdGlvbiA9PSBzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbFBvc2l0
aW9uKCkgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0
aW9uKGFkanVzdGVkUG9zaXRpb24pOwogICAgIG1fY3VycmVudFBvc2l0aW9uID0gYWRqdXN0ZWRQ
b3NpdGlvbjsKICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoYWRqdXN0ZWRQb3NpdGlvbiAtIGN1
cnJlbnRQb3NpdGlvbik7CiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0
KCk7CkBAIC0xMzQsOCArMTQzLDggQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3Np
dGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24KICAgICBpZiAo
IXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFuZ2Vk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGlj
U2Nyb2xsLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgIG1fYW5p
bWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zY3JvbGwobmV3UG9zaXRpb24pOworICAgIG1fc2Ny
b2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOworICAg
IG1fc2Nyb2xsQW5pbWF0aW9uLT5zY3JvbGwobmV3UG9zaXRpb24pOwogICAgIHNjcm9sbGFibGVB
cmVhKCkuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6OkluTm9u
TmF0aXZlQW5pbWF0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMzOCwyMyArMzQ3LDIz
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRl
ZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpjYW5jZWxB
bmltYXRpb25zKCkKIHsKICNpZiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQot
ICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zdG9wKCk7CisgICAgbV9zY3JvbGxB
bmltYXRpb24tPnN0b3AoKTsKICNlbmRpZgogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjp3aWxs
RW5kTGl2ZVJlc2l6ZSgpCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwtPnVw
ZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVZpc2li
bGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRpY2FsU2Ny
b2xsYmFyKFNjcm9sbGJhciopCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwt
PnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVZp
c2libGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6b250
YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikKIHsKLSAgICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Nj
cm9sbC0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBk
YXRlVmlzaWJsZUxlbmd0aHMoKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6YWRq
dXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiBvZmZz
ZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCBtZXRob2QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCAwODZhMGUzOTM1YWIzMWM3N2Y2NDBjMWI1
YTdhNzExNjE0ZjljNWY2Li42ZWIxNDA2NzdkMTM4YmVkMDU0ZTZlNzBmMTBiM2YxODY4NWI4OGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTE4Miw3ICsx
ODIsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvc2l0
aW9uOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9hbmltYXRpb25Q
cm9ncmFtbWF0aWNTY3JvbGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4g
bV9zY3JvbGxBbmltYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHAKaW5kZXggY2QzM2FhNDUxMTU1M2JiZmFhODczMmJjNjc5ODgwN2QxYzBjYzcwMC4u
MjY4ZDJjOWE5NDgwNWEwYjAxZWEwNzA2OWM4ODFmMWE0NDY4ZDkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcApAQCAtNTUsNzAgKzU1LDE3IEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAg
IHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Ny
b2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlz
aWJsZVNpemUoKSB9OwogICAgICAgICB9LAogICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBv
c2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBpZiAo
bV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNl
dEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKKyAgICAgICAgICAgIG1fc2Nyb2xs
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICAgICAgdXBk
YXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogICAgICAgICB9KTsKLQotI2lmIEVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChzY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRv
ckVuYWJsZWQoKSkKLSAgICAgICAgZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCk7Ci0j
ZW5kaWYKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
KCkgPSBkZWZhdWx0OwogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lkIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKLXsKLSAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pIHsKLSAgICAgICAgaWYgKCFtX3Ntb290aEFuaW1hdGlv
bi0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50
UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4o
Ci0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJu
IHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxl
QXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6
ZSgpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIG1fY3VycmVudFBvc2l0aW9uLAotICAgICAgICBb
dGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICB1cGRhdGVQb3NpdGlv
bihXVEZNb3ZlKHBvc2l0aW9uKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFt0aGlzXSB7Ci0gICAg
ICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJl
aGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7Ci0gICAgICAgIH0pOwotfQotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLWJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBTY3JvbGxCZWhh
dmlvciBiZWhhdmlvcikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVu
dGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwotCi0gICAg
Ly8gVGhpcyBtZXRob2QgZG9lc24ndCBkbyBkaXJlY3Rpb25hbCBzbmFwcGluZywgYnV0IG91ciBi
YXNlIGNsYXNzIGRvZXMuIEl0IHdpbGwgY2FsbCBpbnRvCi0gICAgLy8gU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpzY3JvbGwgYWdhaW4gd2l0aCB0aGUgc25hcHBlZCBwb3NpdGlvbnMgYW5kIFNjcm9s
bEJlaGF2aW9yOjpEZWZhdWx0LgotICAgIGlmIChiZWhhdmlvciA9PSBTY3JvbGxCZWhhdmlvcjo6
RG9EaXJlY3Rpb25hbFNuYXBwaW5nKQotICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIsIGJlaGF2aW9y
KTsKLQotICAgIGVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpOwotICAgIHJldHVybiBt
X3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwg
bXVsdGlwbGllcik7Ci19Ci0jZW5kaWYKLQogYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNj
cm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKIHsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0
b3AoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotCi0j
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQot
ICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsK
LSNlbmRpZgotCiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbihwb3NpdGlvbiwgY2xhbXBpbmcpOwogfQogCkBAIC0xNDMsMTQgKzkwLDYg
QEAgYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OmhhbmRs
ZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6d2ls
bEVuZExpdmVSZXNpemUoKQotewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlm
IChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnVwZGF0ZVZp
c2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OnVwZGF0ZVBvc2l0aW9uKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikKIHsKICAgICBGbG9hdFNpemUg
ZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwpAQCAtMTYxLDEwICsxMDAsOCBA
QCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlUG9zaXRpb24oRmxvYXRQb2ludCYm
IHBvc2l0aW9uKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGljYWxT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290aEFuaW1h
dGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9sbEFuaW1hdG9y
OjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihzY3JvbGxiYXIpOworCiAgICAgaWYgKCFzY3JvbGxi
YXItPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAgICByZXR1cm47CiAgICAgbV92ZXJ0aWNh
bE92ZXJsYXlTY3JvbGxiYXIgPSBzY3JvbGxiYXI7CkBAIC0xNzYsMTAgKzExMyw4IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKIAogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZEhvcml6b250
YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNNT09USF9T
Q1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290aEFu
aW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9sbEFuaW1h
dG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisKICAgICBpZiAoIXNj
cm9sbGJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2hv
cml6b250YWxPdmVybGF5U2Nyb2xsYmFyID0gc2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKaW5kZXgg
NDM4MjQ4NmQ4ODFhOTY1YjIxZDNjMmFkZjc5ZWVjYzk5MjY2OGQ1Yi4uZTA0NmM1MzFiYjg0YzJh
Y2ZmNWU4OTQ2NTU2ZGRjMTEyNWM5OGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCkBAIC00NCwxMSArNDQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCk7CiAKIHBy
aXZhdGU6Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgYm9vbCBzY3JvbGwoU2Ny
b2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBt
dWx0aXBsaWVyLCBTY3JvbGxCZWhhdmlvcikgb3ZlcnJpZGU7Ci0jZW5kaWYKICAgICBib29sIHNj
cm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxD
bGFtcGluZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
IG92ZXJyaWRlOwogCkBAIC03MiwxMSArNjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZU92
ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgdm9pZCB1cGRhdGVPdmVybGF5U2Nyb2xsYmFyc09wYWNp
dHkoKTsKIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIHZvaWQgZW5zdXJlU21v
b3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5p
bWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKLSNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247CiAgICAgU2Nyb2xsYmFy
KiBtX2hvcml6b250YWxPdmVybGF5U2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgIFNjcm9sbGJh
ciogbV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgeyBudWxscHRyIH07Cg==
</data>
<flag name="commit-queue"
          id="440893"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421911</attachid>
            <date>2021-03-01 23:55:47 -0800</date>
            <delta_ts>2021-04-19 08:22:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222588-20210302085546.patch</filename>
            <type>text/plain</type>
            <size>12244</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBmMTllZTkyZWQ1MWZm
ZDc1NzE0N2ZkNzgyOWZhMjkxYzVlNzJiMy4uOTQ3MjM1NzRjMDJjZGRjMWZhY2Q0MzQ4NTBmNmNm
NWIzOTliNGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTAzLTAxICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBFbGltaW5hdGUg
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptX3Ntb290aEFuaW1hdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGNoYW5n
ZSBzaG91bGQgbm90IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICBFbGltaW5hdGUgdGhlIGV4
dHJhIFNjcm9sbEFuaW1hdGlvblNtb290aCBpbiBTY3JvbGxBbmltYXRvckdlbmVyaWMuIFRoZSBi
YXNlCisgICAgICAgIGNsYXNzIGFscmVhZHkga25vd3MgaG93IHRvIGRvIHNjcm9sbCBhbmltYXRp
b25zIGZvciBwcm9ncmFtbWF0aWMgc2Nyb2xscywKKyAgICAgICAgc28gd2UgY2FuIHJldXNlIHRo
YXQgYW5pbWF0aW9uIGZvciBkb2luZyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKC4uLikuIFRoaXMK
KyAgICAgICAgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIHNob3VsZCBz
aW1wbGlmeSBtYW5hZ2luZyBpbnRlcmFjdGlvbnMKKyAgICAgICAgYmV0d2VlbiB0aGUgZGlmZmVy
ZW50IGFuaW1hdGlvbnMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxB
bmltYXRvcik6IFJlbmFtZWQgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwKKyAgICAgICAg
dG8gbV9zY3JvbGxBbmltYXRpb24uIFRoZSBtb3JlIGdlbmVyaWMgbmFtZSByZWZsZWN0cyB0aGUg
ZmFjdCB0aGF0IGl0IGlzIGFsc28KKyAgICAgICAgdXNlZCBmb3IgZG9pbmcgc2Nyb2xsaW5nIGZy
b20gVUkgaW50ZXJhY3Rpb24gbm93LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OnNjcm9sbCk6IFVzZSB0aGUgU2Nyb2xsQW5pbWF0aW9uU21vb3RoIG1lbWJlciB0byBkbworICAg
ICAgICBhbmltYXRlZCBzY3JvbGxzIHdoZW4gbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKTogTWFrZSBz
dXJlIHRoZSBhbmltYXRpb24KKyAgICAgICAgaXMgdXAgdG8gZGF0ZSB3aXRoIHRoZSBjdXJyZW50
IHBvc2l0aW9uIHdoZW4gc2Nyb2xsaW5nIHdpdGhvdXQgaXQuIFRoaXMgaXMKKyAgICAgICAgaG93
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYyB0cmVhdGVkIGl0cyBTY3JvbGxBbmltYXRpb25TbW9vdGgu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhB
bmltYXRpb24pOiBSZW5hbWUgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OmNhbmNlbEFuaW1hdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKTogRWxp
bWluYXRlIFNjcm9sbEFuaW1hdGlvblNtb290aC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGljYWxT
Y3JvbGxiYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxs
RW5kTGl2ZVJlc2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3Jv
bGxBbmltYXRvckdlbmVyaWMuaDoKKwogMjAyMS0wMy0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gTW92ZSBzaW1wbGlmaWVkIGJhc2VsaW5l
IGFsaWdubWVudCB0byBhIGRlZGljYXRlZCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGQzZjRhZjcxNDhiYjIwZmNlOWU2Mzc3ZjMyNGYy
ZGFlZmQ5OTM3MTQuLjY0Yzg0M2I1OTc1MjQ2NGFjZjdmNzQ0YjViYmU1NzhiMjdkNDhmODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhJiBzY3Jv
bGxhYmxlQXJlYSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVS
X0JBTkRJTkcpCiAgICAgLCBtX3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAjZW5kaWYKLSAgICAs
IG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPigKKyAgICAsIG1fc2Nyb2xsQW5pbWF0aW9uKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
aW9uU21vb3RoPigKICAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CiAgICAgICAg
ICAgICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBt
X3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVh
LnZpc2libGVTaXplKCkgfTsKICAgICAgICAgfSwKQEAgLTk5LDYgKzk5LDEzIEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHkKICAgICBVTlVTRURfUEFSQU0oYmVoYXZpb3IpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
aWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpIHsKKyAgICAgICAg
bV9zY3JvbGxBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBn
cmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllcik7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1
cm4gc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24ocG9zaXRpb25Gcm9tU3RlcChvcmll
bnRhdGlvbiwgc3RlcCwgbXVsdGlwbGllcikpOwogfQogCkBAIC0xMTcsNiArMTI0LDcgQEAgYm9v
bCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24KICAgICBpZiAoYWRqdXN0ZWRQb3NpdGlvbiA9PSBjdXJyZW50
UG9zaXRpb24gJiYgYWRqdXN0ZWRQb3NpdGlvbiA9PSBzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbFBv
c2l0aW9uKCkgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBv
c2l0aW9uKGFkanVzdGVkUG9zaXRpb24pOwogICAgIG1fY3VycmVudFBvc2l0aW9uID0gYWRqdXN0
ZWRQb3NpdGlvbjsKICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoYWRqdXN0ZWRQb3NpdGlvbiAt
IGN1cnJlbnRQb3NpdGlvbik7CiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zm
c2V0KCk7CkBAIC0xMzQsOCArMTQyLDggQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Q
b3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24KICAgICBp
ZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFu
Z2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1h
dGljU2Nyb2xsLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgIG1f
YW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zY3JvbGwobmV3UG9zaXRpb24pOworICAgIG1f
c2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwor
ICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zY3JvbGwobmV3UG9zaXRpb24pOwogICAgIHNjcm9sbGFi
bGVBcmVhKCkuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Oklu
Tm9uTmF0aXZlQW5pbWF0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMzOCwyMyArMzQ2
LDIzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlv
bkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpjYW5j
ZWxBbmltYXRpb25zKCkKIHsKICNpZiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVS
KQotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zdG9wKCk7CisgICAgbV9zY3Jv
bGxBbmltYXRpb24tPnN0b3AoKTsKICNlbmRpZgogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjp3
aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwt
PnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVZp
c2libGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRpY2Fs
U2Nyb2xsYmFyKFNjcm9sbGJhciopCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3Jv
bGwtPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0
ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6
b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikKIHsKLSAgICBtX2FuaW1hdGlvblByb2dyYW1tYXRp
Y1Njcm9sbC0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+
dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6
YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCBtZXRob2QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCAwODZhMGUzOTM1YWIzMWM3N2Y2NDBj
MWI1YTdhNzExNjE0ZjljNWY2Li42ZWIxNDA2NzdkMTM4YmVkMDU0ZTZlNzBmMTBiM2YxODY4NWI4
OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTE4Miw3
ICsxODIsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFBv
c2l0aW9uOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9hbmltYXRp
b25Qcm9ncmFtbWF0aWNTY3JvbGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlv
bj4gbV9zY3JvbGxBbmltYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAKaW5kZXggY2QzM2FhNDUxMTU1M2JiZmFhODczMmJjNjc5ODgwN2QxYzBjYzcw
MC4uMjY4ZDJjOWE5NDgwNWEwYjAxZWEwNzA2OWM4ODFmMWE0NDY4ZDkzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcApAQCAtNTUsNzAgKzU1LDE3IEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xs
QW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICAgICAg
ICAgIHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1f
c2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEu
dmlzaWJsZVNpemUoKSB9OwogICAgICAgICB9LAogICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYm
IHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBp
ZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24t
PnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKKyAgICAgICAgICAgIG1fc2Ny
b2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICAgICAg
dXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogICAgICAgICB9KTsKLQotI2lmIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChzY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmlt
YXRvckVuYWJsZWQoKSkKLSAgICAgICAgZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCk7
Ci0jZW5kaWYKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JHZW5l
cmljKCkgPSBkZWZhdWx0OwogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lkIFNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKLXsK
LSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pIHsKLSAgICAgICAgaWYgKCFtX3Ntb290aEFuaW1h
dGlvbi0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJy
ZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290
aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0
dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxh
YmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxl
U2l6ZSgpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIG1fY3VycmVudFBvc2l0aW9uLAotICAgICAg
ICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICB1cGRhdGVQb3Np
dGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFt0aGlzXSB7Ci0g
ICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9s
bEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7Ci0gICAgICAgIH0pOwotfQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLWJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBTY3JvbGxC
ZWhhdmlvciBiZWhhdmlvcikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5p
bWF0b3JFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9y
aWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwotCi0g
ICAgLy8gVGhpcyBtZXRob2QgZG9lc24ndCBkbyBkaXJlY3Rpb25hbCBzbmFwcGluZywgYnV0IG91
ciBiYXNlIGNsYXNzIGRvZXMuIEl0IHdpbGwgY2FsbCBpbnRvCi0gICAgLy8gU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpzY3JvbGwgYWdhaW4gd2l0aCB0aGUgc25hcHBlZCBwb3NpdGlvbnMgYW5kIFNj
cm9sbEJlaGF2aW9yOjpEZWZhdWx0LgotICAgIGlmIChiZWhhdmlvciA9PSBTY3JvbGxCZWhhdmlv
cjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKQotICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6
OnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIsIGJlaGF2
aW9yKTsKLQotICAgIGVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpOwotICAgIHJldHVy
biBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3Rl
cCwgbXVsdGlwbGllcik7Ci19Ci0jZW5kaWYKLQogYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKIHsKICAgICBtX2tpbmV0aWNBbmltYXRpb24t
PnN0b3AoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwot
Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9u
KQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9u
KTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbihwb3NpdGlvbiwgY2xhbXBpbmcpOwogfQogCkBAIC0xNDMsMTQgKzkw
LDYgQEAgYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6Omhh
bmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6
d2lsbEVuZExpdmVSZXNpemUoKQotewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnVwZGF0
ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVy
aWM6OnVwZGF0ZVBvc2l0aW9uKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikKIHsKICAgICBGbG9hdFNp
emUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwpAQCAtMTYxLDEwICsxMDAs
OCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlUG9zaXRpb24oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGlj
YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNNT09USF9T
Q1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290aEFu
aW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9sbEFuaW1h
dG9yOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihzY3JvbGxiYXIpOworCiAgICAgaWYgKCFzY3Jv
bGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAgICByZXR1cm47CiAgICAgbV92ZXJ0
aWNhbE92ZXJsYXlTY3JvbGxiYXIgPSBzY3JvbGxiYXI7CkBAIC0xNzYsMTAgKzExMyw4IEBAIHZv
aWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxi
YXIqIHNjcm9sbGJhcikKIAogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZEhvcml6
b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290
aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9sbEFu
aW1hdG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisKICAgICBpZiAo
IXNjcm9sbGJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2hvcml6b250YWxPdmVybGF5U2Nyb2xsYmFyID0gc2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKaW5k
ZXggNDM4MjQ4NmQ4ODFhOTY1YjIxZDNjMmFkZjc5ZWVjYzk5MjY2OGQ1Yi4uZTA0NmM1MzFiYjg0
YzJhY2ZmNWU4OTQ2NTU2ZGRjMTEyNWM5OGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCkBAIC00NCwxMSAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCk7CiAK
IHByaXZhdGU6Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgYm9vbCBzY3JvbGwo
U2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9h
dCBtdWx0aXBsaWVyLCBTY3JvbGxCZWhhdmlvcikgb3ZlcnJpZGU7Ci0jZW5kaWYKICAgICBib29s
IHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3Jv
bGxDbGFtcGluZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpIG92ZXJyaWRlOwogCkBAIC03MiwxMSArNjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlk
ZU92ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgdm9pZCB1cGRhdGVPdmVybGF5U2Nyb2xsYmFyc09w
YWNpdHkoKTsKIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIHZvaWQgZW5zdXJl
U21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
QW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKLSNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247CiAgICAgU2Nyb2xs
YmFyKiBtX2hvcml6b250YWxPdmVybGF5U2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgIFNjcm9s
bGJhciogbV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgeyBudWxscHRyIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426423</attachid>
            <date>2021-04-19 08:22:26 -0700</date>
            <delta_ts>2021-04-20 02:25:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222588-20210419172224.patch</filename>
            <type>text/plain</type>
            <size>12532</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdjM2RjMTI0ZjgyNDNm
NmRjMzMyZTg2ZDQ1OWY0NTMyYmUxYjE2NC4uNTVhZjIzMTA2ODVmZGRhMDNhZDVjMGM4ZGQzZGZh
ODcxMWJmNzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTAzLTAyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZS1sYW5kOiBF
bGltaW5hdGUgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptX3Ntb290aEFuaW1hdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTg4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBU
aGlzIGNoYW5nZSBzaG91bGQgbm90IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICBFbGltaW5h
dGUgdGhlIGV4dHJhIFNjcm9sbEFuaW1hdGlvblNtb290aCBpbiBTY3JvbGxBbmltYXRvckdlbmVy
aWMuIFRoZSBiYXNlCisgICAgICAgIGNsYXNzIGFscmVhZHkga25vd3MgaG93IHRvIGRvIHNjcm9s
bCBhbmltYXRpb25zIGZvciBwcm9ncmFtbWF0aWMgc2Nyb2xscywKKyAgICAgICAgc28gd2UgY2Fu
IHJldXNlIHRoYXQgYW5pbWF0aW9uIGZvciBkb2luZyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKC4u
LikuIFRoaXMKKyAgICAgICAgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5k
IHNob3VsZCBzaW1wbGlmeSBtYW5hZ2luZyBpbnRlcmFjdGlvbnMKKyAgICAgICAgYmV0d2VlbiB0
aGUgZGlmZmVyZW50IGFuaW1hdGlvbnMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBDaGFuZ2Vz
IHNpbmNlIGZpcnN0IHZlcnNpb246IE5vdyBvbmx5IHVwZGF0ZSB0aGUgY3VycmVudCBwb3NpdGlv
biBvZiB0aGUgYW5pbWF0aW9uCisgICAgICAgIGlmIGl0IGlzIG5vdCBhY3RpdmUuIFRoaXMgaXMg
dGhlIGJlaGF2aW9yIHRoYXQgd2FzIHVzZWQgaW4gU2Nyb2xsQW5pbWF0b3JHZW5lcmljCisgICAg
ICAgIGFuZCBpcyB0aGUgY29ycmVjdCBiZWhhdmlvciB3aGVuIHVzaW5nIFNjcm9sbEFuaW1hdGlv
blNtb290aC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6IFJlbmFtZWQgbV9h
bmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwKKyAgICAgICAgdG8gbV9zY3JvbGxBbmltYXRpb24u
IFRoZSBtb3JlIGdlbmVyaWMgbmFtZSByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IGl0IGlzIGFsc28K
KyAgICAgICAgdXNlZCBmb3IgZG9pbmcgc2Nyb2xsaW5nIGZyb20gVUkgaW50ZXJhY3Rpb24gbm93
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6IFVzZSB0aGUgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoIG1lbWJlciB0byBkbworICAgICAgICBhbmltYXRlZCBzY3JvbGxz
IHdoZW4gbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKTogTWFrZSBzdXJlIHRoZSBhbmltYXRpb24KKyAg
ICAgICAgaXMgdXAgdG8gZGF0ZSB3aXRoIHRoZSBjdXJyZW50IHBvc2l0aW9uIHdoZW4gc2Nyb2xs
aW5nIHdpdGhvdXQgaXQuIFRoaXMgaXMKKyAgICAgICAgaG93IFNjcm9sbEFuaW1hdG9yR2VuZXJp
YyB0cmVhdGVkIGl0cyBTY3JvbGxBbmltYXRpb25TbW9vdGguCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOiBSZW5hbWUgbWVt
YmVyLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNhbmNlbEFuaW1hdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp3aWxsRW5kTGl2ZVJl
c2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZl
cnRpY2FsU2Nyb2xsYmFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKTogRWxpbWluYXRlIFNjcm9sbEFuaW1hdGlv
blNtb290aC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkSG9yaXpvbnRhbFNj
cm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGwpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaDoK
KwogMjAyMS0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYSBwcmVhbGxvY2F0ZSBhdWRp
byBidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRl
eCBjNTI0ZGRlOWY3YjFlYzJjYWE3MjI5YWRlM2Q2NjQ4NjJiZGUzMDhiLi5iMDgzMTE1YmFmYmVi
MjY2NDM1M2M5OTU2NDA1YWE3NGNiMGQ1YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFNjcm9sbEFuaW1hdG9yOjpTY3Jv
bGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgICwgbV9zY3JvbGxD
b250cm9sbGVyKCp0aGlzKQogI2VuZGlmCi0gICAgLCBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Nj
cm9sbChtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgLCBtX3Njcm9sbEFu
aW1hdGlvbihtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCiAgICAgICAgIFt0aGlz
XSgpIC0+IFNjcm9sbEV4dGVudHMgewogICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxl
QXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpIH07CiAgICAgICAg
IH0sCkBAIC0xMDYsNiArMTA2LDE0IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkKICAgICBVTlVT
RURfUEFSQU0oYmVoYXZpb3IpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Ny
b2xsQW5pbWF0b3JFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKCFtX3Njcm9sbEFuaW1hdGlvbi0+
aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9z
aXRpb24obV9jdXJyZW50UG9zaXRpb24pOworICAgICAgICByZXR1cm4gbV9zY3JvbGxBbmltYXRp
b24tPnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0
aW9uKGN1cnJlbnRQb3NpdGlvbigpICsgZGVsdGEpOwogfQogCkBAIC0xMjQsNiArMTMyLDcgQEAg
Ym9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24KICAgICBpZiAoYWRqdXN0ZWRQb3NpdGlvbiA9PSBjdXJy
ZW50UG9zaXRpb24gJiYgYWRqdXN0ZWRQb3NpdGlvbiA9PSBzY3JvbGxhYmxlQXJlYSgpLnNjcm9s
bFBvc2l0aW9uKCkgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVu
dFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24pOwogICAgIG1fY3VycmVudFBvc2l0aW9uID0gYWRq
dXN0ZWRQb3NpdGlvbjsKICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoYWRqdXN0ZWRQb3NpdGlv
biAtIGN1cnJlbnRQb3NpdGlvbik7CiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9y
T2Zmc2V0KCk7CkBAIC0xNDEsOCArMTUwLDggQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24KICAg
ICBpZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5D
aGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fYW5pbWF0aW9uUHJvZ3Jh
bW1hdGljU2Nyb2xsLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAg
IG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zY3JvbGwobmV3UG9zaXRpb24pOworICAg
IG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24p
OworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zY3JvbGwobmV3UG9zaXRpb24pOwogICAgIHNjcm9s
bGFibGVBcmVhKCkuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6
OkluTm9uTmF0aXZlQW5pbWF0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM1NSwyMyAr
MzY0LDIzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpj
YW5jZWxBbmltYXRpb25zKCkKIHsKICNpZiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJ
TUVSKQotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zdG9wKCk7CisgICAgbV9z
Y3JvbGxBbmltYXRpb24tPnN0b3AoKTsKICNlbmRpZgogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9y
Ojp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3Jv
bGwtPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0
ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRp
Y2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNT
Y3JvbGwtPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVw
ZGF0ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZEhv
cml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikKIHsKLSAgICBtX2FuaW1hdGlvblByb2dyYW1t
YXRpY1Njcm9sbC0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlv
bi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRv
cjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50
JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCBtZXRob2QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2NzNmMzFiMTJkZTg2N2MxOGMz
NDg3NzJiOTMzYWQ3MTIwNWRjNmI4Li44NTIwMzM2Yjg0ZWRkYjI5MzNjZjc2MjMzNzNiMTEwYWNi
NWMzZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTE4
NSw3ICsxODUsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBGbG9hdFBvaW50IG1fY3VycmVu
dFBvc2l0aW9uOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9hbmlt
YXRpb25Qcm9ncmFtbWF0aWNTY3JvbGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dGlvbj4gbV9zY3JvbGxBbmltYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAKaW5kZXggY2QzM2FhNDUxMTU1M2JiZmFhODczMmJjNjc5ODgwN2QxYzBj
YzcwMC4uMjY4ZDJjOWE5NDgwNWEwYjAxZWEwNzA2OWM4ODFmMWE0NDY4ZDkzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcApAQCAtNTUsNzAgKzU1LDE3IEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Ny
b2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICAg
ICAgICAgIHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCks
IG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFy
ZWEudmlzaWJsZVNpemUoKSB9OwogICAgICAgICB9LAogICAgICAgICBbdGhpc10oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRp
b24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKKyAgICAgICAgICAgIG1f
c2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICAg
ICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogICAgICAgICB9KTsKLQotI2lm
IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChzY3JvbGxhYmxlQXJlYS5zY3JvbGxB
bmltYXRvckVuYWJsZWQoKSkKLSAgICAgICAgZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9u
KCk7Ci0jZW5kaWYKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljKCkgPSBkZWZhdWx0OwogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lk
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkK
LXsKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pIHsKLSAgICAgICAgaWYgKCFtX3Ntb290aEFu
aW1hdGlvbi0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRD
dXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNt
b290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAg
cmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3Jv
bGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNp
YmxlU2l6ZSgpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIG1fY3VycmVudFBvc2l0aW9uLAotICAg
ICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICB1cGRhdGVQ
b3NpdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFt0aGlzXSB7
Ci0gICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNj
cm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7Ci0gICAgICAgIH0pOwotfQotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLWJvb2wgU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBTY3Jv
bGxCZWhhdmlvciBiZWhhdmlvcikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
QW5pbWF0b3JFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
KG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwot
Ci0gICAgLy8gVGhpcyBtZXRob2QgZG9lc24ndCBkbyBkaXJlY3Rpb25hbCBzbmFwcGluZywgYnV0
IG91ciBiYXNlIGNsYXNzIGRvZXMuIEl0IHdpbGwgY2FsbCBpbnRvCi0gICAgLy8gU2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpzY3JvbGwgYWdhaW4gd2l0aCB0aGUgc25hcHBlZCBwb3NpdGlvbnMgYW5k
IFNjcm9sbEJlaGF2aW9yOjpEZWZhdWx0LgotICAgIGlmIChiZWhhdmlvciA9PSBTY3JvbGxCZWhh
dmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKQotICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIsIGJl
aGF2aW9yKTsKLQotICAgIGVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpOwotICAgIHJl
dHVybiBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwg
c3RlcCwgbXVsdGlwbGllcik7Ci19Ci0jZW5kaWYKLQogYm9vbCBTY3JvbGxBbmltYXRvckdlbmVy
aWM6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uLCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKIHsKICAgICBtX2tpbmV0aWNBbmltYXRp
b24tPnN0b3AoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgp
OwotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0
aW9uKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0
aW9uKTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0
aW9uV2l0aG91dEFuaW1hdGlvbihwb3NpdGlvbiwgY2xhbXBpbmcpOwogfQogCkBAIC0xNDMsMTQg
KzkwLDYgQEAgYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6
OmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6d2lsbEVuZExpdmVSZXNpemUoKQotewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQot
ICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnVw
ZGF0ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBTY3JvbGxBbmltYXRvckdl
bmVyaWM6OnVwZGF0ZVBvc2l0aW9uKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikKIHsKICAgICBGbG9h
dFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwpAQCAtMTYxLDEwICsx
MDAsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlUG9zaXRpb24oRmxvYXRQ
b2ludCYmIHBvc2l0aW9uKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVy
dGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290
aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9sbEFu
aW1hdG9yOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihzY3JvbGxiYXIpOworCiAgICAgaWYgKCFz
Y3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAgICByZXR1cm47CiAgICAgbV92
ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgPSBzY3JvbGxiYXI7CkBAIC0xNzYsMTAgKzExMyw4IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKIAogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZEhv
cml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9s
bEFuaW1hdG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisKICAgICBp
ZiAoIXNjcm9sbGJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2hvcml6b250YWxPdmVybGF5U2Nyb2xsYmFyID0gc2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgK
aW5kZXggNDM4MjQ4NmQ4ODFhOTY1YjIxZDNjMmFkZjc5ZWVjYzk5MjY2OGQ1Yi4uZTA0NmM1MzFi
Yjg0YzJhY2ZmNWU4OTQ2NTU2ZGRjMTEyNWM5OGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCkBAIC00NCwx
MSArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCk7
CiAKIHByaXZhdGU6Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgYm9vbCBzY3Jv
bGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBm
bG9hdCBtdWx0aXBsaWVyLCBTY3JvbGxCZWhhdmlvcikgb3ZlcnJpZGU7Ci0jZW5kaWYKICAgICBi
b29sIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBT
Y3JvbGxDbGFtcGluZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYpIG92ZXJyaWRlOwogCkBAIC03MiwxMSArNjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
aGlkZU92ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgdm9pZCB1cGRhdGVPdmVybGF5U2Nyb2xsYmFy
c09wYWNpdHkoKTsKIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIHZvaWQgZW5z
dXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsQW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKLSNlbmRpZgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247CiAgICAgU2Ny
b2xsYmFyKiBtX2hvcml6b250YWxPdmVybGF5U2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgIFNj
cm9sbGJhciogbV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgeyBudWxscHRyIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426529</attachid>
            <date>2021-04-20 02:25:35 -0700</date>
            <delta_ts>2021-04-20 03:22:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222588-20210420112534.patch</filename>
            <type>text/plain</type>
            <size>12530</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdjM2RjMTI0ZjgyNDNm
NmRjMzMyZTg2ZDQ1OWY0NTMyYmUxYjE2NC4uYmYwYmVkNzhhNWYzNjgzYTNmZTM1MDNhM2M5M2I1
MTdkMTIzYTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA0LTIwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZS1sYW5kOiBF
bGltaW5hdGUgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptX3Ntb290aEFuaW1hdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTg4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWmFuIERvYmVyc2VrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhp
cyBjaGFuZ2Ugc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgRWxpbWluYXRl
IHRoZSBleHRyYSBTY3JvbGxBbmltYXRpb25TbW9vdGggaW4gU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LiBUaGUgYmFzZQorICAgICAgICBjbGFzcyBhbHJlYWR5IGtub3dzIGhvdyB0byBkbyBzY3JvbGwg
YW5pbWF0aW9ucyBmb3IgcHJvZ3JhbW1hdGljIHNjcm9sbHMsCisgICAgICAgIHNvIHdlIGNhbiBy
ZXVzZSB0aGF0IGFuaW1hdGlvbiBmb3IgZG9pbmcgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCguLi4p
LiBUaGlzCisgICAgICAgIG1ha2VzIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCBz
aG91bGQgc2ltcGxpZnkgbWFuYWdpbmcgaW50ZXJhY3Rpb25zCisgICAgICAgIGJldHdlZW4gdGhl
IGRpZmZlcmVudCBhbmltYXRpb25zIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgQ2hhbmdlcyBz
aW5jZSBmaXJzdCB2ZXJzaW9uOiBOb3cgb25seSB1cGRhdGUgdGhlIGN1cnJlbnQgcG9zaXRpb24g
b2YgdGhlIGFuaW1hdGlvbgorICAgICAgICBpZiBpdCBpcyBub3QgYWN0aXZlLiBUaGlzIGlzIHRo
ZSBiZWhhdmlvciB0aGF0IHdhcyB1c2VkIGluIFNjcm9sbEFuaW1hdG9yR2VuZXJpYworICAgICAg
ICBhbmQgaXMgdGhlIGNvcnJlY3QgYmVoYXZpb3Igd2hlbiB1c2luZyBTY3JvbGxBbmltYXRpb25T
bW9vdGguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IpOiBSZW5hbWVkIG1fYW5p
bWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsCisgICAgICAgIHRvIG1fc2Nyb2xsQW5pbWF0aW9uLiBU
aGUgbW9yZSBnZW5lcmljIG5hbWUgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCBpdCBpcyBhbHNvCisg
ICAgICAgIHVzZWQgZm9yIGRvaW5nIHNjcm9sbGluZyBmcm9tIFVJIGludGVyYWN0aW9uIG5vdy4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGwpOiBVc2UgdGhlIFNjcm9s
bEFuaW1hdGlvblNtb290aCBtZW1iZXIgdG8gZG8KKyAgICAgICAgYW5pbWF0ZWQgc2Nyb2xscyB3
aGVuIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxU
b1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbik6IE1ha2Ugc3VyZSB0aGUgYW5pbWF0aW9uCisgICAg
ICAgIGlzIHVwIHRvIGRhdGUgd2l0aCB0aGUgY3VycmVudCBwb3NpdGlvbiB3aGVuIHNjcm9sbGlu
ZyB3aXRob3V0IGl0LiBUaGlzIGlzCisgICAgICAgIGhvdyBTY3JvbGxBbmltYXRvckdlbmVyaWMg
dHJlYXRlZCBpdHMgU2Nyb2xsQW5pbWF0aW9uU21vb3RoLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKTogUmVuYW1lIG1lbWJl
ci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjYW5jZWxBbmltYXRpb25zKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6d2lsbEVuZExpdmVSZXNp
emUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpkaWRBZGRWZXJ0
aWNhbFNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9s
bEFuaW1hdG9yR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdl
bmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyk6IEVsaW1pbmF0ZSBTY3JvbGxBbmltYXRpb25T
bW9vdGguCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbFRv
UG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZEhvcml6b250YWxTY3Jv
bGxiYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6
ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6d2lsbEVuZExpdmVSZXNpemUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6CisK
IDIwMjEtMDQtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2UgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EgcHJlYWxsb2NhdGUgYXVkaW8g
YnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXgg
YzUyNGRkZTlmN2IxZWMyY2FhNzIyOWFkZTNkNjY0ODYyYmRlMzA4Yi4uYjA4MzExNWJhZmJlYjI2
NjQzNTNjOTk1NjQwNWFhNzRjYjBkNWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcApAQCAtNTcsNyArNTcsNyBAQCBTY3JvbGxBbmltYXRvcjo6U2Nyb2xs
QW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICAsIG1fc2Nyb2xsQ29u
dHJvbGxlcigqdGhpcykKICNlbmRpZgotICAgICwgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3Jv
bGwobWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KAorICAgICwgbV9zY3JvbGxBbmlt
YXRpb24obWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KAogICAgICAgICBbdGhpc10o
KSAtPiBTY3JvbGxFeHRlbnRzIHsKICAgICAgICAgICAgIHJldHVybiB7IG1fc2Nyb2xsYWJsZUFy
ZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9s
bFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSB9OwogICAgICAgICB9
LApAQCAtMTA2LDYgKzEwNiwxNCBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwoU2Nyb2xs
YmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5CiAgICAgVU5VU0VE
X1BBUkFNKGJlaGF2aW9yKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9s
bEFuaW1hdG9yRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICghbV9zY3JvbGxBbmltYXRpb24tPmlz
QWN0aXZlKCkpCisgICAgICAgICAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0
aW9uKG1fY3VycmVudFBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsQW5pbWF0aW9u
LT5zY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVyKTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIHJldHVybiBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlv
bihjdXJyZW50UG9zaXRpb24oKSArIGRlbHRhKTsKIH0KIApAQCAtMTI0LDYgKzEzMiw3IEBAIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uCiAgICAgaWYgKGFkanVzdGVkUG9zaXRpb24gPT0gY3VycmVu
dFBvc2l0aW9uICYmIGFkanVzdGVkUG9zaXRpb24gPT0gc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxQ
b3NpdGlvbigpICYmICFzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9yaWdpbkNoYW5nZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgbV9zY3JvbGxBbmltYXRpb24tPnNldEN1cnJlbnRQ
b3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKTsKICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVz
dGVkUG9zaXRpb247CiAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGFkanVzdGVkUG9zaXRpb24g
LSBjdXJyZW50UG9zaXRpb24pOwogICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9m
ZnNldCgpOwpAQCAtMTQxLDggKzE1MCw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRv
UG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uCiAgICAg
aWYgKCFwb3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hh
bmdlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2FuaW1hdGlvblByb2dyYW1t
YXRpY1Njcm9sbC0+c2V0Q3VycmVudFBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKTsKLSAgICBt
X2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c2Nyb2xsKG5ld1Bvc2l0aW9uKTsKKyAgICBt
X3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKTsK
KyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2Nyb2xsKG5ld1Bvc2l0aW9uKTsKICAgICBzY3JvbGxh
YmxlQXJlYSgpLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJ
bk5vbk5hdGl2ZUFuaW1hdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zNTUsMjMgKzM2
NCwyMyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRp
b25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VAogdm9pZCBTY3JvbGxBbmltYXRvcjo6Y2Fu
Y2VsQW5pbWF0aW9ucygpCiB7CiAjaWYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1F
UikKLSAgICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c3RvcCgpOworICAgIG1fc2Ny
b2xsQW5pbWF0aW9uLT5zdG9wKCk7CiAjZW5kaWYKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6
d2lsbEVuZExpdmVSZXNpemUoKQogewotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xs
LT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVW
aXNpYmxlTGVuZ3RocygpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpkaWRBZGRWZXJ0aWNh
bFNjcm9sbGJhcihTY3JvbGxiYXIqKQogewotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Ny
b2xsLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRh
dGVWaXNpYmxlTGVuZ3RocygpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0
aWNTY3JvbGwtPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24t
PnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6
OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoY29uc3QgRmxvYXRQb2ludCYg
b2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QgbWV0aG9kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNjczZjMxYjEyZGU4NjdjMThjMzQ4
NzcyYjkzM2FkNzEyMDVkYzZiOC4uODUyMDMzNmI4NGVkZGIyOTMzY2Y3NjIzMzczYjExMGFjYjVj
M2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0xODUs
NyArMTg1LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRQ
b3NpdGlvbjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1fYW5pbWF0
aW9uUHJvZ3JhbW1hdGljU2Nyb2xsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRp
b24+IG1fc2Nyb2xsQW5pbWF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdl
bmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwCmluZGV4IGNkMzNhYTQ1MTE1NTNiYmZhYTg3MzJiYzY3OTg4MDdkMWMwY2M3
MDAuLjI2OGQyYzlhOTQ4MDVhMGIwMWVhMDcwNjljODgxZjFhNDQ2OGQ5MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHAKQEAgLTU1LDcwICs1NSwxNyBAQCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9s
bEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAg
ICAgICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBt
X3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVh
LnZpc2libGVTaXplKCkgfTsKICAgICAgICAgfSwKICAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQm
JiBwb3NpdGlvbikgewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgICAgICAgICAg
aWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9u
LT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwotI2VuZGlmCisgICAgICAgICAgICBtX3Nj
cm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAgICAgICAg
IHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKICAgICAgICAgfSk7Ci0KLSNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAoc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5p
bWF0b3JFbmFibGVkKCkpCi0gICAgICAgIGVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigp
OwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6flNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYygpID0gZGVmYXVsdDsKIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotdm9pZCBT
Y3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpCi17
Ci0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKSB7Ci0gICAgICAgIGlmICghbV9zbW9vdGhBbmlt
YXRpb24tPmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3Vy
cmVudFBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9v
dGg+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJl
dHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xs
YWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJs
ZVNpemUoKSB9OwotICAgICAgICB9LAotICAgICAgICBtX2N1cnJlbnRQb3NpdGlvbiwKLSAgICAg
ICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICAgICAgdXBkYXRlUG9z
aXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwotICAgICAgICB9LAotICAgICAgICBbdGhpc10gewot
ICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3Jv
bGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOwotICAgICAgICB9KTsKLX0KLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi1ib29sIFNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgU2Nyb2xs
QmVoYXZpb3IgYmVoYXZpb3IpCi17Ci0gICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFu
aW1hdG9yRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChv
cmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIsIGJlaGF2aW9yKTsKLQot
ICAgIC8vIFRoaXMgbWV0aG9kIGRvZXNuJ3QgZG8gZGlyZWN0aW9uYWwgc25hcHBpbmcsIGJ1dCBv
dXIgYmFzZSBjbGFzcyBkb2VzLiBJdCB3aWxsIGNhbGwgaW50bwotICAgIC8vIFNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6c2Nyb2xsIGFnYWluIHdpdGggdGhlIHNuYXBwZWQgcG9zaXRpb25zIGFuZCBT
Y3JvbGxCZWhhdmlvcjo6RGVmYXVsdC4KLSAgICBpZiAoYmVoYXZpb3IgPT0gU2Nyb2xsQmVoYXZp
b3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZykKLSAgICAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9y
OjpzY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVyLCBiZWhh
dmlvcik7Ci0KLSAgICBlbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKTsKLSAgICByZXR1
cm4gbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0
ZXAsIG11bHRpcGxpZXIpOwotfQotI2VuZGlmCi0KIGJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbiwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCiB7CiAgICAgbV9raW5ldGljQW5pbWF0aW9u
LT5zdG9wKCk7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsK
LQotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlv
bik7Ci0jZW5kaWYKLQogICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlv
bldpdGhvdXRBbmltYXRpb24ocG9zaXRpb24sIGNsYW1waW5nKTsKIH0KIApAQCAtMTQzLDE0ICs5
MCw2IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpo
YW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OndpbGxFbmRMaXZlUmVzaXplKCkKLXsKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT51cGRh
dGVWaXNpYmxlTGVuZ3RocygpOwotI2VuZGlmCi19Ci0KIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjp1cGRhdGVQb3NpdGlvbihGbG9hdFBvaW50JiYgcG9zaXRpb24pCiB7CiAgICAgRmxvYXRT
aXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKQEAgLTE2MSwxMCArMTAw
LDggQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnVwZGF0ZVBvc2l0aW9uKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikKIAogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZFZlcnRp
Y2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotI2lmIEVOQUJMRShTTU9PVEhf
U0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhB
bmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKKyAgICBTY3JvbGxBbmlt
YXRvcjo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKwogICAgIGlmICghc2Ny
b2xsYmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdmVy
dGljYWxPdmVybGF5U2Nyb2xsYmFyID0gc2Nyb2xsYmFyOwpAQCAtMTc2LDEwICsxMTMsOCBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKKyAgICBTY3JvbGxB
bmltYXRvcjo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihzY3JvbGxiYXIpOworCiAgICAgaWYg
KCFzY3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9ob3Jpem9udGFsT3ZlcmxheVNjcm9sbGJhciA9IHNjcm9sbGJhcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmlu
ZGV4IDQzODI0ODZkODgxYTk2NWIyMWQzYzJhZGY3OWVlY2M5OTI2NjhkNWIuLmUwNDZjNTMxYmI4
NGMyYWNmZjVlODk0NjU1NmRkYzExMjVjOThhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApAQCAtNDQsMTEg
KzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yR2VuZXJpYygpOwog
CiBwcml2YXRlOgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGJvb2wgc2Nyb2xs
KFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxv
YXQgbXVsdGlwbGllciwgU2Nyb2xsQmVoYXZpb3IpIG92ZXJyaWRlOwotI2VuZGlmCiAgICAgYm9v
bCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Ny
b2xsQ2xhbXBpbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmKSBvdmVycmlkZTsKIApAQCAtNzIsMTEgKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhp
ZGVPdmVybGF5U2Nyb2xsYmFycygpOwogICAgIHZvaWQgdXBkYXRlT3ZlcmxheVNjcm9sbGJhcnNP
cGFjaXR5KCk7CiAKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICB2b2lkIGVuc3Vy
ZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bEFuaW1hdGlvbj4gbV9zbW9vdGhBbmltYXRpb247Ci0jZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5pbWF0aW9uOwogICAgIFNjcm9s
bGJhciogbV9ob3Jpem9udGFsT3ZlcmxheVNjcm9sbGJhciB7IG51bGxwdHIgfTsKICAgICBTY3Jv
bGxiYXIqIG1fdmVydGljYWxPdmVybGF5U2Nyb2xsYmFyIHsgbnVsbHB0ciB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426534</attachid>
            <date>2021-04-20 03:22:51 -0700</date>
            <delta_ts>2021-04-20 03:54:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222588-20210420122249.patch</filename>
            <type>text/plain</type>
            <size>12532</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdjM2RjMTI0ZjgyNDNm
NmRjMzMyZTg2ZDQ1OWY0NTMyYmUxYjE2NC4uMmQ4NWJiNjk5MDc5NWY4MzMzMjlkMjViOWFmMzFm
M2JkMzY0YWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA0LTIwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZS1sYW5kOiBF
bGltaW5hdGUgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptX3Ntb290aEFuaW1hdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTg4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBU
aGlzIGNoYW5nZSBzaG91bGQgbm90IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICBFbGltaW5h
dGUgdGhlIGV4dHJhIFNjcm9sbEFuaW1hdGlvblNtb290aCBpbiBTY3JvbGxBbmltYXRvckdlbmVy
aWMuIFRoZSBiYXNlCisgICAgICAgIGNsYXNzIGFscmVhZHkga25vd3MgaG93IHRvIGRvIHNjcm9s
bCBhbmltYXRpb25zIGZvciBwcm9ncmFtbWF0aWMgc2Nyb2xscywKKyAgICAgICAgc28gd2UgY2Fu
IHJldXNlIHRoYXQgYW5pbWF0aW9uIGZvciBkb2luZyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKC4u
LikuIFRoaXMKKyAgICAgICAgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5k
IHNob3VsZCBzaW1wbGlmeSBtYW5hZ2luZyBpbnRlcmFjdGlvbnMKKyAgICAgICAgYmV0d2VlbiB0
aGUgZGlmZmVyZW50IGFuaW1hdGlvbnMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBDaGFuZ2Vz
IHNpbmNlIGZpcnN0IHZlcnNpb246IE5vdyBvbmx5IHVwZGF0ZSB0aGUgY3VycmVudCBwb3NpdGlv
biBvZiB0aGUgYW5pbWF0aW9uCisgICAgICAgIGlmIGl0IGlzIG5vdCBhY3RpdmUuIFRoaXMgaXMg
dGhlIGJlaGF2aW9yIHRoYXQgd2FzIHVzZWQgaW4gU2Nyb2xsQW5pbWF0b3JHZW5lcmljCisgICAg
ICAgIGFuZCBpcyB0aGUgY29ycmVjdCBiZWhhdmlvciB3aGVuIHVzaW5nIFNjcm9sbEFuaW1hdGlv
blNtb290aC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6IFJlbmFtZWQgbV9h
bmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwKKyAgICAgICAgdG8gbV9zY3JvbGxBbmltYXRpb24u
IFRoZSBtb3JlIGdlbmVyaWMgbmFtZSByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IGl0IGlzIGFsc28K
KyAgICAgICAgdXNlZCBmb3IgZG9pbmcgc2Nyb2xsaW5nIGZyb20gVUkgaW50ZXJhY3Rpb24gbm93
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6IFVzZSB0aGUgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoIG1lbWJlciB0byBkbworICAgICAgICBhbmltYXRlZCBzY3JvbGxz
IHdoZW4gbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKTogTWFrZSBzdXJlIHRoZSBhbmltYXRpb24KKyAg
ICAgICAgaXMgdXAgdG8gZGF0ZSB3aXRoIHRoZSBjdXJyZW50IHBvc2l0aW9uIHdoZW4gc2Nyb2xs
aW5nIHdpdGhvdXQgaXQuIFRoaXMgaXMKKyAgICAgICAgaG93IFNjcm9sbEFuaW1hdG9yR2VuZXJp
YyB0cmVhdGVkIGl0cyBTY3JvbGxBbmltYXRpb25TbW9vdGguCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOiBSZW5hbWUgbWVt
YmVyLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNhbmNlbEFuaW1hdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp3aWxsRW5kTGl2ZVJl
c2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZl
cnRpY2FsU2Nyb2xsYmFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKTogRWxpbWluYXRlIFNjcm9sbEFuaW1hdGlv
blNtb290aC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkSG9yaXpvbnRhbFNj
cm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGwpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaDoK
KwogMjAyMS0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYSBwcmVhbGxvY2F0ZSBhdWRp
byBidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRl
eCBjNTI0ZGRlOWY3YjFlYzJjYWE3MjI5YWRlM2Q2NjQ4NjJiZGUzMDhiLi5iMDgzMTE1YmFmYmVi
MjY2NDM1M2M5OTU2NDA1YWE3NGNiMGQ1YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFNjcm9sbEFuaW1hdG9yOjpTY3Jv
bGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgICwgbV9zY3JvbGxD
b250cm9sbGVyKCp0aGlzKQogI2VuZGlmCi0gICAgLCBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Nj
cm9sbChtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgLCBtX3Njcm9sbEFu
aW1hdGlvbihtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCiAgICAgICAgIFt0aGlz
XSgpIC0+IFNjcm9sbEV4dGVudHMgewogICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxl
QXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpIH07CiAgICAgICAg
IH0sCkBAIC0xMDYsNiArMTA2LDE0IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkKICAgICBVTlVT
RURfUEFSQU0oYmVoYXZpb3IpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Ny
b2xsQW5pbWF0b3JFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKCFtX3Njcm9sbEFuaW1hdGlvbi0+
aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9z
aXRpb24obV9jdXJyZW50UG9zaXRpb24pOworICAgICAgICByZXR1cm4gbV9zY3JvbGxBbmltYXRp
b24tPnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0
aW9uKGN1cnJlbnRQb3NpdGlvbigpICsgZGVsdGEpOwogfQogCkBAIC0xMjQsNiArMTMyLDcgQEAg
Ym9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24KICAgICBpZiAoYWRqdXN0ZWRQb3NpdGlvbiA9PSBjdXJy
ZW50UG9zaXRpb24gJiYgYWRqdXN0ZWRQb3NpdGlvbiA9PSBzY3JvbGxhYmxlQXJlYSgpLnNjcm9s
bFBvc2l0aW9uKCkgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVu
dFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24pOwogICAgIG1fY3VycmVudFBvc2l0aW9uID0gYWRq
dXN0ZWRQb3NpdGlvbjsKICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoYWRqdXN0ZWRQb3NpdGlv
biAtIGN1cnJlbnRQb3NpdGlvbik7CiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9y
T2Zmc2V0KCk7CkBAIC0xNDEsOCArMTUwLDggQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24KICAg
ICBpZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5D
aGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fYW5pbWF0aW9uUHJvZ3Jh
bW1hdGljU2Nyb2xsLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAg
IG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zY3JvbGwobmV3UG9zaXRpb24pOworICAg
IG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24p
OworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zY3JvbGwobmV3UG9zaXRpb24pOwogICAgIHNjcm9s
bGFibGVBcmVhKCkuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6
OkluTm9uTmF0aXZlQW5pbWF0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM1NSwyMyAr
MzY0LDIzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpj
YW5jZWxBbmltYXRpb25zKCkKIHsKICNpZiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJ
TUVSKQotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zdG9wKCk7CisgICAgbV9z
Y3JvbGxBbmltYXRpb24tPnN0b3AoKTsKICNlbmRpZgogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9y
Ojp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3Jv
bGwtPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0
ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRp
Y2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopCiB7Ci0gICAgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNT
Y3JvbGwtPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVw
ZGF0ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZEhv
cml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikKIHsKLSAgICBtX2FuaW1hdGlvblByb2dyYW1t
YXRpY1Njcm9sbC0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlv
bi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRv
cjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50
JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCBtZXRob2QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2NzNmMzFiMTJkZTg2N2MxOGMz
NDg3NzJiOTMzYWQ3MTIwNWRjNmI4Li44NTIwMzM2Yjg0ZWRkYjI5MzNjZjc2MjMzNzNiMTEwYWNi
NWMzZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTE4
NSw3ICsxODUsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBGbG9hdFBvaW50IG1fY3VycmVu
dFBvc2l0aW9uOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9hbmlt
YXRpb25Qcm9ncmFtbWF0aWNTY3JvbGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dGlvbj4gbV9zY3JvbGxBbmltYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAKaW5kZXggY2QzM2FhNDUxMTU1M2JiZmFhODczMmJjNjc5ODgwN2QxYzBj
YzcwMC4uMjY4ZDJjOWE5NDgwNWEwYjAxZWEwNzA2OWM4ODFmMWE0NDY4ZDkzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcApAQCAtNTUsNzAgKzU1LDE3IEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Ny
b2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICAg
ICAgICAgIHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCks
IG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFy
ZWEudmlzaWJsZVNpemUoKSB9OwogICAgICAgICB9LAogICAgICAgICBbdGhpc10oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRp
b24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKKyAgICAgICAgICAgIG1f
c2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICAg
ICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogICAgICAgICB9KTsKLQotI2lm
IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChzY3JvbGxhYmxlQXJlYS5zY3JvbGxB
bmltYXRvckVuYWJsZWQoKSkKLSAgICAgICAgZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9u
KCk7Ci0jZW5kaWYKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljKCkgPSBkZWZhdWx0OwogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lk
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkK
LXsKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pIHsKLSAgICAgICAgaWYgKCFtX3Ntb290aEFu
aW1hdGlvbi0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRD
dXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNt
b290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAg
cmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3Jv
bGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNp
YmxlU2l6ZSgpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIG1fY3VycmVudFBvc2l0aW9uLAotICAg
ICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICB1cGRhdGVQ
b3NpdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFt0aGlzXSB7
Ci0gICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNj
cm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7Ci0gICAgICAgIH0pOwotfQotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLWJvb2wgU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBTY3Jv
bGxCZWhhdmlvciBiZWhhdmlvcikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
QW5pbWF0b3JFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
KG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwot
Ci0gICAgLy8gVGhpcyBtZXRob2QgZG9lc24ndCBkbyBkaXJlY3Rpb25hbCBzbmFwcGluZywgYnV0
IG91ciBiYXNlIGNsYXNzIGRvZXMuIEl0IHdpbGwgY2FsbCBpbnRvCi0gICAgLy8gU2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpzY3JvbGwgYWdhaW4gd2l0aCB0aGUgc25hcHBlZCBwb3NpdGlvbnMgYW5k
IFNjcm9sbEJlaGF2aW9yOjpEZWZhdWx0LgotICAgIGlmIChiZWhhdmlvciA9PSBTY3JvbGxCZWhh
dmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKQotICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIsIGJl
aGF2aW9yKTsKLQotICAgIGVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpOwotICAgIHJl
dHVybiBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwg
c3RlcCwgbXVsdGlwbGllcik7Ci19Ci0jZW5kaWYKLQogYm9vbCBTY3JvbGxBbmltYXRvckdlbmVy
aWM6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uLCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKIHsKICAgICBtX2tpbmV0aWNBbmltYXRp
b24tPnN0b3AoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgp
OwotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0
aW9uKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0
aW9uKTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0
aW9uV2l0aG91dEFuaW1hdGlvbihwb3NpdGlvbiwgY2xhbXBpbmcpOwogfQogCkBAIC0xNDMsMTQg
KzkwLDYgQEAgYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6
OmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6d2lsbEVuZExpdmVSZXNpemUoKQotewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQot
ICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnVw
ZGF0ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBTY3JvbGxBbmltYXRvckdl
bmVyaWM6OnVwZGF0ZVBvc2l0aW9uKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikKIHsKICAgICBGbG9h
dFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwpAQCAtMTYxLDEwICsx
MDAsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlUG9zaXRpb24oRmxvYXRQ
b2ludCYmIHBvc2l0aW9uKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVy
dGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290
aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9sbEFu
aW1hdG9yOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihzY3JvbGxiYXIpOworCiAgICAgaWYgKCFz
Y3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAgICByZXR1cm47CiAgICAgbV92
ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgPSBzY3JvbGxiYXI7CkBAIC0xNzYsMTAgKzExMyw4IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKIAogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZEhv
cml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIFNjcm9s
bEFuaW1hdG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisKICAgICBp
ZiAoIXNjcm9sbGJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2hvcml6b250YWxPdmVybGF5U2Nyb2xsYmFyID0gc2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgK
aW5kZXggNDM4MjQ4NmQ4ODFhOTY1YjIxZDNjMmFkZjc5ZWVjYzk5MjY2OGQ1Yi4uZTA0NmM1MzFi
Yjg0YzJhY2ZmNWU4OTQ2NTU2ZGRjMTEyNWM5OGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCkBAIC00NCwx
MSArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCk7
CiAKIHByaXZhdGU6Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgYm9vbCBzY3Jv
bGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBm
bG9hdCBtdWx0aXBsaWVyLCBTY3JvbGxCZWhhdmlvcikgb3ZlcnJpZGU7Ci0jZW5kaWYKICAgICBi
b29sIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBT
Y3JvbGxDbGFtcGluZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYpIG92ZXJyaWRlOwogCkBAIC03MiwxMSArNjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
aGlkZU92ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgdm9pZCB1cGRhdGVPdmVybGF5U2Nyb2xsYmFy
c09wYWNpdHkoKTsKIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIHZvaWQgZW5z
dXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsQW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKLSNlbmRpZgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247CiAgICAgU2Ny
b2xsYmFyKiBtX2hvcml6b250YWxPdmVybGF5U2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgIFNj
cm9sbGJhciogbV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgeyBudWxscHRyIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>