<?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>229037</bug_id>
          
          <creation_ts>2021-08-12 06:41:35 -0700</creation_ts>
          <short_desc>[GTK][WPE] CSS scroll snapping interacts badly with smooth scrolling</short_desc>
          <delta_ts>2021-10-06 09:07:16 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231294</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>230541</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>koivisto</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1783812</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-08-12 06:41:35 -0700</bug_when>
    <thetext>There are some issues with the combination of smooth scrolling and scroll-snapping;

With sync scrolling, smooth scrolling is disabled when scroll-snapping happens.
With sync scrolling and the touchpad, even the smallest movement immediately snaps to an element in that direction (making scrolling practically unusable).
With async scrolling, if you interrupt a scroll, snapping often doesn&apos;t work.
With async scrolling and touchpad scrolling, movement is erratic (perhaps fighting between snapping and respecting the input).

Both sets of issues seem to stem from not considering touch scrolling or animated/smooth scrolling, but may involve separate fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783813</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-08-12 06:44:29 -0700</bug_when>
    <thetext>Similarly, with synchronous scrolling and smooth scrolling enabled, sometimes mouse-wheel and keyboard scrolling stops working altogether. Touchpad scrolling behaves badly with sync scrolling, regardless of whether smooth scrolling is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785762</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-08-20 02:52:06 -0700</bug_when>
    <thetext>Given they share very little code, I&apos;m going to split this between the sync-scrolling path and the async.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785764</commentid>
    <comment_count>3</comment_count>
      <attachid>435964</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-08-20 03:04:16 -0700</bug_when>
    <thetext>Created attachment 435964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785765</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-08-20 03:04:55 -0700</bug_when>
    <thetext>Attaching WIP patch for testing - need to write tests and verify this doesn&apos;t break anything else on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786362</commentid>
    <comment_count>5</comment_count>
      <attachid>436169</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-08-23 02:24:48 -0700</bug_when>
    <thetext>Created attachment 436169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793263</commentid>
    <comment_count>6</comment_count>
      <attachid>438123</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-09-14 05:39:39 -0700</bug_when>
    <thetext>Created attachment 438123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793264</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-14 05:40:46 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794011</commentid>
    <comment_count>8</comment_count>
      <attachid>438337</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-09-16 04:39:25 -0700</bug_when>
    <thetext>Created attachment 438337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794055</commentid>
    <comment_count>9</comment_count>
      <attachid>438337</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-16 09:02:29 -0700</bug_when>
    <thetext>Comment on attachment 438337
Patch

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

Can you separate the setMouseWheelIsPrecise stuff into a patch and land that first? I&apos;m in the middle of refactoring ScrollAnimator and would prefer no changes there for a week or so.

&gt; Source/WebCore/platform/ScrollAnimator.cpp:408
&gt; +    if (m_scrollAnimation-&gt;isActive())
&gt; +        return true;

This is an example of how badly factored this code is. Ideally you would not need this and ScrollController would have the same behavior across platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800603</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-05 09:51:51 -0700</bug_when>
    <thetext>After the refactor, the fix for this fixes both platforms in both sync and async paths (nice!) Got it working locally, but need to alter/fix the related test, will finish tomorrow hopefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801002</commentid>
    <comment_count>11</comment_count>
      <attachid>440347</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-06 02:29:29 -0700</bug_when>
    <thetext>Created attachment 440347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801005</commentid>
    <comment_count>12</comment_count>
      <attachid>440348</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-06 02:40:07 -0700</bug_when>
    <thetext>Created attachment 440348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801094</commentid>
    <comment_count>13</comment_count>
      <attachid>440348</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-06 08:33:46 -0700</bug_when>
    <thetext>Comment on attachment 440348
Patch

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

&gt; Source/WebCore/platform/ScrollingEffectsController.cpp:289
&gt; +        float scale = m_client.pageScaleFactor();
&gt; +        auto scrollOffset = m_client.scrollOffset();
&gt; +        auto extents = m_client.scrollExtents();
&gt; +
&gt; +        auto originalOffset = LayoutPoint(scrollOffset.x() / scale, scrollOffset.y() / scale);
&gt; +        auto newOffset = LayoutPoint((scrollOffset.x() + deltaX) / scale, (scrollOffset.y() + deltaY) / scale);
&gt; +
&gt; +        auto offsetX = snapOffsetsInfo()-&gt;closestSnapOffset(ScrollEventAxis::Horizontal, LayoutSize(extents.contentsSize), newOffset, deltaX, originalOffset.x()).first;
&gt; +        auto offsetY = snapOffsetsInfo()-&gt;closestSnapOffset(ScrollEventAxis::Vertical, LayoutSize(extents.contentsSize), newOffset, deltaY, originalOffset.y()).first;
&gt; +
&gt; +        deltaX = (offsetX - originalOffset.x()) * scale;
&gt; +        deltaY = (offsetY - originalOffset.y()) * scale;

Would be nice to push as much of this code into ScrollSnapAnimatorState as possible.

&gt; Source/WebCore/platform/ScrollingEffectsController.cpp:367
&gt; +    if (m_inScrollGesture || (m_currentAnimation &amp;&amp; m_currentAnimation-&gt;isActive()))
&gt; +        return true;

At some point I want a single &quot;current state&quot; value in ScrollingEffectsController so we know what the current animation is for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801103</commentid>
    <comment_count>14</comment_count>
      <attachid>440348</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-06 08:45:04 -0700</bug_when>
    <thetext>Comment on attachment 440348
Patch

Will open a bug about de-duplicating the bits in ScrollSnapAnimatorState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801121</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-06 09:06:44 -0700</bug_when>
    <thetext>Committed r283626 (242578@main): &lt;https://commits.webkit.org/242578@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440348.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801122</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-06 09:07:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83936557&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435964</attachid>
            <date>2021-08-20 03:04:16 -0700</date>
            <delta_ts>2021-08-23 02:24:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229037-20210820110415.patch</filename>
            <type>text/plain</type>
            <size>17895</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRmMzBiNTYwZTY4Nzky
NjVkYzFhOTAzYWUzY2QxYjI4NTk0ZTA4My4uZDMwMGI0YzgyODdmYTM1ZDdkOWU2ZjUyNGJhMTg2
NDM1YjkzNmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA4LTIwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIENTUyBzY3Jv
bGwgc25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5IHdpdGggc21vb3RoIHNjcm9sbGluZyAoc3luYyBz
Y3JvbGxpbmcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjkwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggc2Nyb2xsIHNuYXBwaW5nIHdoZW4gc21vb3RoIHNjcm9sbGluZyBpcyBlbmFibGVkLCBh
bmQgbWFrZSBpdAorICAgICAgICBiZWhhdmUgaW4gYSBwcmVkaWN0YWJsZSB3YXkgd2hlbiBzY3Jv
bGxpbmcgd2l0aCB0b3VjaHBhZHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0
aWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZp
cmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNvcnJlY3RTY3JvbGxPZmZzZXRG
b3JTY3JvbGxTbmFwcGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YTo6cmVzbmFwQWZ0ZXJMYXlvdXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRv
ckdlbmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5k
bGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6
aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckdlbmVyaWM6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6CisKIDIwMjEtMDgtMTEg
IEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBO
b24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkIEF1Z3VzdCAyMDIxIGVkaXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5j
cHAKaW5kZXggNjllYjExMTRjMTgwMmVhNTE1OWQ4NGQ5OGI3ZjMxZmZlYTBjYzU5NC4uOGExMTgz
NWM0MTU4YThmNmNiNjdjMmQxNmRmMWQ1ZmUzMjgwNTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKQEAgLTkw
LDcgKzkwLDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCiAjZW5kaWYKICAgICAgICAgICAgIGF1
dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOwogICAgICAgICAgICAgc2Nyb2xs
aW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0sCisg
ICAgICAgIFtdKCkgeyB9KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IDIxOGRiYWEwZTVlNzNmMTIw
ZTY0YThiODgxYzc3ZDdiNzBiYWQxZDMuLjQyZjM2MGIwZTIwNGI4NTg4NWM4MjBhOGE1MzVjNTVk
NmExNjc4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCkBAIC0xMTIsOSArMTEyLDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25kcyB0aW1lRGVsdGEpCiAg
ICAgcmV0dXJuIG1fdmVsb2NpdHk7CiB9CiAKLVNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9s
bEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYgc2Nyb2xsRXh0ZW50c0Z1
bmN0aW9uLCBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hh
bmdlZEZ1bmN0aW9uKQorU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYyhTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiBzY3JvbGxFeHRlbnRzRnVuY3Rpb24sIE5vdGlm
eVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24s
IE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayYmIG5vdGlmeUFuaW1hdGlvblN0b3BwZWRG
dW5jdGlvbikKICAgICA6IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKFdURk1vdmUoc2Nyb2xsRXh0
ZW50c0Z1bmN0aW9uKSkKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RG
TW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCisgICAgLCBtX25vdGlmeUFuaW1h
dGlvblN0b3BwZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlv
bikpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiAjaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkKQEAgLTEyNiw3ICsxMjcsMTAgQEAgU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yzo6flNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYzo6c3RvcCgpCiB7Ci0gICAgbV9hbmltYXRpb25UaW1lci5zdG9wKCk7Cisg
ICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX2FuaW1hdGlv
blRpbWVyLnN0b3AoKTsKKyAgICAgICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24o
KTsKKyAgICB9CiB9CiAKIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6aXNBY3RpdmUoKSBj
b25zdApAQCAtMjI2LDE0ICsyMzAsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjph
bmltYXRpb25UaW1lckZpcmVkKCkKICAgICBpZiAobV92ZXJ0aWNhbERhdGEgJiYgIW1fdmVydGlj
YWxEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9sbChkZWx0YSkpCiAgICAgICAgIG1fdmVydGljYWxE
YXRhID0gc3RkOjpudWxsb3B0OwogCi0gICAgLy8gSWYgb25lIG9mIHRoZSBheGVzIGRpZG4ndCBm
aW5pc2ggaXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVlIGl0LgotICAgIGlmIChtX2hvcml6
b250YWxEYXRhIHx8IG1fdmVydGljYWxEYXRhKQotICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0
YXJ0T25lU2hvdChzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGEpKTsKLQogICAg
IGRvdWJsZSB4ID0gbV9ob3Jpem9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5w
b3NpdGlvbigpIDogbV9wb3NpdGlvbi54KCk7CiAgICAgZG91YmxlIHkgPSBtX3ZlcnRpY2FsRGF0
YSA/IG1fdmVydGljYWxEYXRhLnZhbHVlKCkucG9zaXRpb24oKSA6IG1fcG9zaXRpb24ueSgpOwog
ICAgIG1fcG9zaXRpb24gPSBGbG9hdFBvaW50KHgsIHkpOwogICAgIG1fbm90aWZ5UG9zaXRpb25D
aGFuZ2VkRnVuY3Rpb24oRmxvYXRQb2ludChtX3Bvc2l0aW9uKSk7CisKKyAgICAvLyBJZiBvbmUg
b2YgdGhlIGF4ZXMgZGlkbid0IGZpbmlzaCBpdHMgYW5pbWF0aW9uIHdlIG11c3QgY29udGludWUg
aXQuCisgICAgaWYgKG1faG9yaXpvbnRhbERhdGEgfHwgbV92ZXJ0aWNhbERhdGEpCisgICAgICAg
IG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVy
dmFsLCBkZWx0YSkpOworICAgIGVsc2UKKyAgICAgICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVk
RnVuY3Rpb24oKTsKIH0KIAogU2Vjb25kcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpkZWx0YVRv
TmV4dEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbktpbmV0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bktpbmV0aWMuaAppbmRleCBmYzRmYWIxZTlmNDMxYTM4Y2E3YWIxYzZlOTk2MmQ4Y2JjMWJjNmM1
Li5iYmNjODNjODY5Y2U0YTE4ZDQ0MjQ4NjkyZjhhZDcyYzhlZTE3NGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCkBAIC01OSw4ICs1
OSw5IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgdXNpbmcgU2Nyb2xsRXh0ZW50c0NhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRlbnRzKHZvaWQpPjsKICAgICB1c2luZyBOb3RpZnlQ
b3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChGbG9hdFBvaW50JiYp
PjsKKyAgICB1c2luZyBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQodm9pZCk+OwogCi0gICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxFeHRl
bnRzQ2FsbGJhY2smJiwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJik7CisgICAgU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiwgTm90aWZ5UG9zaXRp
b25DaGFuZ2VkQ2FsbGJhY2smJiwgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrJiYpOwog
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKIAogICAgIHZvaWQgYXBwZW5k
VG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpAQCAtNzcsNiArNzgs
NyBAQCBwcml2YXRlOgogCiAgICAgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrIG1fc2Nyb2xsRXh0ZW50
c0Z1bmN0aW9uOwogICAgIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrIG1fbm90aWZ5UG9z
aXRpb25DaGFuZ2VkRnVuY3Rpb247CisgICAgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNr
IG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uOwogCiAgICAgc3RkOjpvcHRpb25hbDxQ
ZXJBeGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNE
YXRhPiBtX3ZlcnRpY2FsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcAppbmRleCA5YWM0MTlmMzAxMTBjZTVjYjEwZjNhYjQyZWIzYjBlMzFmMjJjYmNjLi41
N2U1ZGQ4ZDI3ODQyOGYwOTJhNzAyMTc3Mjg0YWZjM2MxYjAwNDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC02MCw2ICs2MCw3IEBAIFNjcm9sbEFu
aW1hdG9yOjpTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgICAgIH0sCiAgICAgICAgIG1fY3VycmVudFBvc2l0aW9uLAogICAgICAgICBbdGhpc10oRmxv
YXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNj
cm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1h
dGlvbik7CiAgICAgICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVu
dFBvc2l0aW9uOwogICAgICAgICAgICAgbV9jdXJyZW50UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0
aW9uKTsKICAgICAgICAgICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7CkBAIC04MCwx
MCArODEsOCBAQCBTY3JvbGxBbmltYXRvcjo6flNjcm9sbEFuaW1hdG9yKCkKIGJvb2wgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIsIE9w
dGlvblNldDxTY3JvbGxCZWhhdmlvcj4gYmVoYXZpb3IpCiB7CiAgICAgYXV0byBkZWx0YSA9IGRl
bHRhRnJvbVN0ZXAob3JpZW50YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIpOwotICAgIGlmIChiZWhh
dmlvci5jb250YWlucyhTY3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKSkgewor
ICAgIGlmIChiZWhhdmlvci5jb250YWlucyhTY3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNu
YXBwaW5nKSAmJiBtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKSkgewogICAgICAg
ICBiZWhhdmlvci5yZW1vdmUoU2Nyb2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7
Ci0gICAgICAgIGlmICghbV9zY3JvbGxDb250cm9sbGVyLnVzZXNTY3JvbGxTbmFwKCkpCi0gICAg
ICAgICAgICByZXR1cm4gc2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVs
dGlwbGllciwgYmVoYXZpb3IpOwogCiAgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG9mZnNl
dEZyb21Qb3NpdGlvbihjdXJyZW50UG9zaXRpb24oKSk7CiAgICAgICAgIGF1dG8gbmV3T2Zmc2V0
ID0gY3VycmVudE9mZnNldCArIGRlbHRhOwpAQCAtMTQ0LDcgKzE0Myw2IEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG5ld1Bvc2l0aW9uCiAKICAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9u
KG1fY3VycmVudFBvc2l0aW9uKTsKICAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2Nyb2xsKG5ld1Bv
c2l0aW9uKTsKLSAgICBzY3JvbGxhYmxlQXJlYSgpLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNj
cm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTIyOSw4ICsyMjcsMTAgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAgIGhhbmRsZWQg
PSB0cnVlOwogCiAgICAgICAgIE9wdGlvblNldDxTY3JvbGxCZWhhdmlvcj4gYmVoYXZpb3IoU2Ny
b2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7Ci0gICAgICAgIGlmIChlLmhhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkKKyAgICAgICAgaWYgKGUuaGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcygpKSB7CiAgICAgICAgICAgICBiZWhhdmlvci5hZGQoU2Nyb2xsQmVoYXZpb3I6Ok5l
dmVyQW5pbWF0ZSk7CisgICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU2Nyb2xsQmVoYXZpb3I6
OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoZGVsdGFZ
KSB7CiAgICAgICAgICAgICBpZiAoZS5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVs
RXZlbnQpIHsKQEAgLTM5Myw2ICszOTMsMTcgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6ZGlkQWRk
SG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKQogICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51
cGRhdGVWaXNpYmxlTGVuZ3RocygpOwogfQogCitib29sIFNjcm9sbEFuaW1hdG9yOjppc1Njcm9s
bFNuYXBJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2Nyb2xsQ29udHJvbGxlci51
c2VzU2Nyb2xsU25hcCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9zY3Jv
bGxBbmltYXRpb24tPmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCiBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxP
ZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xs
U25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIG1ldGhvZCkKIHsKICAgICBpZiAoIW1fc2Nyb2xsQ29u
dHJvbGxlci51c2VzU2Nyb2xsU25hcCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmgKaW5kZXggYTRmMzlkNTYxYzYzOTUxZjUzMTI5ZWZjZWY1NDI1MGUxNTlhMmJhZi4u
NmJlZGE4MWFmZmEzMTA4MjE5YWNjMTYzZGIyZTE5NmFhMDRlODNiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xs
U25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGhvcml6b250YWxT
Y3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9
CiAgICAgdmlydHVhbCBTdHJpbmcgdmVydGljYWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggOTY3ZTEzMjZhYmU1YjMwMGE3Mjc2YjQ0ZWI5ODRiMTc5
YWI0MzU1Yi4uOWFmMmEwZDNmMjQzYjg3MWY1ZmVhYzMwMjUwMjliYTEwNDA1YTRiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNTEzLDIyICs1MTMs
MTMgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW4KICAgICBzY3JvbGxBbmltYXRvcigpLnNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgaW5k
ZXgpOwogfQogCi12b2lkIFNjcm9sbGFibGVBcmVhOjpyZXNuYXBBZnRlckxheW91dCgpCitTY3Jv
bGxPZmZzZXQgU2Nyb2xsYWJsZUFyZWE6OmNvcnJlY3RTY3JvbGxPZmZzZXRGb3JTY3JvbGxTbmFw
cGluZyhjb25zdCBTY3JvbGxPZmZzZXQmIG9mZnNldCkgY29uc3QKIHsKLSAgICBMT0dfV0lUSF9T
VFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICp0aGlzIDw8ICIgdXBkYXRlU2Nyb2xsU25hcFN0
YXRlOiBpc1Njcm9sbFNuYXBJblByb2dyZXNzICIgPDwgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygp
IDw8ICIgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyAiIDw8IGlzVXNlclNjcm9sbEluUHJvZ3Jlc3Mo
KSk7Ci0KLSAgICBTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGluZ1Njcm9s
bEFuaW1hdG9yKCk7Ci0gICAgaWYgKCFzY3JvbGxBbmltYXRvciB8fCBpc1Njcm9sbFNuYXBJblBy
b2dyZXNzKCkgfHwgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBzY3JvbGxBbmltYXRvci0+cmVzbmFwQWZ0ZXJMYXlvdXQoKTsKKyAgICBhdXRvIGNvcnJl
Y3RlZE9mZnNldCA9IG9mZnNldDsKIAogICAgIGNvbnN0IGF1dG8qIGluZm8gPSBzbmFwT2Zmc2V0
c0luZm8oKTsKICAgICBpZiAoIWluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY3Vy
cmVudE9mZnNldCA9IHNjcm9sbE9mZnNldCgpOwotICAgIGF1dG8gY29ycmVjdGVkT2Zmc2V0ID0g
Y3VycmVudE9mZnNldDsKKyAgICAgICAgcmV0dXJuIGNvcnJlY3RlZE9mZnNldDsKIAogICAgIGlm
ICghaG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IGhvcml6b250YWxTY3JvbGxiYXIoKS0+cHJlc3Nl
ZFBhcnQoKSA9PSBTY3JvbGxiYXJQYXJ0OjpOb1BhcnQpIHsKICAgICAgICAgY29uc3QgYXV0byYg
aG9yaXpvbnRhbCA9IGluZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0czsKQEAgLTU0NCw2ICs1MzUs
MjYgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6cmVzbmFwQWZ0ZXJMYXlvdXQoKQogICAgICAgICAg
ICAgY29ycmVjdGVkT2Zmc2V0LnNldFkodmVydGljYWxbKmFjdGl2ZVZlcnRpY2FsSW5kZXhdLm9m
ZnNldC50b0ludCgpKTsKICAgICB9CiAKKyAgICByZXR1cm4gY29ycmVjdGVkT2Zmc2V0OworfQor
Cit2b2lkIFNjcm9sbGFibGVBcmVhOjpyZXNuYXBBZnRlckxheW91dCgpCit7CisgICAgTE9HX1dJ
VEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAqdGhpcyA8PCAiIHVwZGF0ZVNjcm9sbFNu
YXBTdGF0ZTogaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyAiIDw8IGlzU2Nyb2xsU25hcEluUHJvZ3Jl
c3MoKSA8PCAiIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MgIiA8PCBpc1VzZXJTY3JvbGxJblByb2dy
ZXNzKCkpOworCisgICAgU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9yID0gZXhpc3RpbmdT
Y3JvbGxBbmltYXRvcigpOworICAgIGlmICghc2Nyb2xsQW5pbWF0b3IgfHwgaXNTY3JvbGxTbmFw
SW5Qcm9ncmVzcygpIHx8IGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2Nyb2xsQW5pbWF0b3ItPnJlc25hcEFmdGVyTGF5b3V0KCk7CisKKyAgICBjb25z
dCBhdXRvKiBpbmZvID0gc25hcE9mZnNldHNJbmZvKCk7CisgICAgaWYgKCFpbmZvKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKKyAg
ICBhdXRvIGNvcnJlY3RlZE9mZnNldCA9IGNvcnJlY3RTY3JvbGxPZmZzZXRGb3JTY3JvbGxTbmFw
cGluZyhjdXJyZW50T2Zmc2V0KTsKKwogICAgIGlmIChjb3JyZWN0ZWRPZmZzZXQgIT0gY3VycmVu
dE9mZnNldCkgewogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8
ICIgYWRqdXN0aW5nIG9mZnNldCBmcm9tICIgPDwgY3VycmVudE9mZnNldCA8PCAiIHRvICIgPDwg
Y29ycmVjdGVkT2Zmc2V0KTsKICAgICAgICAgYXV0byBwb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9u
RnJvbU9mZnNldChjb3JyZWN0ZWRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmgKaW5kZXggZmQzOTYzMzM4MGI5NDdhMjA1MGE3Yjg2ODBjNTc5OTBmNmQ3NWNi
Ni4uY2NiNzViOGEwYTM1NGI1NTM1YmU0MTRjZDQ0YmMzZDQ5YzFlYTUzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwog
CisgICAgU2Nyb2xsT2Zmc2V0IGNvcnJlY3RTY3JvbGxPZmZzZXRGb3JTY3JvbGxTbmFwcGluZyhj
b25zdCBTY3JvbGxPZmZzZXQmKSBjb25zdDsKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0KCk7
CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5p
bWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xs
QW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA4OTA4NDJkYzY2M2Y2Mzk5NTcyZjg5MzE0NTg5Y2Iy
NzI3M2Q5YjgyLi4wNGZhNDExMzg2NWJjNTY5MzQ1ODgzNjA4ZmVjYTRkMTZiZWQ1ZTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmgiCiAKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCi0jaW5j
bHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEu
aCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogCkBAIC01Nyw2ICs1NiwyMSBAQCBTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsK
ICAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRp
b24pOwogICAgICAgICAgICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOworICAg
ICAgICB9LAorICAgICAgICBbdGhpc10oKSB7CisgICAgICAgICAgICBpZiAobV9pblNjcm9sbEdl
c3R1cmUpIHsKKyAgICAgICAgICAgICAgICBtX2luU2Nyb2xsR2VzdHVyZSA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIHJlc25hcEFmdGVyTGF5b3V0KCk7CisKKyAgICAgICAgICAgICAgICBhdXRv
IGN1cnJlbnRPZmZzZXQgPSBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldCgpOworICAgICAg
ICAgICAgICAgIGF1dG8gY29ycmVjdGVkT2Zmc2V0ID0gbV9zY3JvbGxhYmxlQXJlYS5jb3JyZWN0
U2Nyb2xsT2Zmc2V0Rm9yU2Nyb2xsU25hcHBpbmcoY3VycmVudE9mZnNldCk7CisgICAgICAgICAg
ICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0gY29ycmVjdGVkT2Zmc2V0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKGNvcnJl
Y3RlZE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb3JyZWN0ZWRPZmZzZXQpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiB9CiAKQEAgLTcz
LDE2ICs4NywxOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxlV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogICAgIG1fa2luZXRpY0FuaW1hdGlv
bi0+c3RvcCgpOwogCiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIG1fa2luZXRp
Y0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5KGV2ZW50KTsKLQotICAgIGlmIChldmVu
dC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRp
b24tPnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVW
ZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9zY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIGlmIChldmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsK
LSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChtX2N1cnJlbnRQb3NpdGlvbiwgZXZlbnQuc3dp
cGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9z
Y3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKGV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgeworICAgICAgICBt
X2luU2Nyb2xsR2VzdHVyZSA9IHRydWU7CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBw
ZW5kVG9TY3JvbGxIaXN0b3J5KGV2ZW50KTsKKworICAgICAgICBpZiAoZXZlbnQuaXNFbmRPZk5v
bk1vbWVudHVtU2Nyb2xsKCkpIHsKKyAgICAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3Rh
cnQobV9jdXJyZW50UG9zaXRpb24sIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5
KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpLCBtX3Njcm9sbGFibGVB
cmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwo
KSkgeworICAgICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3Rvcnko
KTsKKyAgICAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQobV9jdXJyZW50UG9zaXRp
b24sIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Ny
b2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogCkBAIC0xNDEsNiAr
MTU4LDE2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxsUmVtb3ZlSG9yaXpvbnRh
bFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgbV9vdmVybGF5U2Nyb2xs
YmFyQW5pbWF0aW9uQ3VycmVudCA9IDA7CiB9CiAKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojppc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pblNjcm9s
bEdlc3R1cmUgfHwgU2Nyb2xsQW5pbWF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKTsKK30K
KworYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVz
cygpOworfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlT3ZlcmxheVNjcm9s
bGJhcnNPcGFjaXR5KCkKIHsKICAgICBpZiAobV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgJiYg
bV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uQ3VycmVudCAhPSBtX3ZlcnRpY2FsT3ZlcmxheVNj
cm9sbGJhci0+b3BhY2l0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAppbmRleCBlMDQ2YzUzMWJiODRjMmFj
ZmY1ZTg5NDY1NTZkZGMxMTI1Yzk4YWYzLi5lMjgxMGZlZWY1ZWM1M2E2NjNjYTUzMjdmM2JlZmE4
OTJjN2ZhYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Nj
cm9sbEFuaW1hdG9yR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKQEAgLTUzLDYgKzUzLDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxSZW1vdmVWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsK
ICAgICB2b2lkIHdpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIG92ZXJy
aWRlOwogCisgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAg
ICB2b2lkIG1vdXNlRW50ZXJlZENvbnRlbnRBcmVhKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtb3Vz
ZUV4aXRlZENvbnRlbnRBcmVhKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtb3VzZU1vdmVkSW5Db250
ZW50QXJlYSgpIG92ZXJyaWRlOwpAQCAtNzgsNiArODEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJs
ZSBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25DdXJyZW50IHsgMCB9OwogICAgIE1vbm90b25p
Y1RpbWUgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uU3RhcnRUaW1lOwogICAgIE1vbm90b25p
Y1RpbWUgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uRW5kVGltZTsKKyAgICBib29sIG1faW5T
Y3JvbGxHZXN0dXJlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436169</attachid>
            <date>2021-08-23 02:24:48 -0700</date>
            <delta_ts>2021-09-14 05:38:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229037-20210823102446.patch</filename>
            <type>text/plain</type>
            <size>16378</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRmMzBiNTYwZTY4Nzky
NjVkYzFhOTAzYWUzY2QxYjI4NTk0ZTA4My4uZDMwMGI0YzgyODdmYTM1ZDdkOWU2ZjUyNGJhMTg2
NDM1YjkzNmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA4LTIwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIENTUyBzY3Jv
bGwgc25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5IHdpdGggc21vb3RoIHNjcm9sbGluZyAoc3luYyBz
Y3JvbGxpbmcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjkwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggc2Nyb2xsIHNuYXBwaW5nIHdoZW4gc21vb3RoIHNjcm9sbGluZyBpcyBlbmFibGVkLCBh
bmQgbWFrZSBpdAorICAgICAgICBiZWhhdmUgaW4gYSBwcmVkaWN0YWJsZSB3YXkgd2hlbiBzY3Jv
bGxpbmcgd2l0aCB0b3VjaHBhZHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0
aWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZp
cmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNvcnJlY3RTY3JvbGxPZmZzZXRG
b3JTY3JvbGxTbmFwcGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YTo6cmVzbmFwQWZ0ZXJMYXlvdXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRv
ckdlbmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5k
bGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6
aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckdlbmVyaWM6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6CisKIDIwMjEtMDgtMTEg
IEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBO
b24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkIEF1Z3VzdCAyMDIxIGVkaXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5j
cHAKaW5kZXggNjllYjExMTRjMTgwMmVhNTE1OWQ4NGQ5OGI3ZjMxZmZlYTBjYzU5NC4uOGExMTgz
NWM0MTU4YThmNmNiNjdjMmQxNmRmMWQ1ZmUzMjgwNTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKQEAgLTkw
LDcgKzkwLDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCiAjZW5kaWYKICAgICAgICAgICAgIGF1
dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOwogICAgICAgICAgICAgc2Nyb2xs
aW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0sCisg
ICAgICAgIFtdKCkgeyB9KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IDIxOGRiYWEwZTVlNzNmMTIw
ZTY0YThiODgxYzc3ZDdiNzBiYWQxZDMuLjQyZjM2MGIwZTIwNGI4NTg4NWM4MjBhOGE1MzVjNTVk
NmExNjc4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCkBAIC0xMTIsOSArMTEyLDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25kcyB0aW1lRGVsdGEpCiAg
ICAgcmV0dXJuIG1fdmVsb2NpdHk7CiB9CiAKLVNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9s
bEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYgc2Nyb2xsRXh0ZW50c0Z1
bmN0aW9uLCBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hh
bmdlZEZ1bmN0aW9uKQorU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYyhTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiBzY3JvbGxFeHRlbnRzRnVuY3Rpb24sIE5vdGlm
eVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24s
IE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayYmIG5vdGlmeUFuaW1hdGlvblN0b3BwZWRG
dW5jdGlvbikKICAgICA6IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKFdURk1vdmUoc2Nyb2xsRXh0
ZW50c0Z1bmN0aW9uKSkKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RG
TW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCisgICAgLCBtX25vdGlmeUFuaW1h
dGlvblN0b3BwZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlv
bikpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiAjaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkKQEAgLTEyNiw3ICsxMjcsMTAgQEAgU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yzo6flNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYzo6c3RvcCgpCiB7Ci0gICAgbV9hbmltYXRpb25UaW1lci5zdG9wKCk7Cisg
ICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX2FuaW1hdGlv
blRpbWVyLnN0b3AoKTsKKyAgICAgICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24o
KTsKKyAgICB9CiB9CiAKIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6aXNBY3RpdmUoKSBj
b25zdApAQCAtMjI2LDE0ICsyMzAsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjph
bmltYXRpb25UaW1lckZpcmVkKCkKICAgICBpZiAobV92ZXJ0aWNhbERhdGEgJiYgIW1fdmVydGlj
YWxEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9sbChkZWx0YSkpCiAgICAgICAgIG1fdmVydGljYWxE
YXRhID0gc3RkOjpudWxsb3B0OwogCi0gICAgLy8gSWYgb25lIG9mIHRoZSBheGVzIGRpZG4ndCBm
aW5pc2ggaXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVlIGl0LgotICAgIGlmIChtX2hvcml6
b250YWxEYXRhIHx8IG1fdmVydGljYWxEYXRhKQotICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0
YXJ0T25lU2hvdChzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGEpKTsKLQogICAg
IGRvdWJsZSB4ID0gbV9ob3Jpem9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5w
b3NpdGlvbigpIDogbV9wb3NpdGlvbi54KCk7CiAgICAgZG91YmxlIHkgPSBtX3ZlcnRpY2FsRGF0
YSA/IG1fdmVydGljYWxEYXRhLnZhbHVlKCkucG9zaXRpb24oKSA6IG1fcG9zaXRpb24ueSgpOwog
ICAgIG1fcG9zaXRpb24gPSBGbG9hdFBvaW50KHgsIHkpOwogICAgIG1fbm90aWZ5UG9zaXRpb25D
aGFuZ2VkRnVuY3Rpb24oRmxvYXRQb2ludChtX3Bvc2l0aW9uKSk7CisKKyAgICAvLyBJZiBvbmUg
b2YgdGhlIGF4ZXMgZGlkbid0IGZpbmlzaCBpdHMgYW5pbWF0aW9uIHdlIG11c3QgY29udGludWUg
aXQuCisgICAgaWYgKG1faG9yaXpvbnRhbERhdGEgfHwgbV92ZXJ0aWNhbERhdGEpCisgICAgICAg
IG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVy
dmFsLCBkZWx0YSkpOworICAgIGVsc2UKKyAgICAgICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVk
RnVuY3Rpb24oKTsKIH0KIAogU2Vjb25kcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpkZWx0YVRv
TmV4dEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbktpbmV0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bktpbmV0aWMuaAppbmRleCBmYzRmYWIxZTlmNDMxYTM4Y2E3YWIxYzZlOTk2MmQ4Y2JjMWJjNmM1
Li5iYmNjODNjODY5Y2U0YTE4ZDQ0MjQ4NjkyZjhhZDcyYzhlZTE3NGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCkBAIC01OSw4ICs1
OSw5IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgdXNpbmcgU2Nyb2xsRXh0ZW50c0NhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRlbnRzKHZvaWQpPjsKICAgICB1c2luZyBOb3RpZnlQ
b3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChGbG9hdFBvaW50JiYp
PjsKKyAgICB1c2luZyBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQodm9pZCk+OwogCi0gICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxFeHRl
bnRzQ2FsbGJhY2smJiwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJik7CisgICAgU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiwgTm90aWZ5UG9zaXRp
b25DaGFuZ2VkQ2FsbGJhY2smJiwgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrJiYpOwog
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKIAogICAgIHZvaWQgYXBwZW5k
VG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpAQCAtNzcsNiArNzgs
NyBAQCBwcml2YXRlOgogCiAgICAgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrIG1fc2Nyb2xsRXh0ZW50
c0Z1bmN0aW9uOwogICAgIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrIG1fbm90aWZ5UG9z
aXRpb25DaGFuZ2VkRnVuY3Rpb247CisgICAgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNr
IG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uOwogCiAgICAgc3RkOjpvcHRpb25hbDxQ
ZXJBeGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNE
YXRhPiBtX3ZlcnRpY2FsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcAppbmRleCA5YWM0MTlmMzAxMTBjZTVjYjEwZjNhYjQyZWIzYjBlMzFmMjJjYmNjLi4w
YzNhMTEyNTNlYzU2NjM4OTcxOGQzYzc0ZjNmYjBjYzk0NmE5NGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0yMjksOCArMjI5LDEwIEBAIGJvb2wg
U2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiBlKQogICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKIAogICAgICAgICBPcHRpb25TZXQ8U2Nyb2xs
QmVoYXZpb3I+IGJlaGF2aW9yKFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcp
OwotICAgICAgICBpZiAoZS5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCisgICAgICAgIGlm
IChlLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgewogICAgICAgICAgICAgYmVoYXZpb3Iu
YWRkKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpOworICAgICAgICAgICAgYmVoYXZpb3Iu
cmVtb3ZlKFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpOworICAgICAgICB9
CiAKICAgICAgICAgaWYgKGRlbHRhWSkgewogICAgICAgICAgICAgaWYgKGUuZ3JhbnVsYXJpdHko
KSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7CkBAIC0zOTMsNiArMzk1LDE3IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikKICAg
ICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIH0KIAorYm9vbCBT
Y3JvbGxBbmltYXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG1fc2Nyb2xsQW5pbWF0aW9uLT5pc0FjdGl2ZSgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogRmxvYXRQb2ludCBTY3JvbGxB
bmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChjb25zdCBGbG9h
dFBvaW50JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCBtZXRob2QpCiB7
CiAgICAgaWYgKCFtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IGE0ZjM5ZDU2MWM2Mzk1MWY1MzEy
OWVmY2VmNTQyNTBlMTU5YTJiYWYuLjZiZWRhODFhZmZhMzEwODIxOWFjYzE2M2RiMmUxOTZhYTA0
ZTgzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtMTI4
LDcgKzEyOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VzZXJTY3JvbGxJblBy
b2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJi
ZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnRpY2FsU2Nyb2xs
YmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDk2N2UxMzI2YWJl
NWIzMDBhNzI3NmI0NGViOTg0YjE3OWFiNDM1NWIuLjlhZjJhMGQzZjI0M2I4NzFmNWZlYWMzMDI1
MDI5YmExMDQwNWE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAKQEAgLTUxMywyMiArNTEzLDEzIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldEN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluCiAgICAg
c2Nyb2xsQW5pbWF0b3IoKS5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWwsIGluZGV4KTsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6cmVz
bmFwQWZ0ZXJMYXlvdXQoKQorU2Nyb2xsT2Zmc2V0IFNjcm9sbGFibGVBcmVhOjpjb3JyZWN0U2Ny
b2xsT2Zmc2V0Rm9yU2Nyb2xsU25hcHBpbmcoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvZmZzZXQpIGNv
bnN0CiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAqdGhpcyA8
PCAiIHVwZGF0ZVNjcm9sbFNuYXBTdGF0ZTogaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyAiIDw8IGlz
U2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSA8PCAiIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MgIiA8PCBp
c1VzZXJTY3JvbGxJblByb2dyZXNzKCkpOwotCi0gICAgU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFu
aW1hdG9yID0gZXhpc3RpbmdTY3JvbGxBbmltYXRvcigpOwotICAgIGlmICghc2Nyb2xsQW5pbWF0
b3IgfHwgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIHx8IGlzVXNlclNjcm9sbEluUHJvZ3Jlc3Mo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2Nyb2xsQW5pbWF0b3ItPnJlc25hcEFmdGVyTGF5
b3V0KCk7CisgICAgYXV0byBjb3JyZWN0ZWRPZmZzZXQgPSBvZmZzZXQ7CiAKICAgICBjb25zdCBh
dXRvKiBpbmZvID0gc25hcE9mZnNldHNJbmZvKCk7CiAgICAgaWYgKCFpbmZvKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKLSAgICBh
dXRvIGNvcnJlY3RlZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQ7CisgICAgICAgIHJldHVybiBjb3Jy
ZWN0ZWRPZmZzZXQ7CiAKICAgICBpZiAoIWhvcml6b250YWxTY3JvbGxiYXIoKSB8fCBob3Jpem9u
dGFsU2Nyb2xsYmFyKCktPnByZXNzZWRQYXJ0KCkgPT0gU2Nyb2xsYmFyUGFydDo6Tm9QYXJ0KSB7
CiAgICAgICAgIGNvbnN0IGF1dG8mIGhvcml6b250YWwgPSBpbmZvLT5ob3Jpem9udGFsU25hcE9m
ZnNldHM7CkBAIC01NDQsNiArNTM1LDI2IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnJlc25hcEFm
dGVyTGF5b3V0KCkKICAgICAgICAgICAgIGNvcnJlY3RlZE9mZnNldC5zZXRZKHZlcnRpY2FsWyph
Y3RpdmVWZXJ0aWNhbEluZGV4XS5vZmZzZXQudG9JbnQoKSk7CiAgICAgfQogCisgICAgcmV0dXJu
IGNvcnJlY3RlZE9mZnNldDsKK30KKwordm9pZCBTY3JvbGxhYmxlQXJlYTo6cmVzbmFwQWZ0ZXJM
YXlvdXQoKQoreworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgKnRo
aXMgPDwgIiB1cGRhdGVTY3JvbGxTbmFwU3RhdGU6IGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgIiA8
PCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgPDwgIiBpc1VzZXJTY3JvbGxJblByb2dyZXNzICIg
PDwgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpKTsKKworICAgIFNjcm9sbEFuaW1hdG9yKiBzY3Jv
bGxBbmltYXRvciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKTsKKyAgICBpZiAoIXNjcm9sbEFu
aW1hdG9yIHx8IGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSB8fCBpc1VzZXJTY3JvbGxJblByb2dy
ZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNjcm9sbEFuaW1hdG9yLT5yZXNuYXBBZnRl
ckxheW91dCgpOworCisgICAgY29uc3QgYXV0byogaW5mbyA9IHNuYXBPZmZzZXRzSW5mbygpOwor
ICAgIGlmICghaW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjdXJyZW50T2Zmc2V0
ID0gc2Nyb2xsT2Zmc2V0KCk7CisgICAgYXV0byBjb3JyZWN0ZWRPZmZzZXQgPSBjb3JyZWN0U2Ny
b2xsT2Zmc2V0Rm9yU2Nyb2xsU25hcHBpbmcoY3VycmVudE9mZnNldCk7CisKICAgICBpZiAoY29y
cmVjdGVkT2Zmc2V0ICE9IGN1cnJlbnRPZmZzZXQpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiIGFkanVzdGluZyBvZmZzZXQgZnJvbSAiIDw8IGN1cnJl
bnRPZmZzZXQgPDwgIiB0byAiIDw8IGNvcnJlY3RlZE9mZnNldCk7CiAgICAgICAgIGF1dG8gcG9z
aXRpb24gPSBzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoY29ycmVjdGVkT2Zmc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGZkMzk2MzMzODBiOTQ3YTIw
NTBhN2I4NjgwYzU3OTkwZjZkNzVjYjYuLmNjYjc1YjhhMGEzNTRiNTUzNWJlNDE0Y2Q0NGJjM2Q0
OWMxZWE1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAt
OTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+KTsKIAorICAgIFNjcm9sbE9mZnNldCBjb3JyZWN0U2Nyb2xsT2Zm
c2V0Rm9yU2Nyb2xsU25hcHBpbmcoY29uc3QgU2Nyb2xsT2Zmc2V0JikgY29uc3Q7CiAgICAgdm9p
ZCByZXNuYXBBZnRlckxheW91dCgpOwogICAgIHZvaWQgZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmco
U2Nyb2xsYmFyT3JpZW50YXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggODkwODQyZGM2
NjNmNjM5OTU3MmY4OTMxNDU4OWNiMjcyNzNkOWI4Mi4uMDRmYTQxMTM4NjViYzU2OTM0NTg4MzYw
OGZlY2E0ZDE2YmVkNWU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApAQCAtMzIsNyArMzIsNiBAQAog
I2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yR2VuZXJpYy5oIgogCiAjaW5jbHVkZSAiU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5oIgotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvblNtb290aC5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKIApA
QCAtNTcsNiArNTYsMjEgQEAgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdl
bmVyaWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAgICAgICBbdGhpc10oRmxv
YXRQb2ludCYmIHBvc2l0aW9uKSB7CiAgICAgICAgICAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0
Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdU
Rk1vdmUocG9zaXRpb24pKTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXNdKCkgeworICAgICAg
ICAgICAgaWYgKG1faW5TY3JvbGxHZXN0dXJlKSB7CisgICAgICAgICAgICAgICAgbV9pblNjcm9s
bEdlc3R1cmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXNuYXBBZnRlckxheW91dCgpOwor
CisgICAgICAgICAgICAgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gbV9zY3JvbGxhYmxlQXJlYS5z
Y3JvbGxPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNvcnJlY3RlZE9mZnNldCA9IG1f
c2Nyb2xsYWJsZUFyZWEuY29ycmVjdFNjcm9sbE9mZnNldEZvclNjcm9sbFNuYXBwaW5nKGN1cnJl
bnRPZmZzZXQpOworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IGNvcnJlY3Rl
ZE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS5zY3Jv
bGxBbmltYXRvckVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvT2Zm
c2V0V2l0aEFuaW1hdGlvbihjb3JyZWN0ZWRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRp
b24oY29ycmVjdGVkT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0pOwogfQogCkBAIC03MywxNiArODcsMTkgQEAgYm9vbCBTY3JvbGxBbmltYXRvckdl
bmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkK
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKIAogI2lmIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKLSAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShl
dmVudCk7Ci0KLSAgICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKLSAg
ICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChtX2N1cnJlbnRQb3NpdGlvbiwgbV9raW5l
dGljQW5pbWF0aW9uLT5jb21wdXRlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9u
dGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5n
VG9Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJT
Y3JvbGxIaXN0b3J5KCk7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQobV9jdXJy
ZW50UG9zaXRpb24sIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jp
em9udGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKCkpIHsKKyAgICAgICAgbV9pblNjcm9sbEdlc3R1cmUgPSB0cnVlOworICAgICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShldmVudCk7CisKKyAgICAg
ICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAgICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBtX2tpbmV0aWNBbmlt
YXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3Jv
bGxiYXIoKSwgbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChldmVudC5pc1RyYW5zaXRp
b25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKKyAgICAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlv
bi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24t
PnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBldmVudC5zd2lwZVZlbG9jaXR5KCksIG1fc2Nyb2xs
YWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2Fs
U2Nyb2xsYmFyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9
CiAjZW5kaWYKIApAQCAtMTQxLDYgKzE1OCwxNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAg
ICAgICAgIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvbkN1cnJlbnQgPSAwOwogfQogCitib29s
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW5TY3JvbGxHZXN0dXJlIHx8IFNjcm9sbEFuaW1hdG9yOjppc1Njcm9s
bFNuYXBJblByb2dyZXNzKCk7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjppc1Nj
cm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6
OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKTsKK30KKwogdm9pZCBTY3JvbGxBbmltYXRvckdlbmVy
aWM6OnVwZGF0ZU92ZXJsYXlTY3JvbGxiYXJzT3BhY2l0eSgpCiB7CiAgICAgaWYgKG1fdmVydGlj
YWxPdmVybGF5U2Nyb2xsYmFyICYmIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvbkN1cnJlbnQg
IT0gbV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXItPm9wYWNpdHkoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgK
aW5kZXggZTA0NmM1MzFiYjg0YzJhY2ZmNWU4OTQ2NTU2ZGRjMTEyNWM5OGFmMy4uZTI4MTBmZWVm
NWVjNTNhNjYzY2E1MzI3ZjNiZWZhODkyYzdmYWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCkBAIC01Myw2
ICs1Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9s
bGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKIAorICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9n
cmVzcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygp
IGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCBtb3VzZUVudGVyZWRDb250ZW50QXJlYSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgbW91c2VFeGl0ZWRDb250ZW50QXJlYSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgbW91c2VNb3ZlZEluQ29udGVudEFyZWEoKSBvdmVycmlkZTsKQEAgLTc4LDYgKzgxLDcg
QEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uQ3VycmVu
dCB7IDAgfTsKICAgICBNb25vdG9uaWNUaW1lIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblN0
YXJ0VGltZTsKICAgICBNb25vdG9uaWNUaW1lIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvbkVu
ZFRpbWU7CisgICAgYm9vbCBtX2luU2Nyb2xsR2VzdHVyZSB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438123</attachid>
            <date>2021-09-14 05:39:39 -0700</date>
            <delta_ts>2021-09-16 04:39:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229037-20210914133938.patch</filename>
            <type>text/plain</type>
            <size>38020</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRmMzBiNTYwZTY4Nzky
NjVkYzFhOTAzYWUzY2QxYjI4NTk0ZTA4My4uMjY4MjFjZjYzNzViOTE5MWViNDY0NjFjMGI1ZjU3
ODU1OGFmZTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA4LTIwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBDU1Mgc2Nyb2xsIHNu
YXBwaW5nIGludGVyYWN0cyBiYWRseSB3aXRoIHNtb290aCBzY3JvbGxpbmcgKHN5bmMgc2Nyb2xs
aW5nKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IHNjcm9sbCBzbmFwcGluZyB3aGVuIHNtb290aCBzY3JvbGxpbmcgaXMgZW5hYmxlZCwgYW5kIG1h
a2UgaXQKKyAgICAgICAgYmVoYXZlIGluIGEgcHJlZGljdGFibGUgd2F5IHdoZW4gc2Nyb2xsaW5n
IHdpdGggdG91Y2hwYWRzIG9uIEdUSy4KKworICAgICAgICBUZXN0OiBmYXN0L3Njcm9sbGluZy9n
dGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24uaHRtbAorCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6Y29ycmVjdFNjcm9sbE9mZnNl
dEZvclNjcm9sbFNuYXBwaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVB
cmVhOjpyZXNuYXBBZnRlckxheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1h
dG9yR2VuZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojppc1VzZXJTY3JvbGxJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaDoKKwogMjAyMS0wOC0x
MSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQgQXVndXN0IDIwMjEgZWRpdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBhNDI4YTdhZjBmNTU2NWJhYzI5MTZjMWM3Zjk2YjBhOGUzNmIwMTFkLi4wNjI3OTQ1ZWQ1
N2YwODUwZWJmZTI0OGNmODQyNmI4ODE1Nzc0MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTA5LTE0ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXSBDU1Mgc2Nyb2xsIHNuYXBwaW5nIGludGVyYWN0cyBiYWRseSB3aXRoIHNtb290aCBzY3Jv
bGxpbmcgKHN5bmMgc2Nyb2xsaW5nKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGNvZGUgdG8gYmUgYWJsZSB0byBzZW5kIHByZWNpc2Ugc3ludGhl
dGljIG1vdXNlLXdoZWVsIGV2ZW50cyBpbiBHVEsuCisKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVu
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZVdoZWVsRXZlbnQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRXaGVlbEV2ZW50c0FyZVByZWNpc2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaDoK
KwogMjAyMS0wOC0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjgwODc1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCmlu
ZGV4IDY5ZWIxMTE0YzE4MDJlYTUxNTlkODRkOThiN2YzMWZmZWEwY2M1OTQuLjhhMTE4MzVjNDE1
OGE4ZjZjYjY3YzJkMTZkZjFkNWZlMzI4MDUwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCkBAIC05MCw3ICs5
MCw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVu
c3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKQogI2VuZGlmCiAgICAgICAgICAgICBhdXRvIHVw
ZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICAgICAgICAgIHNjcm9sbGluZ05v
ZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0pOworICAgICAgICB9LAorICAgICAg
ICBbXSgpIHsgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAppbmRleCAyMThkYmFhMGU1ZTczZjEyMGU2NGE4
Yjg4MWM3N2Q3YjcwYmFkMWQzLi40MmYzNjBiMGUyMDRiODU4ODVjODIwYThhNTM1YzU1ZDZhMTY3
ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmNwcApAQCAtMTEyLDkgKzExMiwxMCBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQogICAgIHJl
dHVybiBtX3ZlbG9jaXR5OwogfQogCi1TY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmlt
YXRpb25LaW5ldGljKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4dGVudHNGdW5jdGlv
biwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRG
dW5jdGlvbikKK1Njcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMo
U2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYgc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uLCBOb3RpZnlQb3Np
dGlvbkNoYW5nZWRDYWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uLCBOb3Rp
ZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2smJiBub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rp
b24pCiAgICAgOiBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbihXVEZNb3ZlKHNjcm9sbEV4dGVudHNG
dW5jdGlvbikpCiAgICAgLCBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKFdURk1vdmUo
bm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pKQorICAgICwgbV9ub3RpZnlBbmltYXRpb25T
dG9wcGVkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24pKQog
ICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxB
bmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVkKQogewogI2lmIFVTRShHTElCX0VW
RU5UX0xPT1ApCkBAIC0xMjYsNyArMTI3LDEwIEBAIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6On5T
Y3JvbGxBbmltYXRpb25LaW5ldGljKCkgPSBkZWZhdWx0OwogCiB2b2lkIFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM6OnN0b3AoKQogewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOworICAgIGlm
IChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV9hbmltYXRpb25UaW1l
ci5zdG9wKCk7CisgICAgICAgIG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uKCk7Cisg
ICAgfQogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmlzQWN0aXZlKCkgY29uc3QK
QEAgLTIyNiwxNCArMjMwLDE2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0
aW9uVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fdmVydGljYWxEYXRhICYmICFtX3ZlcnRpY2FsRGF0
YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZGVsdGEpKQogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9
IHN0ZDo6bnVsbG9wdDsKIAotICAgIC8vIElmIG9uZSBvZiB0aGUgYXhlcyBkaWRuJ3QgZmluaXNo
IGl0cyBhbmltYXRpb24gd2UgbXVzdCBjb250aW51ZSBpdC4KLSAgICBpZiAobV9ob3Jpem9udGFs
RGF0YSB8fCBtX3ZlcnRpY2FsRGF0YSkKLSAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9u
ZVNob3Qoc3RkOjptYXgobWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhKSk7Ci0KICAgICBkb3Vi
bGUgeCA9IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6b250YWxEYXRhLnZhbHVlKCkucG9zaXRp
b24oKSA6IG1fcG9zaXRpb24ueCgpOwogICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBt
X3ZlcnRpY2FsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBtX3Bvc2l0aW9uLnkoKTsKICAgICBt
X3Bvc2l0aW9uID0gRmxvYXRQb2ludCh4LCB5KTsKICAgICBtX25vdGlmeVBvc2l0aW9uQ2hhbmdl
ZEZ1bmN0aW9uKEZsb2F0UG9pbnQobV9wb3NpdGlvbikpOworCisgICAgLy8gSWYgb25lIG9mIHRo
ZSBheGVzIGRpZG4ndCBmaW5pc2ggaXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVlIGl0Lgor
ICAgIGlmIChtX2hvcml6b250YWxEYXRhIHx8IG1fdmVydGljYWxEYXRhKQorICAgICAgICBtX2Fu
aW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRlcnZhbCwg
ZGVsdGEpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0
aW9uKCk7CiB9CiAKIFNlY29uZHMgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6ZGVsdGFUb05leHRG
cmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmgKaW5kZXggZmM0ZmFiMWU5ZjQzMWEzOGNhN2FiMWM2ZTk5NjJkOGNiYzFiYzZjNS4uYmJj
YzgzYzg2OWNlNGExOGQ0NDI0ODY5MmY4YWQ3MmM4ZWUxNzRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtNTksOCArNTksOSBA
QCBwcml2YXRlOgogcHVibGljOgogICAgIHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248U2Nyb2xsRXh0ZW50cyh2b2lkKT47CiAgICAgdXNpbmcgTm90aWZ5UG9zaXRp
b25DaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47Cisg
ICAgdXNpbmcgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKHZvaWQpPjsKIAotICAgIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0Nh
bGxiYWNrJiYsIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYpOworICAgIFNjcm9sbEFu
aW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYsIE5vdGlmeVBvc2l0aW9uQ2hh
bmdlZENhbGxiYWNrJiYsIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayYmKTsKICAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAKICAgICB2b2lkIGFwcGVuZFRvU2Ny
b2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKQEAgLTc3LDYgKzc4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5j
dGlvbjsKICAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9u
Q2hhbmdlZEZ1bmN0aW9uOworICAgIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayBtX25v
dGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbjsKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhp
c0RhdGE+IG1faG9yaXpvbnRhbERhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4g
bV92ZXJ0aWNhbERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHAKaW5kZXggOWFjNDE5ZjMwMTEwY2U1Y2IxMGYzYWI0MmViM2IwZTMxZjIyY2JjYy4uNzMzYzcy
OTAzNzI2NjEwYzFiY2JlZDI1NTUzODIzNzU5NDZjOTU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMTE5LDggKzExOSw5IEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uCiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJy
ZW50UG9zaXRpb24oKTsKICAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBjbGFtcGluZyA9PSBT
Y3JvbGxDbGFtcGluZzo6Q2xhbXBlZCA/IHBvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihzY3Jv
bGxhYmxlQXJlYSgpLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxhYmxlQXJlYSgpLm1h
eGltdW1TY3JvbGxQb3NpdGlvbigpKSA6IHBvc2l0aW9uOwogCi0gICAgLy8gRklYTUU6IEluIHNv
bWUgY2FzZXMgb24gaU9TIHRoZSBTY3JvbGxhYmxlQXJlYSBwb3NpdGlvbiBpcyBvdXQgb2Ygc3lu
YyB3aXRoIHRoZSBTY3JvbGxBbmltYXRvciBwb3NpdGlvbi4KLSAgICAvLyBXaGVuIHRoZXNlIGNh
c2VzIGFyZSBmaXhlZCwgdGhpcyBleHRyYSBjaGVjayBhZ2FpbnN0IHRoZSBTY3JvbGxhYmxlQXJl
YSBwb3NpdGlvbiBjYW4gYmUgcmVtb3ZlZC4KKyAgICAvLyBDU1Mgc2Nyb2xsIHNuYXBwaW5nIGNh
biBtZWFuIHdlIGVuZCB1cCB0cnlpbmcgdG8gc2V0IGEgc2Nyb2xsIHBvc2l0aW9uIHRoYXQgd2Un
cmUgYWxyZWFkeSBhdC4gUHJldmlvdXNseQorICAgIC8vIHRoaXMgd2FzIGhlcmUgZHVlIHRvIGFu
IGlPUyBpc3N1ZSB3aGVyZSB0aGUgU2Nyb2xsYWJsZUFyZWEgcG9zaXRpb24gaXMgb3V0IG9mIHN5
bmMgd2l0aCB0aGUKKyAgICAvLyBTY3JvbGxBbmltYXRvclBvc2l0aW9uLgogICAgIGlmIChhZGp1
c3RlZFBvc2l0aW9uID09IGN1cnJlbnRQb3NpdGlvbiAmJiBhZGp1c3RlZFBvc2l0aW9uID09IHNj
cm9sbGFibGVBcmVhKCkuc2Nyb2xsUG9zaXRpb24oKSAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3Jv
bGxPcmlnaW5DaGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjI1LDE0ICsy
MjYsMTkgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgaWYgKChkZWx0YVggPCAwICYmIG1heEZvcndhcmRTY3Jv
bGxEZWx0YS53aWR0aCgpID4gMCkKICAgICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgbWF4QmFja3dh
cmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkKICAgICAgICAgfHwgKGRlbHRhWSA8IDAgJiYgbWF4
Rm9yd2FyZFNjcm9sbERlbHRhLmhlaWdodCgpID4gMCkKLSAgICAgICAgfHwgKGRlbHRhWSA+IDAg
JiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS5oZWlnaHQoKSA+IDApKSB7CisgICAgICAgIHx8IChk
ZWx0YVkgPiAwICYmIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAwKQorICAgICAg
ICB8fCBtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKSkgewogICAgICAgICBoYW5k
bGVkID0gdHJ1ZTsKIAogICAgICAgICBPcHRpb25TZXQ8U2Nyb2xsQmVoYXZpb3I+IGJlaGF2aW9y
KFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpOwotICAgICAgICBpZiAoZS5o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCisgICAgICAgIGJvb2wgd2lsbFNuYXAgPSBtX3Nj
cm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKTsKKyAgICAgICAgaWYgKGUuaGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcygpKSB7CiAgICAgICAgICAgICBiZWhhdmlvci5hZGQoU2Nyb2xsQmVo
YXZpb3I6Ok5ldmVyQW5pbWF0ZSk7CisgICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU2Nyb2xs
QmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgICAgICAgICB3aWxsU25hcCA9
IGZhbHNlOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKGRlbHRhWSkgeworICAgICAgICBpZiAo
ZGVsdGFZIHx8ICh3aWxsU25hcCAmJiBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxPZmZz
ZXQoKS55KCkpKSB7CiAgICAgICAgICAgICBpZiAoZS5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5
UGFnZVdoZWVsRXZlbnQpIHsKICAgICAgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZ
IDwgMDsKICAgICAgICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEo
bV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlSGVpZ2h0KCkpOwpAQCAtMjQyLDcgKzI0OCw3IEBAIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBlKQogICAgICAgICAgICAgc2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBp
eGVsLCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVksIGJlaGF2aW9yKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAgICAgaWYgKGRlbHRhWCB8
fCAod2lsbFNuYXAgJiYgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueCgp
KSkgewogICAgICAgICAgICAgaWYgKGUuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVl
bEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7CiAg
ICAgICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKG1fc2Nyb2xs
YWJsZUFyZWEudmlzaWJsZVdpZHRoKCkpOwpAQCAtMzkzLDYgKzM5OSwxNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopCiAgICAgbV9z
Y3JvbGxBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKK2Jvb2wgU2Nyb2xs
QW5pbWF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIGlmICghbV9z
Y3JvbGxDb250cm9sbGVyLnVzZXNTY3JvbGxTbmFwKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtX3Njcm9sbEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0
b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoY29uc3QgRmxvYXRQb2lu
dCYgb2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QgbWV0aG9kKQogewogICAg
IGlmICghbV9zY3JvbGxDb250cm9sbGVyLnVzZXNTY3JvbGxTbmFwKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCBhNGYzOWQ1NjFjNjM5NTFmNTMxMjllZmNl
ZjU0MjUwZTE1OWEyYmFmLi42YmVkYTgxYWZmYTMxMDgyMTlhY2MxNjNkYjJlMTk2YWEwNGU4M2Jh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTEyOCw3ICsx
MjgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFu
ZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBT
dHJpbmcgaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJ0aWNhbFNjcm9sbGJhclN0
YXRlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA5NjdlMTMyNmFiZTViMzAw
YTcyNzZiNDRlYjk4NGIxNzlhYjQzNTViLi45YWYyYTBkM2YyNDNiODcxZjVmZWFjMzAyNTAyOWJh
MTA0MDVhNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CkBAIC01MTMsMjIgKzUxMywxMyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRDdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbgogICAgIHNjcm9s
bEFuaW1hdG9yKCkuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCBpbmRleCk7CiB9CiAKLXZvaWQgU2Nyb2xsYWJsZUFyZWE6OnJlc25hcEFm
dGVyTGF5b3V0KCkKK1Njcm9sbE9mZnNldCBTY3JvbGxhYmxlQXJlYTo6Y29ycmVjdFNjcm9sbE9m
ZnNldEZvclNjcm9sbFNuYXBwaW5nKGNvbnN0IFNjcm9sbE9mZnNldCYgb2Zmc2V0KSBjb25zdAog
ewotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgKnRoaXMgPDwgIiB1
cGRhdGVTY3JvbGxTbmFwU3RhdGU6IGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgIiA8PCBpc1Njcm9s
bFNuYXBJblByb2dyZXNzKCkgPDwgIiBpc1VzZXJTY3JvbGxJblByb2dyZXNzICIgPDwgaXNVc2Vy
U2Nyb2xsSW5Qcm9ncmVzcygpKTsKLQotICAgIFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmltYXRv
ciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKTsKLSAgICBpZiAoIXNjcm9sbEFuaW1hdG9yIHx8
IGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSB8fCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNjcm9sbEFuaW1hdG9yLT5yZXNuYXBBZnRlckxheW91dCgp
OworICAgIGF1dG8gY29ycmVjdGVkT2Zmc2V0ID0gb2Zmc2V0OwogCiAgICAgY29uc3QgYXV0byog
aW5mbyA9IHNuYXBPZmZzZXRzSW5mbygpOwogICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgYXV0byBj
b3JyZWN0ZWRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0OworICAgICAgICByZXR1cm4gY29ycmVjdGVk
T2Zmc2V0OwogCiAgICAgaWYgKCFob3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgaG9yaXpvbnRhbFNj
cm9sbGJhcigpLT5wcmVzc2VkUGFydCgpID09IFNjcm9sbGJhclBhcnQ6Ok5vUGFydCkgewogICAg
ICAgICBjb25zdCBhdXRvJiBob3Jpem9udGFsID0gaW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRz
OwpAQCAtNTQ0LDYgKzUzNSwyNiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpyZXNuYXBBZnRlckxh
eW91dCgpCiAgICAgICAgICAgICBjb3JyZWN0ZWRPZmZzZXQuc2V0WSh2ZXJ0aWNhbFsqYWN0aXZl
VmVydGljYWxJbmRleF0ub2Zmc2V0LnRvSW50KCkpOwogICAgIH0KIAorICAgIHJldHVybiBjb3Jy
ZWN0ZWRPZmZzZXQ7Cit9CisKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnJlc25hcEFmdGVyTGF5b3V0
KCkKK3sKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICp0aGlzIDw8
ICIgdXBkYXRlU2Nyb2xsU25hcFN0YXRlOiBpc1Njcm9sbFNuYXBJblByb2dyZXNzICIgPDwgaXNT
Y3JvbGxTbmFwSW5Qcm9ncmVzcygpIDw8ICIgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyAiIDw8IGlz
VXNlclNjcm9sbEluUHJvZ3Jlc3MoKSk7CisKKyAgICBTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5p
bWF0b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCk7CisgICAgaWYgKCFzY3JvbGxBbmltYXRv
ciB8fCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgfHwgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxBbmltYXRvci0+cmVzbmFwQWZ0ZXJMYXlv
dXQoKTsKKworICAgIGNvbnN0IGF1dG8qIGluZm8gPSBzbmFwT2Zmc2V0c0luZm8oKTsKKyAgICBp
ZiAoIWluZm8pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVudE9mZnNldCA9IHNj
cm9sbE9mZnNldCgpOworICAgIGF1dG8gY29ycmVjdGVkT2Zmc2V0ID0gY29ycmVjdFNjcm9sbE9m
ZnNldEZvclNjcm9sbFNuYXBwaW5nKGN1cnJlbnRPZmZzZXQpOworCiAgICAgaWYgKGNvcnJlY3Rl
ZE9mZnNldCAhPSBjdXJyZW50T2Zmc2V0KSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxTbmFwLCBzdHJlYW0gPDwgIiBhZGp1c3Rpbmcgb2Zmc2V0IGZyb20gIiA8PCBjdXJyZW50T2Zm
c2V0IDw8ICIgdG8gIiA8PCBjb3JyZWN0ZWRPZmZzZXQpOwogICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KGNvcnJlY3RlZE9mZnNldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBmZDM5NjMzMzgwYjk0N2EyMDUwYTdi
ODY4MGM1Nzk5MGY2ZDc1Y2I2Li5jY2I3NWI4YTBhMzU0YjU1MzViZTQxNGNkNDRiYzNkNDljMWVh
NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPik7CiAKKyAgICBTY3JvbGxPZmZzZXQgY29ycmVjdFNjcm9sbE9mZnNldEZv
clNjcm9sbFNuYXBwaW5nKGNvbnN0IFNjcm9sbE9mZnNldCYpIGNvbnN0OwogICAgIHZvaWQgcmVz
bmFwQWZ0ZXJMYXlvdXQoKTsKICAgICB2b2lkIGRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNjcm9s
bGJhck9yaWVudGF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDg5MDg0MmRjNjYzZjYz
OTk1NzJmODkzMTQ1ODljYjI3MjczZDliODIuLjA0ZmE0MTEzODY1YmM1NjkzNDU4ODM2MDhmZWNh
NGQxNmJlZDVlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
U2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJTY3JvbGxBbmltYXRvckdlbmVyaWMuaCIKIAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlv
bktpbmV0aWMuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNpbmNsdWRl
ICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAKQEAgLTU3
LDYgKzU2LDIxIEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgW3RoaXNdKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikgewogICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRpb24tPnNldEN1cnJl
bnRQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3Zl
KHBvc2l0aW9uKSk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzXSgpIHsKKyAgICAgICAgICAg
IGlmIChtX2luU2Nyb2xsR2VzdHVyZSkgeworICAgICAgICAgICAgICAgIG1faW5TY3JvbGxHZXN0
dXJlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmVzbmFwQWZ0ZXJMYXlvdXQoKTsKKworICAg
ICAgICAgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgYXV0byBjb3JyZWN0ZWRPZmZzZXQgPSBtX3Njcm9s
bGFibGVBcmVhLmNvcnJlY3RTY3JvbGxPZmZzZXRGb3JTY3JvbGxTbmFwcGluZyhjdXJyZW50T2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudE9mZnNldCAhPSBjb3JyZWN0ZWRPZmZz
ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5p
bWF0b3JFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb09mZnNldFdp
dGhBbmltYXRpb24oY29ycmVjdGVkT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNv
cnJlY3RlZE9mZnNldCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKIH0KIApAQCAtNzMsMTYgKzg3LDE5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAg
bV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCi0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3RvcnkoZXZlbnQp
OwotCi0gICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAg
IG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQobV9jdXJyZW50UG9zaXRpb24sIG1fa2luZXRpY0Fu
aW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNj
cm9sbGJhcigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9t
ZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xs
SGlzdG9yeSgpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KG1fY3VycmVudFBv
c2l0aW9uLCBldmVudC5zd2lwZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRh
bFNjcm9sbGJhcigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cygpKSB7CisgICAgICAgIG1faW5TY3JvbGxHZXN0dXJlID0gdHJ1ZTsKKyAgICAgICAgbV9raW5l
dGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3RvcnkoZXZlbnQpOworCisgICAgICAgIGlm
IChldmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgeworICAgICAgICAgICAgbV9raW5l
dGljQW5pbWF0aW9uLT5zdGFydChtX2N1cnJlbnRQb3NpdGlvbiwgbV9raW5ldGljQW5pbWF0aW9u
LT5jb21wdXRlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFy
KCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5n
VG9Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNs
ZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFy
dChtX2N1cnJlbnRQb3NpdGlvbiwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9s
bGJhcigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogI2Vu
ZGlmCiAKQEAgLTE0MSw2ICsxNTgsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6Ondp
bGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAg
ICBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25DdXJyZW50ID0gMDsKIH0KIAorYm9vbCBTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2luU2Nyb2xsR2VzdHVyZSB8fCBTY3JvbGxBbmltYXRvcjo6aXNTY3JvbGxTbmFw
SW5Qcm9ncmVzcygpOworfQorCitib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aXNTY3JvbGxT
bmFwSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjppc1Nj
cm9sbFNuYXBJblByb2dyZXNzKCk7Cit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp1
cGRhdGVPdmVybGF5U2Nyb2xsYmFyc09wYWNpdHkoKQogewogICAgIGlmIChtX3ZlcnRpY2FsT3Zl
cmxheVNjcm9sbGJhciAmJiBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25DdXJyZW50ICE9IG1f
dmVydGljYWxPdmVybGF5U2Nyb2xsYmFyLT5vcGFjaXR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmluZGV4
IGUwNDZjNTMxYmI4NGMyYWNmZjVlODk0NjU1NmRkYzExMjVjOThhZjMuLmUyODEwZmVlZjVlYzUz
YTY2M2NhNTMyN2YzYmVmYTg5MmM3ZmFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApAQCAtNTMsNiArNTMs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9s
bGJhciopIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKikgb3ZlcnJpZGU7CiAKKyAgICBib29sIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIHZvaWQgbW91c2VFbnRlcmVkQ29udGVudEFyZWEoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1vdXNlRXhpdGVkQ29udGVudEFyZWEoKSBvdmVycmlkZTsKICAgICB2b2lk
IG1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCkgb3ZlcnJpZGU7CkBAIC03OCw2ICs4MSw3IEBAIHBy
aXZhdGU6CiAgICAgZG91YmxlIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvbkN1cnJlbnQgeyAw
IH07CiAgICAgTW9ub3RvbmljVGltZSBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25TdGFydFRp
bWU7CiAgICAgTW9ub3RvbmljVGltZSBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25FbmRUaW1l
OworICAgIGJvb2wgbV9pblNjcm9sbEdlc3R1cmUgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2Vi
V2hlZWxFdmVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5o
CmluZGV4IGY0OGRjMDA3NTViNjg0N2YyYzEzZTVmN2RhYzY1MmMyYTkxZjY2ZWEuLmYyZjM5Nzlm
Y2FjOWRmZDk3ZDBlMGVhZDYwMGZlMzVlYjhkZWZkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIE5h
dGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZlbnQqKTsKICAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KEdk
a0V2ZW50KiwgV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIG1vbWVu
dHVtUGhhc2UpOwogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZlbnQqLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcyk7Ci0g
ICAgTmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdo
ZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBtb21l
bnR1bVBoYXNlKTsKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KEdka0V2ZW50KiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYldoZWVsRXZl
bnQ6OlBoYXNlIG1vbWVudHVtUGhhc2UsIGJvb2wgaGFzUHJlY2lzZURlbHRhcyA9IGZhbHNlKTsK
ICNlbGlmIFVTRShMSUJXUEUpCiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lu
cHV0X2F4aXNfZXZlbnQqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgV2ViV2hlZWxFdmVudDo6
UGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIG1vbWVudHVtUGhhc2UpOwogI2VsaWYgUExBVEZP
Uk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldo
ZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVs
RXZlbnRHdGsuY3BwCmluZGV4IDNhNjliZTA0NDg4MWExMTc1YWE4YmM5MTY3MzllYmQxMDQ1ZjYw
MTkuLmJmNDFkMTU3N2I2NGMxNDZlYjc1NzQwMWZkY2JiMGIzNmI5OTA4YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKQEAg
LTQ5LDggKzQ5LDggQEAgTmF0aXZlV2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChH
ZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW4KIHsKIH0KIAotTmF0aXZlV2Vi
V2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCAqZXZlbnQsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIHBoYXNlLCBXZWJX
aGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlKQotICAgIDogV2ViV2hlZWxFdmVudChXZWJF
dmVudDo6V2hlZWwsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEsIHdoZWVsVGlja3Ms
IHBoYXNlLCBtb21lbnR1bVBoYXNlLCBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxF
dmVudCwgZmFsc2UsIHsgfSwgV2FsbFRpbWU6Om5vdygpKQorTmF0aXZlV2ViV2hlZWxFdmVudDo6
TmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCAqZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHdoZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIHBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQ
aGFzZSBtb21lbnR1bVBoYXNlLCBib29sIGhhc1ByZWNpc2VEZWx0YXMpCisgICAgOiBXZWJXaGVl
bEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YSwg
d2hlZWxUaWNrcywgcGhhc2UsIG1vbWVudHVtUGhhc2UsIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50LCBoYXNQcmVjaXNlRGVsdGFzLCB7IH0sIFdhbGxUaW1lOjpub3coKSkK
ICAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQgPyBnZGtfZXZlbnRfY29weShldmVudCkgOiBudWxs
cHRyKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBjNGE5ODMzZTI4YmI1MGQxZjg3NWFhMWM1YWQwNTdj
ZWUwMWQyODFhLi5kODNlNGEyMTMxNjNlNjAxNzExOTFhODU3MDdlZjVjNGI0M2U1NjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcApAQCAtMjg0LDYgKzI4NCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlIHsKICAgICBUb3VjaEV2ZW50c01hcCB0b3VjaEV2ZW50czsKICAgICBJbnRTaXplIGNvbnRl
bnRzU2l6ZTsKICAgICBzdGQ6Om9wdGlvbmFsPE1vdGlvbkV2ZW50PiBsYXN0TW90aW9uRXZlbnQ7
CisgICAgYm9vbCBtb3VzZVdoZWVsSXNQcmVjaXNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzQmxh
bms7CiAgICAgYm9vbCBzaG91bGROb3RpZnlGb2N1c0V2ZW50cyB7IHRydWUgfTsKIApAQCAtMjk5
NCwxMCArMjk5NSwxNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZVdoZWVsRXZl
bnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdAogCiAgICAgRmxvYXRTaXpl
IHdoZWVsVGlja3MoZGVsdGFYLCBkZWx0YVkpOwogICAgIEZsb2F0U2l6ZSBkZWx0YSh3aGVlbFRp
Y2tzKTsKLSAgICBkZWx0YS5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhl
bHNQZXJMaW5lU3RlcCgpKSk7CisgICAgaWYgKCFwcml2LT5tb3VzZVdoZWVsSXNQcmVjaXNlKQor
ICAgICAgICBkZWx0YS5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQ
ZXJMaW5lU3RlcCgpKSk7CiAKICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQo
TmF0aXZlV2ViV2hlZWxFdmVudChjb25zdF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCB7IHgsIHkg
fSwgd2lkZ2V0Um9vdENvb3JkcyhHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgeCwgeSksCi0gICAg
ICAgIGRlbHRhLCB3aGVlbFRpY2tzLCB0b1dlYktpdFdoZWVsRXZlbnRQaGFzZShwaGFzZSksIHRv
V2ViS2l0V2hlZWxFdmVudFBoYXNlKG1vbWVudHVtUGhhc2UpKSk7CisgICAgICAgIGRlbHRhLCB3
aGVlbFRpY2tzLCB0b1dlYktpdFdoZWVsRXZlbnRQaGFzZShwaGFzZSksIHRvV2ViS2l0V2hlZWxF
dmVudFBoYXNlKG1vbWVudHVtUGhhc2UpLCBwcml2LT5tb3VzZVdoZWVsSXNQcmVjaXNlKSk7Cit9
CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRXaGVlbEV2ZW50c0FyZVByZWNpc2UoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBib29sIGFyZVByZWNpc2UpCit7CisgICAgd2ViVmll
d0Jhc2UtPnByaXYtPm1vdXNlV2hlZWxJc1ByZWNpc2UgPSBhcmVQcmVjaXNlOwogfQogCiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlTWFrZUJsYW5rKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgYm9vbCBtYWtlQmxhbmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oCmluZGV4IGY1ZDIzMzc4YTYw
NmRkOGNhNzQxYWExYmY3YjJkYmZhNGE1MzM2M2YuLmNlMjIyNjVkMGRmNmQzZTk2M2VkNGYzODg5
OWRmZjFkOGE5ZTUyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oCkBAIC00NSwzICs0NSw1IEBA
IFdLX0VYUE9SVCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKiwgS2V5RXZlbnRUCiAKIGVudW0gY2xhc3MgV2hlZWxFdmVudFBoYXNlIHsg
Tm9QaGFzZSwgQmVnYW4sIENoYW5nZWQsIEVuZGVkLCBDYW5jZWxsZWQsIE1heUJlZ2luIH07CiBX
S19FWFBPUlQgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVXaGVlbEV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKiwgZG91YmxlIGRlbHRhWCwgZG91YmxlIGRlbHRhWSwgaW50IHgsIGludCB5
LCBXaGVlbEV2ZW50UGhhc2UsIFdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlKTsKK1dLX0VY
UE9SVCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0V2hlZWxFdmVudHNBcmVQcmVjaXNlKFdlYktp
dFdlYlZpZXdCYXNlKiwgYm9vbCk7CisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA5ZDhiN2QyOWEwMzk5OWQzYmQzOGFjNTY2MTk2NWEyZDcxNDFm
MGViLi5kZTM0YjEwNzlmYzBjM2U3NGEyYWVlNzYwODI3NjI3MTNhYjFlOGY1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMjEtMDktMTQgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIENTUyBzY3JvbGwgc25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5IHdpdGggc21vb3RoIHNjcm9s
bGluZyAoc3luYyBzY3JvbGxpbmcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQVBJIHRvIGJlIGFibGUgdG8gc2VuZCBwcmVjaXNlIG1vdXNlLXdo
ZWVsIGV2ZW50cyBpbiBFdmVudFNlbmRlci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
RXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2V0TW91c2VXaGVlbElzUHJl
Y2lzZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZl
bnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OnRvV2ViS2l0R0xpYkFQSSk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6On5FdmVudFNlbmRlclByb3h5KToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0TW91c2VXaGVlbElzUHJlY2lzZSk6CisKIDIw
MjEtMDgtMTEgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV0gSGFuZGxlIGVzY2FwZSBrZXkgaW4gd3BlS2V5U3ltRm9yS2V5UmVmCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDE4ZmE4OTJlNDI3YzAwMGNkMzU3ZmUx
MWQ4NDVlYzIwOWNmMjExZDMuLjE4YzNmZGQyNDM2ODMxYjdmYTQ1NzMzMGZlMGVkZmJhOThiMDE3
OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC02Miw2
ICs2Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUg
eSwgV0tTdHJpbmdSZWYgcG9pbnRlclR5cGUgPSBudWxscHRyKTsKICAgICB2b2lkIG1vdXNlU2Ny
b2xsQnkoaW50IHgsIGludCB5KTsKICAgICB2b2lkIG1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhpbnQgeCwgaW50IHksIGludCBwaGFzZSwgaW50IG1vbWVudHVtKTsKKyNp
ZiBQTEFURk9STShHVEspCisgICAgdm9pZCBzZXRNb3VzZVdoZWVsSXNQcmVjaXNlKGJvb2wpOwor
I2VuZGlmCiAgICAgdm9pZCBjb250aW51b3VzTW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHksIGJv
b2wgcGFnZWQpOwogCiAgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCmluZGV4IGM5MDIz
ZTEyN2ZjNWUzNGM4NTk3NWRlNzQyMjI2NjhmMGUwZDk1OTMuLjNlZmUyZTQ2MTQzMmRkYTY0NjVi
YTY2YTI5ZDg4ZjcyZTllMmEwNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLmlkbApAQCAtMzgsNiArMzgsNyBAQCBpbnRlcmZhY2UgRXZlbnRTZW5kaW5n
Q29udHJvbGxlciB7CiAgICAgdW5kZWZpbmVkIG1vdXNlRm9yY2VDaGFuZ2VkKGRvdWJsZSBmb3Jj
ZSk7CiAgICAgdW5kZWZpbmVkIG1vdXNlU2Nyb2xsQnkobG9uZyB4LCBsb25nIHkpOwogICAgIHVu
ZGVmaW5lZCBtb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMobG9uZyB4LCBs
b25nIHksIERPTVN0cmluZyBwaGFzZSwgRE9NU3RyaW5nIG1vbWVudHVtKTsKKyAgICB1bmRlZmlu
ZWQgc2V0TW91c2VXaGVlbElzUHJlY2lzZShib29sZWFuIGlzUHJlY2lzZSk7CiAgICAgdW5kZWZp
bmVkIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGxvbmcgeCwgbG9uZyB5LCBvcHRpb25hbCBib29s
ZWFuIHBhZ2VkKTsKICAgICBvYmplY3QgY29udGV4dENsaWNrKCk7CiAgICAgdW5kZWZpbmVkIHNj
aGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDJhZTk2NzhkNzc3YzI4OTc5NTY4MzEwZTRlYTRkYjQzMTRlOTM0ZDIuLjhkODc3MDRi
Nzk1MGFjZWQ0NTAyZTdkZTE3ZTYxNTVlYzgzOGE3YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcApAQCAtMzc3LDYgKzM3NywxNSBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhpbnQgeCwgaW50CiAg
ICAgcG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGJvZHkpOwogfQogCit2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnNldE1vdXNlV2hlZWxJc1ByZWNpc2UoYm9vbCBpc1ByZWNpc2Up
Cit7CisgICAgV0tCdW5kbGVQYWdlRm9yY2VSZXBhaW50KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wYWdlKCktPnBhZ2UoKSk7IC8vIFRyaWdnZXJzIGEgc2Nyb2xsaW5nIHRyZWUgY29tbWl0
LgorICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsK
KyAgICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJTZXRNb3VzZVdoZWVsSXNQcmVjaXNl
Iik7CisgICAgc2V0VmFsdWUoYm9keSwgIklzUHJlY2lzZSIsIGlzUHJlY2lzZSk7CisgICAgcG9z
dFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGJvZHkpOworfQorCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSwgYm9vbCBw
YWdlZCkKIHsKICAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVh
dGUoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4IDllYWVmNmFhYjcxYTk2MWMw
NGQ1MDE3YmZmMTExMzFhMWI1NzRmOGUuLmUzYTMxZGFmM2JiMjAxOTkyMTcyNTY2ZTdkMGRhYzMx
ZWI5YTZmYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBAIC01OCw2ICs1OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1vdXNlRm9yY2VDaGFuZ2VkKGRvdWJsZSBmb3JjZSk7CiAgICAg
dm9pZCBtb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSk7CiAgICAgdm9pZCBtb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoaW50IHgsIGludCB5LCBKU1N0cmluZ1JlZiBwaGFz
ZSwgSlNTdHJpbmdSZWYgbW9tZW50dW0pOworICAgIHZvaWQgc2V0TW91c2VXaGVlbElzUHJlY2lz
ZShib29sKTsKICAgICB2b2lkIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSwg
Ym9vbCBwYWdlZCk7CiAgICAgSlNWYWx1ZVJlZiBjb250ZXh0Q2xpY2soKTsKICAgICB2b2lkIGxl
YXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAppbmRleCA0MDcxNzFmYWNiYTZhYWQ2Y2YwYjRiNGE2NDE3NDg4NGMzM2Y1
MTg5Li4xNDQzODQ2ZmY5ZGEyYzJhZTcxNjRhM2U2ZmM0Y2UxNTBjYjI2MWNkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTYzNSw2ICsxNjM1LDE0IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoc3ViTWVzc2FnZU5hbWUsICJTZXRNb3VzZVdoZWVsSXNQcmVjaXNlIikpIHsKKyAgICAg
ICAgICAgIGF1dG8gaXNQcmVjaXNlID0gYm9vbGVhblZhbHVlKGRpY3Rpb25hcnksICJJc1ByZWNp
c2UiKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+c2V0TW91c2VXaGVlbElzUHJl
Y2lzZShpc1ByZWNpc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggYWZlODlk
MjU5OWZlZmZjNzI5YjIyZGU0ZTFkNmMzNzYyYWQ0ZWUwMy4uNDk5YjVlMzM4MWRmYTlkNGVmMjNi
YjFmYzUwMWY3MjU0NTlmMjY2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTcwLDggKzcwLDE0IEBAIEV2ZW50U2VuZGVy
UHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKQog
ewogfQogCitzdGF0aWMgaW5saW5lIFdlYktpdFdlYlZpZXdCYXNlKiB0b1dlYktpdEdMaWJBUEko
UGxhdGZvcm1XS1ZpZXcgdmlldykKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXZWJLaXRXZWJW
aWV3QmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViS2l0V2ViVmlld0Jhc2UqPih2aWV3
KSk7Cit9CisKIEV2ZW50U2VuZGVyUHJveHk6On5FdmVudFNlbmRlclByb3h5KCkKIHsKKyAgICB3
ZWJraXRXZWJWaWV3QmFzZVNldFdoZWVsRXZlbnRzQXJlUHJlY2lzZSh0b1dlYktpdEdMaWJBUEko
bV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpLCBmYWxzZSk7
CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBldmVudFNlbmRlckJ1dHRvblRvR0RLQnV0dG9uKHVuc2ln
bmVkIGJ1dHRvbikKQEAgLTIzMiwxMSArMjM4LDYgQEAgc3RhdGljIGludCBnZXRHREtLZXlTeW1G
b3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQqIG0K
ICAgICByZXR1cm4gZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKHN0YXRpY19jYXN0PGd1aW50MzI+KGJ1
ZmZlci5nZXQoKVswXSkpOwogfQogCi1zdGF0aWMgaW5saW5lIFdlYktpdFdlYlZpZXdCYXNlKiB0
b1dlYktpdEdMaWJBUEkoUGxhdGZvcm1XS1ZpZXcgdmlldykKLXsKLSAgICByZXR1cm4gY29uc3Rf
Y2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViS2l0V2Vi
Vmlld0Jhc2UqPih2aWV3KSk7Ci19Ci0KIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihX
S1N0cmluZ1JlZiBrZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMsIHVuc2lnbmVk
IGxvY2F0aW9uKQogewogICAgIGd1aW50IG1vZGlmaWVycyA9IHdlYmtpdE1vZGlmaWVyc1RvR0RL
TW9kaWZpZXJzKHdrTW9kaWZpZXJzKTsKQEAgLTM0OCw2ICszNDksMTEgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoaW50IGhv
cml6b250YWwsIGkKICAgICAgICAgaG9yaXpvbnRhbCwgdmVydGljYWwsIG1fcG9zaXRpb24ueCwg
bV9wb3NpdGlvbi55LCBldmVudFBoYXNlLCBldmVudE1vbWVudHVtUGhhc2UpOwogfQogCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnNldE1vdXNlV2hlZWxJc1ByZWNpc2UoYm9vbCBpc1ByZWNpc2Up
Cit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRXaGVlbEV2ZW50c0FyZVByZWNpc2UodG9XZWJL
aXRHTGliQVBJKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
KSwgaXNQcmVjaXNlKTsKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChp
bnQgbWlsbGlzZWNvbmRzKQogewogICAgIG1fdGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmQ2ZmIyOTZhMmI1MmEzMzFhMzhiODM2ODVhODc5YzllZjE1Y2NjYy4uNDIwNjdk
YTFhMGY4N2E3Yjk2MWJhNDk2YmYxYzA5ZjE4NTA3OWI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDIxLTA5LTE0ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXSBDU1Mgc2Nyb2xsIHNuYXBwaW5nIGludGVyYWN0cyBiYWRseSB3aXRoIHNtb290aCBzY3Jv
bGxpbmcgKHN5bmMgc2Nyb2xsaW5nKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgR1RLLW9ubHkgdGVzdCB0byB2ZXJpZnkgQ1NTIHNjcm9sbCBz
bmFwcGluZyBhbmQga2luZXRpYy90b3VjaHBhZAorICAgICAgICBzY3JvbGxpbmcgZG9uJ3QgY29u
ZmxpY3QuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL2d0ay91c2VyLXNjcm9sbC1zbmFwcGluZy1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2d0ay91c2VyLXNjcm9sbC1zbmFwcGlu
Zy1pbnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9uczoKKwogMjAyMS0wOC0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIENoZXJyeS1waWNrIEFOR0xFOiBSZXZpc2UgV2ViR0wncyBzaGFk
ZXJTb3VyY2UgdmFsaWRhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzE1NjI0OTc0NjJlZGVh
YzQyZTcwNGVhOTA3MzAyODdlN2ZhNTM2NS4uMTE5MTQ4MjU0MTlmMzM3Y2I4ODNkYTlmYmYwM2E5
NWUyY2I2NDYxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC01OSw2ICs1OSw3IEBAIGZhc3QvZXZl
bnRzL3dhdGNob3MgWyBTa2lwIF0KIGZhc3QvZXZlbnRzL3BvaW50ZXIvaW9zIFsgU2tpcCBdCiBm
YXN0L2V2ZW50cy90b3VjaC9pb3MgWyBTa2lwIF0KIGZhc3QvaGlzdG9yeS9pb3MgWyBTa2lwIF0K
K2Zhc3Qvc2Nyb2xsaW5nL2d0ayBbIFNraXAgXQogZmFzdC9zY3JvbGxpbmcvaW9zIFsgU2tpcCBd
CiBmYXN0L3Njcm9sbGluZy9tYWMgWyBTa2lwIF0KIGZhc3Qvc2Nyb2xsaW5nL2lwYWQgWyBTa2lw
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2d0ay91c2VyLXNjcm9s
bC1zbmFwcGluZy1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA3YWE5ZWYwNzU0NTkzNmIzZjg0MGRjZmU1YmRmMDQxNzFmODg5MmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ndGsvdXNlci1zY3Jv
bGwtc25hcHBpbmctaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1BB
U1MgU2Nyb2xsIGRvd253YXJkcyBieSAyNSBwaXhlbHMKK1BBU1MgU2Nyb2xsIGRvd253YXJkcyBi
eSBhbm90aGVyIDI1IHBpeGVscworUEFTUyBFbmQgc2Nyb2xsIHNuYXBzIGJhY2sgdG8gdG9wCitQ
QVNTIFNjcm9sbCBkb3dud2FyZHMgYnkgMjAwIHBpeGVscworUEFTUyBFbmQgc2Nyb2xsIHNob3Vs
ZCBzbmFwIHRvIG5leHQgZWxlbWVudAorUEFTUyBLaW5ldGljIHNjcm9sbCB0byBlbmQgb2YgZG9j
dW1lbnQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ndGsvdXNlci1zY3JvbGwt
c25hcHBpbmctaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2d0
ay91c2VyLXNjcm9sbC1zbmFwcGluZy1pbnRlcmFjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5OWQ0
YzlhNDMyMWY4MTQxNjExNTk0MDBjZmVmMWViNjg2NzRmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJh
Y3Rpb24uaHRtbApAQCAtMCwwICsxLDEyOSBAQAorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1
c2VUaHJlYWRlZFNjcm9sbGluZz1mYWxzZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+CisKKzxodG1s
PgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICA8dGl0bGU+Q1NTIHNjcm9sbCBzbmFwcGluZyBzaG91bGQgbm90IGNv
bmZsaWN0IHdpdGggdXNlciBzY3JvbGxpbmc8L3RpdGxlPgorICA8c3R5bGU+CisgICAgaHRtbCB7
CisgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTsKKyAgICB9CisKKyAgICBib2R5
IHsKKyAgICAgIG1hcmdpbjogMDsKKyAgICB9CisKKyAgICBkaXYgeworICAgICAgd2lkdGg6IDEw
MCU7CisgICAgICBoZWlnaHQ6IDI1MHB4OworICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0
OworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2PjwvZGl2PgorICA8
ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2Pgor
ICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2
PgorICA8ZGl2PjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KK3ZhciBleHBlY3RlZFNjcm9sbFRv
cCA9IDA7Cit2YXIgdGVzdHNQYXNzZWQgPSAwOwordmFyIHRlc3REZXNjcmlwdGlvbjsKKworZnVu
Y3Rpb24gc3RhcnRTY3JvbGwoc3RhcnR4LCBzdGFydHksIGRlbHRhWCwgZGVsdGFZKQoreworICAg
IGV2ZW50U2VuZGVyLnNldE1vdXNlV2hlZWxJc1ByZWNpc2UodHJ1ZSk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnR4LCBzdGFydHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAiYmVnYW4iLCAibm9uZSIpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygt
ZGVsdGFYLCAtZGVsdGFZLCAiY2hhbmdlZCIsICJub25lIik7Cit9CisKK2Z1bmN0aW9uIGNvbnRp
bnVlU2Nyb2xsKGRlbHRhWCwgZGVsdGFZKQoreworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtZGVsdGFYLCAtZGVsdGFZLCAiY2hhbmdlZCIs
ICJub25lIik7Cit9CisKK2Z1bmN0aW9uIGVuZFNjcm9sbChkZWx0YVgsIGRlbHRhWSwga2luZXRp
YykKK3sKKyAgICBpZiAoIWtpbmV0aWMpCisgICAgICAgIGV2ZW50U2VuZGVyLnNldE1vdXNlV2hl
ZWxJc1ByZWNpc2UoZmFsc2UpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygtZGVsdGFYLCAtZGVsdGFZLCAiZW5kZWQiLCAibm9uZSIpOwor
fQorCitmdW5jdGlvbiB0cmlnZ2VyTmV4dFRlc3QoKSB7CisgICAgaWYgKHRlc3RzUGFzc2VkKQor
ICAgICAgICBkZWJ1ZygiUEFTUyAiICsgdGVzdERlc2NyaXB0aW9uKTsKKworICAgIHN3aXRjaCAo
dGVzdHNQYXNzZWQpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIHRlc3REZXNjcmlwdGlvbiA9ICJT
Y3JvbGwgZG93bndhcmRzIGJ5IDI1IHBpeGVscyIKKyAgICAgICAgZXhwZWN0ZWRTY3JvbGxUb3Ag
PSAyNTsKKyAgICAgICAgc3RhcnRTY3JvbGwoNTAsIDUwLCAwLCAyNSk7CisgICAgICAgIHJldHVy
bjsKKworICAgIGNhc2UgMToKKyAgICAgICAgdGVzdERlc2NyaXB0aW9uID0gIlNjcm9sbCBkb3du
d2FyZHMgYnkgYW5vdGhlciAyNSBwaXhlbHMiCisgICAgICAgIGV4cGVjdGVkU2Nyb2xsVG9wID0g
NTA7CisgICAgICAgIGNvbnRpbnVlU2Nyb2xsKDAsIDI1KTsKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2FzZSAyOgorICAgICAgICB0ZXN0RGVzY3JpcHRpb24gPSAiRW5kIHNjcm9sbCBzbmFwcyBi
YWNrIHRvIHRvcCIKKyAgICAgICAgZXhwZWN0ZWRTY3JvbGxUb3AgPSAwOworICAgICAgICBlbmRT
Y3JvbGwoMCwgMCwgZmFsc2UpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIDM6CisgICAg
ICAgIHRlc3REZXNjcmlwdGlvbiA9ICJTY3JvbGwgZG93bndhcmRzIGJ5IDIwMCBwaXhlbHMiCisg
ICAgICAgIGV4cGVjdGVkU2Nyb2xsVG9wID0gMjAwOworICAgICAgICBzdGFydFNjcm9sbCg1MCwg
NTAsIDAsIDIwMCk7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgNDoKKyAgICAgICAgdGVz
dERlc2NyaXB0aW9uID0gIkVuZCBzY3JvbGwgc2hvdWxkIHNuYXAgdG8gbmV4dCBlbGVtZW50Igor
ICAgICAgICBleHBlY3RlZFNjcm9sbFRvcCA9IDI1MDsKKyAgICAgICAgZW5kU2Nyb2xsKDAsIDAs
IGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSA1OgorICAgICAgICB0ZXN0RGVz
Y3JpcHRpb24gPSAiS2luZXRpYyBzY3JvbGwgdG8gZW5kIG9mIGRvY3VtZW50IgorICAgICAgICBl
eHBlY3RlZFNjcm9sbFRvcCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsSGVpZ2h0
IC0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5jbGllbnRIZWlnaHQ7CisgICAgICAgIHN0YXJ0
U2Nyb2xsKDUwLCA1MCwgMCwgMTAwKTsKKyAgICAgICAgZW5kU2Nyb2xsKDAsIDIwMCwgdHJ1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwor
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCisgICAgcmV0dXJuOworfQorCitmdW5jdGlv
biBzY3JvbGxFdmVudENhbGxiYWNrKCkgeworICAgIGlmIChkb2N1bWVudC5zY3JvbGxpbmdFbGVt
ZW50LnNjcm9sbFRvcCA9PSBleHBlY3RlZFNjcm9sbFRvcCkgeworICAgICAgICArK3Rlc3RzUGFz
c2VkOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0cmlnZ2Vy
TmV4dFRlc3QoKTsKKyAgICB9Cit9CisKKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Ny
b2xsIiwgc2Nyb2xsRXZlbnRDYWxsYmFjaywgZmFsc2UpOworCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgIHRyaWdnZXJOZXh0VGVzdCgpOworfQorPC9zY3JpcHQ+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI4YjI1
ZDZmOGJhZjU5NzhjNTg0MGVmZTA3MjJlNjE2MGY1NTcyZTAuLmJkYWM4YmJhNDRkMDRjNzM4NWNk
N2FkNTg2MmYzMDAwZTI0MzgyMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xOSw2ICsxOSw3IEBACiAjIFBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9y
aWVzLgogYWNjZXNzaWJpbGl0eS9ndGsgWyBQYXNzIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9ndGsg
WyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL2d0ayBbIFBhc3MgXQogc3dpcGUgWyBQYXNzIF0KIAog
aWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9mbGV4Ym94LWxheW91dC0wMDEuaHRtIFsgUGFzcyBd
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438337</attachid>
            <date>2021-09-16 04:39:25 -0700</date>
            <delta_ts>2021-10-06 02:29:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229037-20210916123923.patch</filename>
            <type>text/plain</type>
            <size>38980</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRmMzBiNTYwZTY4Nzky
NjVkYzFhOTAzYWUzY2QxYjI4NTk0ZTA4My4uMjY4MjFjZjYzNzViOTE5MWViNDY0NjFjMGI1ZjU3
ODU1OGFmZTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA4LTIwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBDU1Mgc2Nyb2xsIHNu
YXBwaW5nIGludGVyYWN0cyBiYWRseSB3aXRoIHNtb290aCBzY3JvbGxpbmcgKHN5bmMgc2Nyb2xs
aW5nKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IHNjcm9sbCBzbmFwcGluZyB3aGVuIHNtb290aCBzY3JvbGxpbmcgaXMgZW5hYmxlZCwgYW5kIG1h
a2UgaXQKKyAgICAgICAgYmVoYXZlIGluIGEgcHJlZGljdGFibGUgd2F5IHdoZW4gc2Nyb2xsaW5n
IHdpdGggdG91Y2hwYWRzIG9uIEdUSy4KKworICAgICAgICBUZXN0OiBmYXN0L3Njcm9sbGluZy9n
dGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24uaHRtbAorCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6Y29ycmVjdFNjcm9sbE9mZnNl
dEZvclNjcm9sbFNuYXBwaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVB
cmVhOjpyZXNuYXBBZnRlckxheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1h
dG9yR2VuZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojppc1VzZXJTY3JvbGxJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaDoKKwogMjAyMS0wOC0x
MSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQgQXVndXN0IDIwMjEgZWRpdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBhNDI4YTdhZjBmNTU2NWJhYzI5MTZjMWM3Zjk2YjBhOGUzNmIwMTFkLi4wNjI3OTQ1ZWQ1
N2YwODUwZWJmZTI0OGNmODQyNmI4ODE1Nzc0MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTA5LTE0ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXSBDU1Mgc2Nyb2xsIHNuYXBwaW5nIGludGVyYWN0cyBiYWRseSB3aXRoIHNtb290aCBzY3Jv
bGxpbmcgKHN5bmMgc2Nyb2xsaW5nKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGNvZGUgdG8gYmUgYWJsZSB0byBzZW5kIHByZWNpc2Ugc3ludGhl
dGljIG1vdXNlLXdoZWVsIGV2ZW50cyBpbiBHVEsuCisKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVu
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZVdoZWVsRXZlbnQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRXaGVlbEV2ZW50c0FyZVByZWNpc2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaDoK
KwogMjAyMS0wOC0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjgwODc1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCmlu
ZGV4IDY5ZWIxMTE0YzE4MDJlYTUxNTlkODRkOThiN2YzMWZmZWEwY2M1OTQuLjhhMTE4MzVjNDE1
OGE4ZjZjYjY3YzJkMTZkZjFkNWZlMzI4MDUwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCkBAIC05MCw3ICs5
MCw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVu
c3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKQogI2VuZGlmCiAgICAgICAgICAgICBhdXRvIHVw
ZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICAgICAgICAgIHNjcm9sbGluZ05v
ZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0pOworICAgICAgICB9LAorICAgICAg
ICBbXSgpIHsgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAppbmRleCAyMThkYmFhMGU1ZTczZjEyMGU2NGE4
Yjg4MWM3N2Q3YjcwYmFkMWQzLi40MmYzNjBiMGUyMDRiODU4ODVjODIwYThhNTM1YzU1ZDZhMTY3
ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmNwcApAQCAtMTEyLDkgKzExMiwxMCBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQogICAgIHJl
dHVybiBtX3ZlbG9jaXR5OwogfQogCi1TY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmlt
YXRpb25LaW5ldGljKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4dGVudHNGdW5jdGlv
biwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRG
dW5jdGlvbikKK1Njcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMo
U2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYgc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uLCBOb3RpZnlQb3Np
dGlvbkNoYW5nZWRDYWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uLCBOb3Rp
ZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2smJiBub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rp
b24pCiAgICAgOiBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbihXVEZNb3ZlKHNjcm9sbEV4dGVudHNG
dW5jdGlvbikpCiAgICAgLCBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKFdURk1vdmUo
bm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pKQorICAgICwgbV9ub3RpZnlBbmltYXRpb25T
dG9wcGVkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24pKQog
ICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxB
bmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVkKQogewogI2lmIFVTRShHTElCX0VW
RU5UX0xPT1ApCkBAIC0xMjYsNyArMTI3LDEwIEBAIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6On5T
Y3JvbGxBbmltYXRpb25LaW5ldGljKCkgPSBkZWZhdWx0OwogCiB2b2lkIFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM6OnN0b3AoKQogewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOworICAgIGlm
IChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV9hbmltYXRpb25UaW1l
ci5zdG9wKCk7CisgICAgICAgIG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uKCk7Cisg
ICAgfQogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmlzQWN0aXZlKCkgY29uc3QK
QEAgLTIyNiwxNCArMjMwLDE2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0
aW9uVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fdmVydGljYWxEYXRhICYmICFtX3ZlcnRpY2FsRGF0
YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZGVsdGEpKQogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9
IHN0ZDo6bnVsbG9wdDsKIAotICAgIC8vIElmIG9uZSBvZiB0aGUgYXhlcyBkaWRuJ3QgZmluaXNo
IGl0cyBhbmltYXRpb24gd2UgbXVzdCBjb250aW51ZSBpdC4KLSAgICBpZiAobV9ob3Jpem9udGFs
RGF0YSB8fCBtX3ZlcnRpY2FsRGF0YSkKLSAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9u
ZVNob3Qoc3RkOjptYXgobWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhKSk7Ci0KICAgICBkb3Vi
bGUgeCA9IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6b250YWxEYXRhLnZhbHVlKCkucG9zaXRp
b24oKSA6IG1fcG9zaXRpb24ueCgpOwogICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBt
X3ZlcnRpY2FsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBtX3Bvc2l0aW9uLnkoKTsKICAgICBt
X3Bvc2l0aW9uID0gRmxvYXRQb2ludCh4LCB5KTsKICAgICBtX25vdGlmeVBvc2l0aW9uQ2hhbmdl
ZEZ1bmN0aW9uKEZsb2F0UG9pbnQobV9wb3NpdGlvbikpOworCisgICAgLy8gSWYgb25lIG9mIHRo
ZSBheGVzIGRpZG4ndCBmaW5pc2ggaXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVlIGl0Lgor
ICAgIGlmIChtX2hvcml6b250YWxEYXRhIHx8IG1fdmVydGljYWxEYXRhKQorICAgICAgICBtX2Fu
aW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRlcnZhbCwg
ZGVsdGEpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0
aW9uKCk7CiB9CiAKIFNlY29uZHMgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6ZGVsdGFUb05leHRG
cmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmgKaW5kZXggZmM0ZmFiMWU5ZjQzMWEzOGNhN2FiMWM2ZTk5NjJkOGNiYzFiYzZjNS4uYmJj
YzgzYzg2OWNlNGExOGQ0NDI0ODY5MmY4YWQ3MmM4ZWUxNzRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtNTksOCArNTksOSBA
QCBwcml2YXRlOgogcHVibGljOgogICAgIHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248U2Nyb2xsRXh0ZW50cyh2b2lkKT47CiAgICAgdXNpbmcgTm90aWZ5UG9zaXRp
b25DaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47Cisg
ICAgdXNpbmcgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKHZvaWQpPjsKIAotICAgIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0Nh
bGxiYWNrJiYsIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYpOworICAgIFNjcm9sbEFu
aW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYsIE5vdGlmeVBvc2l0aW9uQ2hh
bmdlZENhbGxiYWNrJiYsIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayYmKTsKICAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAKICAgICB2b2lkIGFwcGVuZFRvU2Ny
b2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKQEAgLTc3LDYgKzc4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5j
dGlvbjsKICAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9u
Q2hhbmdlZEZ1bmN0aW9uOworICAgIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayBtX25v
dGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbjsKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhp
c0RhdGE+IG1faG9yaXpvbnRhbERhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4g
bV92ZXJ0aWNhbERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHAKaW5kZXggOWFjNDE5ZjMwMTEwY2U1Y2IxMGYzYWI0MmViM2IwZTMxZjIyY2JjYy4uNzMzYzcy
OTAzNzI2NjEwYzFiY2JlZDI1NTUzODIzNzU5NDZjOTU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMTE5LDggKzExOSw5IEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uCiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJy
ZW50UG9zaXRpb24oKTsKICAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBjbGFtcGluZyA9PSBT
Y3JvbGxDbGFtcGluZzo6Q2xhbXBlZCA/IHBvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihzY3Jv
bGxhYmxlQXJlYSgpLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxhYmxlQXJlYSgpLm1h
eGltdW1TY3JvbGxQb3NpdGlvbigpKSA6IHBvc2l0aW9uOwogCi0gICAgLy8gRklYTUU6IEluIHNv
bWUgY2FzZXMgb24gaU9TIHRoZSBTY3JvbGxhYmxlQXJlYSBwb3NpdGlvbiBpcyBvdXQgb2Ygc3lu
YyB3aXRoIHRoZSBTY3JvbGxBbmltYXRvciBwb3NpdGlvbi4KLSAgICAvLyBXaGVuIHRoZXNlIGNh
c2VzIGFyZSBmaXhlZCwgdGhpcyBleHRyYSBjaGVjayBhZ2FpbnN0IHRoZSBTY3JvbGxhYmxlQXJl
YSBwb3NpdGlvbiBjYW4gYmUgcmVtb3ZlZC4KKyAgICAvLyBDU1Mgc2Nyb2xsIHNuYXBwaW5nIGNh
biBtZWFuIHdlIGVuZCB1cCB0cnlpbmcgdG8gc2V0IGEgc2Nyb2xsIHBvc2l0aW9uIHRoYXQgd2Un
cmUgYWxyZWFkeSBhdC4gUHJldmlvdXNseQorICAgIC8vIHRoaXMgd2FzIGhlcmUgZHVlIHRvIGFu
IGlPUyBpc3N1ZSB3aGVyZSB0aGUgU2Nyb2xsYWJsZUFyZWEgcG9zaXRpb24gaXMgb3V0IG9mIHN5
bmMgd2l0aCB0aGUKKyAgICAvLyBTY3JvbGxBbmltYXRvclBvc2l0aW9uLgogICAgIGlmIChhZGp1
c3RlZFBvc2l0aW9uID09IGN1cnJlbnRQb3NpdGlvbiAmJiBhZGp1c3RlZFBvc2l0aW9uID09IHNj
cm9sbGFibGVBcmVhKCkuc2Nyb2xsUG9zaXRpb24oKSAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3Jv
bGxPcmlnaW5DaGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjI1LDE0ICsy
MjYsMTkgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgaWYgKChkZWx0YVggPCAwICYmIG1heEZvcndhcmRTY3Jv
bGxEZWx0YS53aWR0aCgpID4gMCkKICAgICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgbWF4QmFja3dh
cmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkKICAgICAgICAgfHwgKGRlbHRhWSA8IDAgJiYgbWF4
Rm9yd2FyZFNjcm9sbERlbHRhLmhlaWdodCgpID4gMCkKLSAgICAgICAgfHwgKGRlbHRhWSA+IDAg
JiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS5oZWlnaHQoKSA+IDApKSB7CisgICAgICAgIHx8IChk
ZWx0YVkgPiAwICYmIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAwKQorICAgICAg
ICB8fCBtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKSkgewogICAgICAgICBoYW5k
bGVkID0gdHJ1ZTsKIAogICAgICAgICBPcHRpb25TZXQ8U2Nyb2xsQmVoYXZpb3I+IGJlaGF2aW9y
KFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpOwotICAgICAgICBpZiAoZS5o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCisgICAgICAgIGJvb2wgd2lsbFNuYXAgPSBtX3Nj
cm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKTsKKyAgICAgICAgaWYgKGUuaGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcygpKSB7CiAgICAgICAgICAgICBiZWhhdmlvci5hZGQoU2Nyb2xsQmVo
YXZpb3I6Ok5ldmVyQW5pbWF0ZSk7CisgICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU2Nyb2xs
QmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgICAgICAgICB3aWxsU25hcCA9
IGZhbHNlOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKGRlbHRhWSkgeworICAgICAgICBpZiAo
ZGVsdGFZIHx8ICh3aWxsU25hcCAmJiBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxPZmZz
ZXQoKS55KCkpKSB7CiAgICAgICAgICAgICBpZiAoZS5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5
UGFnZVdoZWVsRXZlbnQpIHsKICAgICAgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZ
IDwgMDsKICAgICAgICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEo
bV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlSGVpZ2h0KCkpOwpAQCAtMjQyLDcgKzI0OCw3IEBAIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBlKQogICAgICAgICAgICAgc2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBp
eGVsLCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVksIGJlaGF2aW9yKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAgICAgaWYgKGRlbHRhWCB8
fCAod2lsbFNuYXAgJiYgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueCgp
KSkgewogICAgICAgICAgICAgaWYgKGUuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVl
bEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7CiAg
ICAgICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKG1fc2Nyb2xs
YWJsZUFyZWEudmlzaWJsZVdpZHRoKCkpOwpAQCAtMzkzLDYgKzM5OSwxNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopCiAgICAgbV9z
Y3JvbGxBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKK2Jvb2wgU2Nyb2xs
QW5pbWF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIGlmICghbV9z
Y3JvbGxDb250cm9sbGVyLnVzZXNTY3JvbGxTbmFwKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtX3Njcm9sbEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0
b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoY29uc3QgRmxvYXRQb2lu
dCYgb2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QgbWV0aG9kKQogewogICAg
IGlmICghbV9zY3JvbGxDb250cm9sbGVyLnVzZXNTY3JvbGxTbmFwKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCBhNGYzOWQ1NjFjNjM5NTFmNTMxMjllZmNl
ZjU0MjUwZTE1OWEyYmFmLi42YmVkYTgxYWZmYTMxMDgyMTlhY2MxNjNkYjJlMTk2YWEwNGU4M2Jh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTEyOCw3ICsx
MjgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFu
ZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBT
dHJpbmcgaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJ0aWNhbFNjcm9sbGJhclN0
YXRlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA5NjdlMTMyNmFiZTViMzAw
YTcyNzZiNDRlYjk4NGIxNzlhYjQzNTViLi45YWYyYTBkM2YyNDNiODcxZjVmZWFjMzAyNTAyOWJh
MTA0MDVhNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CkBAIC01MTMsMjIgKzUxMywxMyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRDdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbgogICAgIHNjcm9s
bEFuaW1hdG9yKCkuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCBpbmRleCk7CiB9CiAKLXZvaWQgU2Nyb2xsYWJsZUFyZWE6OnJlc25hcEFm
dGVyTGF5b3V0KCkKK1Njcm9sbE9mZnNldCBTY3JvbGxhYmxlQXJlYTo6Y29ycmVjdFNjcm9sbE9m
ZnNldEZvclNjcm9sbFNuYXBwaW5nKGNvbnN0IFNjcm9sbE9mZnNldCYgb2Zmc2V0KSBjb25zdAog
ewotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgKnRoaXMgPDwgIiB1
cGRhdGVTY3JvbGxTbmFwU3RhdGU6IGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgIiA8PCBpc1Njcm9s
bFNuYXBJblByb2dyZXNzKCkgPDwgIiBpc1VzZXJTY3JvbGxJblByb2dyZXNzICIgPDwgaXNVc2Vy
U2Nyb2xsSW5Qcm9ncmVzcygpKTsKLQotICAgIFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmltYXRv
ciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKTsKLSAgICBpZiAoIXNjcm9sbEFuaW1hdG9yIHx8
IGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSB8fCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNjcm9sbEFuaW1hdG9yLT5yZXNuYXBBZnRlckxheW91dCgp
OworICAgIGF1dG8gY29ycmVjdGVkT2Zmc2V0ID0gb2Zmc2V0OwogCiAgICAgY29uc3QgYXV0byog
aW5mbyA9IHNuYXBPZmZzZXRzSW5mbygpOwogICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgYXV0byBj
b3JyZWN0ZWRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0OworICAgICAgICByZXR1cm4gY29ycmVjdGVk
T2Zmc2V0OwogCiAgICAgaWYgKCFob3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgaG9yaXpvbnRhbFNj
cm9sbGJhcigpLT5wcmVzc2VkUGFydCgpID09IFNjcm9sbGJhclBhcnQ6Ok5vUGFydCkgewogICAg
ICAgICBjb25zdCBhdXRvJiBob3Jpem9udGFsID0gaW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRz
OwpAQCAtNTQ0LDYgKzUzNSwyNiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpyZXNuYXBBZnRlckxh
eW91dCgpCiAgICAgICAgICAgICBjb3JyZWN0ZWRPZmZzZXQuc2V0WSh2ZXJ0aWNhbFsqYWN0aXZl
VmVydGljYWxJbmRleF0ub2Zmc2V0LnRvSW50KCkpOwogICAgIH0KIAorICAgIHJldHVybiBjb3Jy
ZWN0ZWRPZmZzZXQ7Cit9CisKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnJlc25hcEFmdGVyTGF5b3V0
KCkKK3sKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICp0aGlzIDw8
ICIgdXBkYXRlU2Nyb2xsU25hcFN0YXRlOiBpc1Njcm9sbFNuYXBJblByb2dyZXNzICIgPDwgaXNT
Y3JvbGxTbmFwSW5Qcm9ncmVzcygpIDw8ICIgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyAiIDw8IGlz
VXNlclNjcm9sbEluUHJvZ3Jlc3MoKSk7CisKKyAgICBTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5p
bWF0b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCk7CisgICAgaWYgKCFzY3JvbGxBbmltYXRv
ciB8fCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgfHwgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxBbmltYXRvci0+cmVzbmFwQWZ0ZXJMYXlv
dXQoKTsKKworICAgIGNvbnN0IGF1dG8qIGluZm8gPSBzbmFwT2Zmc2V0c0luZm8oKTsKKyAgICBp
ZiAoIWluZm8pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVudE9mZnNldCA9IHNj
cm9sbE9mZnNldCgpOworICAgIGF1dG8gY29ycmVjdGVkT2Zmc2V0ID0gY29ycmVjdFNjcm9sbE9m
ZnNldEZvclNjcm9sbFNuYXBwaW5nKGN1cnJlbnRPZmZzZXQpOworCiAgICAgaWYgKGNvcnJlY3Rl
ZE9mZnNldCAhPSBjdXJyZW50T2Zmc2V0KSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxTbmFwLCBzdHJlYW0gPDwgIiBhZGp1c3Rpbmcgb2Zmc2V0IGZyb20gIiA8PCBjdXJyZW50T2Zm
c2V0IDw8ICIgdG8gIiA8PCBjb3JyZWN0ZWRPZmZzZXQpOwogICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KGNvcnJlY3RlZE9mZnNldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBmZDM5NjMzMzgwYjk0N2EyMDUwYTdi
ODY4MGM1Nzk5MGY2ZDc1Y2I2Li5jY2I3NWI4YTBhMzU0YjU1MzViZTQxNGNkNDRiYzNkNDljMWVh
NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPik7CiAKKyAgICBTY3JvbGxPZmZzZXQgY29ycmVjdFNjcm9sbE9mZnNldEZv
clNjcm9sbFNuYXBwaW5nKGNvbnN0IFNjcm9sbE9mZnNldCYpIGNvbnN0OwogICAgIHZvaWQgcmVz
bmFwQWZ0ZXJMYXlvdXQoKTsKICAgICB2b2lkIGRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNjcm9s
bGJhck9yaWVudGF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDg5MDg0MmRjNjYzZjYz
OTk1NzJmODkzMTQ1ODljYjI3MjczZDliODIuLjA0ZmE0MTEzODY1YmM1NjkzNDU4ODM2MDhmZWNh
NGQxNmJlZDVlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
U2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJTY3JvbGxBbmltYXRvckdlbmVyaWMuaCIKIAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlv
bktpbmV0aWMuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNpbmNsdWRl
ICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAKQEAgLTU3
LDYgKzU2LDIxIEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgW3RoaXNdKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikgewogICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRpb24tPnNldEN1cnJl
bnRQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3Zl
KHBvc2l0aW9uKSk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzXSgpIHsKKyAgICAgICAgICAg
IGlmIChtX2luU2Nyb2xsR2VzdHVyZSkgeworICAgICAgICAgICAgICAgIG1faW5TY3JvbGxHZXN0
dXJlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmVzbmFwQWZ0ZXJMYXlvdXQoKTsKKworICAg
ICAgICAgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgYXV0byBjb3JyZWN0ZWRPZmZzZXQgPSBtX3Njcm9s
bGFibGVBcmVhLmNvcnJlY3RTY3JvbGxPZmZzZXRGb3JTY3JvbGxTbmFwcGluZyhjdXJyZW50T2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudE9mZnNldCAhPSBjb3JyZWN0ZWRPZmZz
ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5p
bWF0b3JFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb09mZnNldFdp
dGhBbmltYXRpb24oY29ycmVjdGVkT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNv
cnJlY3RlZE9mZnNldCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKIH0KIApAQCAtNzMsMTYgKzg3LDE5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAg
bV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCi0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3RvcnkoZXZlbnQp
OwotCi0gICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAg
IG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQobV9jdXJyZW50UG9zaXRpb24sIG1fa2luZXRpY0Fu
aW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNj
cm9sbGJhcigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9t
ZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xs
SGlzdG9yeSgpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KG1fY3VycmVudFBv
c2l0aW9uLCBldmVudC5zd2lwZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRh
bFNjcm9sbGJhcigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cygpKSB7CisgICAgICAgIG1faW5TY3JvbGxHZXN0dXJlID0gdHJ1ZTsKKyAgICAgICAgbV9raW5l
dGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3RvcnkoZXZlbnQpOworCisgICAgICAgIGlm
IChldmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgeworICAgICAgICAgICAgbV9raW5l
dGljQW5pbWF0aW9uLT5zdGFydChtX2N1cnJlbnRQb3NpdGlvbiwgbV9raW5ldGljQW5pbWF0aW9u
LT5jb21wdXRlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFy
KCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5n
VG9Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNs
ZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFy
dChtX2N1cnJlbnRQb3NpdGlvbiwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9s
bGJhcigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogI2Vu
ZGlmCiAKQEAgLTE0MSw2ICsxNTgsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6Ondp
bGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAg
ICBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25DdXJyZW50ID0gMDsKIH0KIAorYm9vbCBTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2luU2Nyb2xsR2VzdHVyZSB8fCBTY3JvbGxBbmltYXRvcjo6aXNTY3JvbGxTbmFw
SW5Qcm9ncmVzcygpOworfQorCitib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aXNTY3JvbGxT
bmFwSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjppc1Nj
cm9sbFNuYXBJblByb2dyZXNzKCk7Cit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp1
cGRhdGVPdmVybGF5U2Nyb2xsYmFyc09wYWNpdHkoKQogewogICAgIGlmIChtX3ZlcnRpY2FsT3Zl
cmxheVNjcm9sbGJhciAmJiBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25DdXJyZW50ICE9IG1f
dmVydGljYWxPdmVybGF5U2Nyb2xsYmFyLT5vcGFjaXR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmluZGV4
IGUwNDZjNTMxYmI4NGMyYWNmZjVlODk0NjU1NmRkYzExMjVjOThhZjMuLmUyODEwZmVlZjVlYzUz
YTY2M2NhNTMyN2YzYmVmYTg5MmM3ZmFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApAQCAtNTMsNiArNTMs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9s
bGJhciopIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKikgb3ZlcnJpZGU7CiAKKyAgICBib29sIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIHZvaWQgbW91c2VFbnRlcmVkQ29udGVudEFyZWEoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1vdXNlRXhpdGVkQ29udGVudEFyZWEoKSBvdmVycmlkZTsKICAgICB2b2lk
IG1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCkgb3ZlcnJpZGU7CkBAIC03OCw2ICs4MSw3IEBAIHBy
aXZhdGU6CiAgICAgZG91YmxlIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvbkN1cnJlbnQgeyAw
IH07CiAgICAgTW9ub3RvbmljVGltZSBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25TdGFydFRp
bWU7CiAgICAgTW9ub3RvbmljVGltZSBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25FbmRUaW1l
OworICAgIGJvb2wgbV9pblNjcm9sbEdlc3R1cmUgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2Vi
V2hlZWxFdmVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5o
CmluZGV4IGY0OGRjMDA3NTViNjg0N2YyYzEzZTVmN2RhYzY1MmMyYTkxZjY2ZWEuLmYyZjM5Nzlm
Y2FjOWRmZDk3ZDBlMGVhZDYwMGZlMzVlYjhkZWZkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIE5h
dGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZlbnQqKTsKICAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KEdk
a0V2ZW50KiwgV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIG1vbWVu
dHVtUGhhc2UpOwogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZlbnQqLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcyk7Ci0g
ICAgTmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdo
ZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBtb21l
bnR1bVBoYXNlKTsKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KEdka0V2ZW50KiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYldoZWVsRXZl
bnQ6OlBoYXNlIG1vbWVudHVtUGhhc2UsIGJvb2wgaGFzUHJlY2lzZURlbHRhcyA9IGZhbHNlKTsK
ICNlbGlmIFVTRShMSUJXUEUpCiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lu
cHV0X2F4aXNfZXZlbnQqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgV2ViV2hlZWxFdmVudDo6
UGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIG1vbWVudHVtUGhhc2UpOwogI2VsaWYgUExBVEZP
Uk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldo
ZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVs
RXZlbnRHdGsuY3BwCmluZGV4IDNhNjliZTA0NDg4MWExMTc1YWE4YmM5MTY3MzllYmQxMDQ1ZjYw
MTkuLmJmNDFkMTU3N2I2NGMxNDZlYjc1NzQwMWZkY2JiMGIzNmI5OTA4YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKQEAg
LTQ5LDggKzQ5LDggQEAgTmF0aXZlV2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChH
ZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW4KIHsKIH0KIAotTmF0aXZlV2Vi
V2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCAqZXZlbnQsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIHBoYXNlLCBXZWJX
aGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlKQotICAgIDogV2ViV2hlZWxFdmVudChXZWJF
dmVudDo6V2hlZWwsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEsIHdoZWVsVGlja3Ms
IHBoYXNlLCBtb21lbnR1bVBoYXNlLCBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxF
dmVudCwgZmFsc2UsIHsgfSwgV2FsbFRpbWU6Om5vdygpKQorTmF0aXZlV2ViV2hlZWxFdmVudDo6
TmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCAqZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHdoZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIHBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQ
aGFzZSBtb21lbnR1bVBoYXNlLCBib29sIGhhc1ByZWNpc2VEZWx0YXMpCisgICAgOiBXZWJXaGVl
bEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YSwg
d2hlZWxUaWNrcywgcGhhc2UsIG1vbWVudHVtUGhhc2UsIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50LCBoYXNQcmVjaXNlRGVsdGFzLCB7IH0sIFdhbGxUaW1lOjpub3coKSkK
ICAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQgPyBnZGtfZXZlbnRfY29weShldmVudCkgOiBudWxs
cHRyKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBjNGE5ODMzZTI4YmI1MGQxZjg3NWFhMWM1YWQwNTdj
ZWUwMWQyODFhLi5kODNlNGEyMTMxNjNlNjAxNzExOTFhODU3MDdlZjVjNGI0M2U1NjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcApAQCAtMjg0LDYgKzI4NCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlIHsKICAgICBUb3VjaEV2ZW50c01hcCB0b3VjaEV2ZW50czsKICAgICBJbnRTaXplIGNvbnRl
bnRzU2l6ZTsKICAgICBzdGQ6Om9wdGlvbmFsPE1vdGlvbkV2ZW50PiBsYXN0TW90aW9uRXZlbnQ7
CisgICAgYm9vbCBtb3VzZVdoZWVsSXNQcmVjaXNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzQmxh
bms7CiAgICAgYm9vbCBzaG91bGROb3RpZnlGb2N1c0V2ZW50cyB7IHRydWUgfTsKIApAQCAtMjk5
NCwxMCArMjk5NSwxNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZVdoZWVsRXZl
bnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdAogCiAgICAgRmxvYXRTaXpl
IHdoZWVsVGlja3MoZGVsdGFYLCBkZWx0YVkpOwogICAgIEZsb2F0U2l6ZSBkZWx0YSh3aGVlbFRp
Y2tzKTsKLSAgICBkZWx0YS5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhl
bHNQZXJMaW5lU3RlcCgpKSk7CisgICAgaWYgKCFwcml2LT5tb3VzZVdoZWVsSXNQcmVjaXNlKQor
ICAgICAgICBkZWx0YS5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQ
ZXJMaW5lU3RlcCgpKSk7CiAKICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQo
TmF0aXZlV2ViV2hlZWxFdmVudChjb25zdF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCB7IHgsIHkg
fSwgd2lkZ2V0Um9vdENvb3JkcyhHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgeCwgeSksCi0gICAg
ICAgIGRlbHRhLCB3aGVlbFRpY2tzLCB0b1dlYktpdFdoZWVsRXZlbnRQaGFzZShwaGFzZSksIHRv
V2ViS2l0V2hlZWxFdmVudFBoYXNlKG1vbWVudHVtUGhhc2UpKSk7CisgICAgICAgIGRlbHRhLCB3
aGVlbFRpY2tzLCB0b1dlYktpdFdoZWVsRXZlbnRQaGFzZShwaGFzZSksIHRvV2ViS2l0V2hlZWxF
dmVudFBoYXNlKG1vbWVudHVtUGhhc2UpLCBwcml2LT5tb3VzZVdoZWVsSXNQcmVjaXNlKSk7Cit9
CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRXaGVlbEV2ZW50c0FyZVByZWNpc2UoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBib29sIGFyZVByZWNpc2UpCit7CisgICAgd2ViVmll
d0Jhc2UtPnByaXYtPm1vdXNlV2hlZWxJc1ByZWNpc2UgPSBhcmVQcmVjaXNlOwogfQogCiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlTWFrZUJsYW5rKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgYm9vbCBtYWtlQmxhbmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oCmluZGV4IGY1ZDIzMzc4YTYw
NmRkOGNhNzQxYWExYmY3YjJkYmZhNGE1MzM2M2YuLmNlMjIyNjVkMGRmNmQzZTk2M2VkNGYzODg5
OWRmZjFkOGE5ZTUyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oCkBAIC00NSwzICs0NSw1IEBA
IFdLX0VYUE9SVCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKiwgS2V5RXZlbnRUCiAKIGVudW0gY2xhc3MgV2hlZWxFdmVudFBoYXNlIHsg
Tm9QaGFzZSwgQmVnYW4sIENoYW5nZWQsIEVuZGVkLCBDYW5jZWxsZWQsIE1heUJlZ2luIH07CiBX
S19FWFBPUlQgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVXaGVlbEV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKiwgZG91YmxlIGRlbHRhWCwgZG91YmxlIGRlbHRhWSwgaW50IHgsIGludCB5
LCBXaGVlbEV2ZW50UGhhc2UsIFdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlKTsKK1dLX0VY
UE9SVCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0V2hlZWxFdmVudHNBcmVQcmVjaXNlKFdlYktp
dFdlYlZpZXdCYXNlKiwgYm9vbCk7CisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA5ZDhiN2QyOWEwMzk5OWQzYmQzOGFjNTY2MTk2NWEyZDcxNDFm
MGViLi5kZTM0YjEwNzlmYzBjM2U3NGEyYWVlNzYwODI3NjI3MTNhYjFlOGY1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMjEtMDktMTQgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIENTUyBzY3JvbGwgc25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5IHdpdGggc21vb3RoIHNjcm9s
bGluZyAoc3luYyBzY3JvbGxpbmcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQVBJIHRvIGJlIGFibGUgdG8gc2VuZCBwcmVjaXNlIG1vdXNlLXdo
ZWVsIGV2ZW50cyBpbiBFdmVudFNlbmRlci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
RXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2V0TW91c2VXaGVlbElzUHJl
Y2lzZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZl
bnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OnRvV2ViS2l0R0xpYkFQSSk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6On5FdmVudFNlbmRlclByb3h5KToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0TW91c2VXaGVlbElzUHJlY2lzZSk6CisKIDIw
MjEtMDgtMTEgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV0gSGFuZGxlIGVzY2FwZSBrZXkgaW4gd3BlS2V5U3ltRm9yS2V5UmVmCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDE4ZmE4OTJlNDI3YzAwMGNkMzU3ZmUx
MWQ4NDVlYzIwOWNmMjExZDMuLjE4YzNmZGQyNDM2ODMxYjdmYTQ1NzMzMGZlMGVkZmJhOThiMDE3
OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC02Miw2
ICs2Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUg
eSwgV0tTdHJpbmdSZWYgcG9pbnRlclR5cGUgPSBudWxscHRyKTsKICAgICB2b2lkIG1vdXNlU2Ny
b2xsQnkoaW50IHgsIGludCB5KTsKICAgICB2b2lkIG1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhpbnQgeCwgaW50IHksIGludCBwaGFzZSwgaW50IG1vbWVudHVtKTsKKyNp
ZiBQTEFURk9STShHVEspCisgICAgdm9pZCBzZXRNb3VzZVdoZWVsSXNQcmVjaXNlKGJvb2wpOwor
I2VuZGlmCiAgICAgdm9pZCBjb250aW51b3VzTW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHksIGJv
b2wgcGFnZWQpOwogCiAgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCmluZGV4IGM5MDIz
ZTEyN2ZjNWUzNGM4NTk3NWRlNzQyMjI2NjhmMGUwZDk1OTMuLjNlZmUyZTQ2MTQzMmRkYTY0NjVi
YTY2YTI5ZDg4ZjcyZTllMmEwNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLmlkbApAQCAtMzgsNiArMzgsNyBAQCBpbnRlcmZhY2UgRXZlbnRTZW5kaW5n
Q29udHJvbGxlciB7CiAgICAgdW5kZWZpbmVkIG1vdXNlRm9yY2VDaGFuZ2VkKGRvdWJsZSBmb3Jj
ZSk7CiAgICAgdW5kZWZpbmVkIG1vdXNlU2Nyb2xsQnkobG9uZyB4LCBsb25nIHkpOwogICAgIHVu
ZGVmaW5lZCBtb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMobG9uZyB4LCBs
b25nIHksIERPTVN0cmluZyBwaGFzZSwgRE9NU3RyaW5nIG1vbWVudHVtKTsKKyAgICB1bmRlZmlu
ZWQgc2V0TW91c2VXaGVlbElzUHJlY2lzZShib29sZWFuIGlzUHJlY2lzZSk7CiAgICAgdW5kZWZp
bmVkIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGxvbmcgeCwgbG9uZyB5LCBvcHRpb25hbCBib29s
ZWFuIHBhZ2VkKTsKICAgICBvYmplY3QgY29udGV4dENsaWNrKCk7CiAgICAgdW5kZWZpbmVkIHNj
aGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDJhZTk2NzhkNzc3YzI4OTc5NTY4MzEwZTRlYTRkYjQzMTRlOTM0ZDIuLjhkODc3MDRi
Nzk1MGFjZWQ0NTAyZTdkZTE3ZTYxNTVlYzgzOGE3YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcApAQCAtMzc3LDYgKzM3NywxNSBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhpbnQgeCwgaW50CiAg
ICAgcG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGJvZHkpOwogfQogCit2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnNldE1vdXNlV2hlZWxJc1ByZWNpc2UoYm9vbCBpc1ByZWNpc2Up
Cit7CisgICAgV0tCdW5kbGVQYWdlRm9yY2VSZXBhaW50KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wYWdlKCktPnBhZ2UoKSk7IC8vIFRyaWdnZXJzIGEgc2Nyb2xsaW5nIHRyZWUgY29tbWl0
LgorICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsK
KyAgICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJTZXRNb3VzZVdoZWVsSXNQcmVjaXNl
Iik7CisgICAgc2V0VmFsdWUoYm9keSwgIklzUHJlY2lzZSIsIGlzUHJlY2lzZSk7CisgICAgcG9z
dFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGJvZHkpOworfQorCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSwgYm9vbCBw
YWdlZCkKIHsKICAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVh
dGUoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4IDllYWVmNmFhYjcxYTk2MWMw
NGQ1MDE3YmZmMTExMzFhMWI1NzRmOGUuLmUzYTMxZGFmM2JiMjAxOTkyMTcyNTY2ZTdkMGRhYzMx
ZWI5YTZmYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBAIC01OCw2ICs1OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1vdXNlRm9yY2VDaGFuZ2VkKGRvdWJsZSBmb3JjZSk7CiAgICAg
dm9pZCBtb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSk7CiAgICAgdm9pZCBtb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoaW50IHgsIGludCB5LCBKU1N0cmluZ1JlZiBwaGFz
ZSwgSlNTdHJpbmdSZWYgbW9tZW50dW0pOworICAgIHZvaWQgc2V0TW91c2VXaGVlbElzUHJlY2lz
ZShib29sKTsKICAgICB2b2lkIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSwg
Ym9vbCBwYWdlZCk7CiAgICAgSlNWYWx1ZVJlZiBjb250ZXh0Q2xpY2soKTsKICAgICB2b2lkIGxl
YXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAppbmRleCA0MDcxNzFmYWNiYTZhYWQ2Y2YwYjRiNGE2NDE3NDg4NGMzM2Y1
MTg5Li4xNDQzODQ2ZmY5ZGEyYzJhZTcxNjRhM2U2ZmM0Y2UxNTBjYjI2MWNkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTYzNSw2ICsxNjM1LDE0IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoc3ViTWVzc2FnZU5hbWUsICJTZXRNb3VzZVdoZWVsSXNQcmVjaXNlIikpIHsKKyAgICAg
ICAgICAgIGF1dG8gaXNQcmVjaXNlID0gYm9vbGVhblZhbHVlKGRpY3Rpb25hcnksICJJc1ByZWNp
c2UiKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+c2V0TW91c2VXaGVlbElzUHJl
Y2lzZShpc1ByZWNpc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggYWZlODlk
MjU5OWZlZmZjNzI5YjIyZGU0ZTFkNmMzNzYyYWQ0ZWUwMy4uNDk5YjVlMzM4MWRmYTlkNGVmMjNi
YjFmYzUwMWY3MjU0NTlmMjY2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTcwLDggKzcwLDE0IEBAIEV2ZW50U2VuZGVy
UHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKQog
ewogfQogCitzdGF0aWMgaW5saW5lIFdlYktpdFdlYlZpZXdCYXNlKiB0b1dlYktpdEdMaWJBUEko
UGxhdGZvcm1XS1ZpZXcgdmlldykKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXZWJLaXRXZWJW
aWV3QmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViS2l0V2ViVmlld0Jhc2UqPih2aWV3
KSk7Cit9CisKIEV2ZW50U2VuZGVyUHJveHk6On5FdmVudFNlbmRlclByb3h5KCkKIHsKKyAgICB3
ZWJraXRXZWJWaWV3QmFzZVNldFdoZWVsRXZlbnRzQXJlUHJlY2lzZSh0b1dlYktpdEdMaWJBUEko
bV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpLCBmYWxzZSk7
CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBldmVudFNlbmRlckJ1dHRvblRvR0RLQnV0dG9uKHVuc2ln
bmVkIGJ1dHRvbikKQEAgLTIzMiwxMSArMjM4LDYgQEAgc3RhdGljIGludCBnZXRHREtLZXlTeW1G
b3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQqIG0K
ICAgICByZXR1cm4gZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKHN0YXRpY19jYXN0PGd1aW50MzI+KGJ1
ZmZlci5nZXQoKVswXSkpOwogfQogCi1zdGF0aWMgaW5saW5lIFdlYktpdFdlYlZpZXdCYXNlKiB0
b1dlYktpdEdMaWJBUEkoUGxhdGZvcm1XS1ZpZXcgdmlldykKLXsKLSAgICByZXR1cm4gY29uc3Rf
Y2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViS2l0V2Vi
Vmlld0Jhc2UqPih2aWV3KSk7Ci19Ci0KIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihX
S1N0cmluZ1JlZiBrZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMsIHVuc2lnbmVk
IGxvY2F0aW9uKQogewogICAgIGd1aW50IG1vZGlmaWVycyA9IHdlYmtpdE1vZGlmaWVyc1RvR0RL
TW9kaWZpZXJzKHdrTW9kaWZpZXJzKTsKQEAgLTM0OCw2ICszNDksMTEgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoaW50IGhv
cml6b250YWwsIGkKICAgICAgICAgaG9yaXpvbnRhbCwgdmVydGljYWwsIG1fcG9zaXRpb24ueCwg
bV9wb3NpdGlvbi55LCBldmVudFBoYXNlLCBldmVudE1vbWVudHVtUGhhc2UpOwogfQogCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnNldE1vdXNlV2hlZWxJc1ByZWNpc2UoYm9vbCBpc1ByZWNpc2Up
Cit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRXaGVlbEV2ZW50c0FyZVByZWNpc2UodG9XZWJL
aXRHTGliQVBJKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
KSwgaXNQcmVjaXNlKTsKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChp
bnQgbWlsbGlzZWNvbmRzKQogewogICAgIG1fdGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmQ2ZmIyOTZhMmI1MmEzMzFhMzhiODM2ODVhODc5YzllZjE1Y2NjYy4uYzg1NzY0
YWI4ZmRlMTRkNjJiYzQ4MmQzZDNlMTFmOTFjYTI5Y2QxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTA5LTE0ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXSBDU1Mgc2Nyb2xsIHNuYXBwaW5nIGludGVyYWN0cyBiYWRseSB3aXRoIHNtb290aCBzY3Jv
bGxpbmcgKHN5bmMgc2Nyb2xsaW5nKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgR1RLLW9ubHkgdGVzdCB0byB2ZXJpZnkgQ1NTIHNjcm9sbCBz
bmFwcGluZyBhbmQga2luZXRpYy90b3VjaHBhZAorICAgICAgICBzY3JvbGxpbmcgZG9uJ3QgY29u
ZmxpY3QuIEFkanVzdCBtYWMtd2sxIHRlc3QgZXhwZWN0YXRpb25zLCBldmVudAorICAgICAgICBz
ZXF1ZW5jZSBtZWFucyBhIHRlc3QgZmFpbHMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdG8gYmVmb3Jl
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50
ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9mYXN0L3Njcm9sbGluZy9sYXRjaGlu
Zy9zY3JvbGwtc25hcC1sYXRjaGluZy1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDgtMTEgIEtpbW1v
IEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGVycnktcGljayBB
TkdMRTogUmV2aXNlIFdlYkdMJ3Mgc2hhZGVyU291cmNlIHZhbGlkYXRpb24KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDMxNTYyNDk3NDYyZWRlYWM0MmU3MDRlYTkwNzMwMjg3ZTdmYTUzNjUuLjExOTE0
ODI1NDE5ZjMzN2NiODgzZGE5ZmJmMDNhOTVlMmNiNjQ2MWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtNTksNiArNTksNyBAQCBmYXN0L2V2ZW50cy93YXRjaG9zIFsgU2tpcCBdCiBmYXN0L2V2ZW50
cy9wb2ludGVyL2lvcyBbIFNraXAgXQogZmFzdC9ldmVudHMvdG91Y2gvaW9zIFsgU2tpcCBdCiBm
YXN0L2hpc3RvcnkvaW9zIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9ndGsgWyBTa2lwIF0KIGZh
c3Qvc2Nyb2xsaW5nL2lvcyBbIFNraXAgXQogZmFzdC9zY3JvbGxpbmcvbWFjIFsgU2tpcCBdCiBm
YXN0L3Njcm9sbGluZy9pcGFkIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5n
LWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2FhOWVmMDc1NDU5MzZiM2Y4
NDBkY2ZlNWJkZjA0MTcxZjg4OTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitQQVNTIFNjcm9sbCBkb3dud2FyZHMgYnkgMjUgcGl4ZWxz
CitQQVNTIFNjcm9sbCBkb3dud2FyZHMgYnkgYW5vdGhlciAyNSBwaXhlbHMKK1BBU1MgRW5kIHNj
cm9sbCBzbmFwcyBiYWNrIHRvIHRvcAorUEFTUyBTY3JvbGwgZG93bndhcmRzIGJ5IDIwMCBwaXhl
bHMKK1BBU1MgRW5kIHNjcm9sbCBzaG91bGQgc25hcCB0byBuZXh0IGVsZW1lbnQKK1BBU1MgS2lu
ZXRpYyBzY3JvbGwgdG8gZW5kIG9mIGRvY3VtZW50CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOTlkNGM5YTQzMjFmODE0MTYxMTU5NDAwY2ZlZjFlYjY4Njc0
ZmU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvZ3RrL3Vz
ZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLmh0bWwKQEAgLTAsMCArMSwxMjkgQEAKKzwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlVGhyZWFkZWRTY3JvbGxpbmc9ZmFsc2UgXSAtLT4K
KzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgPHRpdGxlPkNTUyBzY3Jv
bGwgc25hcHBpbmcgc2hvdWxkIG5vdCBjb25mbGljdCB3aXRoIHVzZXIgc2Nyb2xsaW5nPC90aXRs
ZT4KKyAgPHN0eWxlPgorICAgIGh0bWwgeworICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5k
YXRvcnk7CisgICAgfQorCisgICAgYm9keSB7CisgICAgICBtYXJnaW46IDA7CisgICAgfQorCisg
ICAgZGl2IHsKKyAgICAgIHdpZHRoOiAxMDAlOworICAgICAgaGVpZ2h0OiAyNTBweDsKKyAgICAg
IHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPGRpdj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKyAgPGRp
dj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKyAg
PGRpdj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKzwvYm9keT4KKzxzY3Jp
cHQ+Cit2YXIgZXhwZWN0ZWRTY3JvbGxUb3AgPSAwOwordmFyIHRlc3RzUGFzc2VkID0gMDsKK3Zh
ciB0ZXN0RGVzY3JpcHRpb247CisKK2Z1bmN0aW9uIHN0YXJ0U2Nyb2xsKHN0YXJ0eCwgc3RhcnR5
LCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBldmVudFNlbmRlci5zZXRNb3VzZVdoZWVsSXNQcmVj
aXNlKHRydWUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0eCwgc3RhcnR5KTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLWRlbHRhWCwgLWRlbHRhWSwgImNoYW5nZWQiLCAibm9u
ZSIpOworfQorCitmdW5jdGlvbiBjb250aW51ZVNjcm9sbChkZWx0YVgsIGRlbHRhWSkKK3sKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLWRl
bHRhWCwgLWRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOworfQorCitmdW5jdGlvbiBlbmRTY3Jv
bGwoZGVsdGFYLCBkZWx0YVksIGtpbmV0aWMpCit7CisgICAgaWYgKCFraW5ldGljKQorICAgICAg
ICBldmVudFNlbmRlci5zZXRNb3VzZVdoZWVsSXNQcmVjaXNlKGZhbHNlKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLWRlbHRhWCwgLWRl
bHRhWSwgImVuZGVkIiwgIm5vbmUiKTsKK30KKworZnVuY3Rpb24gdHJpZ2dlck5leHRUZXN0KCkg
eworICAgIGlmICh0ZXN0c1Bhc3NlZCkKKyAgICAgICAgZGVidWcoIlBBU1MgIiArIHRlc3REZXNj
cmlwdGlvbik7CisKKyAgICBzd2l0Y2ggKHRlc3RzUGFzc2VkKSB7CisgICAgY2FzZSAwOgorICAg
ICAgICB0ZXN0RGVzY3JpcHRpb24gPSAiU2Nyb2xsIGRvd253YXJkcyBieSAyNSBwaXhlbHMiCisg
ICAgICAgIGV4cGVjdGVkU2Nyb2xsVG9wID0gMjU7CisgICAgICAgIHN0YXJ0U2Nyb2xsKDUwLCA1
MCwgMCwgMjUpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIDE6CisgICAgICAgIHRlc3RE
ZXNjcmlwdGlvbiA9ICJTY3JvbGwgZG93bndhcmRzIGJ5IGFub3RoZXIgMjUgcGl4ZWxzIgorICAg
ICAgICBleHBlY3RlZFNjcm9sbFRvcCA9IDUwOworICAgICAgICBjb250aW51ZVNjcm9sbCgwLCAy
NSk7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgMjoKKyAgICAgICAgdGVzdERlc2NyaXB0
aW9uID0gIkVuZCBzY3JvbGwgc25hcHMgYmFjayB0byB0b3AiCisgICAgICAgIGV4cGVjdGVkU2Ny
b2xsVG9wID0gMDsKKyAgICAgICAgZW5kU2Nyb2xsKDAsIDAsIGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworCisgICAgY2FzZSAzOgorICAgICAgICB0ZXN0RGVzY3JpcHRpb24gPSAiU2Nyb2xsIGRv
d253YXJkcyBieSAyMDAgcGl4ZWxzIgorICAgICAgICBleHBlY3RlZFNjcm9sbFRvcCA9IDIwMDsK
KyAgICAgICAgc3RhcnRTY3JvbGwoNTAsIDUwLCAwLCAyMDApOworICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIDQ6CisgICAgICAgIHRlc3REZXNjcmlwdGlvbiA9ICJFbmQgc2Nyb2xsIHNob3Vs
ZCBzbmFwIHRvIG5leHQgZWxlbWVudCIKKyAgICAgICAgZXhwZWN0ZWRTY3JvbGxUb3AgPSAyNTA7
CisgICAgICAgIGVuZFNjcm9sbCgwLCAwLCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKworICAg
IGNhc2UgNToKKyAgICAgICAgdGVzdERlc2NyaXB0aW9uID0gIktpbmV0aWMgc2Nyb2xsIHRvIGVu
ZCBvZiBkb2N1bWVudCIKKyAgICAgICAgZXhwZWN0ZWRTY3JvbGxUb3AgPSBkb2N1bWVudC5zY3Jv
bGxpbmdFbGVtZW50LnNjcm9sbEhlaWdodCAtIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuY2xp
ZW50SGVpZ2h0OworICAgICAgICBzdGFydFNjcm9sbCg1MCwgNTAsIDAsIDEwMCk7CisgICAgICAg
IGVuZFNjcm9sbCgwLCAyMDAsIHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwor
ICAgIHJldHVybjsKK30KKworZnVuY3Rpb24gc2Nyb2xsRXZlbnRDYWxsYmFjaygpIHsKKyAgICBp
ZiAoZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgPT0gZXhwZWN0ZWRTY3JvbGxU
b3ApIHsKKyAgICAgICAgKyt0ZXN0c1Bhc3NlZDsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdHJpZ2dlck5leHRUZXN0KCk7CisgICAgfQorfQorCisKK2RvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHNjcm9sbEV2ZW50Q2FsbGJhY2ssIGZhbHNl
KTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB0cmlnZ2VyTmV4dFRl
c3QoKTsKK30KKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCAyOGIyNWQ2ZjhiYWY1OTc4YzU4NDBlZmUwNzIyZTYxNjBmNTU3
MmUwLi5iZGFjOGJiYTQ0ZDA0YzczODVjZDdhZDU4NjJmMzAwMGUyNDM4MjE1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTksNiArMTksNyBAQAogIyBQ
bGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KIGFjY2Vzc2liaWxpdHkvZ3RrIFsgUGFzcyBd
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ3RrIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ndGsgWyBQ
YXNzIF0KIHN3aXBlIFsgUGFzcyBdCiAKIGlldGVzdGNlbnRlci9jc3MzL2ZsZXhib3gvZmxleGJv
eC1sYXlvdXQtMDAxLmh0bSBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9mYXN0L3Njcm9sbGluZy9sYXRjaGluZy9zY3JvbGwtc25hcC1sYXRjaGluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3Qvc2Nyb2xsaW5n
L2xhdGNoaW5nL3Njcm9sbC1zbmFwLWxhdGNoaW5nLWV4cGVjdGVkLnR4dAppbmRleCAxZTY0Zjc5
ZGExNzc0ZjQ0ZDljMGEzYWZhZjNlN2JhMmVmMDc0MTUwLi45MGQ4ZDYwNGY3YjMxMDBmN2IwMDk2
Mjc0ZjgyNzE1NjA0NGY3ZGI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL2Zhc3Qvc2Nyb2xsaW5nL2xhdGNoaW5nL3Njcm9sbC1zbmFwLWxhdGNoaW5nLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3Qvc2Nyb2xsaW5nL2xh
dGNoaW5nL3Njcm9sbC1zbmFwLWxhdGNoaW5nLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAg
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIG92ZXJmbG93U2Nyb2xsRXZlbnRDb3Vu
dCA+IDAgaXMgdHJ1ZQotRkFJTCB3aW5kb3dTY3JvbGxFdmVudENvdW50IHNob3VsZCBiZSAwLiBX
YXMgMTEuCitGQUlMIHdpbmRvd1Njcm9sbEV2ZW50Q291bnQgc2hvdWxkIGJlIDAuIFdhcyA3Lgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440347</attachid>
            <date>2021-10-06 02:29:29 -0700</date>
            <delta_ts>2021-10-06 03:22:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229037-20211006102928.patch</filename>
            <type>text/plain</type>
            <size>16516</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc0MDYzOTg1MDUwYjg1
YjA5YzM3ODVmNWRmOTc0NGRhZDI4MDlkZi4uMmJiNWQ0NzA5NDRkODdiODQwMzQzMDAyNDdlZTA1
NGQ5NGY2ZDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTEwLTA2ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIENTUyBzY3Jv
bGwgc25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5IHdpdGggc21vb3RoIHNjcm9sbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBDU1Mgc2Nyb2xs
IHNuYXBwaW5nIGJlaGF2ZSBpbiBhIHByZWRpY3RhYmxlIHdheSB3aGVuIHNjcm9sbGluZworICAg
ICAgICB3aXRoIHRvdWNocGFkcy9zY3JlZW5zIG9uIEdUSy9XUEUuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9zY3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2
ZW50Rm9yS2luZXRpY1Njcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6YWRqdXN0RGVsdGFGb3JTbmFwcGluZ0lmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjppc1VzZXJTY3Jv
bGxJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjppc1Njcm9sbFNuYXBJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppc1VzZXJT
Y3JvbGxJblByb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTWFjOjppc1Njcm9sbFNuYXBJblByb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKwog
MjAyMS0xMC0wNCAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBSRUdSRVNTSU9OOiBBc3luYyBzY3JvbGxpbmcganVtcHMgdG8gdGhlIHRvcCBvZiB0
aGUgcGFnZSB1bnRpbCBrZXlib2FyZC1pbml0aWF0ZWQgcGFnaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2ODIyZThmYWE4NWExMzRjNjdmOTgxYWFmMTk2
Mjk5MjQ2YjFiZThlLi5hZTUzYmIwYjc0ODZiNTEyZWUyZjJmZmU3ZGI0YTRlMGVjYjY0YTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTkzLDkgKzkzLDEw
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxBbmltYXRpb25zKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNz
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5pc1VzZXJTY3JvbGxJblBy
b2dyZXNzKCk7IH0KKyAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpOyB9CiAKICAg
ICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCmluZGV4IGIyYzE3YThk
MjQ4NjllNzkzM2JiYmFlZjQwZjU1Y2UyMzYxZTYxMDEuLjFiY2U4OGIxZGMwMjliNDU3YTZiY2Rh
OWYwNWNiNGQxNDYzMTYyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTI0MCwxMSArMjQwLDE2IEBAIGJv
b2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRp
Y1Njcm9sbGluZyhjb25zdCBQbGF0CiAgICAgaWYgKCFldmVudC5pc0VuZE9mTm9uTW9tZW50dW1T
Y3JvbGwoKSAmJiAhZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX2luU2Nyb2xsR2VzdHVyZSA9IGZhbHNlOworCiAg
ICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAmJiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
bV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgewogICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24t
PnN0b3AoKTsKICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICB9CiAK
KyAgICBpZiAodXNlc1Njcm9sbFNuYXAoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
aWYgKCFtX2N1cnJlbnRBbmltYXRpb24pCiAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpOwogCkBAIC0yNjcsOCArMjcy
LDI4IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50
Rm9yS2luZXRpY1Njcm9sbGluZyhjb25zdCBQbGF0CiB9CiAjZW5kaWYKIAordm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6YWRqdXN0RGVsdGFGb3JTbmFwcGluZ0lmTmVlZGVkKGZsb2F0
JiBkZWx0YVgsIGZsb2F0JiBkZWx0YVkpCit7CisgICAgaWYgKHNuYXBPZmZzZXRzSW5mbygpICYm
ICFzbmFwT2Zmc2V0c0luZm8oKS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlID0g
bV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGF1dG8gc2Nyb2xsT2Zmc2V0ID0g
bV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50
LnNjcm9sbEV4dGVudHMoKTsKKworICAgICAgICBhdXRvIG9yaWdpbmFsT2Zmc2V0ID0gTGF5b3V0
UG9pbnQoc2Nyb2xsT2Zmc2V0LngoKSAvIHNjYWxlLCBzY3JvbGxPZmZzZXQueSgpIC8gc2NhbGUp
OworICAgICAgICBhdXRvIG5ld09mZnNldCA9IExheW91dFBvaW50KChzY3JvbGxPZmZzZXQueCgp
ICsgZGVsdGFYKSAvIHNjYWxlLCAoc2Nyb2xsT2Zmc2V0LnkoKSArIGRlbHRhWSkgLyBzY2FsZSk7
CisKKyAgICAgICAgYXV0byBvZmZzZXRYID0gc25hcE9mZnNldHNJbmZvKCktPmNsb3Nlc3RTbmFw
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgTGF5b3V0U2l6ZShleHRlbnRzLmNv
bnRlbnRzU2l6ZSksIG5ld09mZnNldCwgZGVsdGFYLCBvcmlnaW5hbE9mZnNldC54KCkpLmZpcnN0
OworICAgICAgICBhdXRvIG9mZnNldFkgPSBzbmFwT2Zmc2V0c0luZm8oKS0+Y2xvc2VzdFNuYXBP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgTGF5b3V0U2l6ZShleHRlbnRzLmNvbnRl
bnRzU2l6ZSksIG5ld09mZnNldCwgZGVsdGFZLCBvcmlnaW5hbE9mZnNldC55KCkpLmZpcnN0Owor
CisgICAgICAgIGRlbHRhWCA9IChvZmZzZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxl
OworICAgICAgICBkZWx0YVkgPSAob2Zmc2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2Fs
ZTsKKyAgICB9Cit9CisKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogeworICAgIG1f
aW5TY3JvbGxHZXN0dXJlID0gd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkg
JiYgIXdoZWVsRXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkgJiYgIXdoZWVsRXZlbnQu
aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpOworCiAjaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKQogICAgIGlmIChwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmco
d2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjg4LDkgKzMxMyw2IEBAIGJv
b2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgICAgIHx8IChkZWx0YVkgPiAwICYmIHNjcm9sbE9m
ZnNldC55KCkgPD0gbWluUG9zaXRpb24ueSgpKSkKICAgICAgICAgZGVsdGFZID0gMDsKIAotICAg
IGlmICghZGVsdGFYICYmICFkZWx0YVkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGlm
ICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewog
ICAgICAgICBpZiAoZGVsdGFYKSB7CiAgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFY
IDwgMDsKQEAgLTMwOSwyMCArMzMxLDE0IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAg
ZGVsdGFYID0gLWRlbHRhWDsKICAgICBkZWx0YVkgPSAtZGVsdGFZOwogCi0gICAgaWYgKHNuYXBP
ZmZzZXRzSW5mbygpICYmICFzbmFwT2Zmc2V0c0luZm8oKS0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
IGZsb2F0IHNjYWxlID0gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIGF1dG8g
b3JpZ2luYWxPZmZzZXQgPSBMYXlvdXRQb2ludChzY3JvbGxPZmZzZXQueCgpIC8gc2NhbGUsIHNj
cm9sbE9mZnNldC55KCkgLyBzY2FsZSk7Ci0gICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gTGF5b3V0
UG9pbnQoKHNjcm9sbE9mZnNldC54KCkgKyBkZWx0YVgpIC8gc2NhbGUsIChzY3JvbGxPZmZzZXQu
eSgpICsgZGVsdGFZKSAvIHNjYWxlKTsKLQotICAgICAgICBhdXRvIG9mZnNldFggPSBzbmFwT2Zm
c2V0c0luZm8oKS0+Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCBMYXlvdXRTaXplKGV4dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zmc2V0LCBkZWx0YVgsIG9y
aWdpbmFsT2Zmc2V0LngoKSkuZmlyc3Q7Ci0gICAgICAgIGF1dG8gb2Zmc2V0WSA9IHNuYXBPZmZz
ZXRzSW5mbygpLT5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBM
YXlvdXRTaXplKGV4dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zmc2V0LCBkZWx0YVksIG9yaWdp
bmFsT2Zmc2V0LnkoKSkuZmlyc3Q7CisgICAgaWYgKCFtX2luU2Nyb2xsR2VzdHVyZSkKKyAgICAg
ICAgYWRqdXN0RGVsdGFGb3JTbmFwcGluZ0lmTmVlZGVkKGRlbHRhWCwgZGVsdGFZKTsKIAotICAg
ICAgICBkZWx0YVggPSAob2Zmc2V0WCAtIG9yaWdpbmFsT2Zmc2V0LngoKSkgKiBzY2FsZTsKLSAg
ICAgICAgZGVsdGFZID0gKG9mZnNldFkgLSBvcmlnaW5hbE9mZnNldC55KCkpICogc2NhbGU7Ci0g
ICAgfQorICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX2NsaWVudC5zY3JvbGxB
bmltYXRpb25FbmFibGVkKCkgJiYgIXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cygpKSB7CisgICAgaWYgKG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkVuYWJsZWQoKSAmJiAhbV9p
blNjcm9sbEdlc3R1cmUpIHsKICAgICAgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvblNtb290aD4o
bV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgewogICAgICAgICAgICAgYXV0byBsYXN0RGVzdGlu
YXRpb25PZmZzZXQgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCptX2N1cnJlbnRB
bmltYXRpb24pLmRlc3RpbmF0aW9uT2Zmc2V0KCk7CiAgICAgICAgICAgICByZXRhcmdldEFuaW1h
dGVkU2Nyb2xsKGxhc3REZXN0aW5hdGlvbk9mZnNldCArIEZsb2F0U2l6ZSB7IGRlbHRhWCwgZGVs
dGFZIH0pOwpAQCAtMzM2LDYgKzM1MiwyMiBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZQogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CisKK2Jvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6Omlz
VXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2luU2Nyb2xsR2Vz
dHVyZTsKK30KKworYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aXNTY3JvbGxTbmFw
SW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgaWYgKCF1c2VzU2Nyb2xsU25hcCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9pblNjcm9sbEdlc3R1cmUgfHwgKG1fY3VycmVu
dEFuaW1hdGlvbiAmJiBtX2N1cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KICNlbmRpZgogCiB2b2lkIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGll
bnRPZmZzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmgKaW5kZXggYmI4YWUwNWQwNmMzMmIzMGZhYzg1MDNmOGQ1ZjExMzI2
OTlmZjliYy4uNjRjNDJjM2FiNGQxZTE0MzEyMWIzNjg0ZjZjOGNlNTc1MDczZmY5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5oCkBAIC0xNjMsMTIgKzE2MywxMiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGhhbmRsZWQuCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYpOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0K
ICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKICAgICBib29sIGlzVXNl
clNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0
aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpOworCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGhhbmRsZWQuCiAgICAg
Ym9vbCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CiAKQEAgLTIxOSw2ICsyMTksNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShLSU5FVElD
X1NDUk9MTElORykgJiYgIVBMQVRGT1JNKE1BQykKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFu
ZGxlZC4KICAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9sbGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICB2b2lkIGFkanVzdERlbHRhRm9yU25hcHBpbmdJ
Zk5lZWRlZChmbG9hdCYgZGVsdGFYLCBmbG9hdCYgZGVsdGFZKTsKIAogICAgIERlcXVlPFBsYXRm
b3JtV2hlZWxFdmVudD4gbV9zY3JvbGxIaXN0b3J5OwogI2VuZGlmCkBAIC0yMzQsNiArMjM1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBbmltYXRpbmdSdWJiZXJCYW5kIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faXNBbmltYXRpbmdTY3JvbGxTbmFwIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2luU2Ny
b2xsR2VzdHVyZSB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgV2FsbFRpbWUg
bV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXA7CkBAIC0yNDEsNyArMjQzLDYgQEAgcHJpdmF0
ZToKICAgICBGbG9hdFNpemUgbV9zdHJldGNoU2Nyb2xsRm9yY2U7CiAgICAgRmxvYXRTaXplIG1f
bW9tZW50dW1WZWxvY2l0eTsKIAotICAgIGJvb2wgbV9pblNjcm9sbEdlc3R1cmUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1J1YmJl
ckJhbmRpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMuaAppbmRleCA2MDNjMDJkYzMzODEzMmI1YzMyNDcyMDc3NDZmZjg5MmIx
ODE3MzZkLi4zZDZhYTgyMTkxZWViYjIwNTU1ZWZlMDNhMzFkYmI4NWUyN2Y3OWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaApAQCAtNDks
MTAgKzQ5LDggQEAgcHJpdmF0ZToKICAgICBib29sIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0
aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZSkgZmluYWw7Ci0gICAgCi0gICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dy
ZXNzKCkgY29uc3QgZmluYWw7CisKICAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBj
b25zdCBmaW5hbDsKLSAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCBmaW5h
bDsKIAogICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggNGNjOGY1MjgwOGMxODMwNjFjYThlN2QwZTgy
MjJjNDA2ZmZlM2EzNC4uNjM4OGE4OGQyNjc0YjEzNTQxODllZDQwMGVkZTY3NTlhYTkyNWFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bQpAQCAtNzMsMjEgKzczLDExIEBAIHN0YXRpYyBib29sIHJ1YmJlckJhbmRpbmdFbmFibGVkRm9y
U3lzdGVtKCkKICAgICByZXR1cm4gZW5hYmxlZDsKIH0KIAotYm9vbCBTY3JvbGxBbmltYXRvck1h
Yzo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xs
Q29udHJvbGxlci5pc1VzZXJTY3JvbGxJblByb2dyZXNzKCk7Ci19Ci0KIGJvb2wgU2Nyb2xsQW5p
bWF0b3JNYWM6OmlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdAogewogICAgIHJldHVybiBt
X3Njcm9sbENvbnRyb2xsZXIuaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpOwogfQogCi1ib29sIFNj
cm9sbEFuaW1hdG9yTWFjOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKTsKLX0KLQog
dm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlIHBoYXNlKQogewogICAgIExPR19XSVRIX1NUUkVBTShPdmVybGF5U2Nyb2xs
YmFycywgc3RyZWFtIDw8ICJTY3JvbGxBbmltYXRvck1hYyAiIDw8IHRoaXMgPDwgIiBzY3JvbGxh
YmxlQXJlYSAiIDw8IG1fc2Nyb2xsYWJsZUFyZWEgPDwgIiBoYW5kbGVXaGVlbEV2ZW50UGhhc2Ug
IiA8PCBwaGFzZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzUyN2Q5NWVmNjk4MzVhODkzYmNlMzFhZWJhZWQxNzUwNDFl
MmM0YS4uYjM3MzU0NDM5ZjVkODNmNTZkNTQzMTc0NzFlYmE1YWE3YjQ3ODIxYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTEwLTA2ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXVtXUEVdIENTUyBzY3JvbGwgc25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5
IHdpdGggc21vb3RoIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgR1RLLW9ubHkgdGVzdCB0byB2ZXJpZnkgQ1NTIHNjcm9sbCBz
bmFwcGluZyBhbmQga2luZXRpYy90b3VjaHBhZAorICAgICAgICBzY3JvbGxpbmcgYmVoYXZlIGNv
cnJlY3RseS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBw
aW5nLWludGVyYWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIxLTEwLTA1ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGF1dG9mb2N1cyBhdHRyaWJ1dGUgZGVwZW5k
ZW5jaWVzIGluIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZmEzZGNiNTM0NGQ1ZjE1NDk5
M2FmODQ3Y2Q0M2U0YmU1YjY2MGFmLi43ODI5YjcxMTE4OTYwOGQ5NzQ1YzViMGNhNDFkNzVhYjFi
NGFjNmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU5LDYgKzU5LDcgQEAgZmFzdC9ldmVudHMv
d2F0Y2hvcyBbIFNraXAgXQogZmFzdC9ldmVudHMvcG9pbnRlci9pb3MgWyBTa2lwIF0KIGZhc3Qv
ZXZlbnRzL3RvdWNoL2lvcyBbIFNraXAgXQogZmFzdC9oaXN0b3J5L2lvcyBbIFNraXAgXQorZmFz
dC9zY3JvbGxpbmcvZ3RrIFsgU2tpcCBdCiBmYXN0L3Njcm9sbGluZy9pb3MgWyBTa2lwIF0KIGZh
c3Qvc2Nyb2xsaW5nL21hYyBbIFNraXAgXQogZmFzdC9zY3JvbGxpbmcvaXBhZCBbIFNraXAgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNu
YXBwaW5nLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL2d0ay91c2VyLXNjcm9sbC1zbmFwcGluZy1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWQ4ZmViYTk4N2VmOTM5N2Q3MDVhYTFmODYwZjUwMTFhZTIxMjcxYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2d0ay91c2VyLXNjcm9sbC1z
bmFwcGluZy1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitQQVNTIFNj
cm9sbCBkb3dud2FyZHMgYnkgMjUgcGl4ZWxzCitQQVNTIFNjcm9sbCBkb3dud2FyZHMgYnkgYW5v
dGhlciAyNSBwaXhlbHMKK1BBU1MgRW5kIHNjcm9sbCBzbmFwcyBiYWNrIHRvIHRvcAorUEFTUyBT
Y3JvbGwgZG93bndhcmRzIGJ5IDIwMCBwaXhlbHMKK1BBU1MgRW5kIHNjcm9sbCBzaG91bGQgc25h
cCB0byBuZXh0IGVsZW1lbnQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ndGsv
dXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL2d0ay91c2VyLXNjcm9sbC1zbmFwcGluZy1pbnRlcmFjdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhlNmUwZTkzNGFlMWMxMTI2NDAxMGM5ZDg3YTk0MzJiMDViOWRlNmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ndGsvdXNlci1zY3JvbGwtc25h
cHBpbmctaW50ZXJhY3Rpb24uaHRtbApAQCAtMCwwICsxLDEyMCBAQAorPCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyB1c2VUaHJlYWRlZFNjcm9sbGluZz1mYWxzZSBdIC0tPgorPCFET0NUWVBFIGh0
bWw+CisKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICA8dGl0bGU+Q1NTIHNjcm9sbCBzbmFwcGluZyBz
aG91bGQgbm90IGNvbmZsaWN0IHdpdGggdXNlciBzY3JvbGxpbmc8L3RpdGxlPgorICA8c3R5bGU+
CisgICAgaHRtbCB7CisgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTsKKyAgICB9
CisKKyAgICBib2R5IHsKKyAgICAgIG1hcmdpbjogMDsKKyAgICB9CisKKyAgICBkaXYgeworICAg
ICAgd2lkdGg6IDEwMCU7CisgICAgICBoZWlnaHQ6IDI1MHB4OworICAgICAgc2Nyb2xsLXNuYXAt
YWxpZ246IHN0YXJ0OworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2
PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8
ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2Pgor
ICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KK3ZhciBleHBl
Y3RlZFNjcm9sbFRvcCA9IDA7Cit2YXIgdGVzdHNQYXNzZWQgPSAwOwordmFyIHRlc3REZXNjcmlw
dGlvbjsKKworZnVuY3Rpb24gc3RhcnRTY3JvbGwoc3RhcnR4LCBzdGFydHksIGRlbHRhWCwgZGVs
dGFZKQoreworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0eCwgc3RhcnR5KTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoLWRlbHRhWCwgLWRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIp
OworfQorCitmdW5jdGlvbiBjb250aW51ZVNjcm9sbChkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLWRlbHRh
WCwgLWRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOworfQorCitmdW5jdGlvbiBlbmRTY3JvbGwo
ZGVsdGFYLCBkZWx0YVkpCit7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKC1kZWx0YVgsIC1kZWx0YVksICJlbmRlZCIsICJub25lIik7Cit9
CisKK2Z1bmN0aW9uIHRyaWdnZXJOZXh0VGVzdCgpIHsKKyAgICBpZiAodGVzdHNQYXNzZWQpCisg
ICAgICAgIGRlYnVnKCJQQVNTICIgKyB0ZXN0RGVzY3JpcHRpb24pOworCisgICAgc3dpdGNoICh0
ZXN0c1Bhc3NlZCkgeworICAgIGNhc2UgMDoKKyAgICAgICAgdGVzdERlc2NyaXB0aW9uID0gIlNj
cm9sbCBkb3dud2FyZHMgYnkgMjUgcGl4ZWxzIgorICAgICAgICBleHBlY3RlZFNjcm9sbFRvcCA9
IDI1OworICAgICAgICBzdGFydFNjcm9sbCg1MCwgNTAsIDAsIDI1KTsKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSAxOgorICAgICAgICB0ZXN0RGVzY3JpcHRpb24gPSAiU2Nyb2xsIGRvd253
YXJkcyBieSBhbm90aGVyIDI1IHBpeGVscyIKKyAgICAgICAgZXhwZWN0ZWRTY3JvbGxUb3AgPSA1
MDsKKyAgICAgICAgY29udGludWVTY3JvbGwoMCwgMjUpOworICAgICAgICByZXR1cm47CisKKyAg
ICBjYXNlIDI6CisgICAgICAgIHRlc3REZXNjcmlwdGlvbiA9ICJFbmQgc2Nyb2xsIHNuYXBzIGJh
Y2sgdG8gdG9wIgorICAgICAgICBleHBlY3RlZFNjcm9sbFRvcCA9IDA7CisgICAgICAgIGVuZFNj
cm9sbCgwLCAwKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSAzOgorICAgICAgICB0ZXN0
RGVzY3JpcHRpb24gPSAiU2Nyb2xsIGRvd253YXJkcyBieSAyMDAgcGl4ZWxzIgorICAgICAgICBl
eHBlY3RlZFNjcm9sbFRvcCA9IDIwMDsKKyAgICAgICAgc3RhcnRTY3JvbGwoNTAsIDUwLCAwLCAy
MDApOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIDQ6CisgICAgICAgIHRlc3REZXNjcmlw
dGlvbiA9ICJFbmQgc2Nyb2xsIHNob3VsZCBzbmFwIHRvIG5leHQgZWxlbWVudCIKKyAgICAgICAg
ZXhwZWN0ZWRTY3JvbGxUb3AgPSAyNTA7CisgICAgICAgIGVuZFNjcm9sbCgwLCAwKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisKKyAgICByZXR1cm47Cit9CisKK2Z1bmN0aW9uIHNjcm9s
bEV2ZW50Q2FsbGJhY2soKSB7CisgICAgaWYgKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Ny
b2xsVG9wID09IGV4cGVjdGVkU2Nyb2xsVG9wKSB7CisgICAgICAgICsrdGVzdHNQYXNzZWQ7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRyaWdnZXJOZXh0VGVz
dCgpOworICAgIH0KK30KKworCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBz
Y3JvbGxFdmVudENhbGxiYWNrLCBmYWxzZSk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgZXZlbnRTZW5kZXIuc2V0V2hlZWxIYXNQcmVjaXNlRGVsdGFzKHRydWUpOwor
ICAgIHRyaWdnZXJOZXh0VGVzdCgpOworfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg3ZjdlMzdjNzY4YjczNDg5Yjk1
ZTg4NjA1MjZkNzVlNDRlM2NkM2MuLjgzNzZjMGNhZjcwYmRkNjUwNzc2NjU3OTY5ODFlN2M4Nzdl
ZTNiYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
OSw2ICsxOSw3IEBACiAjIFBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgogYWNjZXNzaWJp
bGl0eS9ndGsgWyBQYXNzIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9ndGsgWyBQYXNzIF0KK2Zhc3Qv
c2Nyb2xsaW5nL2d0ayBbIFBhc3MgXQogc3dpcGUgWyBQYXNzIF0KIAogaWV0ZXN0Y2VudGVyL2Nz
czMvZmxleGJveC9mbGV4Ym94LWxheW91dC0wMDEuaHRtIFsgUGFzcyBdCg==
</data>
<flag name="commit-queue"
          id="464240"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440348</attachid>
            <date>2021-10-06 02:40:07 -0700</date>
            <delta_ts>2021-10-06 09:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229037-20211006104005.patch</filename>
            <type>text/plain</type>
            <size>16597</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc0MDYzOTg1MDUwYjg1
YjA5YzM3ODVmNWRmOTc0NGRhZDI4MDlkZi4uMmJiNWQ0NzA5NDRkODdiODQwMzQzMDAyNDdlZTA1
NGQ5NGY2ZDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTEwLTA2ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIENTUyBzY3Jv
bGwgc25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5IHdpdGggc21vb3RoIHNjcm9sbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBDU1Mgc2Nyb2xs
IHNuYXBwaW5nIGJlaGF2ZSBpbiBhIHByZWRpY3RhYmxlIHdheSB3aGVuIHNjcm9sbGluZworICAg
ICAgICB3aXRoIHRvdWNocGFkcy9zY3JlZW5zIG9uIEdUSy9XUEUuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9zY3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2
ZW50Rm9yS2luZXRpY1Njcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6YWRqdXN0RGVsdGFGb3JTbmFwcGluZ0lmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjppc1VzZXJTY3Jv
bGxJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjppc1Njcm9sbFNuYXBJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppc1VzZXJT
Y3JvbGxJblByb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTWFjOjppc1Njcm9sbFNuYXBJblByb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKwog
MjAyMS0xMC0wNCAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBSRUdSRVNTSU9OOiBBc3luYyBzY3JvbGxpbmcganVtcHMgdG8gdGhlIHRvcCBvZiB0
aGUgcGFnZSB1bnRpbCBrZXlib2FyZC1pbml0aWF0ZWQgcGFnaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2ODIyZThmYWE4NWExMzRjNjdmOTgxYWFmMTk2
Mjk5MjQ2YjFiZThlLi5hZTUzYmIwYjc0ODZiNTEyZWUyZjJmZmU3ZGI0YTRlMGVjYjY0YTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTkzLDkgKzkzLDEw
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxBbmltYXRpb25zKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNz
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5pc1VzZXJTY3JvbGxJblBy
b2dyZXNzKCk7IH0KKyAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpOyB9CiAKICAg
ICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCmluZGV4IGIyYzE3YThk
MjQ4NjllNzkzM2JiYmFlZjQwZjU1Y2UyMzYxZTYxMDEuLjRkYWUwMjViY2ExNWExYzUxZTQzNGU5
NWZmNWY3YzVmMmM0NTU5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTI0MCwxMSArMjQwLDE2IEBAIGJv
b2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRp
Y1Njcm9sbGluZyhjb25zdCBQbGF0CiAgICAgaWYgKCFldmVudC5pc0VuZE9mTm9uTW9tZW50dW1T
Y3JvbGwoKSAmJiAhZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX2luU2Nyb2xsR2VzdHVyZSA9IGZhbHNlOworCiAg
ICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAmJiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
bV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgewogICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24t
PnN0b3AoKTsKICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICB9CiAK
KyAgICBpZiAodXNlc1Njcm9sbFNuYXAoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
aWYgKCFtX2N1cnJlbnRBbmltYXRpb24pCiAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpOwogCkBAIC0yNjcsOSArMjcy
LDI5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50
Rm9yS2luZXRpY1Njcm9sbGluZyhjb25zdCBQbGF0CiB9CiAjZW5kaWYKIAordm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6YWRqdXN0RGVsdGFGb3JTbmFwcGluZ0lmTmVlZGVkKGZsb2F0
JiBkZWx0YVgsIGZsb2F0JiBkZWx0YVkpCit7CisgICAgaWYgKHNuYXBPZmZzZXRzSW5mbygpICYm
ICFzbmFwT2Zmc2V0c0luZm8oKS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlID0g
bV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGF1dG8gc2Nyb2xsT2Zmc2V0ID0g
bV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50
LnNjcm9sbEV4dGVudHMoKTsKKworICAgICAgICBhdXRvIG9yaWdpbmFsT2Zmc2V0ID0gTGF5b3V0
UG9pbnQoc2Nyb2xsT2Zmc2V0LngoKSAvIHNjYWxlLCBzY3JvbGxPZmZzZXQueSgpIC8gc2NhbGUp
OworICAgICAgICBhdXRvIG5ld09mZnNldCA9IExheW91dFBvaW50KChzY3JvbGxPZmZzZXQueCgp
ICsgZGVsdGFYKSAvIHNjYWxlLCAoc2Nyb2xsT2Zmc2V0LnkoKSArIGRlbHRhWSkgLyBzY2FsZSk7
CisKKyAgICAgICAgYXV0byBvZmZzZXRYID0gc25hcE9mZnNldHNJbmZvKCktPmNsb3Nlc3RTbmFw
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgTGF5b3V0U2l6ZShleHRlbnRzLmNv
bnRlbnRzU2l6ZSksIG5ld09mZnNldCwgZGVsdGFYLCBvcmlnaW5hbE9mZnNldC54KCkpLmZpcnN0
OworICAgICAgICBhdXRvIG9mZnNldFkgPSBzbmFwT2Zmc2V0c0luZm8oKS0+Y2xvc2VzdFNuYXBP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgTGF5b3V0U2l6ZShleHRlbnRzLmNvbnRl
bnRzU2l6ZSksIG5ld09mZnNldCwgZGVsdGFZLCBvcmlnaW5hbE9mZnNldC55KCkpLmZpcnN0Owor
CisgICAgICAgIGRlbHRhWCA9IChvZmZzZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxl
OworICAgICAgICBkZWx0YVkgPSAob2Zmc2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2Fs
ZTsKKyAgICB9Cit9CisKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBtX2luU2Nyb2xsR2VzdHVyZSA9IHdoZWVsRXZl
bnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpICYmICF3aGVlbEV2ZW50LmlzRW5kT2ZOb25N
b21lbnR1bVNjcm9sbCgpICYmICF3aGVlbEV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1T
Y3JvbGwoKTsKKwogICAgIGlmIChwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmco
d2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCkBAIC0yODgsOSArMzEz
LDYgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWUKICAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYg
c2Nyb2xsT2Zmc2V0LnkoKSA8PSBtaW5Qb3NpdGlvbi55KCkpKQogICAgICAgICBkZWx0YVkgPSAw
OwogCi0gICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgaWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2
ZW50KSB7CiAgICAgICAgIGlmIChkZWx0YVgpIHsKICAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUg
PSBkZWx0YVggPCAwOwpAQCAtMzA5LDIwICszMzEsMTQgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWUKICAgICBkZWx0YVggPSAtZGVsdGFYOwogICAgIGRlbHRhWSA9IC1kZWx0YVk7CiAKLSAgICBp
ZiAoc25hcE9mZnNldHNJbmZvKCkgJiYgIXNuYXBPZmZzZXRzSW5mbygpLT5pc0VtcHR5KCkpIHsK
LSAgICAgICAgZmxvYXQgc2NhbGUgPSBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAg
ICAgYXV0byBvcmlnaW5hbE9mZnNldCA9IExheW91dFBvaW50KHNjcm9sbE9mZnNldC54KCkgLyBz
Y2FsZSwgc2Nyb2xsT2Zmc2V0LnkoKSAvIHNjYWxlKTsKLSAgICAgICAgYXV0byBuZXdPZmZzZXQg
PSBMYXlvdXRQb2ludCgoc2Nyb2xsT2Zmc2V0LngoKSArIGRlbHRhWCkgLyBzY2FsZSwgKHNjcm9s
bE9mZnNldC55KCkgKyBkZWx0YVkpIC8gc2NhbGUpOwotCi0gICAgICAgIGF1dG8gb2Zmc2V0WCA9
IHNuYXBPZmZzZXRzSW5mbygpLT5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwsIExheW91dFNpemUoZXh0ZW50cy5jb250ZW50c1NpemUpLCBuZXdPZmZzZXQsIGRl
bHRhWCwgb3JpZ2luYWxPZmZzZXQueCgpKS5maXJzdDsKLSAgICAgICAgYXV0byBvZmZzZXRZID0g
c25hcE9mZnNldHNJbmZvKCktPmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVy
dGljYWwsIExheW91dFNpemUoZXh0ZW50cy5jb250ZW50c1NpemUpLCBuZXdPZmZzZXQsIGRlbHRh
WSwgb3JpZ2luYWxPZmZzZXQueSgpKS5maXJzdDsKKyAgICBpZiAoIW1faW5TY3JvbGxHZXN0dXJl
KQorICAgICAgICBhZGp1c3REZWx0YUZvclNuYXBwaW5nSWZOZWVkZWQoZGVsdGFYLCBkZWx0YVkp
OwogCi0gICAgICAgIGRlbHRhWCA9IChvZmZzZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNj
YWxlOwotICAgICAgICBkZWx0YVkgPSAob2Zmc2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBz
Y2FsZTsKLSAgICB9CisgICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fY2xpZW50
LnNjcm9sbEFuaW1hdGlvbkVuYWJsZWQoKSAmJiAhd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzKCkpIHsKKyAgICBpZiAobV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCgp
ICYmICFtX2luU2Nyb2xsR2VzdHVyZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKSB7CiAgICAgICAgICAgICBhdXRvIGxh
c3REZXN0aW5hdGlvbk9mZnNldCA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblNtb290aD4oKm1f
Y3VycmVudEFuaW1hdGlvbikuZGVzdGluYXRpb25PZmZzZXQoKTsKICAgICAgICAgICAgIHJldGFy
Z2V0QW5pbWF0ZWRTY3JvbGwobGFzdERlc3RpbmF0aW9uT2Zmc2V0ICsgRmxvYXRTaXplIHsgZGVs
dGFYLCBkZWx0YVkgfSk7CkBAIC0zMzYsNiArMzUyLDIyIEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKworYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5T
Y3JvbGxHZXN0dXJlOworfQorCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjppc1Nj
cm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2luU2Nyb2xsR2VzdHVyZSB8fCAo
bV9jdXJyZW50QW5pbWF0aW9uICYmIG1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIHZv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRl
eEZvckNsaWVudE9mZnNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCBiYjhhZTA1ZDA2YzMyYjMwZmFjODUwM2Y4
ZDVmMTEzMjY5OWZmOWJjLi5hNjQ1NzY0NTEwZDM1Nzg1NThkOWE0NTE2NmVlMWRkYzgyMmQ1NTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmgKQEAgLTE2MywxMiArMTYzLDEyIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgaGFuZGxlZC4KICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50Jik7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIEZsb2F0U2l6
ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmKTsKLQogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwogICAgIGJv
b2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZC4KICAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKTsKIApAQCAtMjE2LDYgKzIxNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
Y3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CiAgICAgU2Nyb2xs
RXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFs
OwogCisgICAgdm9pZCBhZGp1c3REZWx0YUZvclNuYXBwaW5nSWZOZWVkZWQoZmxvYXQmIGRlbHRh
WCwgZmxvYXQmIGRlbHRhWSk7CisKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpICYmICFQ
TEFURk9STShNQUMpCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGhhbmRsZWQuCiAgICAgYm9vbCBw
cm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CkBAIC0yMzQsNiArMjM2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBbmltYXRp
bmdSdWJiZXJCYW5kIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNBbmltYXRpbmdTY3JvbGxTbmFw
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2luU2Nyb2xsR2VzdHVyZSB7IGZhbHNlIH07CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgV2FsbFRpbWUgbV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXA7CkBA
IC0yNDEsNyArMjQ0LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9zdHJldGNoU2Nyb2xs
Rm9yY2U7CiAgICAgRmxvYXRTaXplIG1fbW9tZW50dW1WZWxvY2l0eTsKIAotICAgIGJvb2wgbV9p
blNjcm9sbEdlc3R1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tb21lbnR1bVNjcm9sbEluUHJv
Z3Jlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc1J1YmJlckJhbmRpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAppbmRleCA2MDNjMDJkYzMz
ODEzMmI1YzMyNDcyMDc3NDZmZjg5MmIxODE3MzZkLi4zZDZhYTgyMTkxZWViYjIwNTU1ZWZlMDNh
MzFkYmI4NWUyN2Y3OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMuaApAQCAtNDksMTAgKzQ5LDggQEAgcHJpdmF0ZToKICAgICBib29sIHBs
YXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGhhbmRsZVdo
ZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgZmluYWw7Ci0gICAgCi0gICAg
Ym9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CisKICAgICBib29sIGlz
UnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGlzU2Nyb2xsU25h
cEluUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRG
b3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggNGNj
OGY1MjgwOGMxODMwNjFjYThlN2QwZTgyMjJjNDA2ZmZlM2EzNC4uNjM4OGE4OGQyNjc0YjEzNTQx
ODllZDQwMGVkZTY3NTlhYTkyNWFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNzMsMjEgKzczLDExIEBAIHN0YXRpYyBib29s
IHJ1YmJlckJhbmRpbmdFbmFibGVkRm9yU3lzdGVtKCkKICAgICByZXR1cm4gZW5hYmxlZDsKIH0K
IAotYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5pc1VzZXJTY3JvbGxJblByb2dyZXNz
KCk7Ci19Ci0KIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzUnViYmVyQmFuZEluUHJvZ3Jlc3Mo
KSBjb25zdAogewogICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaXNSdWJiZXJCYW5kSW5Q
cm9ncmVzcygpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdG9yTWFjOjppc1Njcm9sbFNuYXBJblBy
b2dyZXNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmlzU2Nyb2xs
U25hcEluUHJvZ3Jlc3MoKTsKLX0KLQogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hl
ZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogewogICAgIExPR19X
SVRIX1NUUkVBTShPdmVybGF5U2Nyb2xsYmFycywgc3RyZWFtIDw8ICJTY3JvbGxBbmltYXRvck1h
YyAiIDw8IHRoaXMgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IG1fc2Nyb2xsYWJsZUFyZWEgPDwg
IiBoYW5kbGVXaGVlbEV2ZW50UGhhc2UgIiA8PCBwaGFzZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzUyN2Q5NWVmNjk4
MzVhODkzYmNlMzFhZWJhZWQxNzUwNDFlMmM0YS4uYjM3MzU0NDM5ZjVkODNmNTZkNTQzMTc0NzFl
YmE1YWE3YjQ3ODIxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTA2ICBDaHJpcyBM
b3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIENTUyBzY3JvbGwg
c25hcHBpbmcgaW50ZXJhY3RzIGJhZGx5IHdpdGggc21vb3RoIHNjcm9sbGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgR1RLLW9ubHkgdGVz
dCB0byB2ZXJpZnkgQ1NTIHNjcm9sbCBzbmFwcGluZyBhbmQga2luZXRpYy90b3VjaHBhZAorICAg
ICAgICBzY3JvbGxpbmcgYmVoYXZlIGNvcnJlY3RseS4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5n
LWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxp
bmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTEwLTA1ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGF1
dG9mb2N1cyBhdHRyaWJ1dGUgZGVwZW5kZW5jaWVzIGluIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBhZmEzZGNiNTM0NGQ1ZjE1NDk5M2FmODQ3Y2Q0M2U0YmU1YjY2MGFmLi43ODI5YjcxMTE4
OTYwOGQ5NzQ1YzViMGNhNDFkNzVhYjFiNGFjNmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU5
LDYgKzU5LDcgQEAgZmFzdC9ldmVudHMvd2F0Y2hvcyBbIFNraXAgXQogZmFzdC9ldmVudHMvcG9p
bnRlci9pb3MgWyBTa2lwIF0KIGZhc3QvZXZlbnRzL3RvdWNoL2lvcyBbIFNraXAgXQogZmFzdC9o
aXN0b3J5L2lvcyBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvZ3RrIFsgU2tpcCBdCiBmYXN0L3Nj
cm9sbGluZy9pb3MgWyBTa2lwIF0KIGZhc3Qvc2Nyb2xsaW5nL21hYyBbIFNraXAgXQogZmFzdC9z
Y3JvbGxpbmcvaXBhZCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvZ3RrL3VzZXItc2Nyb2xsLXNuYXBwaW5nLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2d0ay91c2VyLXNjcm9sbC1zbmFwcGluZy1pbnRl
cmFjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ4ZmViYTk4N2VmOTM5N2Q3MDVhYTFm
ODYwZjUwMTFhZTIxMjcxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL2d0ay91c2VyLXNjcm9sbC1zbmFwcGluZy1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5IEBACitQQVNTIFNjcm9sbCBkb3dud2FyZHMgYnkgMjUgcGl4ZWxzCitQQVNT
IFNjcm9sbCBkb3dud2FyZHMgYnkgYW5vdGhlciAyNSBwaXhlbHMKK1BBU1MgRW5kIHNjcm9sbCBz
bmFwcyBiYWNrIHRvIHRvcAorUEFTUyBTY3JvbGwgZG93bndhcmRzIGJ5IDIwMCBwaXhlbHMKK1BB
U1MgRW5kIHNjcm9sbCBzaG91bGQgc25hcCB0byBuZXh0IGVsZW1lbnQKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24u
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2d0ay91c2VyLXNjcm9sbC1zbmFwcGlu
Zy1pbnRlcmFjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNmUwZTkzNGFlMWMxMTI2NDAxMGM5ZDg3
YTk0MzJiMDViOWRlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9ndGsvdXNlci1zY3JvbGwtc25hcHBpbmctaW50ZXJhY3Rpb24uaHRtbApAQCAtMCwwICsx
LDEyMCBAQAorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VUaHJlYWRlZFNjcm9sbGluZz1m
YWxzZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICA8dGl0
bGU+Q1NTIHNjcm9sbCBzbmFwcGluZyBzaG91bGQgbm90IGNvbmZsaWN0IHdpdGggdXNlciBzY3Jv
bGxpbmc8L3RpdGxlPgorICA8c3R5bGU+CisgICAgaHRtbCB7CisgICAgICBzY3JvbGwtc25hcC10
eXBlOiB5IG1hbmRhdG9yeTsKKyAgICB9CisKKyAgICBib2R5IHsKKyAgICAgIG1hcmdpbjogMDsK
KyAgICB9CisKKyAgICBkaXYgeworICAgICAgd2lkdGg6IDEwMCU7CisgICAgICBoZWlnaHQ6IDI1
MHB4OworICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAgIH0KKyAgPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2Pjwv
ZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2
PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorPC9i
b2R5PgorPHNjcmlwdD4KK3ZhciBleHBlY3RlZFNjcm9sbFRvcCA9IDA7Cit2YXIgdGVzdHNQYXNz
ZWQgPSAwOwordmFyIHRlc3REZXNjcmlwdGlvbjsKKworZnVuY3Rpb24gc3RhcnRTY3JvbGwoc3Rh
cnR4LCBzdGFydHksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0eCwgc3RhcnR5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLWRlbHRhWCwgLWRl
bHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOworfQorCitmdW5jdGlvbiBjb250aW51ZVNjcm9sbChk
ZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoLWRlbHRhWCwgLWRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOwor
fQorCitmdW5jdGlvbiBlbmRTY3JvbGwoZGVsdGFYLCBkZWx0YVkpCit7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC1kZWx0YVgsIC1kZWx0
YVksICJlbmRlZCIsICJub25lIik7Cit9CisKK2Z1bmN0aW9uIHRyaWdnZXJOZXh0VGVzdCgpIHsK
KyAgICBpZiAodGVzdHNQYXNzZWQpCisgICAgICAgIGRlYnVnKCJQQVNTICIgKyB0ZXN0RGVzY3Jp
cHRpb24pOworCisgICAgc3dpdGNoICh0ZXN0c1Bhc3NlZCkgeworICAgIGNhc2UgMDoKKyAgICAg
ICAgdGVzdERlc2NyaXB0aW9uID0gIlNjcm9sbCBkb3dud2FyZHMgYnkgMjUgcGl4ZWxzIgorICAg
ICAgICBleHBlY3RlZFNjcm9sbFRvcCA9IDI1OworICAgICAgICBzdGFydFNjcm9sbCg1MCwgNTAs
IDAsIDI1KTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSAxOgorICAgICAgICB0ZXN0RGVz
Y3JpcHRpb24gPSAiU2Nyb2xsIGRvd253YXJkcyBieSBhbm90aGVyIDI1IHBpeGVscyIKKyAgICAg
ICAgZXhwZWN0ZWRTY3JvbGxUb3AgPSA1MDsKKyAgICAgICAgY29udGludWVTY3JvbGwoMCwgMjUp
OworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIDI6CisgICAgICAgIHRlc3REZXNjcmlwdGlv
biA9ICJFbmQgc2Nyb2xsIHNuYXBzIGJhY2sgdG8gdG9wIgorICAgICAgICBleHBlY3RlZFNjcm9s
bFRvcCA9IDA7CisgICAgICAgIGVuZFNjcm9sbCgwLCAwKTsKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2FzZSAzOgorICAgICAgICB0ZXN0RGVzY3JpcHRpb24gPSAiU2Nyb2xsIGRvd253YXJkcyBi
eSAyMDAgcGl4ZWxzIgorICAgICAgICBleHBlY3RlZFNjcm9sbFRvcCA9IDIwMDsKKyAgICAgICAg
c3RhcnRTY3JvbGwoNTAsIDUwLCAwLCAyMDApOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IDQ6CisgICAgICAgIHRlc3REZXNjcmlwdGlvbiA9ICJFbmQgc2Nyb2xsIHNob3VsZCBzbmFwIHRv
IG5leHQgZWxlbWVudCIKKyAgICAgICAgZXhwZWN0ZWRTY3JvbGxUb3AgPSAyNTA7CisgICAgICAg
IGVuZFNjcm9sbCgwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlzU3VjY2Vz
c2Z1bGx5UGFyc2VkKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisKKyAgICByZXR1
cm47Cit9CisKK2Z1bmN0aW9uIHNjcm9sbEV2ZW50Q2FsbGJhY2soKSB7CisgICAgaWYgKGRvY3Vt
ZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wID09IGV4cGVjdGVkU2Nyb2xsVG9wKSB7Cisg
ICAgICAgICsrdGVzdHNQYXNzZWQ7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRyaWdnZXJOZXh0VGVzdCgpOworICAgIH0KK30KKworCitkb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKCJzY3JvbGwiLCBzY3JvbGxFdmVudENhbGxiYWNrLCBmYWxzZSk7CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5kZXIuc2V0V2hlZWxI
YXNQcmVjaXNlRGVsdGFzKHRydWUpOworICAgIHRyaWdnZXJOZXh0VGVzdCgpOworfQorPC9zY3Jp
cHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDg3ZjdlMzdjNzY4YjczNDg5Yjk1ZTg4NjA1MjZkNzVlNDRlM2NkM2MuLjgzNzZjMGNhZjcw
YmRkNjUwNzc2NjU3OTY5ODFlN2M4NzdlZTNiYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOSw2ICsxOSw3IEBACiAjIFBsYXRmb3JtLXNwZWNpZmlj
IGRpcmVjdG9yaWVzLgogYWNjZXNzaWJpbGl0eS9ndGsgWyBQYXNzIF0KIGVkaXRpbmcvcGFzdGVi
b2FyZC9ndGsgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL2d0ayBbIFBhc3MgXQogc3dpcGUgWyBQ
YXNzIF0KIAogaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9mbGV4Ym94LWxheW91dC0wMDEuaHRt
IFsgUGFzcyBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>