<?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>234842</bug_id>
          
          <creation_ts>2022-01-04 07:27:50 -0800</creation_ts>
          <short_desc>[:has() pseudo-class] Avoid O(n^2) in style invalidation with repeated DOM mutations</short_desc>
          <delta_ts>2022-02-04 22:48:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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://github.com/web-platform-tests/wpt/pull/32240</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>
          
          <blocked>227702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>j.nicklas</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ntim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1827935</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-04 07:27:50 -0800</bug_when>
    <thetext>Even without :has() it is possible to have cases where the cost of doing accurate style invalidation exceeds the benefits. With :has() these cases become easier to hit. Add a backdown mechanism where we detect this and switch to eager invalidation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827949</commentid>
    <comment_count>1</comment_count>
      <attachid>448298</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-04 07:57:33 -0800</bug_when>
    <thetext>Created attachment 448298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827950</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-04 07:57:53 -0800</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/32240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827951</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-01-04 07:58:32 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828193</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-04 23:19:27 -0800</bug_when>
    <thetext>It seems both clever to do this, but also makes me wish we had some other definition of &quot;too expensive&quot; other than using ApproximateTime. Will this be OK from an automated testing point of view?

Seems like we could have different test results on different speed computers, and other such things, whereas some other definition of complexity (counting something, perhaps) would give us more reproducible results, that could have the same effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828194</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-04 23:22:07 -0800</bug_when>
    <thetext>Another way to think about it is that if we stick with the ApproximateTime strategy, as computers get faster and faster, WebKit becomes more and more willing to waste up to 64ms doing even more accurate style invalidation that it did on the previous generation, but it still doesn’t have enough benefit to be worth it.

Maybe not a practical problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828244</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-05 03:34:49 -0800</bug_when>
    <thetext>I like the use of time measurement since it actually gives a highly relevant definition for &quot;expensive&quot;. The style system is complex enough that &quot;count number of times something happens&quot; approaches are difficult to make capture all scenarios.

This is really meant to protect against pathological cases, the current 64ms limit is difficult to hit unless you are specifically trying. This probably won&apos;t affect any tests normal tests.

I think we need a counter in addition to the timer though. The current patch would make debugging annoying since setting a breakpoint inside the timed section would affects subsequent execution even in trivial cases.

Also I&apos;m still considering other options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828258</commentid>
    <comment_count>7</comment_count>
      <attachid>448298</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-01-05 05:31:15 -0800</bug_when>
    <thetext>Comment on attachment 448298
Patch

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

&gt; LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-complexity.html:39
&gt; +const start = performance.now();

nit: You&apos;re not using this. I assume you want to remove this? Logging (end - start) would cause flakiness in the test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829796</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-11 07:28:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/87397176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830530</commentid>
    <comment_count>9</comment_count>
      <attachid>449053</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-13 06:07:51 -0800</bug_when>
    <thetext>Created attachment 449053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830575</commentid>
    <comment_count>10</comment_count>
      <attachid>449053</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-01-13 09:23:18 -0800</bug_when>
    <thetext>Comment on attachment 449053
Patch

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

&gt; Source/WebCore/style/ChildChangeInvalidation.cpp:72
&gt; +                // FIXME: We should cache this state accross invalidations instead of just testing a single sibling.

Typo: across

&gt; LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-complexity.html:29
&gt; +const yellow = &apos;rgb(128, 0, 128)&apos;;

This is actually purple.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-complexity.html:48
&gt; +for (let i = 0; i &lt; count - 1; ++i) {

Why -1 here?

&gt; LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-complexity.html:65
&gt; +testColor(`After appending div with ${count} elements. This should not time out.`, yellow);

You should probably rename yellow to purple since that&apos;s what you use in the CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830827</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-14 00:02:48 -0800</bug_when>
    <thetext>&gt; This is actually purple.

ohno
 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-complexity.html:48
&gt; &gt; +for (let i = 0; i &lt; count - 1; ++i) {
&gt; 
&gt; Why -1 here?

we add the last element separately so that gives exactly count elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830845</commentid>
    <comment_count>12</comment_count>
      <attachid>449149</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-14 02:05:26 -0800</bug_when>
    <thetext>Created attachment 449149
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830848</commentid>
    <comment_count>13</comment_count>
      <attachid>449150</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-14 02:18:24 -0800</bug_when>
    <thetext>Created attachment 449150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830863</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-14 03:58:01 -0800</bug_when>
    <thetext>Committed r288012 (246038@main): &lt;https://commits.webkit.org/246038@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449150.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830936</commentid>
    <comment_count>15</comment_count>
      <attachid>449150</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-14 09:33:23 -0800</bug_when>
    <thetext>Comment on attachment 449150
Patch

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

&gt; Source/WebCore/style/ChildChangeInvalidation.h:31
&gt; +#include &lt;wtf/HashSet.h&gt;

Pretty sure this can be done with Forward.h instead, and might be worth it. Can define a type and declare a function involving it without the HashSet.h header. The hash table headers are super commonly used but also huge, so I’m never sure how important it is to keep them out of other headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837717</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-02-04 22:48:37 -0800</bug_when>
    <thetext>*** Bug 235840 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448298</attachid>
            <date>2022-01-04 07:57:33 -0800</date>
            <delta_ts>2022-01-13 06:07:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234842-20220104175732.patch</filename>
            <type>text/plain</type>
            <size>14617</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5M2ZmNzU2NzM0MjY5
NjFkOWI2NjhhNmM3NTExNDY4MWE3YTM3Ni4uNTA5ZjMwNmVkYzI4NDJhYjcyZmRiOTY3ZDQ0ZGM1
MTc5MmViYTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIyLTAxLTA0ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gQXZvaWQgTyhuXjIpIGluIHN0eWxlIGludmFsaWRhdGlvbiB3aXRoIHJlcGVhdGVkIERP
TSBtdXRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDg0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV2ZW4gd2l0aG91dCA6aGFzKCkgaXQgaXMgcG9zc2libGUgdG8gaGF2ZSBjYXNlcyB3aGVy
ZSB0aGUgY29zdCBvZiBkb2luZyBhY2N1cmF0ZSBzdHlsZSBpbnZhbGlkYXRpb24gZXhjZWVkcyB0
aGUgYmVuZWZpdHMuCisgICAgICAgIFdpdGggOmhhcygpIHRoZXNlIGNhc2VzIGJlY29tZSBlYXNp
ZXIgdG8gaGl0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG1lY2hhbmlzbSB3aGVyZSB3
ZSBkZXRlY3QgdGhpcyBhbmQgc3dpdGNoIHRvIGVhZ2VyIGludmFsaWRhdGlvbiB0aGF0IGRvZXMg
bm90IGRlcGVuZCBvbiBET00gc2l6ZS4KKyAgICAgICAgTWFueSBpbmRpdmlkdWFsIHNjZW5hcmlv
cyBjb3VsZCBiZSBvcHRpbWl6ZWQgYnV0IHByb2JhYmx5IG5vdCBhbGwsIHNvIGl0IGlzIGdvb2Qg
dG8gaGF2ZSBhIGJhY2tzdG9wIGluIGFueSBjYXNlLgorICAgICAgICBTdHlsZSB1cGRhdGUgd2l0
aCA6aGFzKCkgaXMgTyhuKSBzbyBmYWxsaW5nIGJhY2sgdG8gYSBwb3RlbnRpYWxseSBsYXJnZXIg
dXBkYXRlIGlzIG9rLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL3NlbGVjdG9ycy9pbnZhbGlkYXRpb24vaGFzLWNvbXBsZXhpdHkuaHRtbAorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZXNvbHZlU3R5bGUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OnNob3VsZEludmFsaWRhdGVFYWdlcmx5KToKKworICAgICAg
ICBTd2l0Y2ggdG8gZWFnZXIgKG5vbi1ydWxlIG1hdGNoaW5nIGJhc2VkKSBpbnZhbGlkYXRpb24g
aWYgd2UgaGF2ZSBhbHJlYWR5IHNwZW50IGEgbG90IG9mIHRpbWUgZG9pbmcgaW52YWxpZGF0aW9u
cyBzaW5jZSB0aGUgbGFzdCBzdHlsZSB1cGRhdGUuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Oklu
dmFsaWRhdG9yOjp+SW52YWxpZGF0b3IpOgorCisgICAgICAgIE1lYXN1cmUgdGhlIHRpbWUuCisK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVN0eWxl
Rm9yRGVzY2VuZGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkludmFsaWRhdG9yOjpp
bnZhbGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVTZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjptX2RpcnRpZXNBbGxTdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlNjb3BlOjppbnZhbGlkYXRlU3R5bGVBZnRlclN0eWxlU2hlZXRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpldmFsdWF0ZU1lZGlhUXVlcmll
cyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlNjb3BlOjplbGFwc2VkSW52YWxpZGF0aW9uVGltZVNpbmNlTGFzdFN0eWxlVXBkYXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzZXRFbGFwc2VkSW52YWxp
ZGF0aW9uVGltZVNpbmNlTGFzdFN0eWxlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpTY29wZTo6aW5jcmVtZW50RWxhcHNlZEludmFsaWRhdGlvblRpbWVTaW5jZUxhc3RTdHlsZVVw
ZGF0ZSk6CisKKyAgICAgICAgVHJhY2sgaG93IG11Y2ggdGltZSBoYXMgYmVlbiBzcGVudCBpbiBz
dHlsZSBpbnZhbGlkYXRpb24gc2luY2UgdGhlIGxhc3Qgc3R5bGUgdXBkYXRlLgorCiAyMDIyLTAx
LTAzICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNd
IEluY29ycmVjdCB3b3JkLXNwYWNpbmcgZ2FwcyB3aGVuIGxvZ2ljYWwgb3JkZXIgIT0gdmlzdWFs
IG9yZGVyIChiaWRpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDJkYWNkMmRkNWNlM2U1
ZjYyMzMzYTIxNjJjYzM3Njc0NmU4ZmI4OS4uMWM5MjQ1YzcwOTcxMTg5YmNiMDMwZGU3ZTM4MWIz
NjYyNmNhZTllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMTI3LDYgKzIxMjcsOCBA
QCB2b2lkIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSB0eXBlKQogICAg
ICAgICBpZiAobV9ob3ZlcmVkRWxlbWVudCAmJiAhbV9ob3ZlcmVkRWxlbWVudC0+cmVuZGVyZXIo
KSkKICAgICAgICAgICAgIGZyYW1lVmlldy5mcmFtZSgpLm1haW5GcmFtZSgpLmV2ZW50SGFuZGxl
cigpLmRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogCisgICAgICAgIHN0eWxlU2Nv
cGUoKS5yZXNldEVsYXBzZWRJbnZhbGlkYXRpb25UaW1lU2luY2VMYXN0U3R5bGVVcGRhdGUoKTsK
KwogICAgICAgICArK21fc3R5bGVSZWNhbGNDb3VudDsKICAgICAgICAgLy8gRklYTUU6IEFzc2Vy
dCBBU1NFUlQoIW5lZWRzU3R5bGVSZWNhbGMoKSkgaGVyZS4gRG8gd2Ugc3RpbGwgaGF2ZSBzb21l
IGNhc2VzIHdoZXJlIGl0J3Mgbm90IHRydWU/CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUludmFsaWRhdG9yLmNwcAppbmRleCA2Mzk4MGQ3MjBmMDVhMDEzYzNiM2E1NjgxN2IxZjUy
OWNjMWU4OWNiLi43YjY5NzU1MTlmOTI0OTY3ZTM5YTcyNDc2NTZlZTQxZjhlN2Q0YjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApAQCAtODMsMTAgKzgzLDIw
IEBAIHN0YXRpYyBib29sIHNob3VsZERpcnR5QWxsU3R5bGUoY29uc3QgVmVjdG9yPFN0eWxlU2hl
ZXRDb250ZW50cyo+JiBzaGVldHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1JbnZhbGlkYXRv
cjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+JiBzaGVldHMs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGlhUXVlcnlFdmFsdWF0b3IpCi0gICAgOiBt
X293bmVkUnVsZVNldChSdWxlU2V0OjpjcmVhdGUoKSkKK3N0YXRpYyBib29sIHNob3VsZEludmFs
aWRhdGVFYWdlcmx5KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICAvLyBTdG9wIGJvdGhlcmlu
ZyB3aXRoIGFjY3VyYXRlIGludmFsaWRhdGlvbiBpZiBpdCBpcyBnZXR0aW5nIHJlYWxseSBleHBl
bnNpdmUuCisgICAgLy8gVGhlIGFjY3VtdWxhdGVkIGNoYW5nZXMgYXJlIGxpa2VseSB0byByZXN1
bHQgaW4gbGFyZ2UgdXBkYXRlIGluIGFueSBjYXNlLgorICAgIGNvbnN0ZXhwciBhdXRvIG1heGlt
dW1JbnZhbGlkYXRpb25UaW1lU2luY2VMYXN0U3R5bGVVcGRhdGUgPSA2NF9tczsKKyAgICByZXR1
cm4gZG9jdW1lbnQuc3R5bGVTY29wZSgpLmVsYXBzZWRJbnZhbGlkYXRpb25UaW1lU2luY2VMYXN0
U3R5bGVVcGRhdGUoKSA+IG1heGltdW1JbnZhbGlkYXRpb25UaW1lU2luY2VMYXN0U3R5bGVVcGRh
dGU7Cit9CisKK0ludmFsaWRhdG9yOjpJbnZhbGlkYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQorICAgIDogbV9kb2N1bWVudChkb2N1bWVu
dCkKKyAgICAsIG1fb3duZWRSdWxlU2V0KFJ1bGVTZXQ6OmNyZWF0ZSgpKQogICAgICwgbV9ydWxl
U2V0cyh7IG1fb3duZWRSdWxlU2V0IH0pCiAgICAgLCBtX2RpcnRpZXNBbGxTdHlsZShzaG91bGRE
aXJ0eUFsbFN0eWxlKHNoZWV0cykpCisgICAgLCBtX3Nob3VsZEludmFsaWRhdGVFYWdlcmx5KHNo
b3VsZEludmFsaWRhdGVFYWdlcmx5KGRvY3VtZW50KSkKIHsKICAgICBpZiAobV9kaXJ0aWVzQWxs
U3R5bGUpCiAgICAgICAgIHJldHVybjsKQEAgLTk5LDE0ICsxMDksMTkgQEAgSW52YWxpZGF0b3I6
OkludmFsaWRhdG9yKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBj
b25zdCBNZWRpYVEKICAgICBtX3J1bGVJbmZvcm1hdGlvbiA9IGNvbGxlY3RSdWxlSW5mb3JtYXRp
b24oKTsKIH0KIAotSW52YWxpZGF0b3I6OkludmFsaWRhdG9yKGNvbnN0IEludmFsaWRhdGlvblJ1
bGVTZXRWZWN0b3ImIHJ1bGVTZXRzKQotICAgIDogbV9ydWxlU2V0cyhydWxlU2V0cykKK0ludmFs
aWRhdG9yOjpJbnZhbGlkYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEludmFsaWRhdGlv
blJ1bGVTZXRWZWN0b3ImIHJ1bGVTZXRzKQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAg
ICAsIG1fcnVsZVNldHMocnVsZVNldHMpCiAgICAgLCBtX3J1bGVJbmZvcm1hdGlvbihjb2xsZWN0
UnVsZUluZm9ybWF0aW9uKCkpCisgICAgLCBtX3Nob3VsZEludmFsaWRhdGVFYWdlcmx5KHNob3Vs
ZEludmFsaWRhdGVFYWdlcmx5KGRvY3VtZW50KSkKIHsKICAgICBBU1NFUlQobV9ydWxlU2V0cy5z
aXplKCkpOwogfQogCi1JbnZhbGlkYXRvcjo6fkludmFsaWRhdG9yKCkgPSBkZWZhdWx0OworSW52
YWxpZGF0b3I6On5JbnZhbGlkYXRvcigpCit7CisgICAgbV9kb2N1bWVudC0+c3R5bGVTY29wZSgp
LmluY3JlbWVudEVsYXBzZWRJbnZhbGlkYXRpb25UaW1lU2luY2VMYXN0U3R5bGVVcGRhdGUoQXBw
cm94aW1hdGVUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lKTsKK30KIAogSW52YWxpZGF0b3I6OlJ1
bGVJbmZvcm1hdGlvbiBJbnZhbGlkYXRvcjo6Y29sbGVjdFJ1bGVJbmZvcm1hdGlvbigpCiB7CkBA
IC0xNTMsNiArMTY4LDExIEBAIEludmFsaWRhdG9yOjpDaGVja0Rlc2NlbmRhbnRzIEludmFsaWRh
dG9yOjppbnZhbGlkYXRlSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCwKIAogICAgIHN3aXRjaCAo
ZWxlbWVudC5zdHlsZVZhbGlkaXR5KCkpIHsKICAgICBjYXNlIFN0eWxlOjpWYWxpZGl0eTo6VmFs
aWQ6IHsKKyAgICAgICAgaWYgKG1fc2hvdWxkSW52YWxpZGF0ZUVhZ2VybHkpIHsKKyAgICAgICAg
ICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKKyAgICAgICAgICAgIHJldHVy
biBDaGVja0Rlc2NlbmRhbnRzOjpZZXM7CisgICAgICAgIH0KKwogICAgICAgICBmb3IgKGF1dG8m
IHJ1bGVTZXQgOiBtX3J1bGVTZXRzKSB7CiAgICAgICAgICAgICBFbGVtZW50UnVsZUNvbGxlY3Rv
ciBydWxlQ29sbGVjdG9yKGVsZW1lbnQsICpydWxlU2V0LCBzZWxlY3Rvck1hdGNoaW5nU3RhdGUp
OwogICAgICAgICAgICAgcnVsZUNvbGxlY3Rvci5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6TW9k
ZTo6Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHMpOwpAQCAtMTg0
LDYgKzIwNCwxMSBAQCB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU3R5bGVGb3JUcmVlKEVs
ZW1lbnQmIHJvb3QsIFNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSogcwogCiB2b2lkIEludmFsaWRhdG9y
OjppbnZhbGlkYXRlU3R5bGVGb3JEZXNjZW5kYW50cyhFbGVtZW50JiByb290LCBTZWxlY3Rvck1h
dGNoaW5nU3RhdGUqIHNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSkKIHsKKyAgICBpZiAobV9zaG91bGRJ
bnZhbGlkYXRlRWFnZXJseSkgeworICAgICAgICByb290LmludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWVJbnRlcm5hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgVmVjdG9yPEVsZW1l
bnQqLCAyMD4gcGFyZW50U3RhY2s7CiAgICAgRWxlbWVudCogcHJldmlvdXNFbGVtZW50ID0gJnJv
b3Q7CiAgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4ocm9vdCku
YmVnaW4oKTsgaXQ7ICkgewpAQCAtNDIwLDcgKzQ0NSw3IEBAIHZvaWQgSW52YWxpZGF0b3I6Omlu
dmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNldHMoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
TWF0CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNJbnZhbGlkYXRpbmcoZWxlbWVudC5zdHlsZVJl
c29sdmVyKCkucnVsZVNldHMoKS5pc0ludmFsaWRhdGluZ1N0eWxlV2l0aFJ1bGVTZXRzKCksIHRy
dWUpOwogCiAgICAgZm9yIChhdXRvJiBtYXRjaEVsZW1lbnRBbmRSdWxlU2V0IDogbWF0Y2hFbGVt
ZW50UnVsZVNldHMpIHsKLSAgICAgICAgSW52YWxpZGF0b3IgaW52YWxpZGF0b3IobWF0Y2hFbGVt
ZW50QW5kUnVsZVNldC52YWx1ZSk7CisgICAgICAgIEludmFsaWRhdG9yIGludmFsaWRhdG9yKGVs
ZW1lbnQuZG9jdW1lbnQoKSwgbWF0Y2hFbGVtZW50QW5kUnVsZVNldC52YWx1ZSk7CiAgICAgICAg
IGludmFsaWRhdG9yLmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQoZWxlbWVudCwgbWF0
Y2hFbGVtZW50QW5kUnVsZVNldC5rZXkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlSW52YWxpZGF0b3IuaAppbmRleCA0ZDZlOGUzYTMzMDUzMmExNzc1YTMyYTI3YjA0NmUyYjBm
ZTA1N2EyLi4yZmVkMDM4NGQxY2M5ZTZmMTMyYmI4MTcyYzAwNDBkZTE3MTYzMjg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlICJSdWxlRmVhdHVyZS5oIgogI2luY2x1ZGUgIlJ1bGVTZXQuaCIKKyNpbmNsdWRlIDx3
dGYvQXBwcm94aW1hdGVUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogCkBAIC00Nyw4ICs0OCw4IEBAIHN0cnVjdCBTZWxlY3Rvck1hdGNo
aW5nU3RhdGU7CiAKIGNsYXNzIEludmFsaWRhdG9yIHsKIHB1YmxpYzoKLSAgICBJbnZhbGlkYXRv
cihjb25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRlbnRzKj4mLCBjb25zdCBNZWRpYVF1ZXJ5RXZh
bHVhdG9yJik7Ci0gICAgSW52YWxpZGF0b3IoY29uc3QgSW52YWxpZGF0aW9uUnVsZVNldFZlY3Rv
ciYpOworICAgIEludmFsaWRhdG9yKERvY3VtZW50JiwgY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRD
b250ZW50cyo+JiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYpOworICAgIEludmFsaWRhdG9y
KERvY3VtZW50JiwgY29uc3QgSW52YWxpZGF0aW9uUnVsZVNldFZlY3RvciYpOwogCiAgICAgfklu
dmFsaWRhdG9yKCk7CiAKQEAgLTg0LDEyICs4NSwxNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAg
UnVsZUluZm9ybWF0aW9uIGNvbGxlY3RSdWxlSW5mb3JtYXRpb24oKTsKIAorICAgIFJlZjxEb2N1
bWVudD4gbV9kb2N1bWVudDsKKwogICAgIFJlZlB0cjxSdWxlU2V0PiBtX293bmVkUnVsZVNldDsK
ICAgICBjb25zdCBJbnZhbGlkYXRpb25SdWxlU2V0VmVjdG9yIG1fcnVsZVNldHM7CiAKICAgICBS
dWxlSW5mb3JtYXRpb24gbV9ydWxlSW5mb3JtYXRpb247CiAKLSAgICBib29sIG1fZGlydGllc0Fs
bFN0eWxlIHsgZmFsc2UgfTsKKyAgICBjb25zdCBib29sIG1fZGlydGllc0FsbFN0eWxlIHsgZmFs
c2UgfTsKKyAgICBjb25zdCBib29sIG1fc2hvdWxkSW52YWxpZGF0ZUVhZ2VybHkgeyBmYWxzZSB9
OworCisgICAgY29uc3QgQXBwcm94aW1hdGVUaW1lIG1fc3RhcnRUaW1lIHsgQXBwcm94aW1hdGVU
aW1lOjpub3coKSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAppbmRl
eCAxZGQ2NTBiZWFkOTllZmUzNDc2YzNiODNkM2I4ZTZjOGY2MDllOTY5Li40YWJkMGEzNzBlY2Zm
NGRkZWMyNWU1ZWI3MDYyODUyOWE5ZjZmZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
LmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgU2NvcGU6OmludmFsaWRhdGVTdHlsZUFmdGVy
U3R5bGVTaGVldENoYW5nZShjb25zdCBTdHlsZVNoZWV0Q2hhbmdlJiBzdHlsZVNoCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBJbnZhbGlkYXRvciBpbnZhbGlkYXRvcihzdHlsZVNoZWV0
Q2hhbmdlLmFkZGVkU2hlZXRzLCBtX3Jlc29sdmVyLT5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCkpOwor
ICAgIEludmFsaWRhdG9yIGludmFsaWRhdG9yKG1fZG9jdW1lbnQsIHN0eWxlU2hlZXRDaGFuZ2Uu
YWRkZWRTaGVldHMsIG1fcmVzb2x2ZXItPm1lZGlhUXVlcnlFdmFsdWF0b3IoKSk7CiAgICAgaW52
YWxpZGF0b3IuaW52YWxpZGF0ZVN0eWxlKCp0aGlzKTsKIH0KIApAQCAtNzEwLDcgKzcxMCw3IEBA
IHZvaWQgU2NvcGU6OmV2YWx1YXRlTWVkaWFRdWVyaWVzKFRlc3RGdW5jdGlvbiYmIHRlc3RGdW5j
dGlvbikKICAgICAgICAgZm9yIChhdXRvJiBzY29wZSA6IHNjb3BlcykgewogICAgICAgICAgICAg
c3dpdGNoIChldmFsdWF0aW9uQ2hhbmdlcy0+dHlwZSkgewogICAgICAgICAgICAgY2FzZSBEeW5h
bWljTWVkaWFRdWVyeUV2YWx1YXRpb25DaGFuZ2VzOjpUeXBlOjpJbnZhbGlkYXRlU3R5bGU6IHsK
LSAgICAgICAgICAgICAgICBJbnZhbGlkYXRvciBpbnZhbGlkYXRvcihldmFsdWF0aW9uQ2hhbmdl
cy0+aW52YWxpZGF0aW9uUnVsZVNldHMpOworICAgICAgICAgICAgICAgIEludmFsaWRhdG9yIGlu
dmFsaWRhdG9yKG1fZG9jdW1lbnQsIGV2YWx1YXRpb25DaGFuZ2VzLT5pbnZhbGlkYXRpb25SdWxl
U2V0cyk7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0b3IuaW52YWxpZGF0ZVN0eWxlKCpzY29w
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlLmgKaW5kZXggOWM5ZDY5N2I0OGNjZjFhZjFmYWYzMzgyZWZlYzM5NjVkN2E4NzZm
Yi4uYjE5OWNjZWMyYjJjYTM3NTdhM2ZiNDk0M2RjOTgzY2UxZTNmZTM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMTksNiArMTIwLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFyUmVzb2x2ZXIoKTsKICAgICB2b2lkIHJlbGVhc2VNZW1vcnkoKTsK
IAorICAgIFNlY29uZHMgZWxhcHNlZEludmFsaWRhdGlvblRpbWVTaW5jZUxhc3RTdHlsZVVwZGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxhcHNlZEludmFsaWRhdGlvblRpbWVTaW5jZUxhc3RTdHls
ZVVwZGF0ZTsgfQorICAgIHZvaWQgcmVzZXRFbGFwc2VkSW52YWxpZGF0aW9uVGltZVNpbmNlTGFz
dFN0eWxlVXBkYXRlKCkgeyBtX2VsYXBzZWRJbnZhbGlkYXRpb25UaW1lU2luY2VMYXN0U3R5bGVV
cGRhdGUgPSAwX3M7IH0KKyAgICB2b2lkIGluY3JlbWVudEVsYXBzZWRJbnZhbGlkYXRpb25UaW1l
U2luY2VMYXN0U3R5bGVVcGRhdGUoU2Vjb25kcyB0aW1lKSB7IG1fZWxhcHNlZEludmFsaWRhdGlv
blRpbWVTaW5jZUxhc3RTdHlsZVVwZGF0ZSArPSB0aW1lOyB9CisKICAgICBjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAgICAgRG9jdW1lbnQm
IGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogICAgIGNvbnN0IFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1Jvb3Q7IH0KQEAgLTIwMCw2ICsy
MDUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzSGFzUHNldWRvQ2xhc3MgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IGZhbHNlIH07CiAKKyAgICBT
ZWNvbmRzIG1fZWxhcHNlZEludmFsaWRhdGlvblRpbWVTaW5jZUxhc3RTdHlsZVVwZGF0ZTsKKwog
ICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFRdWVyeVZpZXdwb3J0U3RhdGU+IG1fdmlld3BvcnRTdGF0
ZU9uUHJldmlvdXNNZWRpYVF1ZXJ5RXZhbHVhdGlvbjsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSAo
YW5kIHNvbWUgdGhpbmdzIGFib3ZlKSBhcmUgb25seSByZWxldmFudCBmb3IgdGhlIHJvb3Qgc2Nv
cGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBjNTY4MmZjNTA2OWY2NTM1Yjg1
NzE1OTBjMjFjNjNmY2U3NzBiNjc4Li40NjhmM2I5OTViMjZhZDcyNDU2MDZhMTlmNmVmYzM3YTQw
ZWY5MWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMi0wMS0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
WzpoYXMoKSBwc2V1ZG8tY2xhc3NdIEF2b2lkIE8obl4yKSBpbiBzdHlsZSBpbnZhbGlkYXRpb24g
d2l0aCByZXBlYXRlZCBET00gbXV0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2lu
dmFsaWRhdGlvbi9oYXMtY29tcGxleGl0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxl
eGl0eS5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODc1NTAu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9y
cy9pbnZhbGlkYXRpb24vaGFzLWNvbXBsZXhpdHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
MmQ1ZTY0OGQ1MzkyMzY3MWRiZjFlZjY3NjNlNDZiMDcxNDI3OTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3Rv
cnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUg
QEAKKworUEFTUyBCZWZvcmUgYXBwZW5kaW5nIDEwMDAwIGVsZW1lbnRzCitQQVNTIEFmdGVyIGFw
cGVuZGluZyAxMDAwMCBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUgb3V0LgorUEFTUyBB
ZnRlciBhcHBlbmRpbmcgYW5vdGhlciAxMDAwMCBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRp
bWUgb3V0LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3Rv
cnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY3ODhiMTQ0
ZjBlMzdiZjgwODJiZGIyNDk4OWY2ZWRkYzIyMTY2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9pbnZh
bGlkYXRpb24vaGFzLWNvbXBsZXhpdHkuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5DU1MgU2VsZWN0b3IgSW52YWxp
ZGF0aW9uOiA6aGFzKCkgaW52YWxpZGF0aW9uIHNob3VsZCBub3QgYmUgTyhuXjIpPC90aXRsZT4K
KzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iQW50dGkgS29pdmlzdG8iIGhyZWY9Im1haWx0bzph
bnR0aUBhcHBsZS5jb20iPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvc2VsZWN0b3JzLyNyZWxhdGlvbmFsIj4KKzxzdHlsZT4KK2RpdiwgbWFpbiB7IGNvbG9yOiBn
cmV5IH0KK21haW46aGFzKHNwYW4pIC5zdWJqZWN0IHsgY29sb3I6IHJlZCB9CittYWluOmhhcyhz
cGFuICsgc3BhbikgLnN1YmplY3QgeyBjb2xvcjogZ3JlZW4gfQorbWFpbjpoYXMoZmluYWwpIC5z
dWJqZWN0IHsgY29sb3I6IGJsdWUgfQorbWFpbjpoYXMobm9uZXhpc3RlbnQgKyBzcGFuKSAuc3Vi
amVjdCB7IGNvbG9yOiBibGFjayB9CittYWluOmhhcyhzcGFuKSBzcGFuIHsgY29sb3I6IGJsYWNr
IH0KK21haW46aGFzKG5vbmV4aXN0ZW50KSBzcGFuIHsgY29sb3I6IGJsYWNrIH0KKzwvc3R5bGU+
Cis8bWFpbj4KKyAgICA8ZGl2IGlkPWNvbnRhaW5lcj4KKyAgICAgICAgPHNwYW4+PC9zcGFuPgor
ICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9c3ViamVjdCBjbGFzcz1zdWJqZWN0PjwvZGl2PgorPC9t
YWluPgorPHNjcmlwdD4KK2NvbnN0IGdyZXkgPSAncmdiKDEyOCwgMTI4LCAxMjgpJzsKK2NvbnN0
IHJlZCA9ICdyZ2IoMjU1LCAwLCAwKSc7Citjb25zdCBncmVlbiA9ICdyZ2IoMCwgMTI4LCAwKSc7
Citjb25zdCBibHVlID0gJ3JnYigwLCAwLCAyNTUpJzsKKworZnVuY3Rpb24gdGVzdENvbG9yKHRl
c3RfbmFtZSwgY29sb3IpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoc3ViamVjdCkuY29sb3IsIGNvbG9yKTsKKyAgICB9LCB0
ZXN0X25hbWUpOworfQorCitjb25zdCBjb3VudCA9IDEwMDAwOworCit0ZXN0Q29sb3IoYEJlZm9y
ZSBhcHBlbmRpbmcgJHtjb3VudH0gZWxlbWVudHNgLCByZWQpOworCitjb25zdCBzdGFydCA9IHBl
cmZvcm1hbmNlLm5vdygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAg
ICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNvbnRh
aW5lci5hcHBlbmRDaGlsZChzcGFuKTsKK30KKwordGVzdENvbG9yKGBBZnRlciBhcHBlbmRpbmcg
JHtjb3VudH0gZWxlbWVudHMuIFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC5gLCBncmVlbik7CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgY291bnQgLSAxOyArK2kpIHsKKyAgICBjb25zdCBzcGFuID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGls
ZChzcGFuKTsKK30KKworY29uc3QgZmluYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaW5h
bCIpOworY29udGFpbmVyLmFwcGVuZENoaWxkKGZpbmFsKTsKKwordGVzdENvbG9yKGBBZnRlciBh
cHBlbmRpbmcgYW5vdGhlciAke2NvdW50fSBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUg
b3V0LmAsIGJsdWUpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449053</attachid>
            <date>2022-01-13 06:07:51 -0800</date>
            <delta_ts>2022-01-14 02:05:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234842-20220113160749.patch</filename>
            <type>text/plain</type>
            <size>14649</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyYmE3ZGE1MGQ2MzY2
MWQ2ODIyYTBhOWNmYjZiNjljYmMyYWY0NC4uNThkMjk5YTk0NjdiYTYxYjg3ZTc4NTc4MDU2OWM2
MWQzYzQzM2E3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTEzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gQXZvaWQgTyhuXjIpIGluIHN0eWxlIGludmFsaWRhdGlvbiB3aXRoIHJlcGVhdGVkIERP
TSBtdXRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDg0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODczOTcxNzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGludmFsaWRhdGlvbiBz
ZWxlY3RvcnMgdG8gY2hlY2sgaWYgYSBnaXZlbiBtdXRhdGlvbiBuZWVkcyA6aGFzKCkgaW52YWxp
ZGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL3NlbGVjdG9ycy9pbnZhbGlkYXRpb24vaGFzLWNvbXBsZXhpdHkuaHRtbAorCisgICAgICAg
ICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6
CisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9yQ2hh
bmdlZEVsZW1lbnQpOgorCisgICAgICAgIEludmFsaWRhdGUgb25seSBpZiB0aGUgaW52YWxpZGF0
aW9uIHJ1bGVzZXQgaGFzIGFuIGludmFsaWRhdGlvbiBzZWxlY3RvciB0aGF0IG1hdGNoZXMKKyAg
ICAgICAgdGhlIGFkZGVkL3JlbW92ZWQgZWxlbWVudC4gRXZlbiBpbiB0aGF0IGNhc2Ugd2Ugb25s
eSBuZWVkIHRvIGludmFsaWRhdGUgaWYgdGhhdCBzZWxlY3RvcgorICAgICAgICBoYXMgbm90IGFs
cmVhZHkgbWF0Y2hlZCB3aXRoaW4gdGhpcyBwYXJlbnQuCisKKyAgICAgICAgQXMgd2UgZG9uJ3Qg
aGF2ZSBwZXJzaXN0ZW50IHN0YXRlIHRoYXQgd291bGQgcmVtZW1iZXIgd2hhdCBhbHJlYWR5IG1h
dGNoZWQgYWNjcm9zcyBtdWx0aXBsZQorICAgICAgICBtdXRhdGlvbnMsIGFwcHJveGltYXRlIHRo
aXMgYnkgY2hlY2tpbmcgaWYgdGhlIGNsb3Nlc3Qgc2libGluZyBtYXRjaGVkLgorCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVGb3JI
YXNCZWZvcmVNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb246OmludmFsaWRhdGVGb3JIYXNBZnRlck11dGF0aW9uKToKKyAgICAgICAgKiBz
dHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5oOgorCiAyMDIyLTAxLTEyICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbOmhhcygpIHBzZXVkby1jbGFzc10g
Q29sbGVjdCBpbnZhbGlkYXRpb24gc2VsZWN0b3JzIGZvciBjaGlsZCBpbnZhbGlkYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNDU0OTg3MzI1YjFmZGVlYzA5
MWRmZjYyNmZkNGQ1ZmVjODkyZThhNC4uNWQyM2ZkNDcxODZjNzNhNTQzZmQ0YTFhYTYwN2RhMDJm
M2ViMDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTEwODQs
NyArMTA4NCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0NvbnRl
eHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QgTG9jYWxDb250CiAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzUmVsYXRpdmVTY29wZTogewogICAgICAgICAgICAgY29uc3QgTm9k
ZSogY29udGV4dHVhbFJlZmVyZW5jZU5vZGUgPSAhY2hlY2tpbmdDb250ZXh0LnNjb3BlID8gZWxl
bWVudC5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpIDogY2hlY2tpbmdDb250ZXh0LnNjb3Bl
OwogCi0gICAgICAgICAgICBib29sIG1hdGNoZXMgPSAmZWxlbWVudCA9PSBjb250ZXh0dWFsUmVm
ZXJlbmNlTm9kZTsKKyAgICAgICAgICAgIGJvb2wgbWF0Y2hlcyA9ICZlbGVtZW50ID09IGNvbnRl
eHR1YWxSZWZlcmVuY2VOb2RlIHx8IGNoZWNraW5nQ29udGV4dC5tYXRjaGVzQWxsU2NvcGVzOwog
CiAgICAgICAgICAgICBpZiAoIW1hdGNoZXMgJiYgY2hlY2tpbmdDb250ZXh0LnNjb3BlKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXNEZXNjZW5kYW50T2YoKmNoZWNraW5nQ29udGV4
dC5zY29wZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggZDg4MGM1YmM1
MzY2M2NmNzAxOWI5ZjYyMGQ1NTdkYTY5OTA1MWQwOS4uMTRhZGVkZTJkNzMzMzE4YWNkNTMwYTAy
MGZhMTEyZmVkZmQxN2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAt
OTUsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGVTY3JvbGxi
YXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGU7CiAgICAgICAgIEF0b21TdHJpbmcgbmFtZUZvckhpZ2h0
bGlnaHRQc2V1ZG9FbGVtZW50OwogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSB7
IG51bGxwdHIgfTsKKyAgICAgICAgYm9vbCBtYXRjaGVzQWxsU2NvcGVzIHsgZmFsc2UgfTsKICAg
ICAgICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbCB7IFN0eWxlOjpTY29w
ZU9yZGluYWw6OkVsZW1lbnQgfTsKICAgICAgICAgU3R5bGU6OlNlbGVjdG9yTWF0Y2hpbmdTdGF0
ZSogc2VsZWN0b3JNYXRjaGluZ1N0YXRlIHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKaW5kZXggZTM2NmI2NGE5MTVh
N2Q4ZjQyYjZlMWRkMDdkNmE0MGYwYThiZTkyZS4uYjFhNWY0YzUxNDU5NGYyMTkwOGRjMjJlNjcz
NjNmZTI4YTdmMDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcApAQCAtMzcsMjcgKzM3LDY0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
OjpTdHlsZSB7CiAKLXZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVGb3JD
aGFuZ2VkRWxlbWVudChFbGVtZW50JiBjaGFuZ2VkRWxlbWVudCkKK3ZvaWQgQ2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb246OmludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChFbGVtZW50JiBjaGFuZ2Vk
RWxlbWVudCwgYm9vbCBpc0ZpcnN0LCBNYXRjaGluZ0hhc1NlbGVjdG9ycyYgbWF0Y2hpbmdIYXNT
ZWxlY3RvcnMpCiB7CiAgICAgYXV0byYgcnVsZVNldHMgPSBwYXJlbnRFbGVtZW50KCkuc3R5bGVS
ZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAKICAgICBJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVs
ZVNldHMgbWF0Y2hFbGVtZW50UnVsZVNldHM7CiAKLSAgICBib29sIGlzRGVzY2VuZGFudCA9IGNo
YW5nZWRFbGVtZW50LnBhcmVudEVsZW1lbnQoKSAhPSAmcGFyZW50RWxlbWVudCgpOworICAgIGJv
b2wgaXNDaGlsZCA9IGNoYW5nZWRFbGVtZW50LnBhcmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxl
bWVudCgpOwogCi0gICAgYXV0byBjYW5BZmZlY3RBbmNlc3RvcnMgPSBbJl0oTWF0Y2hFbGVtZW50
IG1hdGNoRWxlbWVudCkgewotICAgICAgICBpZiAoIWlzRGVzY2VuZGFudCkKKyAgICBhdXRvIGNh
bkFmZmVjdEVsZW1lbnRzV2l0aFN0eWxlID0gWyZdKE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQp
IHsKKyAgICAgICAgc3dpdGNoIChtYXRjaEVsZW1lbnQpIHsKKyAgICAgICAgY2FzZSBNYXRjaEVs
ZW1lbnQ6Okhhc1NpYmxpbmc6CisgICAgICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpIYXNDaGlsZDoK
KyAgICAgICAgICAgIHJldHVybiBpc0NoaWxkOworICAgICAgICBjYXNlIE1hdGNoRWxlbWVudDo6
SGFzRGVzY2VuZGFudDoKKyAgICAgICAgY2FzZSBNYXRjaEVsZW1lbnQ6Okhhc1NpYmxpbmdEZXNj
ZW5kYW50OgorICAgICAgICBjYXNlIE1hdGNoRWxlbWVudDo6SGFzTm9uU3ViamVjdDoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbWF0Y2hFbGVtZW50ID09IE1hdGNo
RWxlbWVudDo6SGFzRGVzY2VuZGFudAotICAgICAgICAgICAgfHwgbWF0Y2hFbGVtZW50ID09IE1h
dGNoRWxlbWVudDo6SGFzU2libGluZ0Rlc2NlbmRhbnQKLSAgICAgICAgICAgIHx8IG1hdGNoRWxl
bWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhhc05vblN1YmplY3Q7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBhdXRvIGhhc01hdGNoaW5nSW52YWxpZGF0aW9u
U2VsZWN0b3IgPSBbJl0oYXV0byYgaW52YWxpZGF0aW9uUnVsZVNldCkgeworICAgICAgICBTZWxl
Y3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGNoYW5nZWRFbGVtZW50LmRvY3VtZW50KCkpOwor
ICAgICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQo
U2VsZWN0b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1
ZG9FbGVtZW50cyk7CisgICAgICAgIGNoZWNraW5nQ29udGV4dC5tYXRjaGVzQWxsU2NvcGVzID0g
dHJ1ZTsKKworICAgICAgICBmb3IgKGF1dG8qIHNlbGVjdG9yIDogaW52YWxpZGF0aW9uUnVsZVNl
dC5pbnZhbGlkYXRpb25TZWxlY3RvcnMpIHsKKyAgICAgICAgICAgIGlmIChpc0ZpcnN0KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGlzQ2hpbGQpOworICAgICAgICAgICAgICAgIC8vIElmIHRo
aXMgOmhhcygpIGFscmVhZHkgbWF0Y2hlZCwgbm90aGluZyBhY3R1YWxseSBjaGFuZ2VzIGFuZCB3
ZSBkb24ndCBuZWVkIHRvIGludmFsaWRhdGUuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBjYWNoZSB0aGlzIHN0YXRlIGFjY3Jvc3MgaW52YWxpZGF0aW9ucyBpbnN0ZWFkIG9m
IGp1c3QgdGVzdGluZyBhIHNpbmdsZSBzaWJsaW5nLgorICAgICAgICAgICAgICAgIGF1dG8qIHNp
YmxpbmcgPSBjaGFuZ2VkRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkgPyBjaGFuZ2Vk
RWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkgOiBjaGFuZ2VkRWxlbWVudC5uZXh0RWxl
bWVudFNpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAoc2libGluZyAmJiBzZWxlY3RvckNo
ZWNrZXIubWF0Y2goKnNlbGVjdG9yLCAqc2libGluZywgY2hlY2tpbmdDb250ZXh0KSkgeworICAg
ICAgICAgICAgICAgICAgICBtYXRjaGluZ0hhc1NlbGVjdG9ycy5hZGQoc2VsZWN0b3IpOworICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChtYXRjaGluZ0hhc1NlbGVjdG9ycy5jb250YWlucyhzZWxl
Y3RvcikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChzZWxl
Y3RvckNoZWNrZXIubWF0Y2goKnNlbGVjdG9yLCBjaGFuZ2VkRWxlbWVudCwgY2hlY2tpbmdDb250
ZXh0KSkgeworICAgICAgICAgICAgICAgIG1hdGNoaW5nSGFzU2VsZWN0b3JzLmFkZChzZWxlY3Rv
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAKICAgICBhdXRvIGFkZEhhc0ludmFs
aWRhdGlvbiA9IFsmXShjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGludmFsaWRh
dGlvblJ1bGVTZXRzKSAgewogICAgICAgICBpZiAoIWludmFsaWRhdGlvblJ1bGVTZXRzKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBmb3IgKGF1dG8mIGludmFsaWRhdGlvblJ1bGVTZXQg
OiAqaW52YWxpZGF0aW9uUnVsZVNldHMpIHsKLSAgICAgICAgICAgIGlmICghY2FuQWZmZWN0QW5j
ZXN0b3JzKGludmFsaWRhdGlvblJ1bGVTZXQubWF0Y2hFbGVtZW50KSkKKyAgICAgICAgICAgIGlm
ICghY2FuQWZmZWN0RWxlbWVudHNXaXRoU3R5bGUoaW52YWxpZGF0aW9uUnVsZVNldC5tYXRjaEVs
ZW1lbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFoYXNN
YXRjaGluZ0ludmFsaWRhdGlvblNlbGVjdG9yKGludmFsaWRhdGlvblJ1bGVTZXQpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hF
bGVtZW50UnVsZVNldHMobWF0Y2hFbGVtZW50UnVsZVNldHMsIGludmFsaWRhdGlvblJ1bGVTZXQp
OwogICAgICAgICB9CkBAIC03Niw4ICsxMTMsMTAgQEAgdm9pZCBDaGlsZENoYW5nZUludmFsaWRh
dGlvbjo6aW52YWxpZGF0ZUZvckhhc0JlZm9yZU11dGF0aW9uKCkKICAgICBpZiAobV9jaGlsZENo
YW5nZS5pc0luc2VydGlvbigpICYmIG1fY2hpbGRDaGFuZ2UudHlwZSAhPSBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdHJhdmVyc2VSZW1vdmVkRWxlbWVudHMoWyZdKGF1dG8mIGNoYW5nZWRFbGVtZW50
KSB7Ci0gICAgICAgIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChjaGFuZ2VkRWxlbWVudCk7
CisgICAgTWF0Y2hpbmdIYXNTZWxlY3RvcnMgbWF0Y2hpbmdIYXNTZWxlY3RvcnM7CisKKyAgICB0
cmF2ZXJzZVJlbW92ZWRFbGVtZW50cyhbJl0oYXV0byYgY2hhbmdlZEVsZW1lbnQsIGJvb2wgaXNG
aXJzdCkgeworICAgICAgICBpbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQoY2hhbmdlZEVsZW1l
bnQsIGlzRmlyc3QsIG1hdGNoaW5nSGFzU2VsZWN0b3JzKTsKICAgICB9KTsKIH0KIApAQCAtODgs
OCArMTI3LDEwIEBAIHZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVGb3JI
YXNBZnRlck11dGF0aW9uKCkKICAgICBpZiAoIW1fY2hpbGRDaGFuZ2UuaXNJbnNlcnRpb24oKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgdHJhdmVyc2VBZGRlZEVsZW1lbnRzKFsmXShhdXRvJiBj
aGFuZ2VkRWxlbWVudCkgewotICAgICAgICBpbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQoY2hh
bmdlZEVsZW1lbnQpOworICAgIE1hdGNoaW5nSGFzU2VsZWN0b3JzIG1hdGNoaW5nSGFzU2VsZWN0
b3JzOworCisgICAgdHJhdmVyc2VBZGRlZEVsZW1lbnRzKFsmXShhdXRvJiBjaGFuZ2VkRWxlbWVu
dCwgYm9vbCBpc0ZpcnN0KSB7CisgICAgICAgIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChj
aGFuZ2VkRWxlbWVudCwgaXNGaXJzdCwgbWF0Y2hpbmdIYXNTZWxlY3RvcnMpOwogICAgIH0pOwog
fQogCkBAIC0xMDYsMTUgKzE0NywxNiBAQCB2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjp0
cmF2ZXJzZVJlbW92ZWRFbGVtZW50cyhGdW5jdGlvbiYmIGZ1bmN0aW9uKQogICAgIGF1dG8mIGZl
YXR1cmVzID0gcGFyZW50RWxlbWVudCgpLnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpLmZlYXR1
cmVzKCk7CiAgICAgYm9vbCBuZWVkc0Rlc2NlbmRhbnRUcmF2ZXJzYWwgPSBTdHlsZTo6bmVlZHNE
ZXNjZW5kYW50VHJhdmVyc2FsKGZlYXR1cmVzKTsKIAotICAgIGF1dG8qIHRvUmVtb3ZlID0gbV9j
aGlsZENoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID8gbV9jaGlsZENoYW5nZS5wcmV2aW91
c1NpYmxpbmdFbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKSA6IHBhcmVudEVsZW1lbnQoKS5m
aXJzdEVsZW1lbnRDaGlsZCgpOwotICAgIGZvciAoOyB0b1JlbW92ZSAhPSBtX2NoaWxkQ2hhbmdl
Lm5leHRTaWJsaW5nRWxlbWVudDsgdG9SZW1vdmUgPSB0b1JlbW92ZS0+bmV4dEVsZW1lbnRTaWJs
aW5nKCkpIHsKLSAgICAgICAgZnVuY3Rpb24oKnRvUmVtb3ZlKTsKKyAgICBhdXRvKiBmaXJzdFRv
UmVtb3ZlID0gbV9jaGlsZENoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID8gbV9jaGlsZENo
YW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKSA6IHBhcmVu
dEVsZW1lbnQoKS5maXJzdEVsZW1lbnRDaGlsZCgpOworCisgICAgZm9yIChhdXRvKiB0b1JlbW92
ZSA9IGZpcnN0VG9SZW1vdmU7IHRvUmVtb3ZlICE9IG1fY2hpbGRDaGFuZ2UubmV4dFNpYmxpbmdF
bGVtZW50OyB0b1JlbW92ZSA9IHRvUmVtb3ZlLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgeworICAg
ICAgICBmdW5jdGlvbigqdG9SZW1vdmUsIHRvUmVtb3ZlID09IGZpcnN0VG9SZW1vdmUpOwogCiAg
ICAgICAgIGlmICghbmVlZHNEZXNjZW5kYW50VHJhdmVyc2FsKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oKnRvUmVtb3ZlKSkKLSAgICAgICAgICAgIGZ1bmN0aW9uKGRlc2NlbmRhbnQpOwor
ICAgICAgICAgICAgZnVuY3Rpb24oZGVzY2VuZGFudCwgZmFsc2UpOwogICAgIH0KIH0KIApAQCAt
MTMyLDE0ICsxNzQsMTQgQEAgdm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6dHJhdmVyc2VB
ZGRlZEVsZW1lbnRzKEZ1bmN0aW9uJiYgZnVuY3Rpb24pCiAgICAgaWYgKCFuZXdFbGVtZW50KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmdW5jdGlvbigqbmV3RWxlbWVudCk7CisgICAgZnVuY3Rp
b24oKm5ld0VsZW1lbnQsIHRydWUpOwogCiAgICAgYXV0byYgZmVhdHVyZXMgPSBwYXJlbnRFbGVt
ZW50KCkuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuZmVhdHVyZXMoKTsKICAgICBpZiAoIW5l
ZWRzRGVzY2VuZGFudFRyYXZlcnNhbChmZWF0dXJlcykpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZvciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KCpuZXdF
bGVtZW50KSkKLSAgICAgICAgZnVuY3Rpb24oZGVzY2VuZGFudCk7CisgICAgICAgIGZ1bmN0aW9u
KGRlc2NlbmRhbnQsIGZhbHNlKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxl
Q2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaAppbmRleCA2ZGY4MGY2ZjY4YjNmNDIwOGFkMzY2NDQ5ODNjY2Ji
YWE3OGY1MzExLi4wZDJhNDZkNDFlMWEzYTE5MjljNGE0Y2ZkZDYxNDE5YzQ2OGE5YWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVJbnZhbGlk
YXRvci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUgewpAQCAtNDQsNyArNDUs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUZvckhhc0FmdGVyTXV0YXRpb24oKTsK
ICAgICB2b2lkIGludmFsaWRhdGVBZnRlckNoYW5nZSgpOwogICAgIHZvaWQgY2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQo
RWxlbWVudCYpOworICAgIHVzaW5nIE1hdGNoaW5nSGFzU2VsZWN0b3JzID0gSGFzaFNldDxjb25z
dCBDU1NTZWxlY3Rvcio+OworICAgIHZvaWQgaW52YWxpZGF0ZUZvckNoYW5nZWRFbGVtZW50KEVs
ZW1lbnQmLCBib29sIGlzRmlyc3QsIE1hdGNoaW5nSGFzU2VsZWN0b3JzJik7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCB0cmF2ZXJzZVJlbW92ZWRFbGVtZW50cyhGdW5j
dGlvbiYmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCB0cmF2ZXJzZUFk
ZGVkRWxlbWVudHMoRnVuY3Rpb24mJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCBiZWE4ZmQyMzIzYzdhNGY1ZDg1NjI3YmY2NDc1OTc1OWUyYjRmOGNmLi43ZDYzZjdlZjc0ZjAx
YjRiOTAyN2JkNjliZGRlYjMyOGI3NmVkMTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMS0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CisKKyAgICAgICAgWzpoYXMoKSBwc2V1ZG8tY2xhc3NdIEF2b2lkIE8obl4yKSBp
biBzdHlsZSBpbnZhbGlkYXRpb24gd2l0aCByZXBlYXRlZCBET00gbXV0YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4NDIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzg3Mzk3MTc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52
YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4
aXR5Lmh0bWw6IEFkZGVkLgorCiAyMDIyLTAxLTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3Zp
bGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0gSW1wb3J0IFdQVCB0ZXN0
cyAtIEphbnVhcnkgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxl
eGl0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMmNkMjdkMjIyNzYyZjUzMTNlMzk4NTM0YzYzZWY1ZDIxNDI2MTNl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxleGl0eS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQmVmb3JlIGFwcGVuZGluZyAxMDAwMCBlbGVt
ZW50cworUEFTUyBBZnRlciBhcHBlbmRpbmcgMTAwMDAgZWxlbWVudHMuIFRoaXMgc2hvdWxkIG5v
dCB0aW1lIG91dC4KK1BBU1MgQWZ0ZXIgYXBwZW5kaW5nIGFub3RoZXIgMTAwMDAgZWxlbWVudHMu
IFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC4KK1BBU1MgQWZ0ZXIgYXBwZW5kaW5nIGRpdiB3aXRo
IDEwMDAwIGVsZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9y
cy9pbnZhbGlkYXRpb24vaGFzLWNvbXBsZXhpdHkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9pbnZhbGlkYXRpb24vaGFzLWNv
bXBsZXhpdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWY4ODJiNWY5MzYzNGE2OTIxM2EyNjU5OWYwMmYw
OTkzMWM3YzhhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxleGl0
eS5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPkNTUyBTZWxlY3RvciBJbnZhbGlkYXRpb246IDpoYXMoKSBpbnZhbGlk
YXRpb24gc2hvdWxkIG5vdCBiZSBPKG5eMik8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRp
dGxlPSJBbnR0aSBLb2l2aXN0byIgaHJlZj0ibWFpbHRvOmFudHRpQGFwcGxlLmNvbSI+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9zZWxlY3RvcnMvI3JlbGF0aW9u
YWwiPgorPHN0eWxlPgorZGl2LCBtYWluIHsgY29sb3I6IGdyZXkgfQorbWFpbjpoYXMoc3Bhbikg
LnN1YmplY3QgeyBjb2xvcjogcmVkIH0KK21haW46aGFzKHNwYW4gKyBzcGFuKSAuc3ViamVjdCB7
IGNvbG9yOiBncmVlbiB9CittYWluOmhhcyhmaW5hbCkgLnN1YmplY3QgeyBjb2xvcjogYmx1ZSB9
CittYWluOmhhcyhub25leGlzdGVudCArIHNwYW4pIC5zdWJqZWN0IHsgY29sb3I6IGJsYWNrIH0K
K21haW46aGFzKHNwYW4pIHNwYW4geyBjb2xvcjogYmxhY2sgfQorbWFpbjpoYXMobm9uZXhpc3Rl
bnQpIHNwYW4geyBjb2xvcjogYmxhY2sgfQorbWFpbjpoYXMoZGl2IGRpdiBzcGFuKSAuc3ViamVj
dCB7IGNvbG9yOiBwdXJwbGUgfQorPC9zdHlsZT4KKzxtYWluPgorICAgIDxkaXYgaWQ9Y29udGFp
bmVyPgorICAgICAgICA8c3Bhbj48L3NwYW4+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD1zdWJq
ZWN0IGNsYXNzPXN1YmplY3Q+PC9kaXY+Cis8L21haW4+Cis8c2NyaXB0PgorY29uc3QgZ3JleSA9
ICdyZ2IoMTI4LCAxMjgsIDEyOCknOworY29uc3QgcmVkID0gJ3JnYigyNTUsIDAsIDApJzsKK2Nv
bnN0IGdyZWVuID0gJ3JnYigwLCAxMjgsIDApJzsKK2NvbnN0IGJsdWUgPSAncmdiKDAsIDAsIDI1
NSknOworY29uc3QgeWVsbG93ID0gJ3JnYigxMjgsIDAsIDEyOCknOworCitmdW5jdGlvbiB0ZXN0
Q29sb3IodGVzdF9uYW1lLCBjb2xvcikgeworICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShzdWJqZWN0KS5jb2xvciwgY29sb3IpOwor
ICAgIH0sIHRlc3RfbmFtZSk7Cit9CisKK2NvbnN0IGNvdW50ID0gMTAwMDA7CisKK3Rlc3RDb2xv
cihgQmVmb3JlIGFwcGVuZGluZyAke2NvdW50fSBlbGVtZW50c2AsIHJlZCk7CisKK2ZvciAobGV0
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHNwYW4pOworfQor
Cit0ZXN0Q29sb3IoYEFmdGVyIGFwcGVuZGluZyAke2NvdW50fSBlbGVtZW50cy4gVGhpcyBzaG91
bGQgbm90IHRpbWUgb3V0LmAsIGdyZWVuKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudCAt
IDE7ICsraSkgeworICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHNwYW4pOworfQorCitjb25zdCBmaW5hbCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZpbmFsIik7Citjb250YWluZXIuYXBwZW5kQ2hpbGQo
ZmluYWwpOworCit0ZXN0Q29sb3IoYEFmdGVyIGFwcGVuZGluZyBhbm90aGVyICR7Y291bnR9IGVs
ZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuYCwgYmx1ZSk7CisKK2NvbnN0IGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZm9yIChsZXQgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CisgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7Cit9Citjb250YWluZXIuYXBwZW5kQ2hpbGQo
ZGl2KTsKKwordGVzdENvbG9yKGBBZnRlciBhcHBlbmRpbmcgZGl2IHdpdGggJHtjb3VudH0gZWxl
bWVudHMuIFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC5gLCB5ZWxsb3cpOworCis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449149</attachid>
            <date>2022-01-14 02:05:26 -0800</date>
            <delta_ts>2022-01-14 02:18:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234842-20220114120524.patch</filename>
            <type>text/plain</type>
            <size>16757</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyYmE3ZGE1MGQ2MzY2
MWQ2ODIyYTBhOWNmYjZiNjljYmMyYWY0NC4uODYzZDZlYmRjOGI2MzQyMDg0NzhmMTE5MThlMjUy
YjY0NzcxNDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTEzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gQXZvaWQgTyhuXjIpIGluIHN0eWxlIGludmFsaWRhdGlvbiB3aXRoIHJlcGVhdGVkIERP
TSBtdXRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDg0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODczOTcxNzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIFVzZSBpbnZhbGlkYXRpb24gc2Vs
ZWN0b3JzIHRvIGNoZWNrIGlmIGEgZ2l2ZW4gbXV0YXRpb24gbmVlZHMgOmhhcygpIGludmFsaWRh
dGlvbi4KKworICAgICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5Lmh0bWwKKworICAgICAgICAq
IGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZSBjb25zdCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgor
ICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUZvckNoYW5n
ZWRFbGVtZW50KToKKworICAgICAgICBJbnZhbGlkYXRlIG9ubHkgaWYgdGhlIGludmFsaWRhdGlv
biBydWxlc2V0IGhhcyBhbiBpbnZhbGlkYXRpb24gc2VsZWN0b3IgdGhhdCBtYXRjaGVzCisgICAg
ICAgIHRoZSBhZGRlZC9yZW1vdmVkIGVsZW1lbnQuIEV2ZW4gaW4gdGhhdCBjYXNlIHdlIG9ubHkg
bmVlZCB0byBpbnZhbGlkYXRlIGlmIHRoYXQgc2VsZWN0b3IKKyAgICAgICAgaGFzIG5vdCBhbHJl
YWR5IG1hdGNoZWQgd2l0aGluIHRoaXMgcGFyZW50LgorCisgICAgICAgIEFzIHdlIGRvbid0IGhh
dmUgcGVyc2lzdGVudCBzdGF0ZSB0aGF0IHdvdWxkIHJlbWVtYmVyIHdoYXQgYWxyZWFkeSBtYXRj
aGVkIGFjY3Jvc3MgbXVsdGlwbGUKKyAgICAgICAgbXV0YXRpb25zLCBhcHByb3hpbWF0ZSB0aGlz
IGJ5IGNoZWNraW5nIGlmIHRoZSBjbG9zZXN0IHNpYmxpbmcgbWF0Y2hlZC4KKworICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9ySGFz
QmVmb3JlTXV0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9ySGFzQWZ0ZXJNdXRhdGlvbik6CisgICAgICAgICogc3R5
bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDoKKwogMjAyMi0wMS0xMiAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgWzpoYXMoKSBwc2V1ZG8tY2xhc3NdIENv
bGxlY3QgaW52YWxpZGF0aW9uIHNlbGVjdG9ycyBmb3IgY2hpbGQgaW52YWxpZGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDQ1NDk4NzMyNWIxZmRlZWMwOTFk
ZmY2MjZmZDRkNWZlYzg5MmU4YTQuLjVkMjNmZDQ3MTg2YzczYTU0M2ZkNGExYWE2MDdkYTAyZjNl
YjAwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0xMDg0LDcg
KzEwODQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDb250ZXh0
JiBjaGVja2luZ0NvbnRleHQsIGNvbnN0IExvY2FsQ29udAogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1JlbGF0aXZlU2NvcGU6IHsKICAgICAgICAgICAgIGNvbnN0IE5vZGUq
IGNvbnRleHR1YWxSZWZlcmVuY2VOb2RlID0gIWNoZWNraW5nQ29udGV4dC5zY29wZSA/IGVsZW1l
bnQuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA6IGNoZWNraW5nQ29udGV4dC5zY29wZTsK
IAotICAgICAgICAgICAgYm9vbCBtYXRjaGVzID0gJmVsZW1lbnQgPT0gY29udGV4dHVhbFJlZmVy
ZW5jZU5vZGU7CisgICAgICAgICAgICBib29sIG1hdGNoZXMgPSAmZWxlbWVudCA9PSBjb250ZXh0
dWFsUmVmZXJlbmNlTm9kZSB8fCBjaGVja2luZ0NvbnRleHQubWF0Y2hlc0FsbFNjb3BlczsKIAog
ICAgICAgICAgICAgaWYgKCFtYXRjaGVzICYmIGNoZWNraW5nQ29udGV4dC5zY29wZSkgewogICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50LmlzRGVzY2VuZGFudE9mKCpjaGVja2luZ0NvbnRleHQu
c2NvcGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IGQ4ODBjNWJjNTM2
NjNjZjcwMTliOWY2MjBkNTU3ZGE2OTkwNTFkMDkuLjE0YWRlZGUyZDczMzMxOGFjZDUzMGEwMjBm
YTExMmZlZGZkMTdjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTk1
LDYgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlU2Nyb2xsYmFy
U3RhdGU+IHNjcm9sbGJhclN0YXRlOwogICAgICAgICBBdG9tU3RyaW5nIG5hbWVGb3JIaWdodGxp
Z2h0UHNldWRvRWxlbWVudDsKICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgeyBu
dWxscHRyIH07CisgICAgICAgIGJvb2wgbWF0Y2hlc0FsbFNjb3BlcyB7IGZhbHNlIH07CiAgICAg
ICAgIFN0eWxlOjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgeyBTdHlsZTo6U2NvcGVP
cmRpbmFsOjpFbGVtZW50IH07CiAgICAgICAgIFN0eWxlOjpTZWxlY3Rvck1hdGNoaW5nU3RhdGUq
IHNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCmluZGV4IGUzNjZiNjRhOTE1YTdk
OGY0MmI2ZTFkZDA3ZDZhNDBmMGE4YmU5MmUuLmE3MjkyNGUzMDUxMjJmMDY5MDAwYjhiZGU2ODM1
NmYwN2EzNjQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKQEAgLTM3LDI3ICszNyw2NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZTo6
U3R5bGUgewogCi12b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9yQ2hh
bmdlZEVsZW1lbnQoRWxlbWVudCYgY2hhbmdlZEVsZW1lbnQpCit2b2lkIENoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQoRWxlbWVudCYgY2hhbmdlZEVs
ZW1lbnQsIGJvb2wgaXNGaXJzdCwgTWF0Y2hpbmdIYXNTZWxlY3RvcnMmIG1hdGNoaW5nSGFzU2Vs
ZWN0b3JzKQogewogICAgIGF1dG8mIHJ1bGVTZXRzID0gcGFyZW50RWxlbWVudCgpLnN0eWxlUmVz
b2x2ZXIoKS5ydWxlU2V0cygpOwogCiAgICAgSW52YWxpZGF0b3I6Ok1hdGNoRWxlbWVudFJ1bGVT
ZXRzIG1hdGNoRWxlbWVudFJ1bGVTZXRzOwogCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnQgPSBjaGFu
Z2VkRWxlbWVudC5wYXJlbnRFbGVtZW50KCkgIT0gJnBhcmVudEVsZW1lbnQoKTsKKyAgICBib29s
IGlzQ2hpbGQgPSBjaGFuZ2VkRWxlbWVudC5wYXJlbnRFbGVtZW50KCkgPT0gJnBhcmVudEVsZW1l
bnQoKTsKIAotICAgIGF1dG8gY2FuQWZmZWN0QW5jZXN0b3JzID0gWyZdKE1hdGNoRWxlbWVudCBt
YXRjaEVsZW1lbnQpIHsKLSAgICAgICAgaWYgKCFpc0Rlc2NlbmRhbnQpCisgICAgYXV0byBjYW5B
ZmZlY3RFbGVtZW50c1dpdGhTdHlsZSA9IFsmXShNYXRjaEVsZW1lbnQgbWF0Y2hFbGVtZW50KSB7
CisgICAgICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50KSB7CisgICAgICAgIGNhc2UgTWF0Y2hFbGVt
ZW50OjpIYXNTaWJsaW5nOgorICAgICAgICBjYXNlIE1hdGNoRWxlbWVudDo6SGFzQ2hpbGQ6Cisg
ICAgICAgICAgICByZXR1cm4gaXNDaGlsZDsKKyAgICAgICAgY2FzZSBNYXRjaEVsZW1lbnQ6Okhh
c0Rlc2NlbmRhbnQ6CisgICAgICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpIYXNTaWJsaW5nRGVzY2Vu
ZGFudDoKKyAgICAgICAgY2FzZSBNYXRjaEVsZW1lbnQ6Okhhc05vblN1YmplY3Q6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIG1hdGNoRWxlbWVudCA9PSBNYXRjaEVs
ZW1lbnQ6Okhhc0Rlc2NlbmRhbnQKLSAgICAgICAgICAgIHx8IG1hdGNoRWxlbWVudCA9PSBNYXRj
aEVsZW1lbnQ6Okhhc1NpYmxpbmdEZXNjZW5kYW50Ci0gICAgICAgICAgICB8fCBtYXRjaEVsZW1l
bnQgPT0gTWF0Y2hFbGVtZW50OjpIYXNOb25TdWJqZWN0OworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBoYXNNYXRjaGluZ0ludmFsaWRhdGlvblNl
bGVjdG9yID0gWyZdKGF1dG8mIGludmFsaWRhdGlvblJ1bGVTZXQpIHsKKyAgICAgICAgU2VsZWN0
b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihjaGFuZ2VkRWxlbWVudC5kb2N1bWVudCgpKTsKKyAg
ICAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNl
bGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRv
RWxlbWVudHMpOworICAgICAgICBjaGVja2luZ0NvbnRleHQubWF0Y2hlc0FsbFNjb3BlcyA9IHRy
dWU7CisKKyAgICAgICAgZm9yIChhdXRvKiBzZWxlY3RvciA6IGludmFsaWRhdGlvblJ1bGVTZXQu
aW52YWxpZGF0aW9uU2VsZWN0b3JzKSB7CisgICAgICAgICAgICBpZiAoaXNGaXJzdCkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVChpc0NoaWxkKTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGlz
IDpoYXMoKSBtYXRjaGVzIGlnbm9yaW5nIHRoaXMgbXV0YXRpb24sIG5vdGhpbmcgYWN0dWFsbHkg
Y2hhbmdlcyBhbmQgd2UgZG9uJ3QgbmVlZCB0byBpbnZhbGlkYXRlLgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBjb3VsZCBjYWNoZSB0aGlzIHN0YXRlIGFjcm9zcyBpbnZhbGlkYXRpb25z
IGluc3RlYWQgb2YganVzdCB0ZXN0aW5nIGEgc2luZ2xlIHNpYmxpbmcuCisgICAgICAgICAgICAg
ICAgYXV0byogc2libGluZyA9IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCA/
IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCA6IG1fY2hpbGRDaGFuZ2UubmV4
dFNpYmxpbmdFbGVtZW50OworICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nICYmIHNlbGVjdG9y
Q2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsICpzaWJsaW5nLCBjaGVja2luZ0NvbnRleHQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nSGFzU2VsZWN0b3JzLmFkZChzZWxlY3Rvcik7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKG1hdGNoaW5nSGFzU2VsZWN0b3JzLmNvbnRhaW5zKHNl
bGVjdG9yKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKHNl
bGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsIGNoYW5nZWRFbGVtZW50LCBjaGVja2luZ0Nv
bnRleHQpKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hpbmdIYXNTZWxlY3RvcnMuYWRkKHNlbGVj
dG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfTsKIAogICAgIGF1dG8gYWRkSGFzSW52
YWxpZGF0aW9uID0gWyZdKGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogaW52YWxp
ZGF0aW9uUnVsZVNldHMpICB7CiAgICAgICAgIGlmICghaW52YWxpZGF0aW9uUnVsZVNldHMpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZvciAoYXV0byYgaW52YWxpZGF0aW9uUnVsZVNl
dCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykgewotICAgICAgICAgICAgaWYgKCFjYW5BZmZlY3RB
bmNlc3RvcnMoaW52YWxpZGF0aW9uUnVsZVNldC5tYXRjaEVsZW1lbnQpKQorICAgICAgICAgICAg
aWYgKCFjYW5BZmZlY3RFbGVtZW50c1dpdGhTdHlsZShpbnZhbGlkYXRpb25SdWxlU2V0Lm1hdGNo
RWxlbWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIWhh
c01hdGNoaW5nSW52YWxpZGF0aW9uU2VsZWN0b3IoaW52YWxpZGF0aW9uUnVsZVNldCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBJbnZhbGlkYXRvcjo6YWRkVG9NYXRj
aEVsZW1lbnRSdWxlU2V0cyhtYXRjaEVsZW1lbnRSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNl
dCk7CiAgICAgICAgIH0KQEAgLTc2LDggKzExMywxMCBAQCB2b2lkIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uOjppbnZhbGlkYXRlRm9ySGFzQmVmb3JlTXV0YXRpb24oKQogICAgIGlmIChtX2NoaWxk
Q2hhbmdlLmlzSW5zZXJ0aW9uKCkgJiYgbV9jaGlsZENoYW5nZS50eXBlICE9IENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkKQogICAgICAgICByZXR1
cm47CiAKLSAgICB0cmF2ZXJzZVJlbW92ZWRFbGVtZW50cyhbJl0oYXV0byYgY2hhbmdlZEVsZW1l
bnQpIHsKLSAgICAgICAgaW52YWxpZGF0ZUZvckNoYW5nZWRFbGVtZW50KGNoYW5nZWRFbGVtZW50
KTsKKyAgICBNYXRjaGluZ0hhc1NlbGVjdG9ycyBtYXRjaGluZ0hhc1NlbGVjdG9yczsKKworICAg
IHRyYXZlcnNlUmVtb3ZlZEVsZW1lbnRzKFsmXShhdXRvJiBjaGFuZ2VkRWxlbWVudCwgYm9vbCBp
c0ZpcnN0KSB7CisgICAgICAgIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChjaGFuZ2VkRWxl
bWVudCwgaXNGaXJzdCwgbWF0Y2hpbmdIYXNTZWxlY3RvcnMpOwogICAgIH0pOwogfQogCkBAIC04
OCw4ICsxMjcsMTAgQEAgdm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUZv
ckhhc0FmdGVyTXV0YXRpb24oKQogICAgIGlmICghbV9jaGlsZENoYW5nZS5pc0luc2VydGlvbigp
KQogICAgICAgICByZXR1cm47CiAKLSAgICB0cmF2ZXJzZUFkZGVkRWxlbWVudHMoWyZdKGF1dG8m
IGNoYW5nZWRFbGVtZW50KSB7Ci0gICAgICAgIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChj
aGFuZ2VkRWxlbWVudCk7CisgICAgTWF0Y2hpbmdIYXNTZWxlY3RvcnMgbWF0Y2hpbmdIYXNTZWxl
Y3RvcnM7CisKKyAgICB0cmF2ZXJzZUFkZGVkRWxlbWVudHMoWyZdKGF1dG8mIGNoYW5nZWRFbGVt
ZW50LCBib29sIGlzRmlyc3QpIHsKKyAgICAgICAgaW52YWxpZGF0ZUZvckNoYW5nZWRFbGVtZW50
KGNoYW5nZWRFbGVtZW50LCBpc0ZpcnN0LCBtYXRjaGluZ0hhc1NlbGVjdG9ycyk7CiAgICAgfSk7
CiB9CiAKQEAgLTEwNiwxNSArMTQ3LDE2IEBAIHZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246
OnRyYXZlcnNlUmVtb3ZlZEVsZW1lbnRzKEZ1bmN0aW9uJiYgZnVuY3Rpb24pCiAgICAgYXV0byYg
ZmVhdHVyZXMgPSBwYXJlbnRFbGVtZW50KCkuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuZmVh
dHVyZXMoKTsKICAgICBib29sIG5lZWRzRGVzY2VuZGFudFRyYXZlcnNhbCA9IFN0eWxlOjpuZWVk
c0Rlc2NlbmRhbnRUcmF2ZXJzYWwoZmVhdHVyZXMpOwogCi0gICAgYXV0byogdG9SZW1vdmUgPSBt
X2NoaWxkQ2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQgPyBtX2NoaWxkQ2hhbmdlLnByZXZp
b3VzU2libGluZ0VsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpIDogcGFyZW50RWxlbWVudCgp
LmZpcnN0RWxlbWVudENoaWxkKCk7Ci0gICAgZm9yICg7IHRvUmVtb3ZlICE9IG1fY2hpbGRDaGFu
Z2UubmV4dFNpYmxpbmdFbGVtZW50OyB0b1JlbW92ZSA9IHRvUmVtb3ZlLT5uZXh0RWxlbWVudFNp
YmxpbmcoKSkgewotICAgICAgICBmdW5jdGlvbigqdG9SZW1vdmUpOworICAgIGF1dG8qIGZpcnN0
VG9SZW1vdmUgPSBtX2NoaWxkQ2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQgPyBtX2NoaWxk
Q2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpIDogcGFy
ZW50RWxlbWVudCgpLmZpcnN0RWxlbWVudENoaWxkKCk7CisKKyAgICBmb3IgKGF1dG8qIHRvUmVt
b3ZlID0gZmlyc3RUb1JlbW92ZTsgdG9SZW1vdmUgIT0gbV9jaGlsZENoYW5nZS5uZXh0U2libGlu
Z0VsZW1lbnQ7IHRvUmVtb3ZlID0gdG9SZW1vdmUtPm5leHRFbGVtZW50U2libGluZygpKSB7Cisg
ICAgICAgIGZ1bmN0aW9uKCp0b1JlbW92ZSwgdG9SZW1vdmUgPT0gZmlyc3RUb1JlbW92ZSk7CiAK
ICAgICAgICAgaWYgKCFuZWVkc0Rlc2NlbmRhbnRUcmF2ZXJzYWwpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBmb3IgKGF1dG8mIGRlc2NlbmRhbnQgOiBkZXNjZW5kYW50c09mVHlw
ZTxFbGVtZW50PigqdG9SZW1vdmUpKQotICAgICAgICAgICAgZnVuY3Rpb24oZGVzY2VuZGFudCk7
CisgICAgICAgICAgICBmdW5jdGlvbihkZXNjZW5kYW50LCBmYWxzZSk7CiAgICAgfQogfQogCkBA
IC0xMzIsMTQgKzE3NCwxNCBAQCB2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjp0cmF2ZXJz
ZUFkZGVkRWxlbWVudHMoRnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICBpZiAoIW5ld0VsZW1lbnQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZ1bmN0aW9uKCpuZXdFbGVtZW50KTsKKyAgICBmdW5j
dGlvbigqbmV3RWxlbWVudCwgdHJ1ZSk7CiAKICAgICBhdXRvJiBmZWF0dXJlcyA9IHBhcmVudEVs
ZW1lbnQoKS5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKS5mZWF0dXJlcygpOwogICAgIGlmICgh
bmVlZHNEZXNjZW5kYW50VHJhdmVyc2FsKGZlYXR1cmVzKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oKm5l
d0VsZW1lbnQpKQotICAgICAgICBmdW5jdGlvbihkZXNjZW5kYW50KTsKKyAgICAgICAgZnVuY3Rp
b24oZGVzY2VuZGFudCwgZmFsc2UpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0ZvckVtcHR5U3R5
bGVDaGFuZ2UoRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGls
ZENoYW5nZUludmFsaWRhdGlvbi5oCmluZGV4IDZkZjgwZjZmNjhiM2Y0MjA4YWQzNjY0NDk4M2Nj
YmJhYTc4ZjUzMTEuLjBkMmE0NmQ0MWUxYTNhMTkyOWM0YTRjZmRkNjE0MTljNDY4YTlhYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUludmFs
aWRhdG9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CkBAIC00NCw3ICs0
NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlRm9ySGFzQWZ0ZXJNdXRhdGlvbigp
OwogICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7CiAgICAgdm9pZCBjaGVja0ZvclNp
YmxpbmdTdHlsZUNoYW5nZXMoKTsKLSAgICB2b2lkIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVu
dChFbGVtZW50Jik7CisgICAgdXNpbmcgTWF0Y2hpbmdIYXNTZWxlY3RvcnMgPSBIYXNoU2V0PGNv
bnN0IENTU1NlbGVjdG9yKj47CisgICAgdm9pZCBpbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQo
RWxlbWVudCYsIGJvb2wgaXNGaXJzdCwgTWF0Y2hpbmdIYXNTZWxlY3RvcnMmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIHRyYXZlcnNlUmVtb3ZlZEVsZW1lbnRzKEZ1
bmN0aW9uJiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIHRyYXZlcnNl
QWRkZWRFbGVtZW50cyhGdW5jdGlvbiYmKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwN2NiYjA3ZWI2YmU0ZWUxZjJjNjM5
Y2IxMmMwNTU4ODM3NjJjMWFjLi44M2I2ZjhlYjk3MzA0MGI3ZjFjMzA2MTY4ZWI4YzQ3ODM0ZGEz
MGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMTQgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFs6aGFzKCkgcHNldWRvLWNsYXNzXSBBdm9pZCBP
KG5eMikgaW4gc3R5bGUgaW52YWxpZGF0aW9uIHdpdGggcmVwZWF0ZWQgRE9NIG11dGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODQyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzM5NzE3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBE
ZWFuIEphY2tzb24uCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAxLTEz
ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
ZmFzdC9ldmVudHMvb3ZlcmZsb3ctdmlld3BvcnQtcmVuZGVyZXItZGVsZXRlZC5odG1sIGRvZXMg
bm90IGxvYWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGJlYThmZDIzMjNjN2E0
ZjVkODU2MjdiZjY0NzU5NzU5ZTJiNGY4Y2YuLmFhYTQ2YWE4ODc5MDI1MjY1N2IxMjA0ZjUyMmNj
YjE0Yjc4MjE4YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIyLTAxLTEzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbOmhhcygpIHBzZXVkby1jbGFzc10gQXZvaWQgTyhuXjIpIGluIHN0eWxlIGludmFsaWRh
dGlvbiB3aXRoIHJlcGVhdGVkIERPTSBtdXRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDg0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODczOTcxNzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21w
bGV4aXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5Lmh0bWw6IEFkZGVkLgor
CiAyMDIyLTAxLTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZmxleGJveF0gSW1wb3J0IFdQVCB0ZXN0cyAtIEphbnVhcnkgZWRpdGlv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjgzMGIwZDNhY2QzMTdjZWFmNTJjZDlhZmVkMmY0YTg0
MjlkMWZjNC4uODAzNGE2ZmEyZTEwM2ExNWQyY2ExNjg0ZGIzM2U2OTZkOWFjYTk1ZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xNDk1LDYgKzE0OTUsOSBAQCB3ZWJraXQub3JnL2IvNjQ4NjEgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL3NlbGVjdG9ycy1kaXIt
cwogd2Via2l0Lm9yZy9iLzIyMzQ5NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9zZWxlY3RvcnMvbmVzdGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMveG1sLWNsYXNzLXNlbGVjdG9yLnht
bCBbIEltYWdlT25seUZhaWx1cmUgXQogCisjIFRoaXMgdGVzdCBpcyBiaXQgaGVhdnkgZm9yIGRl
YnVnCitbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0
b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxleGl0eS5odG1sIFsgU2tpcCBdCisKICMgcmVmIGZv
ciB0aGlzIGlzIHVuZGVyIGEgZGlyZWN0b3J5IHRoYXQgaXMgbm90IHlldCBpbXBvcnRlZAogd2Vi
a2l0Lm9yZy9iLzIwOTczNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxl
Y3RvcnMvcm9vdC1zaWJsaW5ncy5odG0gWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRh
dGlvbi9oYXMtY29tcGxleGl0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21w
bGV4aXR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGY0MWQ2YmYyZThlYmI1NTc5ZGRlNDQ4
OTkyYjRhODUwYmM0MWMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRhdGlvbi9oYXMtY29t
cGxleGl0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgQmVmb3JlIGFwcGVu
ZGluZyAyNTAwMCBlbGVtZW50cworUEFTUyBBZnRlciBhcHBlbmRpbmcgMjUwMDAgZWxlbWVudHMu
IFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC4KK1BBU1MgQWZ0ZXIgYXBwZW5kaW5nIGFub3RoZXIg
MjUwMDAgZWxlbWVudHMuIFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC4KK1BBU1MgQWZ0ZXIgYXBw
ZW5kaW5nIGRpdiB3aXRoIDI1MDAwIGVsZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQu
CitQQVNTIEFmdGVyIHJlbW92aW5nIGRpdiB3aXRoIDI1MDAwIGVsZW1lbnRzLiBUaGlzIHNob3Vs
ZCBub3QgdGltZSBvdXQuCitQQVNTIEFmdGVyIHJlbW92aW5nIDI1MDAwIGVsZW1lbnRzIG9uZS1i
eS1vbmUuIFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC4KK1BBU1MgQWZ0ZXIgcmVtb3ZpbmcgdGhl
IHJlbWFpbmluZyBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUgb3V0LgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxl
Y3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hh
cy1jb21wbGV4aXR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYxMjdiY2YxZTRlODMwYjMyYWJmZTA2OTg3
M2E5MjhiOWYxZDE5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9pbnZhbGlkYXRpb24vaGFzLWNvbXBs
ZXhpdHkuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5DU1MgU2VsZWN0b3IgSW52YWxpZGF0aW9uOiA6aGFzKCkgaW52
YWxpZGF0aW9uIHNob3VsZCBub3QgYmUgTyhuXjIpPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9y
IiB0aXRsZT0iQW50dGkgS29pdmlzdG8iIGhyZWY9Im1haWx0bzphbnR0aUBhcHBsZS5jb20iPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvc2VsZWN0b3JzLyNyZWxh
dGlvbmFsIj4KKzxzdHlsZT4KK2RpdiwgbWFpbiB7IGNvbG9yOiBncmV5IH0KK21haW46aGFzKHNw
YW4pIC5zdWJqZWN0IHsgY29sb3I6IHJlZCB9CittYWluOmhhcyhzcGFuICsgc3BhbikgLnN1Ympl
Y3QgeyBjb2xvcjogZ3JlZW4gfQorbWFpbjpoYXMoZmluYWwpIC5zdWJqZWN0IHsgY29sb3I6IGJs
dWUgfQorbWFpbjpoYXMobm9uZXhpc3RlbnQgKyBzcGFuKSAuc3ViamVjdCB7IGNvbG9yOiBibGFj
ayB9CittYWluOmhhcyhzcGFuKSBzcGFuIHsgY29sb3I6IGJsYWNrIH0KK21haW46aGFzKG5vbmV4
aXN0ZW50KSBzcGFuIHsgY29sb3I6IGJsYWNrIH0KK21haW46aGFzKGRpdiBkaXYgc3BhbikgLnN1
YmplY3QgeyBjb2xvcjogcHVycGxlIH0KKzwvc3R5bGU+Cis8bWFpbj4KKyAgICA8ZGl2IGlkPWNv
bnRhaW5lcj4KKyAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9
c3ViamVjdCBjbGFzcz1zdWJqZWN0PjwvZGl2PgorPC9tYWluPgorPHNjcmlwdD4KK2NvbnN0IGdy
ZXkgPSAncmdiKDEyOCwgMTI4LCAxMjgpJzsKK2NvbnN0IHJlZCA9ICdyZ2IoMjU1LCAwLCAwKSc7
Citjb25zdCBncmVlbiA9ICdyZ2IoMCwgMTI4LCAwKSc7Citjb25zdCBibHVlID0gJ3JnYigwLCAw
LCAyNTUpJzsKK2NvbnN0IHB1cnBsZSA9ICdyZ2IoMTI4LCAwLCAxMjgpJzsKKworZnVuY3Rpb24g
dGVzdENvbG9yKHRlc3RfbmFtZSwgY29sb3IpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoc3ViamVjdCkuY29sb3IsIGNvbG9y
KTsKKyAgICB9LCB0ZXN0X25hbWUpOworfQorCitjb25zdCBjb3VudCA9IDI1MDAwOworCit0ZXN0
Q29sb3IoYEJlZm9yZSBhcHBlbmRpbmcgJHtjb3VudH0gZWxlbWVudHNgLCByZWQpOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzcGFuKTsK
K30KKwordGVzdENvbG9yKGBBZnRlciBhcHBlbmRpbmcgJHtjb3VudH0gZWxlbWVudHMuIFRoaXMg
c2hvdWxkIG5vdCB0aW1lIG91dC5gLCBncmVlbik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgY291
bnQgLSAxOyArK2kpIHsKKyAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzcGFuKTsKK30KKworY29uc3QgZmlu
YWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaW5hbCIpOworY29udGFpbmVyLmFwcGVuZENo
aWxkKGZpbmFsKTsKKwordGVzdENvbG9yKGBBZnRlciBhcHBlbmRpbmcgYW5vdGhlciAke2NvdW50
fSBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUgb3V0LmAsIGJsdWUpOworCitjb25zdCBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgeworICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgZGl2LmFwcGVuZENoaWxkKHNwYW4pOworfQorY29udGFpbmVyLmFwcGVuZENo
aWxkKGRpdik7CisKK3Rlc3RDb2xvcihgQWZ0ZXIgYXBwZW5kaW5nIGRpdiB3aXRoICR7Y291bnR9
IGVsZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuYCwgcHVycGxlKTsKKworZGl2LnJl
bW92ZSgpOworCit0ZXN0Q29sb3IoYEFmdGVyIHJlbW92aW5nIGRpdiB3aXRoICR7Y291bnR9IGVs
ZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuYCwgYmx1ZSk7CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICBjb250YWluZXIubGFzdENoaWxkLnJlbW92ZSgpOwor
Cit0ZXN0Q29sb3IoYEFmdGVyIHJlbW92aW5nICR7Y291bnR9IGVsZW1lbnRzIG9uZS1ieS1vbmUu
IFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC5gLCBncmVlbik7CisKK2NvbnRhaW5lci5yZXBsYWNl
Q2hpbGRyZW4oKTsKKwordGVzdENvbG9yKGBBZnRlciByZW1vdmluZyB0aGUgcmVtYWluaW5nIGVs
ZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuYCwgZ3JleSk7CisKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449150</attachid>
            <date>2022-01-14 02:18:24 -0800</date>
            <delta_ts>2022-01-14 03:58:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234842-20220114121822.patch</filename>
            <type>text/plain</type>
            <size>15864</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyYmE3ZGE1MGQ2MzY2
MWQ2ODIyYTBhOWNmYjZiNjljYmMyYWY0NC4uODYzZDZlYmRjOGI2MzQyMDg0NzhmMTE5MThlMjUy
YjY0NzcxNDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTEzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gQXZvaWQgTyhuXjIpIGluIHN0eWxlIGludmFsaWRhdGlvbiB3aXRoIHJlcGVhdGVkIERP
TSBtdXRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDg0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODczOTcxNzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIFVzZSBpbnZhbGlkYXRpb24gc2Vs
ZWN0b3JzIHRvIGNoZWNrIGlmIGEgZ2l2ZW4gbXV0YXRpb24gbmVlZHMgOmhhcygpIGludmFsaWRh
dGlvbi4KKworICAgICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9zZWxlY3RvcnMvaW52YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5Lmh0bWwKKworICAgICAgICAq
IGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZSBjb25zdCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgor
ICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUZvckNoYW5n
ZWRFbGVtZW50KToKKworICAgICAgICBJbnZhbGlkYXRlIG9ubHkgaWYgdGhlIGludmFsaWRhdGlv
biBydWxlc2V0IGhhcyBhbiBpbnZhbGlkYXRpb24gc2VsZWN0b3IgdGhhdCBtYXRjaGVzCisgICAg
ICAgIHRoZSBhZGRlZC9yZW1vdmVkIGVsZW1lbnQuIEV2ZW4gaW4gdGhhdCBjYXNlIHdlIG9ubHkg
bmVlZCB0byBpbnZhbGlkYXRlIGlmIHRoYXQgc2VsZWN0b3IKKyAgICAgICAgaGFzIG5vdCBhbHJl
YWR5IG1hdGNoZWQgd2l0aGluIHRoaXMgcGFyZW50LgorCisgICAgICAgIEFzIHdlIGRvbid0IGhh
dmUgcGVyc2lzdGVudCBzdGF0ZSB0aGF0IHdvdWxkIHJlbWVtYmVyIHdoYXQgYWxyZWFkeSBtYXRj
aGVkIGFjY3Jvc3MgbXVsdGlwbGUKKyAgICAgICAgbXV0YXRpb25zLCBhcHByb3hpbWF0ZSB0aGlz
IGJ5IGNoZWNraW5nIGlmIHRoZSBjbG9zZXN0IHNpYmxpbmcgbWF0Y2hlZC4KKworICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9ySGFz
QmVmb3JlTXV0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9ySGFzQWZ0ZXJNdXRhdGlvbik6CisgICAgICAgICogc3R5
bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDoKKwogMjAyMi0wMS0xMiAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgWzpoYXMoKSBwc2V1ZG8tY2xhc3NdIENv
bGxlY3QgaW52YWxpZGF0aW9uIHNlbGVjdG9ycyBmb3IgY2hpbGQgaW52YWxpZGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDQ1NDk4NzMyNWIxZmRlZWMwOTFk
ZmY2MjZmZDRkNWZlYzg5MmU4YTQuLjVkMjNmZDQ3MTg2YzczYTU0M2ZkNGExYWE2MDdkYTAyZjNl
YjAwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0xMDg0LDcg
KzEwODQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDb250ZXh0
JiBjaGVja2luZ0NvbnRleHQsIGNvbnN0IExvY2FsQ29udAogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1JlbGF0aXZlU2NvcGU6IHsKICAgICAgICAgICAgIGNvbnN0IE5vZGUq
IGNvbnRleHR1YWxSZWZlcmVuY2VOb2RlID0gIWNoZWNraW5nQ29udGV4dC5zY29wZSA/IGVsZW1l
bnQuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA6IGNoZWNraW5nQ29udGV4dC5zY29wZTsK
IAotICAgICAgICAgICAgYm9vbCBtYXRjaGVzID0gJmVsZW1lbnQgPT0gY29udGV4dHVhbFJlZmVy
ZW5jZU5vZGU7CisgICAgICAgICAgICBib29sIG1hdGNoZXMgPSAmZWxlbWVudCA9PSBjb250ZXh0
dWFsUmVmZXJlbmNlTm9kZSB8fCBjaGVja2luZ0NvbnRleHQubWF0Y2hlc0FsbFNjb3BlczsKIAog
ICAgICAgICAgICAgaWYgKCFtYXRjaGVzICYmIGNoZWNraW5nQ29udGV4dC5zY29wZSkgewogICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50LmlzRGVzY2VuZGFudE9mKCpjaGVja2luZ0NvbnRleHQu
c2NvcGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IGQ4ODBjNWJjNTM2
NjNjZjcwMTliOWY2MjBkNTU3ZGE2OTkwNTFkMDkuLjE0YWRlZGUyZDczMzMxOGFjZDUzMGEwMjBm
YTExMmZlZGZkMTdjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTk1
LDYgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlU2Nyb2xsYmFy
U3RhdGU+IHNjcm9sbGJhclN0YXRlOwogICAgICAgICBBdG9tU3RyaW5nIG5hbWVGb3JIaWdodGxp
Z2h0UHNldWRvRWxlbWVudDsKICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgeyBu
dWxscHRyIH07CisgICAgICAgIGJvb2wgbWF0Y2hlc0FsbFNjb3BlcyB7IGZhbHNlIH07CiAgICAg
ICAgIFN0eWxlOjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgeyBTdHlsZTo6U2NvcGVP
cmRpbmFsOjpFbGVtZW50IH07CiAgICAgICAgIFN0eWxlOjpTZWxlY3Rvck1hdGNoaW5nU3RhdGUq
IHNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCmluZGV4IGUzNjZiNjRhOTE1YTdk
OGY0MmI2ZTFkZDA3ZDZhNDBmMGE4YmU5MmUuLmNhMGZlZjZmZjU0OTQ1ZjQ0ZGQzNDNjNTFmNTY0
ZDkzMmYxYmNhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKQEAgLTM3LDI3ICszNyw2NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZTo6
U3R5bGUgewogCi12b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9yQ2hh
bmdlZEVsZW1lbnQoRWxlbWVudCYgY2hhbmdlZEVsZW1lbnQpCit2b2lkIENoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQoRWxlbWVudCYgY2hhbmdlZEVs
ZW1lbnQsIE1hdGNoaW5nSGFzU2VsZWN0b3JzJiBtYXRjaGluZ0hhc1NlbGVjdG9ycykKIHsKICAg
ICBhdXRvJiBydWxlU2V0cyA9IHBhcmVudEVsZW1lbnQoKS5zdHlsZVJlc29sdmVyKCkucnVsZVNl
dHMoKTsKIAogICAgIEludmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0cyBtYXRjaEVsZW1l
bnRSdWxlU2V0czsKIAotICAgIGJvb2wgaXNEZXNjZW5kYW50ID0gY2hhbmdlZEVsZW1lbnQucGFy
ZW50RWxlbWVudCgpICE9ICZwYXJlbnRFbGVtZW50KCk7CisgICAgYm9vbCBpc0NoaWxkID0gY2hh
bmdlZEVsZW1lbnQucGFyZW50RWxlbWVudCgpID09ICZwYXJlbnRFbGVtZW50KCk7CiAKLSAgICBh
dXRvIGNhbkFmZmVjdEFuY2VzdG9ycyA9IFsmXShNYXRjaEVsZW1lbnQgbWF0Y2hFbGVtZW50KSB7
Ci0gICAgICAgIGlmICghaXNEZXNjZW5kYW50KQorICAgIGF1dG8gY2FuQWZmZWN0RWxlbWVudHNX
aXRoU3R5bGUgPSBbJl0oTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCkgeworICAgICAgICBzd2l0
Y2ggKG1hdGNoRWxlbWVudCkgeworICAgICAgICBjYXNlIE1hdGNoRWxlbWVudDo6SGFzU2libGlu
ZzoKKyAgICAgICAgY2FzZSBNYXRjaEVsZW1lbnQ6Okhhc0NoaWxkOgorICAgICAgICAgICAgcmV0
dXJuIGlzQ2hpbGQ7CisgICAgICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpIYXNEZXNjZW5kYW50Ogor
ICAgICAgICBjYXNlIE1hdGNoRWxlbWVudDo6SGFzU2libGluZ0Rlc2NlbmRhbnQ6CisgICAgICAg
IGNhc2UgTWF0Y2hFbGVtZW50OjpIYXNOb25TdWJqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIHJldHVybiBtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIYXNEZXNj
ZW5kYW50Ci0gICAgICAgICAgICB8fCBtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIYXNT
aWJsaW5nRGVzY2VuZGFudAotICAgICAgICAgICAgfHwgbWF0Y2hFbGVtZW50ID09IE1hdGNoRWxl
bWVudDo6SGFzTm9uU3ViamVjdDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIGJvb2wgaXNGaXJzdCA9IGlzQ2hpbGQgJiYgbV9jaGlsZENoYW5nZS5wcmV2
aW91c1NpYmxpbmdFbGVtZW50ID09IGNoYW5nZWRFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxp
bmcoKTsKKworICAgIGF1dG8gaGFzTWF0Y2hpbmdJbnZhbGlkYXRpb25TZWxlY3RvciA9IFsmXShh
dXRvJiBpbnZhbGlkYXRpb25SdWxlU2V0KSB7CisgICAgICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxl
Y3RvckNoZWNrZXIoY2hhbmdlZEVsZW1lbnQuZG9jdW1lbnQoKSk7CisgICAgICAgIFNlbGVjdG9y
Q2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNoZWNraW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6
Ok1vZGU6OkNvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzKTsKKyAg
ICAgICAgY2hlY2tpbmdDb250ZXh0Lm1hdGNoZXNBbGxTY29wZXMgPSB0cnVlOworCisgICAgICAg
IGZvciAoYXV0byogc2VsZWN0b3IgOiBpbnZhbGlkYXRpb25SdWxlU2V0LmludmFsaWRhdGlvblNl
bGVjdG9ycykgeworICAgICAgICAgICAgaWYgKGlzRmlyc3QpIHsKKyAgICAgICAgICAgICAgICAv
LyBJZiB0aGlzIDpoYXMoKSBtYXRjaGVzIGlnbm9yaW5nIHRoaXMgbXV0YXRpb24sIG5vdGhpbmcg
YWN0dWFsbHkgY2hhbmdlcyBhbmQgd2UgZG9uJ3QgbmVlZCB0byBpbnZhbGlkYXRlLgorICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBjYWNoZSB0aGlzIHN0YXRlIGFjcm9zcyBpbnZh
bGlkYXRpb25zIGluc3RlYWQgb2YganVzdCB0ZXN0aW5nIGEgc2luZ2xlIHNpYmxpbmcuCisgICAg
ICAgICAgICAgICAgYXV0byogc2libGluZyA9IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5n
RWxlbWVudCA/IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCA6IG1fY2hpbGRD
aGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50OworICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nICYm
IHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsICpzaWJsaW5nLCBjaGVja2luZ0NvbnRl
eHQpKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nSGFzU2VsZWN0b3JzLmFkZChzZWxl
Y3Rvcik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1hdGNoaW5nSGFzU2VsZWN0b3JzLmNv
bnRhaW5zKHNlbGVjdG9yKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsIGNoYW5nZWRFbGVtZW50LCBj
aGVja2luZ0NvbnRleHQpKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hpbmdIYXNTZWxlY3RvcnMu
YWRkKHNlbGVjdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfTsKIAogICAgIGF1dG8g
YWRkSGFzSW52YWxpZGF0aW9uID0gWyZdKGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0
PiogaW52YWxpZGF0aW9uUnVsZVNldHMpICB7CiAgICAgICAgIGlmICghaW52YWxpZGF0aW9uUnVs
ZVNldHMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZvciAoYXV0byYgaW52YWxpZGF0
aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykgewotICAgICAgICAgICAgaWYgKCFj
YW5BZmZlY3RBbmNlc3RvcnMoaW52YWxpZGF0aW9uUnVsZVNldC5tYXRjaEVsZW1lbnQpKQorICAg
ICAgICAgICAgaWYgKCFjYW5BZmZlY3RFbGVtZW50c1dpdGhTdHlsZShpbnZhbGlkYXRpb25SdWxl
U2V0Lm1hdGNoRWxlbWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAoIWhhc01hdGNoaW5nSW52YWxpZGF0aW9uU2VsZWN0b3IoaW52YWxpZGF0aW9uUnVsZVNl
dCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBJbnZhbGlkYXRvcjo6
YWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0cyhtYXRjaEVsZW1lbnRSdWxlU2V0cywgaW52YWxpZGF0
aW9uUnVsZVNldCk7CiAgICAgICAgIH0KQEAgLTc2LDggKzExNCwxMCBAQCB2b2lkIENoaWxkQ2hh
bmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9ySGFzQmVmb3JlTXV0YXRpb24oKQogICAgIGlm
IChtX2NoaWxkQ2hhbmdlLmlzSW5zZXJ0aW9uKCkgJiYgbV9jaGlsZENoYW5nZS50eXBlICE9IENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBNYXRjaGluZ0hhc1NlbGVjdG9ycyBtYXRjaGluZ0hhc1NlbGVj
dG9yczsKKwogICAgIHRyYXZlcnNlUmVtb3ZlZEVsZW1lbnRzKFsmXShhdXRvJiBjaGFuZ2VkRWxl
bWVudCkgewotICAgICAgICBpbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQoY2hhbmdlZEVsZW1l
bnQpOworICAgICAgICBpbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQoY2hhbmdlZEVsZW1lbnQs
IG1hdGNoaW5nSGFzU2VsZWN0b3JzKTsKICAgICB9KTsKIH0KIApAQCAtODgsOCArMTI4LDEwIEBA
IHZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVGb3JIYXNBZnRlck11dGF0
aW9uKCkKICAgICBpZiAoIW1fY2hpbGRDaGFuZ2UuaXNJbnNlcnRpb24oKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgTWF0Y2hpbmdIYXNTZWxlY3RvcnMgbWF0Y2hpbmdIYXNTZWxlY3RvcnM7CisK
ICAgICB0cmF2ZXJzZUFkZGVkRWxlbWVudHMoWyZdKGF1dG8mIGNoYW5nZWRFbGVtZW50KSB7Ci0g
ICAgICAgIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChjaGFuZ2VkRWxlbWVudCk7CisgICAg
ICAgIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChjaGFuZ2VkRWxlbWVudCwgbWF0Y2hpbmdI
YXNTZWxlY3RvcnMpOwogICAgIH0pOwogfQogCkBAIC0xMDYsOCArMTQ4LDkgQEAgdm9pZCBDaGls
ZENoYW5nZUludmFsaWRhdGlvbjo6dHJhdmVyc2VSZW1vdmVkRWxlbWVudHMoRnVuY3Rpb24mJiBm
dW5jdGlvbikKICAgICBhdXRvJiBmZWF0dXJlcyA9IHBhcmVudEVsZW1lbnQoKS5zdHlsZVJlc29s
dmVyKCkucnVsZVNldHMoKS5mZWF0dXJlcygpOwogICAgIGJvb2wgbmVlZHNEZXNjZW5kYW50VHJh
dmVyc2FsID0gU3R5bGU6Om5lZWRzRGVzY2VuZGFudFRyYXZlcnNhbChmZWF0dXJlcyk7CiAKLSAg
ICBhdXRvKiB0b1JlbW92ZSA9IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCA/
IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5n
KCkgOiBwYXJlbnRFbGVtZW50KCkuZmlyc3RFbGVtZW50Q2hpbGQoKTsKLSAgICBmb3IgKDsgdG9S
ZW1vdmUgIT0gbV9jaGlsZENoYW5nZS5uZXh0U2libGluZ0VsZW1lbnQ7IHRvUmVtb3ZlID0gdG9S
ZW1vdmUtPm5leHRFbGVtZW50U2libGluZygpKSB7CisgICAgYXV0byogZmlyc3RUb1JlbW92ZSA9
IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCA/IG1fY2hpbGRDaGFuZ2UucHJl
dmlvdXNTaWJsaW5nRWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkgOiBwYXJlbnRFbGVtZW50
KCkuZmlyc3RFbGVtZW50Q2hpbGQoKTsKKworICAgIGZvciAoYXV0byogdG9SZW1vdmUgPSBmaXJz
dFRvUmVtb3ZlOyB0b1JlbW92ZSAhPSBtX2NoaWxkQ2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudDsg
dG9SZW1vdmUgPSB0b1JlbW92ZS0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKICAgICAgICAgZnVu
Y3Rpb24oKnRvUmVtb3ZlKTsKIAogICAgICAgICBpZiAoIW5lZWRzRGVzY2VuZGFudFRyYXZlcnNh
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5oCmlu
ZGV4IDZkZjgwZjZmNjhiM2Y0MjA4YWQzNjY0NDk4M2NjYmJhYTc4ZjUzMTEuLmFjNjg5YmMzNTdj
YmVhMDc0NjI2MmM1MGRiZTg5NzY4ODRlODQ2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUludmFsaWRhdG9yLmgiCiAjaW5jbHVkZSAiU3R5
bGVTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBTdHlsZSB7CkBAIC00NCw3ICs0NSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnZhbGlkYXRlRm9ySGFzQWZ0ZXJNdXRhdGlvbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZUFm
dGVyQ2hhbmdlKCk7CiAgICAgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKLSAg
ICB2b2lkIGludmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChFbGVtZW50Jik7CisgICAgdXNpbmcg
TWF0Y2hpbmdIYXNTZWxlY3RvcnMgPSBIYXNoU2V0PGNvbnN0IENTU1NlbGVjdG9yKj47CisgICAg
dm9pZCBpbnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQoRWxlbWVudCYsIE1hdGNoaW5nSGFzU2Vs
ZWN0b3JzJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCB0cmF2ZXJz
ZVJlbW92ZWRFbGVtZW50cyhGdW5jdGlvbiYmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvbj4gdm9pZCB0cmF2ZXJzZUFkZGVkRWxlbWVudHMoRnVuY3Rpb24mJik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDdj
YmIwN2ViNmJlNGVlMWYyYzYzOWNiMTJjMDU1ODgzNzYyYzFhYy4uODNiNmY4ZWI5NzMwNDBiN2Yx
YzMwNjE2OGViOGM0NzgzNGRhMzBkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAxLTE0
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBz
ZXVkby1jbGFzc10gQXZvaWQgTyhuXjIpIGluIHN0eWxlIGludmFsaWRhdGlvbiB3aXRoIHJlcGVh
dGVkIERPTSBtdXRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDg0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODczOTcxNzY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMi0wMS0xMyAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIGZhc3QvZXZlbnRzL292ZXJmbG93LXZpZXdwb3J0LXJlbmRlcmVy
LWRlbGV0ZWQuaHRtbCBkb2VzIG5vdCBsb2FkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCBiZWE4ZmQyMzIzYzdhNGY1ZDg1NjI3YmY2NDc1OTc1OWUyYjRmOGNmLi5hYWE0NmFhODg3
OTAyNTI2NTdiMTIwNGY1MjJjY2IxNGI3ODIxOGE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMS0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CisKKyAgICAgICAgWzpoYXMoKSBwc2V1ZG8tY2xhc3NdIEF2b2lkIE8obl4y
KSBpbiBzdHlsZSBpbnZhbGlkYXRpb24gd2l0aCByZXBlYXRlZCBET00gbXV0YXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4NDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzg3Mzk3MTc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4g
SmFja3Nvbi4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2lu
dmFsaWRhdGlvbi9oYXMtY29tcGxleGl0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxl
eGl0eS5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2
aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEltcG9ydCBXUFQgdGVz
dHMgLSBKYW51YXJ5IGVkaXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI4MzBiMGQzYWNkMzE3
Y2VhZjUyY2Q5YWZlZDJmNGE4NDI5ZDFmYzQuLjgwMzRhNmZhMmUxMDNhMTVkMmNhMTY4NGRiMzNl
Njk2ZDlhY2E5NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQ5NSw2ICsxNDk1LDkgQEAgd2Vi
a2l0Lm9yZy9iLzY0ODYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVj
dG9ycy9zZWxlY3RvcnMtZGlyLXMKIHdlYmtpdC5vcmcvYi8yMjM0OTcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL25lc3RpbmcuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL3ht
bC1jbGFzcy1zZWxlY3Rvci54bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorIyBUaGlzIHRlc3Qg
aXMgYml0IGhlYXZ5IGZvciBkZWJ1ZworWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9pbnZhbGlkYXRpb24vaGFzLWNvbXBsZXhpdHkuaHRtbCBb
IFNraXAgXQorCiAjIHJlZiBmb3IgdGhpcyBpcyB1bmRlciBhIGRpcmVjdG9yeSB0aGF0IGlzIG5v
dCB5ZXQgaW1wb3J0ZWQKIHdlYmtpdC5vcmcvYi8yMDk3MzUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL3Jvb3Qtc2libGluZ3MuaHRtIFsgU2tpcCBdCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L3NlbGVjdG9ycy9pbnZhbGlkYXRpb24vaGFzLWNvbXBsZXhpdHktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2lu
dmFsaWRhdGlvbi9oYXMtY29tcGxleGl0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBmNDFk
NmJmMmU4ZWJiNTU3OWRkZTQ0ODk5MmI0YTg1MGJjNDFjMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9p
bnZhbGlkYXRpb24vaGFzLWNvbXBsZXhpdHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAor
CitQQVNTIEJlZm9yZSBhcHBlbmRpbmcgMjUwMDAgZWxlbWVudHMKK1BBU1MgQWZ0ZXIgYXBwZW5k
aW5nIDI1MDAwIGVsZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuCitQQVNTIEFmdGVy
IGFwcGVuZGluZyBhbm90aGVyIDI1MDAwIGVsZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBv
dXQuCitQQVNTIEFmdGVyIGFwcGVuZGluZyBkaXYgd2l0aCAyNTAwMCBlbGVtZW50cy4gVGhpcyBz
aG91bGQgbm90IHRpbWUgb3V0LgorUEFTUyBBZnRlciByZW1vdmluZyBkaXYgd2l0aCAyNTAwMCBl
bGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUgb3V0LgorUEFTUyBBZnRlciByZW1vdmluZyAy
NTAwMCBlbGVtZW50cyBvbmUtYnktb25lLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuCitQQVNT
IEFmdGVyIHJlbW92aW5nIHRoZSByZW1haW5pbmcgZWxlbWVudHMuIFRoaXMgc2hvdWxkIG5vdCB0
aW1lIG91dC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxleGl0eS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0
b3JzL2ludmFsaWRhdGlvbi9oYXMtY29tcGxleGl0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMTI3YmNm
MWU0ZTgzMGIzMmFiZmUwNjk4NzNhOTI4YjlmMWQxOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9zZWxlY3RvcnMvaW52
YWxpZGF0aW9uL2hhcy1jb21wbGV4aXR5Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIFNlbGVjdG9yIEludmFs
aWRhdGlvbjogOmhhcygpIGludmFsaWRhdGlvbiBzaG91bGQgbm90IGJlIE8obl4yKTwvdGl0bGU+
Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkFudHRpIEtvaXZpc3RvIiBocmVmPSJtYWlsdG86
YW50dGlAYXBwbGUuY29tIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL3NlbGVjdG9ycy8jcmVsYXRpb25hbCI+Cis8c3R5bGU+CitkaXYsIG1haW4geyBjb2xvcjog
Z3JleSB9CittYWluOmhhcyhzcGFuKSAuc3ViamVjdCB7IGNvbG9yOiByZWQgfQorbWFpbjpoYXMo
c3BhbiArIHNwYW4pIC5zdWJqZWN0IHsgY29sb3I6IGdyZWVuIH0KK21haW46aGFzKGZpbmFsKSAu
c3ViamVjdCB7IGNvbG9yOiBibHVlIH0KK21haW46aGFzKG5vbmV4aXN0ZW50ICsgc3BhbikgLnN1
YmplY3QgeyBjb2xvcjogYmxhY2sgfQorbWFpbjpoYXMoc3Bhbikgc3BhbiB7IGNvbG9yOiBibGFj
ayB9CittYWluOmhhcyhub25leGlzdGVudCkgc3BhbiB7IGNvbG9yOiBibGFjayB9CittYWluOmhh
cyhkaXYgZGl2IHNwYW4pIC5zdWJqZWN0IHsgY29sb3I6IHB1cnBsZSB9Cis8L3N0eWxlPgorPG1h
aW4+CisgICAgPGRpdiBpZD1jb250YWluZXI+CisgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2IGlkPXN1YmplY3QgY2xhc3M9c3ViamVjdD48L2Rpdj4KKzwvbWFpbj4K
KzxzY3JpcHQ+Citjb25zdCBncmV5ID0gJ3JnYigxMjgsIDEyOCwgMTI4KSc7Citjb25zdCByZWQg
PSAncmdiKDI1NSwgMCwgMCknOworY29uc3QgZ3JlZW4gPSAncmdiKDAsIDEyOCwgMCknOworY29u
c3QgYmx1ZSA9ICdyZ2IoMCwgMCwgMjU1KSc7Citjb25zdCBwdXJwbGUgPSAncmdiKDEyOCwgMCwg
MTI4KSc7CisKK2Z1bmN0aW9uIHRlc3RDb2xvcih0ZXN0X25hbWUsIGNvbG9yKSB7CisgICAgdGVz
dChmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhnZXRDb21wdXRlZFN0eWxlKHN1
YmplY3QpLmNvbG9yLCBjb2xvcik7CisgICAgfSwgdGVzdF9uYW1lKTsKK30KKworY29uc3QgY291
bnQgPSAyNTAwMDsKKwordGVzdENvbG9yKGBCZWZvcmUgYXBwZW5kaW5nICR7Y291bnR9IGVsZW1l
bnRzYCwgcmVkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgY29u
c3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjb250YWluZXIu
YXBwZW5kQ2hpbGQoc3Bhbik7Cit9CisKK3Rlc3RDb2xvcihgQWZ0ZXIgYXBwZW5kaW5nICR7Y291
bnR9IGVsZW1lbnRzLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuYCwgZ3JlZW4pOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IGNvdW50IC0gMTsgKytpKSB7CisgICAgY29uc3Qgc3BhbiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc3Bh
bik7Cit9CisKK2NvbnN0IGZpbmFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmluYWwiKTsK
K2NvbnRhaW5lci5hcHBlbmRDaGlsZChmaW5hbCk7CisKK3Rlc3RDb2xvcihgQWZ0ZXIgYXBwZW5k
aW5nIGFub3RoZXIgJHtjb3VudH0gZWxlbWVudHMuIFRoaXMgc2hvdWxkIG5vdCB0aW1lIG91dC5g
LCBibHVlKTsKKworY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citm
b3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICBjb25zdCBzcGFuID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGRpdi5hcHBlbmRDaGlsZChzcGFuKTsKK30K
K2NvbnRhaW5lci5hcHBlbmRDaGlsZChkaXYpOworCit0ZXN0Q29sb3IoYEFmdGVyIGFwcGVuZGlu
ZyBkaXYgd2l0aCAke2NvdW50fSBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUgb3V0LmAs
IHB1cnBsZSk7CisKK2Rpdi5yZW1vdmUoKTsKKwordGVzdENvbG9yKGBBZnRlciByZW1vdmluZyBk
aXYgd2l0aCAke2NvdW50fSBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUgb3V0LmAsIGJs
dWUpOworCitmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgY29udGFpbmVyLmxh
c3RDaGlsZC5yZW1vdmUoKTsKKwordGVzdENvbG9yKGBBZnRlciByZW1vdmluZyAke2NvdW50fSBl
bGVtZW50cyBvbmUtYnktb25lLiBUaGlzIHNob3VsZCBub3QgdGltZSBvdXQuYCwgZ3JlZW4pOwor
Citjb250YWluZXIucmVwbGFjZUNoaWxkcmVuKCk7CisKK3Rlc3RDb2xvcihgQWZ0ZXIgcmVtb3Zp
bmcgdGhlIHJlbWFpbmluZyBlbGVtZW50cy4gVGhpcyBzaG91bGQgbm90IHRpbWUgb3V0LmAsIGdy
ZXkpOworCis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>