<?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>223241</bug_id>
          
          <creation_ts>2021-03-16 00:36:37 -0700</creation_ts>
          <short_desc>Fix race condition in ConcurrentPtrHashSet.</short_desc>
          <delta_ts>2021-03-18 20:20:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222947</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1739857</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-03-16 00:36:37 -0700</bug_when>
    <thetext>There exists a race condition where ConcurrentPtrHashSet::resizeIfNecessary() may not capture an entry added by ConcurrentPtrHashSet::addSlow().

rdar://74637896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739997</commentid>
    <comment_count>1</comment_count>
      <attachid>423349</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-03-16 10:11:52 -0700</bug_when>
    <thetext>Created attachment 423349
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740002</commentid>
    <comment_count>2</comment_count>
      <attachid>423350</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-03-16 10:16:51 -0700</bug_when>
    <thetext>Created attachment 423350
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740203</commentid>
    <comment_count>3</comment_count>
      <attachid>423350</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-16 14:24:55 -0700</bug_when>
    <thetext>Comment on attachment 423350
proposed patch.

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

r=me, looks good!

&gt; Source/WTF/wtf/ConcurrentPtrHashSet.cpp:157
&gt; +    // addSlow() will always start by exchangeAdd&apos;ing 1 to the current m_table&apos;s
&gt; +    // load value before checking if it exceeds its max allowed load. For the
&gt; +    // real m_table, this is not an issue because at most, it will accummulate
&gt; +    // up to N extra adds above max load, where N is the number of GC marker
&gt; +    // threads. However, if m_table may be replaced with m_stubTable for each
&gt; +    // resize operation. As a result, the cummulative error on its load value
&gt; +    // may far exceed N (as specified above). To fix this, we always reset it
&gt; +    // here to prevent an overflow. Note: a load of stubDefaultLoadValue means
&gt; +    // that m_stubTable is full since its size is 0.
&gt; +    //
&gt; +    // In practice, this won&apos;t matter because we most likely won&apos;t do so many
&gt; +    // resize operations such that this will get to the point of overflowing.
&gt; +    // However, since resizing is not in the fast path, let&apos;s just be pedantic
&gt; +    // and reset it for correctness.
&gt; +    m_stubTable.load.store(Table::stubDefaultLoadValue);

Should we reset it after `m_table.store(newTable.get());`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740211</commentid>
    <comment_count>4</comment_count>
      <attachid>423350</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-03-16 14:33:28 -0700</bug_when>
    <thetext>Comment on attachment 423350
proposed patch.

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

&gt;&gt; Source/WTF/wtf/ConcurrentPtrHashSet.cpp:157
&gt;&gt; +    m_stubTable.load.store(Table::stubDefaultLoadValue);
&gt; 
&gt; Should we reset it after `m_table.store(newTable.get());`?

Good idea.  I will do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740883</commentid>
    <comment_count>5</comment_count>
      <attachid>423525</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-03-17 13:42:24 -0700</bug_when>
    <thetext>Created attachment 423525
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740884</commentid>
    <comment_count>6</comment_count>
      <attachid>423526</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-03-17 13:43:36 -0700</bug_when>
    <thetext>Created attachment 423526
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740892</commentid>
    <comment_count>7</comment_count>
      <attachid>423526</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-17 13:56:20 -0700</bug_when>
    <thetext>Comment on attachment 423526
proposed patch.

r=me, make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741004</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-03-17 19:40:55 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r274608: &lt;http://trac.webkit.org/r274608&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423349</attachid>
            <date>2021-03-16 10:11:52 -0700</date>
            <delta_ts>2021-03-16 10:18:13 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-223241.patch</filename>
            <type>text/plain</type>
            <size>12491</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQ0NjcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggcmFjZSBjb25kaXRpb24gaW4gQ29uY3VycmVudFB0ckhhc2hTZXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyNDEK
KyAgICAgICAgcmRhcjovLzc0NjM3ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmFjZS10by1hZGQtb3BhcXVlLXJvb3RzLWluLUNv
bmN1cnJlbnRQdHJIYXNoU2V0LmpzOiBBZGRlZC4KKwogMjAyMS0wMy0xNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJ1biBvbmUgTW96aWxsYSB0
ZXN0IGV4cGxpY2l0bHkgdW5kZXIgUFNUIHNpbmNlIHRoaXMgdGVzdCBkb2VzIG5vdCB3b3JrIHdo
ZW4gd2UgYXJlIG1vdmluZyBmcm9tIFBTVCB0byBQRFQKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3Jh
Y2UtdG8tYWRkLW9wYXF1ZS1yb290cy1pbi1Db25jdXJyZW50UHRySGFzaFNldC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9yYWNlLXRvLWFkZC1vcGFxdWUtcm9vdHMtaW4tQ29uY3Vy
cmVudFB0ckhhc2hTZXQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcmFjZS10
by1hZGQtb3BhcXVlLXJvb3RzLWluLUNvbmN1cnJlbnRQdHJIYXNoU2V0LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNyBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBydW5E
ZWZhdWx0KCItLXZlcmlmeUdDPXRydWUiLCAiLS1zbG93UGF0aEFsbG9jc0JldHdlZW5HQ3M9MiIp
CisvL0Agc2xvdyEKKworbGV0IGFycmF5ID0gW107Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDsgaSsrKQorICAgIGFycmF5W2ldID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigpKTsK
SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzQ0NjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAyMS0wMy0xNiAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGluIENvbmN1cnJlbnRQ
dHJIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzMjQxCisgICAgICAgIHJkYXI6Ly83NDYzNzg5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGV4aXN0cyBhIHJhY2UgY29uZGl0aW9u
IHdoZXJlIENvbmN1cnJlbnRQdHJIYXNoU2V0OjpyZXNpemVJZk5lY2Vzc2FyeSgpIG1heQorICAg
ICAgICBub3QgY2FwdHVyZSBhbiBlbnRyeSBhZGRlZCBieSBDb25jdXJyZW50UHRySGFzaFNldDo6
YWRkU2xvdygpIGNvbmN1cnJlbnRseS4KKworICAgICAgICBDb25jdXJyZW50UHRySGFzaFNldDo6
YWRkU2xvdygpIGN1cnJlbnRseSBkb2VzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAodGFibGUtPmxvYWQuZXhjaGFuZ2VBZGQoMSkgPj0gdGFibGUt
Pm1heExvYWQoKSkgICAgIC8vIChhMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc2l6
ZUFuZEFkZChwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhMikKKyAgICAKKyAg
ICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIHZvaWQqIG9sZEVu
dHJ5ID0gdGFibGUtPmFycmF5W2luZGV4XS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcobnVsbHB0ciwg
cHRyKTsgICAvLyAoYTMpCisgICAgICAgICAgICAgICAgICAgIGlmICghb2xkRW50cnkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3RhYmxlLmxvYWQoKSAhPSB0YWJsZSkgeyAgICAg
ICAgICAgICAgICAgIC8vIChhNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBh
ZGRlZCBhbiBlbnRyeSB0byBhbiBvbGQgdGFibGUhIFdlIG5lZWQgdG8gcmVleGVjdXRlIHRoZSBh
ZGQgb24gdGhlIG5ldyB0YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YWRkKHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhNSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhNikKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAob2xkRW50cnkgPT0gcHRyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgIC4uLiAv
LyBzZXQgaW5kZXggdG8gbmV4dCBlbnRyeSBzbG90IHRvIHRyeS4KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQ6OnJlc2l6ZUlm
TmVjZXNzYXJ5KCkgY3VycmVudGx5IGRvZXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gKHIxKQorICAgICAgICAgICAgICAgIFRhYmxlKiB0YWJsZSA9
IG1fdGFibGUubG9hZFJlbGF4ZWQoKTsKKyAgICAgICAgICAgICAgICBpZiAodGFibGUtPmxvYWQu
bG9hZFJlbGF4ZWQoKSA8IHRhYmxlLT5tYXhMb2FkKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIC8vIChyMikKKworICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxUYWJsZT4gbmV3VGFibGUgPSBUYWJsZTo6Y3JlYXRlKHRhYmxlLT5zaXplICog
Mik7CisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRhYmxlLT5zaXplOyArK2kpIHsgICAgICAgICAgICAvLyAocjMpCisgICAgICAg
ICAgICAgICAgICAgIHZvaWQqIHB0ciA9IHRhYmxlLT5hcnJheVtpXS5sb2FkUmVsYXhlZCgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIXB0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLi4uIC8vIGNvcHkgcHRyIHRv
IG5ld1RhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgIC8vIChyNCkKKyAgICAgICAgICAgICAg
ICB9CisgICAgCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgbV90YWJsZS5z
dG9yZShuZXdUYWJsZS5nZXQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAocjUpCisg
ICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICB9CisKKyAgICAgICAgTGV0J3Mgc2F5IHRo
cmVhZCBUMSBpcyBleGVjdXRpbmcgYWRkU2xvdygpLCBhbmQgdGhyZWFkIFQyIGlzIGNvbmN1cnJl
bnRseSBleGVjdXRpbmcKKyAgICAgICAgcmVzaXplSWZOZWNlc3NhcnkoKS4KKworICAgICAgICBD
b25zaWRlciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIChpbiBjaHJvbm9sb2dpY2FsIG9yZGVyKToK
KyAgICAgICAgMS4gVDIgaGFzIGFycml2ZWQgYXQganVzdCBiZWZvcmUgKHI1KSBpLmUuIGl0IGlz
IGFscmVhZHkgZG9uZSBjb3B5aW5nIHRoZSBlbnRyaWVzCisgICAgICAgICAgIGluIHRoZSBvbGQg
bV90YWJsZS4gIAorICAgICAgICAyLiBUMSBleGVjdXRlcyAoYTMpIGFuZCB3cml0ZXMgYSBuZXcg
ZW50cnkgaW50byBtX3RhYmxlLgorICAgICAgICAzLiBUMSBjaGVja3MgdGhhdCB0aGUgdGFibGUg
aGFzbid0IGJlZW4gcmVwbGFjZWQgYXQgKGE0KSwgYW5kIHNlZXMgdGhhdCBpdCBoYXMKKyAgICAg
ICAgICAgbm90LgorICAgICAgICA0LiBUMSByZXR1cm5zIGF0IChhNiksIHRoaW5raW5nIHRoYXQg
aXRzIG5ldyBlbnRyeSBpcyBjb21taXR0ZWQuCisgICAgICAgIDUuIFQyIHNldHMgdGhlIG5ldyBt
X3RhYmxlIGF0IChyNSksIHRoZXJlYnkgZGlzY2FyZGluZyB0aGUgbmV3IGVudHJ5IHRoYXQgVDEg
aGFzCisgICAgICAgICAgIGp1c3Qgd3JpdHRlbi4KKworICAgICAgICBUaGUgZml4IGlzIHRvIHNl
dCBtX3RhYmxlIHRvIGEgbmV3bHkgaW50cm9kdWNlZCBtX3N0dWJUYWJsZSBhdCAocjIpLiAgbV9z
dHViVGFibGUKKyAgICAgICAgaXMgc2V0IHVwIHdpdGggYSBzaXplIG9mIDAsIGFuZCBsb2FkIHZh
bHVlIG9mIDEwLiAgVGhpcyBtZWFucyBpdCBpcyBhbHdheXMgZnVsbC4KKyAgICAgICAgV2l0aCB0
aGlzLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvcyBjYW4gcGxheSBvdXQ6CisKKyAgICAgICAgU2Nl
bmFyaW8gMTogVDIgaW5zdGFsbHMgbV9zdHViVGFibGUgYmVmb3JlIFQxIHJlYWNoZXMgKGExKQor
CisgICAgICAgIDEuIEF0IChhMSksIFQxIHNlZXMgdGhhdCBtX3RhYmxlICh3aGljaCBpcyBtX3N0
dWJUYWJsZSkgaXMgZnVsbC4KKyAgICAgICAgMi4gVDEgY2FsbHMgcmVzaXplQW5kQWRkKCkgYXQg
KGEyKSwgd2hpY2ggZW5kcyB1cCBjYWxsaW5nIHJlc2l6ZUlmTmVjZXNzYXJ5KCkKKyAgICAgICAg
ICAgYW5kIGJsb2NraW5nIG9uIHRoZSBsb2NrIGF0IChyMSkuCisKKyAgICAgICAgU2NlbmFyaW8g
MjogVDIgaW5zdGFsbHMgbV9zdHViVGFibGUgYWZ0ZXIgVDEgcmVhY2hlcyBqdXN0IGJlZm9yZSAo
YTMpCisKKyAgICAgICAgMS4gVDEgd3JpdGVzIHRoZSBuZXcgZW50cnkgYXQgKGEzKS4KKyAgICAg
ICAgMi4gVDEgY2hlY2tzIG1fdGFibGUgYXQgKGE0KSwgYW5kIHNlZXMgdGhhdCBpdCBoYXMgY2hh
bmdlZCAobm93IHBvaW50aW5nIHRvCisgICAgICAgICAgIG1fc3R1YlRhYmxlKS4KKyAgICAgICAg
My4gVDEgY2FsbHMgYWRkKCkgYWdhaW4gYXQgKGE1KSB0byByZWRvIHRoZSBvcGVyYXRpb24sIGFu
ZCBlbmRzIHdpdGggc2NlbmFyaW8gMS4KKworICAgICAgICBTY2VuYXJpbyAzOiBUMiBpbnN0YWxs
cyBtX3N0dWJUYWJsZSBhZnRlciBUMSByZWFjaGVzIChhMyksIGJ1dCBiZWZvcmUgKGE0KQorCisg
ICAgICAgIDEuIFRoZSBuZXcgZW50cnkgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCwgYnV0IHdlIGRv
bid0IGtub3cgaWYgaXQgbWFkZSB0aGUgY3V0IG9mZgorICAgICAgICAgICBmb3IgVDIgdG8gY29w
eSBpdCBvciBub3QuICBCdXQsIGl0IGRvZXNuJ3QgbWF0dGVyIGJlY2F1c2UgLi4uCisgICAgICAg
IDIuIFQxIGNoZWNrcyBtX3RhYmxlIGF0IChhNCksIGFuZCBzZWVzIHRoYXQgaXQgaGFzIGNoYW5n
ZWQgKG5vdyBwb2ludGluZyB0bworICAgICAgICAgICBtX3N0dWJUYWJsZSkuCisgICAgICAgIDMu
IFQxIGNhbGxzIGFkZCgpIGFnYWluIGF0IChhNSkgdG8gcmVkbyB0aGUgb3BlcmF0aW9uLCBhbmQg
ZW5kcyB3aXRoIHNjZW5hcmlvIDEuCisKKyAgICAgICAgU2NlbmFyaW8gNDogVDIgaW5zdGFsbHMg
bV9zdHViVGFibGUgYWZ0ZXIgVDEgcmVhY2hlcyAoYTQpCisKKyAgICAgICAgMS4gVGhlIG5ldyBl
bnRyeSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLgorICAgICAgICAyLiBUMSBjaGVja3MgbV90YWJs
ZSBhdCAoYTQpLCBhbmQgc2VlcyB0aGF0IGl0IGhhcyBOT1QgY2hhbmdlZCAoYmVjYXVzZSBUMiBo
YXNuJ3QKKyAgICAgICAgICAgaW5zdGFsbGVkIG1fc3R1YlRhYmxlIHlldCkuICBUaGlzIG1lYW5z
IFQyJ3MgY29weSBsb29wIGlzIGd1YXJhbnRlZWQgdG8gbm90CisgICAgICAgICAgIGhhdmUgc3Rh
cnRlZCB5ZXQgaS5lLiB0aGUgbmV3IGVudHJ5IHdpbGwgZGVmaW5pdGVseSBiZSBwaWNrZWQgdXAg
YnkgdGhlIGNvcHkKKyAgICAgICAgICAgbG9vcC4KKyAgICAgICAgMy4gVDEgcmV0dXJucyBhdCAo
YTYpLCBhbmQgYWxsIGlzIHdlbGwuCisKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFB0ckhhc2hT
ZXQuY3BwOgorICAgICAgICAoV1RGOjpDb25jdXJyZW50UHRySGFzaFNldDo6ZGVsZXRlT2xkVGFi
bGVzKToKKyAgICAgICAgKFdURjo6Q29uY3VycmVudFB0ckhhc2hTZXQ6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV1RGOjpDb25jdXJyZW50UHRySGFzaFNldDo6cmVzaXplSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV1RGOjpDb25jdXJyZW50UHRySGFzaFNldDo6VGFibGU6OmluaXRpYWxpemVTdHVi
KToKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaDoKKwogMjAyMS0wMy0xNSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJF
R1JFU1NJT046IChyMjU1NjExKSBbIE1hYyBdIDMgbGxkYiB0ZXN0cyBmYWlsaW5nIHJlbGF0ZWQg
dG8gSGFzaE1hcApJbmRleDogU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAko
cmV2aXNpb24gMjc0NDY1KQorKysgU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDcgQEAgdm9pZCBDb25jdXJyZW50UHRySGFzaFNl
dDo6ZGVsZXRlT2xkVGFibAogICAgIC8vIHNvbWUgYmFkIGNyYXNoZXMgaWYgd2UgZGlkIG1ha2Ug
dGhhdCBtaXN0YWtlLgogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsgCiAgICAg
CisgICAgQVNTRVJUKG1fdGFibGUubG9hZFJlbGF4ZWQoKSAhPSAmbV9zdHViVGFibGUpOwogICAg
IG1fYWxsVGFibGVzLnJlbW92ZUFsbE1hdGNoaW5nKAogICAgICAgICBbJl0gKHN0ZDo6dW5pcXVl
X3B0cjxUYWJsZT4mIHRhYmxlKSAtPiBib29sIHsKICAgICAgICAgICAgIHJldHVybiB0YWJsZS5n
ZXQoKSAhPSBtX3RhYmxlLmxvYWRSZWxheGVkKCk7CkBAIC02NSw2ICs2Niw3IEBAIHZvaWQgQ29u
Y3VycmVudFB0ckhhc2hTZXQ6OmluaXRpYWxpemUoKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxUYWJs
ZT4gdGFibGUgPSBUYWJsZTo6Y3JlYXRlKGluaXRpYWxTaXplKTsKICAgICBtX3RhYmxlLnN0b3Jl
UmVsYXhlZCh0YWJsZS5nZXQoKSk7CiAgICAgbV9hbGxUYWJsZXMuYXBwZW5kKFdURk1vdmUodGFi
bGUpKTsKKyAgICBtX3N0dWJUYWJsZS5pbml0aWFsaXplU3R1YigpOwogfQogCiBib29sIENvbmN1
cnJlbnRQdHJIYXNoU2V0OjphZGRTbG93KFRhYmxlKiB0YWJsZSwgdW5zaWduZWQgbWFzaywgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgaW5kZXgsIHZvaWQqIHB0cikKQEAgLTkyLDkgKzk0
LDI1IEBAIHZvaWQgQ29uY3VycmVudFB0ckhhc2hTZXQ6OnJlc2l6ZUlmTmVjZXMKIHsKICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgVGFibGUqIHRhYmxlID0gbV90YWJs
ZS5sb2FkUmVsYXhlZCgpOworICAgIEFTU0VSVCh0YWJsZSAhPSAmbV9zdHViVGFibGUpOwogICAg
IGlmICh0YWJsZS0+bG9hZC5sb2FkUmVsYXhlZCgpIDwgdGFibGUtPm1heExvYWQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCisgICAgLy8gU3R1YmJpbmcgb3V0IG1fdGFibGUgd2l0aCBtX3N0
dWJUYWJsZSBoZXJlIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdAorICAgIC8vIHdlIGRvbid0
IG1pc3MgY29weWluZyBhbnkgZW50cmllcyB0aGF0IG1heSBiZSBjb25jdXJyZW50bHkgYmUgYWRk
ZWQuCisgICAgLy8KKyAgICAvLyBJZiBhZGRTbG93KCkgY29tcGxldGVzIGJlZm9yZSB0aGlzIHN0
dWJiaW5nLCB0aGUgbmV3IGVudHJ5IGlzIGd1YXJhbnRlZWQKKyAgICAvLyB0byBiZSBjb3BpZWQg
YmVsb3cuCisgICAgLy8KKyAgICAvLyBJZiBhZGRTbG93KCkgY29tcGxldGVzIGFmdGVyIHRoaXMg
c3R1YmJpbmcsIGFkZFNsb3coKSAgd2lsbCBjaGVjayBtX3RhYmxlCisgICAgLy8gYmVmb3JlIGl0
IGZpbmlzaGVzLCBhbmQgZGV0ZWN0IHRoYXQgaXRzIG5ld2x5IGFkZGVkIGVudHJ5IG1heSBub3Qg
aGF2ZQorICAgIC8vIG1hZGUgaXQgaW4uIEFzIGEgcmVzdWx0LCBpdCB3aWxsIHRyeSB0byByZS1h
ZGQgdGhlIGVudHJ5LCBhbmQgZW5kIHVwCisgICAgLy8gYmxvY2tpbmcgb24gcmVzaXplSWZOZWNl
c3NhcnkoKSB1bnRpbCB0aGUgcmVzaXppbmcgaXMgZG9udy4gVGhpcyBpcworICAgIC8vIGJlY2F1
c2UgbV9zdHViVGFibGUgd2lsbCB0ZWxsIGFkZFNsb3coKSB0aGluayB0aGF0IHRoZSB0YWJsZSBp
cyBvdXQgb2YKKyAgICAvLyBzcGFjZSBhbmQgaXQgbmVlZHMgdG8gcmVzaXplLiBOT1RFOiBtX3N0
dWJUYWJsZSBhbHdheXMgc2F5cyBpdCBpcyBvdXQgb2YKKyAgICAvLyBzcGFjZS4KKyAgICBtX3Rh
YmxlLnN0b3JlKCZtX3N0dWJUYWJsZSk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFibGU+IG5l
d1RhYmxlID0gVGFibGU6OmNyZWF0ZSh0YWJsZS0+c2l6ZSAqIDIpOwogICAgIHVuc2lnbmVkIG1h
c2sgPSBuZXdUYWJsZS0+bWFzazsKICAgICB1bnNpZ25lZCBsb2FkID0gMDsKQEAgLTEyMSw3ICsx
MzksMjMgQEAgdm9pZCBDb25jdXJyZW50UHRySGFzaFNldDo6cmVzaXplSWZOZWNlcwogICAgIH0K
ICAgICAKICAgICBuZXdUYWJsZS0+bG9hZC5zdG9yZVJlbGF4ZWQobG9hZCk7Ci0gICAgCisKKyAg
ICAvLyBhZGRTbG93KCkgd2lsbCBhbHdheXMgc3RhcnQgYnkgZXhjaGFuZ2VBZGQnaW5nIDEgdG8g
dGhlIGN1cnJlbnQgbV90YWJsZSdzCisgICAgLy8gbG9hZCB2YWx1ZSBiZWZvcmUgY2hlY2tpbmcg
aWYgaXQgZXhjZWVkcyBpdHMgbWF4IGFsbG93ZWQgbG9hZC4gRm9yIHRoZQorICAgIC8vIHJlYWwg
bV90YWJsZSwgdGhpcyBpcyBub3QgYW4gaXNzdWUgYmVjYXVzZSBhdCBtb3N0LCBpdCB3aWxsIGFj
Y3VtbXVsYXRlCisgICAgLy8gdXAgdG8gTiBleHRyYSBhZGRzIGFib3ZlIG1heCBsb2FkLCB3aGVy
ZSBOIGlzIHRoZSBudW1iZXIgb2YgR0MgbWFya2VyCisgICAgLy8gdGhyZWFkcy4gSG93ZXZlciwg
aWYgbV90YWJsZSBtYXkgYmUgcmVwbGFjZWQgd2l0aCBtX3N0dWJUYWJsZSBmb3IgZWFjaAorICAg
IC8vIHJlc2l6ZSBvcGVyYXRpb24uIEFzIGEgcmVzdWx0LCB0aGUgY3VtbXVsYXRpdmUgZXJyb3Ig
b24gaXRzIGxvYWQgdmFsdWUKKyAgICAvLyBtYXkgZmFyIGV4Y2VlZCBOIChhcyBzcGVjaWZpZWQg
YWJvdmUpLiBUbyBmaXggdGhpcywgd2UgYWx3YXlzIHJlc2V0IGl0CisgICAgLy8gaGVyZSB0byBw
cmV2ZW50IGFuIG92ZXJmbG93LiBOb3RlOiBhIGxvYWQgb2Ygc3R1YkRlZmF1bHRMb2FkVmFsdWUg
bWVhbnMKKyAgICAvLyB0aGF0IG1fc3R1YlRhYmxlIGlzIGZ1bGwgc2luY2UgaXRzIHNpemUgaXMg
MC4KKyAgICAvLworICAgIC8vIEluIHByYWN0aWNlLCB0aGlzIHdvbid0IG1hdHRlciBiZWNhdXNl
IHdlIG1vc3QgbGlrZWx5IHdvbid0IGRvIHNvIG1hbnkKKyAgICAvLyByZXNpemUgb3BlcmF0aW9u
cyBzdWNoIHRoYXQgdGhpcyB3aWxsIGdldCB0byB0aGUgcG9pbnQgb2Ygb3ZlcmZsb3dpbmcuCisg
ICAgLy8gSG93ZXZlciwgc2luY2UgcmVzaXppbmcgaXMgbm90IGluIHRoZSBmYXN0IHBhdGgsIGxl
dCdzIGp1c3QgYmUgcGVkYW50aWMKKyAgICAvLyBhbmQgcmVzZXQgaXQgZm9yIGNvcnJlY3RuZXNz
LgorICAgIG1fc3R1YlRhYmxlLmxvYWQuc3RvcmUoc3R1YkRlZmF1bHRMb2FkVmFsdWUpOworCiAg
ICAgbV90YWJsZS5zdG9yZShuZXdUYWJsZS5nZXQoKSk7CiAgICAgbV9hbGxUYWJsZXMuYXBwZW5k
KFdURk1vdmUobmV3VGFibGUpKTsKIH0KQEAgLTE0Myw1ICsxNzcsMTcgQEAgc3RkOjp1bmlxdWVf
cHRyPENvbmN1cnJlbnRQdHJIYXNoU2V0OjpUYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3Zv
aWQgQ29uY3VycmVudFB0ckhhc2hTZXQ6OlRhYmxlOjppbml0aWFsaXplU3R1YigpCit7CisgICAg
Ly8gVGhlIHN0dWIgdGFibGUgaXMgc2V0IHVwIHRvIGxvb2sgbGlrZSBpdCBpcyBhbHJlYWR5IGZp
bGxlZCB1cC4gVGhpcyBpcworICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZHVyaW5nIHJl
c2l6aW5nIHRvIGZvcmNlIGFsbCBhdHRlbXB0cyB0byBhZGQgdG8KKyAgICAvLyBiZSByb3V0ZWQg
dG8gcmVzaXplQW5kQWRkKCkgd2hlcmUgaXQgd2lsbCBibG9jayB1bnRpbCB0aGUgcmVzaXppbmcg
aXMKKyAgICAvLyBkb25lLgorICAgIHNpemUgPSAwOworICAgIG1hc2sgPSAwOworICAgIGxvYWQu
c3RvcmVSZWxheGVkKHN0dWJEZWZhdWx0TG9hZFZhbHVlKTsKKyAgICBhcnJheVswXS5zdG9yZVJl
bGF4ZWQobnVsbHB0cik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Db25jdXJyZW50UHRySGFzaFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmgJKHJldmlzaW9uIDI3NDQ2NSkKKysrIFNvdXJjZS9X
VEYvd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0
LDcgQEAgcHVibGljOgogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QKICAgICB7CisgICAg
ICAgIEFTU0VSVChtX3RhYmxlLmxvYWRSZWxheGVkKCkgIT0gJm1fc3R1YlRhYmxlKTsKICAgICAg
ICAgcmV0dXJuIG1fdGFibGUubG9hZFJlbGF4ZWQoKS0+bG9hZC5sb2FkUmVsYXhlZCgpOwogICAg
IH0KICAgICAKQEAgLTkwLDkgKzkxLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8VGFibGU+IGNyZWF0ZSh1bnNpZ25lZCBzaXplKTsKLSAgICAgICAgCisgICAgICAgIHZv
aWQgaW5pdGlhbGl6ZVN0dWIoKTsKKwogICAgICAgICB1bnNpZ25lZCBtYXhMb2FkKCkgY29uc3Qg
eyByZXR1cm4gc2l6ZSAvIDI7IH0KLSAgICAgICAgCisKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUg
YW55IHZhbHVlID49IDEgYmVjYXVzZSB0aGUgc3R1YidzIHNpemUgaXMgMCwgZW5zdXJpbmcgdGhh
dAorICAgICAgICAvLyBtX3N0dWJUYWJsZSBpcyBhbHdheXMgc2VlbiBhcyAiZnVsbCIuIFdlIGNo
b29zZSAxMCBmb3Igbm8gcmVhc29uIG90aGVyCisgICAgICAgIC8vIHRoYW4gaXQgZ2l2ZXMgc29t
ZSB3YXJtIGZ1enppZXMgc2luY2UgaXQgaXMgZ3JlYXRlciB0aGFuIDEuCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgc3R1YkRlZmF1bHRMb2FkVmFsdWUgPSAxMDsKKwogICAgICAg
ICB1bnNpZ25lZCBzaXplOyAvLyBUaGlzIGlzIGltbXV0YWJsZS4KICAgICAgICAgdW5zaWduZWQg
bWFzazsgLy8gVGhpcyBpcyBpbW11dGFibGUuCiAgICAgICAgIEF0b21pYzx1bnNpZ25lZD4gbG9h
ZDsKQEAgLTEyMSw2ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgY29udGFpbnNJ
bXBsKHZvaWQqIHB0cikgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX3RhYmxlLmxvYWRS
ZWxheGVkKCkgIT0gJm1fc3R1YlRhYmxlKTsKICAgICAgICAgVGFibGUqIHRhYmxlID0gbV90YWJs
ZS5sb2FkUmVsYXhlZCgpOwogICAgICAgICB1bnNpZ25lZCBtYXNrID0gdGFibGUtPm1hc2s7CiAg
ICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSBoYXNoKHB0cikgJiBtYXNrOwpAQCAtMTU4LDkg
KzE2NiwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNpemVJZk5lY2Vzc2FyeSgpOwogICAg
IGJvb2wgcmVzaXplQW5kQWRkKHZvaWQqIHB0cik7Ci0gICAgCisKICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFRhYmxlPiwgND4gbV9hbGxUYWJsZXM7CiAgICAgQXRvbWljPFRhYmxlKj4gbV90
YWJsZTsgLy8gVGhpcyBpcyBuZXZlciBudWxsLgorICAgIFRhYmxlIG1fc3R1YlRhYmxlOwogICAg
IExvY2sgbV9sb2NrOyAvLyBXZSBqdXN0IHVzZSB0aGlzIHRvIGNvbnRyb2wgcmVzaXplIHJhY2Vz
LgogfTsKIAo=
</data>
<flag name="commit-queue"
          id="442700"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423350</attachid>
            <date>2021-03-16 10:16:51 -0700</date>
            <delta_ts>2021-03-17 13:42:24 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-223241.patch</filename>
            <type>text/plain</type>
            <size>12506</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQ0NjcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggcmFjZSBjb25kaXRpb24gaW4gQ29uY3VycmVudFB0ckhhc2hTZXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyNDEK
KyAgICAgICAgcmRhcjovLzc0NjM3ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmFjZS10by1hZGQtb3BhcXVlLXJvb3RzLWluLUNv
bmN1cnJlbnRQdHJIYXNoU2V0LmpzOiBBZGRlZC4KKwogMjAyMS0wMy0xNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJ1biBvbmUgTW96aWxsYSB0
ZXN0IGV4cGxpY2l0bHkgdW5kZXIgUFNUIHNpbmNlIHRoaXMgdGVzdCBkb2VzIG5vdCB3b3JrIHdo
ZW4gd2UgYXJlIG1vdmluZyBmcm9tIFBTVCB0byBQRFQKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3Jh
Y2UtdG8tYWRkLW9wYXF1ZS1yb290cy1pbi1Db25jdXJyZW50UHRySGFzaFNldC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9yYWNlLXRvLWFkZC1vcGFxdWUtcm9vdHMtaW4tQ29uY3Vy
cmVudFB0ckhhc2hTZXQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcmFjZS10
by1hZGQtb3BhcXVlLXJvb3RzLWluLUNvbmN1cnJlbnRQdHJIYXNoU2V0LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNyBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBydW5E
ZWZhdWx0KCItLXZlcmlmeUdDPXRydWUiLCAiLS1zbG93UGF0aEFsbG9jc0JldHdlZW5HQ3M9MiIp
CisvL0Agc2xvdyEKKworbGV0IGFycmF5ID0gW107Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDsgaSsrKQorICAgIGFycmF5W2ldID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigpKTsK
SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzQ0NjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAyMS0wMy0xNiAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGluIENvbmN1cnJlbnRQ
dHJIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzMjQxCisgICAgICAgIHJkYXI6Ly83NDYzNzg5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGV4aXN0cyBhIHJhY2UgY29uZGl0aW9u
IHdoZXJlIENvbmN1cnJlbnRQdHJIYXNoU2V0OjpyZXNpemVJZk5lY2Vzc2FyeSgpIG1heQorICAg
ICAgICBub3QgY2FwdHVyZSBhbiBlbnRyeSBhZGRlZCBieSBDb25jdXJyZW50UHRySGFzaFNldDo6
YWRkU2xvdygpIGNvbmN1cnJlbnRseS4KKworICAgICAgICBDb25jdXJyZW50UHRySGFzaFNldDo6
YWRkU2xvdygpIGN1cnJlbnRseSBkb2VzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAodGFibGUtPmxvYWQuZXhjaGFuZ2VBZGQoMSkgPj0gdGFibGUt
Pm1heExvYWQoKSkgICAgIC8vIChhMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc2l6
ZUFuZEFkZChwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhMikKKyAgICAKKyAg
ICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIHZvaWQqIG9sZEVu
dHJ5ID0gdGFibGUtPmFycmF5W2luZGV4XS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcobnVsbHB0ciwg
cHRyKTsgICAvLyAoYTMpCisgICAgICAgICAgICAgICAgICAgIGlmICghb2xkRW50cnkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3RhYmxlLmxvYWQoKSAhPSB0YWJsZSkgeyAgICAg
ICAgICAgICAgICAgIC8vIChhNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBh
ZGRlZCBhbiBlbnRyeSB0byBhbiBvbGQgdGFibGUhIFdlIG5lZWQgdG8gcmVleGVjdXRlIHRoZSBh
ZGQgb24gdGhlIG5ldyB0YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YWRkKHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhNSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhNikKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAob2xkRW50cnkgPT0gcHRyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgIC4uLiAv
LyBzZXQgaW5kZXggdG8gbmV4dCBlbnRyeSBzbG90IHRvIHRyeS4KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQ6OnJlc2l6ZUlm
TmVjZXNzYXJ5KCkgY3VycmVudGx5IGRvZXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gKHIxKQorICAgICAgICAgICAgICAgIFRhYmxlKiB0YWJsZSA9
IG1fdGFibGUubG9hZFJlbGF4ZWQoKTsKKyAgICAgICAgICAgICAgICBpZiAodGFibGUtPmxvYWQu
bG9hZFJlbGF4ZWQoKSA8IHRhYmxlLT5tYXhMb2FkKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIC8vIChyMikKKworICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxUYWJsZT4gbmV3VGFibGUgPSBUYWJsZTo6Y3JlYXRlKHRhYmxlLT5zaXplICog
Mik7CisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRhYmxlLT5zaXplOyArK2kpIHsgICAgICAgICAgICAvLyAocjMpCisgICAgICAg
ICAgICAgICAgICAgIHZvaWQqIHB0ciA9IHRhYmxlLT5hcnJheVtpXS5sb2FkUmVsYXhlZCgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIXB0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLi4uIC8vIGNvcHkgcHRyIHRv
IG5ld1RhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgIC8vIChyNCkKKyAgICAgICAgICAgICAg
ICB9CisgICAgCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgbV90YWJsZS5z
dG9yZShuZXdUYWJsZS5nZXQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAocjUpCisg
ICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICB9CisKKyAgICAgICAgTGV0J3Mgc2F5IHRo
cmVhZCBUMSBpcyBleGVjdXRpbmcgYWRkU2xvdygpLCBhbmQgdGhyZWFkIFQyIGlzIGNvbmN1cnJl
bnRseSBleGVjdXRpbmcKKyAgICAgICAgcmVzaXplSWZOZWNlc3NhcnkoKS4KKworICAgICAgICBD
b25zaWRlciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIChpbiBjaHJvbm9sb2dpY2FsIG9yZGVyKToK
KyAgICAgICAgMS4gVDIgaGFzIGFycml2ZWQgYXQganVzdCBiZWZvcmUgKHI1KSBpLmUuIGl0IGlz
IGFscmVhZHkgZG9uZSBjb3B5aW5nIHRoZSBlbnRyaWVzCisgICAgICAgICAgIGluIHRoZSBvbGQg
bV90YWJsZS4gIAorICAgICAgICAyLiBUMSBleGVjdXRlcyAoYTMpIGFuZCB3cml0ZXMgYSBuZXcg
ZW50cnkgaW50byBtX3RhYmxlLgorICAgICAgICAzLiBUMSBjaGVja3MgdGhhdCB0aGUgdGFibGUg
aGFzbid0IGJlZW4gcmVwbGFjZWQgYXQgKGE0KSwgYW5kIHNlZXMgdGhhdCBpdCBoYXMKKyAgICAg
ICAgICAgbm90LgorICAgICAgICA0LiBUMSByZXR1cm5zIGF0IChhNiksIHRoaW5raW5nIHRoYXQg
aXRzIG5ldyBlbnRyeSBpcyBjb21taXR0ZWQuCisgICAgICAgIDUuIFQyIHNldHMgdGhlIG5ldyBt
X3RhYmxlIGF0IChyNSksIHRoZXJlYnkgZGlzY2FyZGluZyB0aGUgbmV3IGVudHJ5IHRoYXQgVDEg
aGFzCisgICAgICAgICAgIGp1c3Qgd3JpdHRlbi4KKworICAgICAgICBUaGUgZml4IGlzIHRvIHNl
dCBtX3RhYmxlIHRvIGEgbmV3bHkgaW50cm9kdWNlZCBtX3N0dWJUYWJsZSBhdCAocjIpLiAgbV9z
dHViVGFibGUKKyAgICAgICAgaXMgc2V0IHVwIHdpdGggYSBzaXplIG9mIDAsIGFuZCBsb2FkIHZh
bHVlIG9mIDEwLiAgVGhpcyBtZWFucyBpdCBpcyBhbHdheXMgZnVsbC4KKyAgICAgICAgV2l0aCB0
aGlzLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvcyBjYW4gcGxheSBvdXQ6CisKKyAgICAgICAgU2Nl
bmFyaW8gMTogVDIgaW5zdGFsbHMgbV9zdHViVGFibGUgYmVmb3JlIFQxIHJlYWNoZXMgKGExKQor
CisgICAgICAgIDEuIEF0IChhMSksIFQxIHNlZXMgdGhhdCBtX3RhYmxlICh3aGljaCBpcyBtX3N0
dWJUYWJsZSkgaXMgZnVsbC4KKyAgICAgICAgMi4gVDEgY2FsbHMgcmVzaXplQW5kQWRkKCkgYXQg
KGEyKSwgd2hpY2ggZW5kcyB1cCBjYWxsaW5nIHJlc2l6ZUlmTmVjZXNzYXJ5KCkKKyAgICAgICAg
ICAgYW5kIGJsb2NraW5nIG9uIHRoZSBsb2NrIGF0IChyMSkuCisKKyAgICAgICAgU2NlbmFyaW8g
MjogVDIgaW5zdGFsbHMgbV9zdHViVGFibGUgYWZ0ZXIgVDEgcmVhY2hlcyBqdXN0IGJlZm9yZSAo
YTMpCisKKyAgICAgICAgMS4gVDEgd3JpdGVzIHRoZSBuZXcgZW50cnkgYXQgKGEzKS4KKyAgICAg
ICAgMi4gVDEgY2hlY2tzIG1fdGFibGUgYXQgKGE0KSwgYW5kIHNlZXMgdGhhdCBpdCBoYXMgY2hh
bmdlZCAobm93IHBvaW50aW5nIHRvCisgICAgICAgICAgIG1fc3R1YlRhYmxlKS4KKyAgICAgICAg
My4gVDEgY2FsbHMgYWRkKCkgYWdhaW4gYXQgKGE1KSB0byByZWRvIHRoZSBvcGVyYXRpb24sIGFu
ZCBlbmRzIHdpdGggc2NlbmFyaW8gMS4KKworICAgICAgICBTY2VuYXJpbyAzOiBUMiBpbnN0YWxs
cyBtX3N0dWJUYWJsZSBhZnRlciBUMSByZWFjaGVzIChhMyksIGJ1dCBiZWZvcmUgKGE0KQorCisg
ICAgICAgIDEuIFRoZSBuZXcgZW50cnkgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCwgYnV0IHdlIGRv
bid0IGtub3cgaWYgaXQgbWFkZSB0aGUgY3V0IG9mZgorICAgICAgICAgICBmb3IgVDIgdG8gY29w
eSBpdCBvciBub3QuICBCdXQsIGl0IGRvZXNuJ3QgbWF0dGVyIGJlY2F1c2UgLi4uCisgICAgICAg
IDIuIFQxIGNoZWNrcyBtX3RhYmxlIGF0IChhNCksIGFuZCBzZWVzIHRoYXQgaXQgaGFzIGNoYW5n
ZWQgKG5vdyBwb2ludGluZyB0bworICAgICAgICAgICBtX3N0dWJUYWJsZSkuCisgICAgICAgIDMu
IFQxIGNhbGxzIGFkZCgpIGFnYWluIGF0IChhNSkgdG8gcmVkbyB0aGUgb3BlcmF0aW9uLCBhbmQg
ZW5kcyB3aXRoIHNjZW5hcmlvIDEuCisKKyAgICAgICAgU2NlbmFyaW8gNDogVDIgaW5zdGFsbHMg
bV9zdHViVGFibGUgYWZ0ZXIgVDEgcmVhY2hlcyAoYTQpCisKKyAgICAgICAgMS4gVGhlIG5ldyBl
bnRyeSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLgorICAgICAgICAyLiBUMSBjaGVja3MgbV90YWJs
ZSBhdCAoYTQpLCBhbmQgc2VlcyB0aGF0IGl0IGhhcyBOT1QgY2hhbmdlZCAoYmVjYXVzZSBUMiBo
YXNuJ3QKKyAgICAgICAgICAgaW5zdGFsbGVkIG1fc3R1YlRhYmxlIHlldCkuICBUaGlzIG1lYW5z
IFQyJ3MgY29weSBsb29wIGlzIGd1YXJhbnRlZWQgdG8gbm90CisgICAgICAgICAgIGhhdmUgc3Rh
cnRlZCB5ZXQgaS5lLiB0aGUgbmV3IGVudHJ5IHdpbGwgZGVmaW5pdGVseSBiZSBwaWNrZWQgdXAg
YnkgdGhlIGNvcHkKKyAgICAgICAgICAgbG9vcC4KKyAgICAgICAgMy4gVDEgcmV0dXJucyBhdCAo
YTYpLCBhbmQgYWxsIGlzIHdlbGwuCisKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFB0ckhhc2hT
ZXQuY3BwOgorICAgICAgICAoV1RGOjpDb25jdXJyZW50UHRySGFzaFNldDo6ZGVsZXRlT2xkVGFi
bGVzKToKKyAgICAgICAgKFdURjo6Q29uY3VycmVudFB0ckhhc2hTZXQ6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV1RGOjpDb25jdXJyZW50UHRySGFzaFNldDo6cmVzaXplSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV1RGOjpDb25jdXJyZW50UHRySGFzaFNldDo6VGFibGU6OmluaXRpYWxpemVTdHVi
KToKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaDoKKwogMjAyMS0wMy0xNSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJF
R1JFU1NJT046IChyMjU1NjExKSBbIE1hYyBdIDMgbGxkYiB0ZXN0cyBmYWlsaW5nIHJlbGF0ZWQg
dG8gSGFzaE1hcApJbmRleDogU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAko
cmV2aXNpb24gMjc0NDY1KQorKysgU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDcgQEAgdm9pZCBDb25jdXJyZW50UHRySGFzaFNl
dDo6ZGVsZXRlT2xkVGFibAogICAgIC8vIHNvbWUgYmFkIGNyYXNoZXMgaWYgd2UgZGlkIG1ha2Ug
dGhhdCBtaXN0YWtlLgogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsgCiAgICAg
CisgICAgUkVMRUFTRV9BU1NFUlQobV90YWJsZS5sb2FkUmVsYXhlZCgpICE9ICZtX3N0dWJUYWJs
ZSk7CiAgICAgbV9hbGxUYWJsZXMucmVtb3ZlQWxsTWF0Y2hpbmcoCiAgICAgICAgIFsmXSAoc3Rk
Ojp1bmlxdWVfcHRyPFRhYmxlPiYgdGFibGUpIC0+IGJvb2wgewogICAgICAgICAgICAgcmV0dXJu
IHRhYmxlLmdldCgpICE9IG1fdGFibGUubG9hZFJlbGF4ZWQoKTsKQEAgLTY1LDYgKzY2LDcgQEAg
dm9pZCBDb25jdXJyZW50UHRySGFzaFNldDo6aW5pdGlhbGl6ZSgpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRhYmxlPiB0YWJsZSA9IFRhYmxlOjpjcmVhdGUoaW5pdGlhbFNpemUpOwogICAgIG1fdGFi
bGUuc3RvcmVSZWxheGVkKHRhYmxlLmdldCgpKTsKICAgICBtX2FsbFRhYmxlcy5hcHBlbmQoV1RG
TW92ZSh0YWJsZSkpOworICAgIG1fc3R1YlRhYmxlLmluaXRpYWxpemVTdHViKCk7CiB9CiAKIGJv
b2wgQ29uY3VycmVudFB0ckhhc2hTZXQ6OmFkZFNsb3coVGFibGUqIHRhYmxlLCB1bnNpZ25lZCBt
YXNrLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBpbmRleCwgdm9pZCogcHRyKQpAQCAt
OTIsOSArOTQsMjUgQEAgdm9pZCBDb25jdXJyZW50UHRySGFzaFNldDo6cmVzaXplSWZOZWNlcwog
ewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBUYWJsZSogdGFibGUg
PSBtX3RhYmxlLmxvYWRSZWxheGVkKCk7CisgICAgQVNTRVJUKHRhYmxlICE9ICZtX3N0dWJUYWJs
ZSk7CiAgICAgaWYgKHRhYmxlLT5sb2FkLmxvYWRSZWxheGVkKCkgPCB0YWJsZS0+bWF4TG9hZCgp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICAvLyBTdHViYmluZyBvdXQgbV90YWJsZSB3
aXRoIG1fc3R1YlRhYmxlIGhlcmUgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0CisgICAgLy8g
d2UgZG9uJ3QgbWlzcyBjb3B5aW5nIGFueSBlbnRyaWVzIHRoYXQgbWF5IGJlIGNvbmN1cnJlbnRs
eSBiZSBhZGRlZC4KKyAgICAvLworICAgIC8vIElmIGFkZFNsb3coKSBjb21wbGV0ZXMgYmVmb3Jl
IHRoaXMgc3R1YmJpbmcsIHRoZSBuZXcgZW50cnkgaXMgZ3VhcmFudGVlZAorICAgIC8vIHRvIGJl
IGNvcGllZCBiZWxvdy4KKyAgICAvLworICAgIC8vIElmIGFkZFNsb3coKSBjb21wbGV0ZXMgYWZ0
ZXIgdGhpcyBzdHViYmluZywgYWRkU2xvdygpICB3aWxsIGNoZWNrIG1fdGFibGUKKyAgICAvLyBi
ZWZvcmUgaXQgZmluaXNoZXMsIGFuZCBkZXRlY3QgdGhhdCBpdHMgbmV3bHkgYWRkZWQgZW50cnkg
bWF5IG5vdCBoYXZlCisgICAgLy8gbWFkZSBpdCBpbi4gQXMgYSByZXN1bHQsIGl0IHdpbGwgdHJ5
IHRvIHJlLWFkZCB0aGUgZW50cnksIGFuZCBlbmQgdXAKKyAgICAvLyBibG9ja2luZyBvbiByZXNp
emVJZk5lY2Vzc2FyeSgpIHVudGlsIHRoZSByZXNpemluZyBpcyBkb253LiBUaGlzIGlzCisgICAg
Ly8gYmVjYXVzZSBtX3N0dWJUYWJsZSB3aWxsIHRlbGwgYWRkU2xvdygpIHRoaW5rIHRoYXQgdGhl
IHRhYmxlIGlzIG91dCBvZgorICAgIC8vIHNwYWNlIGFuZCBpdCBuZWVkcyB0byByZXNpemUuIE5P
VEU6IG1fc3R1YlRhYmxlIGFsd2F5cyBzYXlzIGl0IGlzIG91dCBvZgorICAgIC8vIHNwYWNlLgor
ICAgIG1fdGFibGUuc3RvcmUoJm1fc3R1YlRhYmxlKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
YWJsZT4gbmV3VGFibGUgPSBUYWJsZTo6Y3JlYXRlKHRhYmxlLT5zaXplICogMik7CiAgICAgdW5z
aWduZWQgbWFzayA9IG5ld1RhYmxlLT5tYXNrOwogICAgIHVuc2lnbmVkIGxvYWQgPSAwOwpAQCAt
MTIxLDcgKzEzOSwyMyBAQCB2b2lkIENvbmN1cnJlbnRQdHJIYXNoU2V0OjpyZXNpemVJZk5lY2Vz
CiAgICAgfQogICAgIAogICAgIG5ld1RhYmxlLT5sb2FkLnN0b3JlUmVsYXhlZChsb2FkKTsKLSAg
ICAKKworICAgIC8vIGFkZFNsb3coKSB3aWxsIGFsd2F5cyBzdGFydCBieSBleGNoYW5nZUFkZCdp
bmcgMSB0byB0aGUgY3VycmVudCBtX3RhYmxlJ3MKKyAgICAvLyBsb2FkIHZhbHVlIGJlZm9yZSBj
aGVja2luZyBpZiBpdCBleGNlZWRzIGl0cyBtYXggYWxsb3dlZCBsb2FkLiBGb3IgdGhlCisgICAg
Ly8gcmVhbCBtX3RhYmxlLCB0aGlzIGlzIG5vdCBhbiBpc3N1ZSBiZWNhdXNlIGF0IG1vc3QsIGl0
IHdpbGwgYWNjdW1tdWxhdGUKKyAgICAvLyB1cCB0byBOIGV4dHJhIGFkZHMgYWJvdmUgbWF4IGxv
YWQsIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiBHQyBtYXJrZXIKKyAgICAvLyB0aHJlYWRzLiBI
b3dldmVyLCBpZiBtX3RhYmxlIG1heSBiZSByZXBsYWNlZCB3aXRoIG1fc3R1YlRhYmxlIGZvciBl
YWNoCisgICAgLy8gcmVzaXplIG9wZXJhdGlvbi4gQXMgYSByZXN1bHQsIHRoZSBjdW1tdWxhdGl2
ZSBlcnJvciBvbiBpdHMgbG9hZCB2YWx1ZQorICAgIC8vIG1heSBmYXIgZXhjZWVkIE4gKGFzIHNw
ZWNpZmllZCBhYm92ZSkuIFRvIGZpeCB0aGlzLCB3ZSBhbHdheXMgcmVzZXQgaXQKKyAgICAvLyBo
ZXJlIHRvIHByZXZlbnQgYW4gb3ZlcmZsb3cuIE5vdGU6IGEgbG9hZCBvZiBzdHViRGVmYXVsdExv
YWRWYWx1ZSBtZWFucworICAgIC8vIHRoYXQgbV9zdHViVGFibGUgaXMgZnVsbCBzaW5jZSBpdHMg
c2l6ZSBpcyAwLgorICAgIC8vCisgICAgLy8gSW4gcHJhY3RpY2UsIHRoaXMgd29uJ3QgbWF0dGVy
IGJlY2F1c2Ugd2UgbW9zdCBsaWtlbHkgd29uJ3QgZG8gc28gbWFueQorICAgIC8vIHJlc2l6ZSBv
cGVyYXRpb25zIHN1Y2ggdGhhdCB0aGlzIHdpbGwgZ2V0IHRvIHRoZSBwb2ludCBvZiBvdmVyZmxv
d2luZy4KKyAgICAvLyBIb3dldmVyLCBzaW5jZSByZXNpemluZyBpcyBub3QgaW4gdGhlIGZhc3Qg
cGF0aCwgbGV0J3MganVzdCBiZSBwZWRhbnRpYworICAgIC8vIGFuZCByZXNldCBpdCBmb3IgY29y
cmVjdG5lc3MuCisgICAgbV9zdHViVGFibGUubG9hZC5zdG9yZShUYWJsZTo6c3R1YkRlZmF1bHRM
b2FkVmFsdWUpOworCiAgICAgbV90YWJsZS5zdG9yZShuZXdUYWJsZS5nZXQoKSk7CiAgICAgbV9h
bGxUYWJsZXMuYXBwZW5kKFdURk1vdmUobmV3VGFibGUpKTsKIH0KQEAgLTE0Myw1ICsxNzcsMTcg
QEAgc3RkOjp1bmlxdWVfcHRyPENvbmN1cnJlbnRQdHJIYXNoU2V0OjpUYQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3ZvaWQgQ29uY3VycmVudFB0ckhhc2hTZXQ6OlRhYmxlOjppbml0aWFsaXpl
U3R1YigpCit7CisgICAgLy8gVGhlIHN0dWIgdGFibGUgaXMgc2V0IHVwIHRvIGxvb2sgbGlrZSBp
dCBpcyBhbHJlYWR5IGZpbGxlZCB1cC4gVGhpcyBpcworICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJl
IHVzZWQgZHVyaW5nIHJlc2l6aW5nIHRvIGZvcmNlIGFsbCBhdHRlbXB0cyB0byBhZGQgdG8KKyAg
ICAvLyBiZSByb3V0ZWQgdG8gcmVzaXplQW5kQWRkKCkgd2hlcmUgaXQgd2lsbCBibG9jayB1bnRp
bCB0aGUgcmVzaXppbmcgaXMKKyAgICAvLyBkb25lLgorICAgIHNpemUgPSAwOworICAgIG1hc2sg
PSAwOworICAgIGxvYWQuc3RvcmVSZWxheGVkKHN0dWJEZWZhdWx0TG9hZFZhbHVlKTsKKyAgICBh
cnJheVswXS5zdG9yZVJlbGF4ZWQobnVsbHB0cik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgog
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50UHRySGFzaFNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmgJKHJldmlzaW9uIDI3NDQ2
NSkKKysrIFNvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29u
c3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX3RhYmxlLmxvYWRSZWxheGVkKCkgIT0gJm1fc3R1
YlRhYmxlKTsKICAgICAgICAgcmV0dXJuIG1fdGFibGUubG9hZFJlbGF4ZWQoKS0+bG9hZC5sb2Fk
UmVsYXhlZCgpOwogICAgIH0KICAgICAKQEAgLTkwLDkgKzkxLDE1IEBAIHByaXZhdGU6CiAgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgCiAgICAgICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGFibGU+IGNyZWF0ZSh1bnNpZ25lZCBzaXplKTsKLSAgICAg
ICAgCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVN0dWIoKTsKKwogICAgICAgICB1bnNpZ25lZCBt
YXhMb2FkKCkgY29uc3QgeyByZXR1cm4gc2l6ZSAvIDI7IH0KLSAgICAgICAgCisKKyAgICAgICAg
Ly8gVGhpcyBjYW4gYmUgYW55IHZhbHVlID49IDEgYmVjYXVzZSB0aGUgc3R1YidzIHNpemUgaXMg
MCwgZW5zdXJpbmcgdGhhdAorICAgICAgICAvLyBtX3N0dWJUYWJsZSBpcyBhbHdheXMgc2VlbiBh
cyAiZnVsbCIuIFdlIGNob29zZSAxMCBmb3Igbm8gcmVhc29uIG90aGVyCisgICAgICAgIC8vIHRo
YW4gaXQgZ2l2ZXMgc29tZSB3YXJtIGZ1enppZXMgc2luY2UgaXQgaXMgZ3JlYXRlciB0aGFuIDEu
CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3R1YkRlZmF1bHRMb2FkVmFsdWUg
PSAxMDsKKwogICAgICAgICB1bnNpZ25lZCBzaXplOyAvLyBUaGlzIGlzIGltbXV0YWJsZS4KICAg
ICAgICAgdW5zaWduZWQgbWFzazsgLy8gVGhpcyBpcyBpbW11dGFibGUuCiAgICAgICAgIEF0b21p
Yzx1bnNpZ25lZD4gbG9hZDsKQEAgLTEyMSw2ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIAogICAg
IGJvb2wgY29udGFpbnNJbXBsKHZvaWQqIHB0cikgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VS
VChtX3RhYmxlLmxvYWRSZWxheGVkKCkgIT0gJm1fc3R1YlRhYmxlKTsKICAgICAgICAgVGFibGUq
IHRhYmxlID0gbV90YWJsZS5sb2FkUmVsYXhlZCgpOwogICAgICAgICB1bnNpZ25lZCBtYXNrID0g
dGFibGUtPm1hc2s7CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSBoYXNoKHB0cikgJiBt
YXNrOwpAQCAtMTU4LDkgKzE2NiwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNpemVJZk5l
Y2Vzc2FyeSgpOwogICAgIGJvb2wgcmVzaXplQW5kQWRkKHZvaWQqIHB0cik7Ci0gICAgCisKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRhYmxlPiwgND4gbV9hbGxUYWJsZXM7CiAgICAgQXRv
bWljPFRhYmxlKj4gbV90YWJsZTsgLy8gVGhpcyBpcyBuZXZlciBudWxsLgorICAgIFRhYmxlIG1f
c3R1YlRhYmxlOwogICAgIExvY2sgbV9sb2NrOyAvLyBXZSBqdXN0IHVzZSB0aGlzIHRvIGNvbnRy
b2wgcmVzaXplIHJhY2VzLgogfTsKIAo=
</data>
<flag name="review"
          id="442719"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="442782"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423525</attachid>
            <date>2021-03-17 13:42:24 -0700</date>
            <delta_ts>2021-03-17 13:43:36 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-223241.patch</filename>
            <type>text/plain</type>
            <size>13675</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQ1MzgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggcmFjZSBjb25kaXRpb24gaW4gQ29uY3VycmVudFB0ckhhc2hTZXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyNDEK
KyAgICAgICAgcmRhcjovLzc0NjM3ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmFjZS10by1hZGQtb3BhcXVlLXJvb3RzLWluLUNv
bmN1cnJlbnRQdHJIYXNoU2V0LmpzOiBBZGRlZC4KKwogMjAyMS0wMy0xNiAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyNzQ0MDUuCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yYWNlLXRvLWFkZC1vcGFxdWUtcm9v
dHMtaW4tQ29uY3VycmVudFB0ckhhc2hTZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJl
c3MvcmFjZS10by1hZGQtb3BhcXVlLXJvb3RzLWluLUNvbmN1cnJlbnRQdHJIYXNoU2V0LmpzCShu
b25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3JhY2UtdG8tYWRkLW9wYXF1ZS1yb290cy1p
bi1Db25jdXJyZW50UHRySGFzaFNldC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAK
Ky8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0AgcnVuRGVmYXVsdCgiLS12ZXJpZnlHQz10
cnVlIiwgIi0tc2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzPTIiKQorLy9AIHNsb3chCisKK2xldCBh
cnJheSA9IFtdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykKKyAgICBhcnJheVtp
XSA9IG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKSk7CkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0
NTg0KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MTcgQEAKKzIwMjEtMDMtMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEZpeCByYWNlIGNvbmRpdGlvbiBpbiBDb25jdXJyZW50UHRySGFzaFNldC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzI0MQorICAgICAgICBy
ZGFyOi8vNzQ2Mzc4OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBleGlzdHMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBDb25jdXJyZW50UHRy
SGFzaFNldDo6cmVzaXplSWZOZWNlc3NhcnkoKSBtYXkKKyAgICAgICAgbm90IGNhcHR1cmUgYW4g
ZW50cnkgYWRkZWQgYnkgQ29uY3VycmVudFB0ckhhc2hTZXQ6OmFkZFNsb3coKSBjb25jdXJyZW50
bHkuCisKKyAgICAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQ6OmFkZFNsb3coKSBjdXJyZW50bHkg
ZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KHRhYmxlLT5sb2FkLmV4Y2hhbmdlQWRkKDEpID49IHRhYmxlLT5tYXhMb2FkKCkpICAgICAvLyAo
YTEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNpemVBbmRBZGQocHRyKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAoYTIpCisgICAgCisgICAgICAgICAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgICAgICAgICB2b2lkKiBvbGRFbnRyeSA9IHRhYmxlLT5hcnJheVtp
bmRleF0uY29tcGFyZUV4Y2hhbmdlU3Ryb25nKG51bGxwdHIsIHB0cik7ICAgLy8gKGEzKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIW9sZEVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV90YWJsZS5sb2FkKCkgIT0gdGFibGUpIHsgICAgICAgICAgICAgICAgICAvLyAoYTQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYWRkZWQgYW4gZW50cnkgdG8gYW4g
b2xkIHRhYmxlISBXZSBuZWVkIHRvIHJlZXhlY3V0ZSB0aGUgYWRkIG9uIHRoZSBuZXcgdGFibGUu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZChwdHIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAoYTUpCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAoYTYpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG9sZEVudHJ5ID09IHB0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICAuLi4gLy8gc2V0IGluZGV4IHRvIG5leHQg
ZW50cnkgc2xvdCB0byB0cnkuCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgIENvbmN1cnJlbnRQdHJIYXNoU2V0OjpyZXNpemVJZk5lY2Vzc2FyeSgpIGN1cnJlbnRs
eSBkb2VzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IChyMSkKKyAgICAgICAgICAgICAgICBUYWJsZSogdGFibGUgPSBtX3RhYmxlLmxvYWRSZWxheGVk
KCk7CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlLT5sb2FkLmxvYWRSZWxheGVkKCkgPCB0YWJs
ZS0+bWF4TG9hZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
ICAgICAvLyAocjIpCisKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFibGU+IG5l
d1RhYmxlID0gVGFibGU6OmNyZWF0ZSh0YWJsZS0+c2l6ZSAqIDIpOworICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS0+c2l6
ZTsgKytpKSB7ICAgICAgICAgICAgLy8gKHIzKQorICAgICAgICAgICAgICAgICAgICB2b2lkKiBw
dHIgPSB0YWJsZS0+YXJyYXlbaV0ubG9hZFJlbGF4ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFwdHIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIC4uLiAvLyBjb3B5IHB0ciB0byBuZXdUYWJsZS4gICAgICAgICAg
ICAgICAgICAgICAgICAvLyAocjQpCisgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAg
ICAgICAgIC4uLgorICAgICAgICAgICAgICAgIG1fdGFibGUuc3RvcmUobmV3VGFibGUuZ2V0KCkp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHI1KQorICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgfQorCisgICAgICAgIExldCdzIHNheSB0aHJlYWQgVDEgaXMgZXhlY3V0aW5n
IGFkZFNsb3coKSwgYW5kIHRocmVhZCBUMiBpcyBjb25jdXJyZW50bHkgZXhlY3V0aW5nCisgICAg
ICAgIHJlc2l6ZUlmTmVjZXNzYXJ5KCkuCisKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2lu
ZyBzY2VuYXJpbyAoaW4gY2hyb25vbG9naWNhbCBvcmRlcik6CisgICAgICAgIDEuIFQyIGhhcyBh
cnJpdmVkIGF0IGp1c3QgYmVmb3JlIChyNSkgaS5lLiBpdCBpcyBhbHJlYWR5IGRvbmUgY29weWlu
ZyB0aGUgZW50cmllcworICAgICAgICAgICBpbiB0aGUgb2xkIG1fdGFibGUuICAKKyAgICAgICAg
Mi4gVDEgZXhlY3V0ZXMgKGEzKSBhbmQgd3JpdGVzIGEgbmV3IGVudHJ5IGludG8gbV90YWJsZS4K
KyAgICAgICAgMy4gVDEgY2hlY2tzIHRoYXQgdGhlIHRhYmxlIGhhc24ndCBiZWVuIHJlcGxhY2Vk
IGF0IChhNCksIGFuZCBzZWVzIHRoYXQgaXQgaGFzCisgICAgICAgICAgIG5vdC4KKyAgICAgICAg
NC4gVDEgcmV0dXJucyBhdCAoYTYpLCB0aGlua2luZyB0aGF0IGl0cyBuZXcgZW50cnkgaXMgY29t
bWl0dGVkLgorICAgICAgICA1LiBUMiBzZXRzIHRoZSBuZXcgbV90YWJsZSBhdCAocjUpLCB0aGVy
ZWJ5IGRpc2NhcmRpbmcgdGhlIG5ldyBlbnRyeSB0aGF0IFQxIGhhcworICAgICAgICAgICBqdXN0
IHdyaXR0ZW4uCisKKyAgICAgICAgVGhlIGZpeCBpcyB0byBzZXQgbV90YWJsZSB0byBhIG5ld2x5
IGludHJvZHVjZWQgbV9zdHViVGFibGUgYXQgKHIyKS4gIG1fc3R1YlRhYmxlCisgICAgICAgIGlz
IHNldCB1cCB3aXRoIGEgc2l6ZSBvZiAwLCBhbmQgbG9hZCB2YWx1ZSBvZiAxMC4gIFRoaXMgbWVh
bnMgaXQgaXMgYWx3YXlzIGZ1bGwuCisgICAgICAgIFdpdGggdGhpcywgdGhlIGZvbGxvd2luZyBz
Y2VuYXJpb3MgY2FuIHBsYXkgb3V0OgorCisgICAgICAgIFNjZW5hcmlvIDE6IFQyIGluc3RhbGxz
IG1fc3R1YlRhYmxlIGJlZm9yZSBUMSByZWFjaGVzIChhMSkKKworICAgICAgICAxLiBBdCAoYTEp
LCBUMSBzZWVzIHRoYXQgbV90YWJsZSAod2hpY2ggaXMgbV9zdHViVGFibGUpIGlzIGZ1bGwuCisg
ICAgICAgIDIuIFQxIGNhbGxzIHJlc2l6ZUFuZEFkZCgpIGF0IChhMiksIHdoaWNoIGVuZHMgdXAg
Y2FsbGluZyByZXNpemVJZk5lY2Vzc2FyeSgpCisgICAgICAgICAgIGFuZCBibG9ja2luZyBvbiB0
aGUgbG9jayBhdCAocjEpLgorCisgICAgICAgIFNjZW5hcmlvIDI6IFQyIGluc3RhbGxzIG1fc3R1
YlRhYmxlIGFmdGVyIFQxIHJlYWNoZXMganVzdCBiZWZvcmUgKGEzKQorCisgICAgICAgIDEuIFQx
IHdyaXRlcyB0aGUgbmV3IGVudHJ5IGF0IChhMykuCisgICAgICAgIDIuIFQxIGNoZWNrcyBtX3Rh
YmxlIGF0IChhNCksIGFuZCBzZWVzIHRoYXQgaXQgaGFzIGNoYW5nZWQgKG5vdyBwb2ludGluZyB0
bworICAgICAgICAgICBtX3N0dWJUYWJsZSkuCisgICAgICAgIDMuIFQxIGNhbGxzIGFkZCgpIGFn
YWluIGF0IChhNSkgdG8gcmVkbyB0aGUgb3BlcmF0aW9uLCBhbmQgZW5kcyB3aXRoIHNjZW5hcmlv
IDEuCisKKyAgICAgICAgU2NlbmFyaW8gMzogVDIgaW5zdGFsbHMgbV9zdHViVGFibGUgYWZ0ZXIg
VDEgcmVhY2hlcyAoYTMpLCBidXQgYmVmb3JlIChhNCkKKworICAgICAgICAxLiBUaGUgbmV3IGVu
dHJ5IGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGlmIGl0IG1hZGUg
dGhlIGN1dCBvZmYKKyAgICAgICAgICAgZm9yIFQyIHRvIGNvcHkgaXQgb3Igbm90LiAgQnV0LCBp
dCBkb2Vzbid0IG1hdHRlciBiZWNhdXNlIC4uLgorICAgICAgICAyLiBUMSBjaGVja3MgbV90YWJs
ZSBhdCAoYTQpLCBhbmQgc2VlcyB0aGF0IGl0IGhhcyBjaGFuZ2VkIChub3cgcG9pbnRpbmcgdG8K
KyAgICAgICAgICAgbV9zdHViVGFibGUpLgorICAgICAgICAzLiBUMSBjYWxscyBhZGQoKSBhZ2Fp
biBhdCAoYTUpIHRvIHJlZG8gdGhlIG9wZXJhdGlvbiwgYW5kIGVuZHMgd2l0aCBzY2VuYXJpbyAx
LgorCisgICAgICAgIFNjZW5hcmlvIDQ6IFQyIGluc3RhbGxzIG1fc3R1YlRhYmxlIGFmdGVyIFQx
IHJlYWNoZXMgKGE0KQorCisgICAgICAgIDEuIFRoZSBuZXcgZW50cnkgaGFzIGFscmVhZHkgYmVl
biBhZGRlZC4KKyAgICAgICAgMi4gVDEgY2hlY2tzIG1fdGFibGUgYXQgKGE0KSwgYW5kIHNlZXMg
dGhhdCBpdCBoYXMgTk9UIGNoYW5nZWQgKGJlY2F1c2UgVDIgaGFzbid0CisgICAgICAgICAgIGlu
c3RhbGxlZCBtX3N0dWJUYWJsZSB5ZXQpLiAgVGhpcyBtZWFucyBUMidzIGNvcHkgbG9vcCBpcyBn
dWFyYW50ZWVkIHRvIG5vdAorICAgICAgICAgICBoYXZlIHN0YXJ0ZWQgeWV0IGkuZS4gdGhlIG5l
dyBlbnRyeSB3aWxsIGRlZmluaXRlbHkgYmUgcGlja2VkIHVwIGJ5IHRoZSBjb3B5CisgICAgICAg
ICAgIGxvb3AuCisgICAgICAgIDMuIFQxIHJldHVybnMgYXQgKGE2KSwgYW5kIGFsbCBpcyB3ZWxs
LgorCisgICAgICAgICogd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcDoKKyAgICAgICAgKFdU
Rjo6Q29uY3VycmVudFB0ckhhc2hTZXQ6OmRlbGV0ZU9sZFRhYmxlcyk6CisgICAgICAgIChXVEY6
OkNvbmN1cnJlbnRQdHJIYXNoU2V0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdURjo6Q29uY3Vy
cmVudFB0ckhhc2hTZXQ6OmNvbnRhaW5zSW1wbFNsb3cgY29uc3QpOgorICAgICAgICAoV1RGOjpD
b25jdXJyZW50UHRySGFzaFNldDo6c2l6ZVNsb3cgY29uc3QpOgorICAgICAgICAoV1RGOjpDb25j
dXJyZW50UHRySGFzaFNldDo6cmVzaXplSWZOZWNlc3NhcnkpOgorICAgICAgICAoV1RGOjpDb25j
dXJyZW50UHRySGFzaFNldDo6VGFibGU6OmluaXRpYWxpemVTdHViKToKKyAgICAgICAgKiB3dGYv
Q29uY3VycmVudFB0ckhhc2hTZXQuaDoKKwogMjAyMS0wMy0xNyAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFBvcHVsYXRlIE5TVVJMU2Vzc2lv
biB3aXRoIGF0dHJpYnV0ZWQgYnVuZGxlIElECkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Db25jdXJy
ZW50UHRySGFzaFNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ29uY3VycmVu
dFB0ckhhc2hTZXQuY3BwCShyZXZpc2lvbiAyNzQ1MzgpCisrKyBTb3VyY2UvV1RGL3d0Zi9Db25j
dXJyZW50UHRySGFzaFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsOCBAQCB2b2lkIENv
bmN1cnJlbnRQdHJIYXNoU2V0OjpkZWxldGVPbGRUYWJsCiAgICAgLy8gVGhpcyBpcyBqdXN0IGlu
IGNhc2UuIEl0IGRvZXMgbm90IG1ha2UgaXQgT0sgZm9yIG90aGVyIHRocmVhZHMgdG8gY2FsbCBh
ZGQoKS4gQnV0IGl0IG1pZ2h0IHByZXZlbnQKICAgICAvLyBzb21lIGJhZCBjcmFzaGVzIGlmIHdl
IGRpZCBtYWtlIHRoYXQgbWlzdGFrZS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7IAotICAgIAorCisgICAgQVNTRVJUKG1fdGFibGUubG9hZFJlbGF4ZWQoKSAhPSAmbV9zdHVi
VGFibGUpOwogICAgIG1fYWxsVGFibGVzLnJlbW92ZUFsbE1hdGNoaW5nKAogICAgICAgICBbJl0g
KHN0ZDo6dW5pcXVlX3B0cjxUYWJsZT4mIHRhYmxlKSAtPiBib29sIHsKICAgICAgICAgICAgIHJl
dHVybiB0YWJsZS5nZXQoKSAhPSBtX3RhYmxlLmxvYWRSZWxheGVkKCk7CkBAIC02NSw2ICs2Niw3
IEBAIHZvaWQgQ29uY3VycmVudFB0ckhhc2hTZXQ6OmluaXRpYWxpemUoKQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUYWJsZT4gdGFibGUgPSBUYWJsZTo6Y3JlYXRlKGluaXRpYWxTaXplKTsKICAgICBt
X3RhYmxlLnN0b3JlUmVsYXhlZCh0YWJsZS5nZXQoKSk7CiAgICAgbV9hbGxUYWJsZXMuYXBwZW5k
KFdURk1vdmUodGFibGUpKTsKKyAgICBtX3N0dWJUYWJsZS5pbml0aWFsaXplU3R1YigpOwogfQog
CiBib29sIENvbmN1cnJlbnRQdHJIYXNoU2V0OjphZGRTbG93KFRhYmxlKiB0YWJsZSwgdW5zaWdu
ZWQgbWFzaywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgaW5kZXgsIHZvaWQqIHB0cikK
QEAgLTg4LDEzICs5MCw0MyBAQCBib29sIENvbmN1cnJlbnRQdHJIYXNoU2V0OjphZGRTbG93KFRh
YmxlCiAgICAgfQogfQogCitib29sIENvbmN1cnJlbnRQdHJIYXNoU2V0Ojpjb250YWluc0ltcGxT
bG93KHZvaWQqIHB0cikgY29uc3QKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CisgICAgQVNTRVJUKG1fdGFibGUubG9hZFJlbGF4ZWQoKSAhPSAmbV9zdHViVGFibGUpOwor
ICAgIHJldHVybiBjb250YWluc0ltcGwocHRyKTsKK30KKworc2l6ZV90IENvbmN1cnJlbnRQdHJI
YXNoU2V0OjpzaXplU2xvdygpIGNvbnN0Cit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworICAgIEFTU0VSVChtX3RhYmxlLmxvYWRSZWxheGVkKCkgIT0gJm1fc3R1YlRhYmxl
KTsKKyAgICByZXR1cm4gc2l6ZSgpOworfQorCiB2b2lkIENvbmN1cnJlbnRQdHJIYXNoU2V0Ojpy
ZXNpemVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OwogICAgIFRhYmxlKiB0YWJsZSA9IG1fdGFibGUubG9hZFJlbGF4ZWQoKTsKKyAgICBBU1NFUlQo
dGFibGUgIT0gJm1fc3R1YlRhYmxlKTsKICAgICBpZiAodGFibGUtPmxvYWQubG9hZFJlbGF4ZWQo
KSA8IHRhYmxlLT5tYXhMb2FkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIC8vIFN0
dWJiaW5nIG91dCBtX3RhYmxlIHdpdGggbV9zdHViVGFibGUgaGVyZSBpcyBuZWNlc3NhcnkgdG8g
ZW5zdXJlIHRoYXQKKyAgICAvLyB3ZSBkb24ndCBtaXNzIGNvcHlpbmcgYW55IGVudHJpZXMgdGhh
dCBtYXkgYmUgY29uY3VycmVudGx5IGJlIGFkZGVkLgorICAgIC8vCisgICAgLy8gSWYgYWRkU2xv
dygpIGNvbXBsZXRlcyBiZWZvcmUgdGhpcyBzdHViYmluZywgdGhlIG5ldyBlbnRyeSBpcyBndWFy
YW50ZWVkCisgICAgLy8gdG8gYmUgY29waWVkIGJlbG93LgorICAgIC8vCisgICAgLy8gSWYgYWRk
U2xvdygpIGNvbXBsZXRlcyBhZnRlciB0aGlzIHN0dWJiaW5nLCBhZGRTbG93KCkgIHdpbGwgY2hl
Y2sgbV90YWJsZQorICAgIC8vIGJlZm9yZSBpdCBmaW5pc2hlcywgYW5kIGRldGVjdCB0aGF0IGl0
cyBuZXdseSBhZGRlZCBlbnRyeSBtYXkgbm90IGhhdmUKKyAgICAvLyBtYWRlIGl0IGluLiBBcyBh
IHJlc3VsdCwgaXQgd2lsbCB0cnkgdG8gcmUtYWRkIHRoZSBlbnRyeSwgYW5kIGVuZCB1cAorICAg
IC8vIGJsb2NraW5nIG9uIHJlc2l6ZUlmTmVjZXNzYXJ5KCkgdW50aWwgdGhlIHJlc2l6aW5nIGlz
IGRvbncuIFRoaXMgaXMKKyAgICAvLyBiZWNhdXNlIG1fc3R1YlRhYmxlIHdpbGwgdGVsbCBhZGRT
bG93KCkgdGhpbmsgdGhhdCB0aGUgdGFibGUgaXMgb3V0IG9mCisgICAgLy8gc3BhY2UgYW5kIGl0
IG5lZWRzIHRvIHJlc2l6ZS4gTk9URTogbV9zdHViVGFibGUgYWx3YXlzIHNheXMgaXQgaXMgb3V0
IG9mCisgICAgLy8gc3BhY2UuCisgICAgbV90YWJsZS5zdG9yZSgmbV9zdHViVGFibGUpOworCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRhYmxlPiBuZXdUYWJsZSA9IFRhYmxlOjpjcmVhdGUodGFibGUt
PnNpemUgKiAyKTsKICAgICB1bnNpZ25lZCBtYXNrID0gbmV3VGFibGUtPm1hc2s7CiAgICAgdW5z
aWduZWQgbG9hZCA9IDA7CkBAIC0xMjEsOCArMTUzLDI3IEBAIHZvaWQgQ29uY3VycmVudFB0ckhh
c2hTZXQ6OnJlc2l6ZUlmTmVjZXMKICAgICB9CiAgICAgCiAgICAgbmV3VGFibGUtPmxvYWQuc3Rv
cmVSZWxheGVkKGxvYWQpOwotICAgIAorCiAgICAgbV90YWJsZS5zdG9yZShuZXdUYWJsZS5nZXQo
KSk7CisKKyAgICAvLyBhZGRTbG93KCkgd2lsbCBhbHdheXMgc3RhcnQgYnkgZXhjaGFuZ2VBZGQn
aW5nIDEgdG8gdGhlIGN1cnJlbnQgbV90YWJsZSdzCisgICAgLy8gbG9hZCB2YWx1ZSBiZWZvcmUg
Y2hlY2tpbmcgaWYgaXQgZXhjZWVkcyBpdHMgbWF4IGFsbG93ZWQgbG9hZC4gRm9yIHRoZQorICAg
IC8vIHJlYWwgbV90YWJsZSwgdGhpcyBpcyBub3QgYW4gaXNzdWUgYmVjYXVzZSBhdCBtb3N0LCBp
dCB3aWxsIGFjY3VtbXVsYXRlCisgICAgLy8gdXAgdG8gTiBleHRyYSBhZGRzIGFib3ZlIG1heCBs
b2FkLCB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgdGhyZWFkcworICAgIC8vIGNvbmN1cnJyZW50
bHkgYWRkaW5nIGVudHJpZXMuCisgICAgLy8KKyAgICAvLyBIb3dldmVyLCBtX3RhYmxlIG1heSBi
ZSByZXBsYWNlZCB3aXRoIG1fc3R1YlRhYmxlIGZvciBlYWNoIHJlc2l6ZQorICAgIC8vIG9wZXJh
dGlvbi4gQXMgYSByZXN1bHQsIHRoZSBjdW1tdWxhdGl2ZSBlcnJvciBvbiBpdHMgbG9hZCB2YWx1
ZQorICAgIC8vIG1heSBmYXIgZXhjZWVkIE4gKGFzIHNwZWNpZmllZCBhYm92ZSkuIFRvIGZpeCB0
aGlzLCB3ZSBhbHdheXMgcmVzZXQgaXQKKyAgICAvLyBoZXJlIHRvIHByZXZlbnQgYW4gb3ZlcmZs
b3cuIE5vdGU6IGEgbG9hZCBvZiBzdHViRGVmYXVsdExvYWRWYWx1ZSBtZWFucworICAgIC8vIHRo
YXQgbV9zdHViVGFibGUgaXMgZnVsbCBzaW5jZSBpdHMgc2l6ZSBpcyAwLgorICAgIC8vCisgICAg
Ly8gSW4gcHJhY3RpY2UsIHRoaXMgd29uJ3QgbWF0dGVyIGJlY2F1c2Ugd2UgbW9zdCBsaWtlbHkg
d29uJ3QgZG8gc28gbWFueQorICAgIC8vIHJlc2l6ZSBvcGVyYXRpb25zIHN1Y2ggdGhhdCB0aGlz
IHdpbGwgZ2V0IHRvIHRoZSBwb2ludCBvZiBvdmVyZmxvd2luZy4KKyAgICAvLyBIb3dldmVyLCBz
aW5jZSByZXNpemluZyBpcyBub3QgaW4gdGhlIGZhc3QgcGF0aCwgbGV0J3MganVzdCBiZSBwZWRh
bnRpYworICAgIC8vIGFuZCByZXNldCBpdCBmb3IgY29ycmVjdG5lc3MuCisgICAgbV9zdHViVGFi
bGUubG9hZC5zdG9yZShUYWJsZTo6c3R1YkRlZmF1bHRMb2FkVmFsdWUpOworCiAgICAgbV9hbGxU
YWJsZXMuYXBwZW5kKFdURk1vdmUobmV3VGFibGUpKTsKIH0KIApAQCAtMTQzLDUgKzE5NCwxNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q29uY3VycmVudFB0ckhhc2hTZXQ6OlRhCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAordm9pZCBDb25jdXJyZW50UHRySGFzaFNldDo6VGFibGU6OmluaXRpYWxpemVT
dHViKCkKK3sKKyAgICAvLyBUaGUgc3R1YiB0YWJsZSBpcyBzZXQgdXAgdG8gbG9vayBsaWtlIGl0
IGlzIGFscmVhZHkgZmlsbGVkIHVwLiBUaGlzIGlzCisgICAgLy8gc28gdGhhdCBpdCBjYW4gYmUg
dXNlZCBkdXJpbmcgcmVzaXppbmcgdG8gZm9yY2UgYWxsIGF0dGVtcHRzIHRvIGFkZCB0bworICAg
IC8vIGJlIHJvdXRlZCB0byByZXNpemVBbmRBZGQoKSB3aGVyZSBpdCB3aWxsIGJsb2NrIHVudGls
IHRoZSByZXNpemluZyBpcworICAgIC8vIGRvbmUuCisgICAgc2l6ZSA9IDA7CisgICAgbWFzayA9
IDA7CisgICAgbG9hZC5zdG9yZVJlbGF4ZWQoc3R1YkRlZmF1bHRMb2FkVmFsdWUpOworICAgIGFy
cmF5WzBdLnN0b3JlUmVsYXhlZChudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaAkocmV2aXNpb24gMjc0NTM4
KQorKysgU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsMTAgQEAgcHVibGljOgogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3RhYmxlLmxvYWRSZWxheGVkKCktPmxvYWQubG9h
ZFJlbGF4ZWQoKTsKKyAgICAgICAgVGFibGUqIHRhYmxlID0gbV90YWJsZS5sb2FkUmVsYXhlZCgp
OworICAgICAgICBpZiAodGFibGUgPT0gJm1fc3R1YlRhYmxlKQorICAgICAgICAgICAgcmV0dXJu
IHNpemVTbG93KCk7CisgICAgICAgIHJldHVybiB0YWJsZS0+bG9hZC5sb2FkUmVsYXhlZCgpOwog
ICAgIH0KICAgICAKICAgICAvLyBPbmx5IGNhbGwgd2hlbiB5b3Uga25vdyB0aGF0IG5vIG90aGVy
IHRocmVhZCBjYW4gY2FsbCBhZGQoKS4gVGhpcyBmcmVlcyB1cCBtZW1vcnkgd2l0aG91dCBjaGFu
Z2luZwpAQCAtOTAsOSArOTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAKICAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxUYWJsZT4gY3JlYXRlKHVuc2lnbmVkIHNpemUpOwotICAgICAgICAKKyAgICAgICAgdm9pZCBp
bml0aWFsaXplU3R1YigpOworCiAgICAgICAgIHVuc2lnbmVkIG1heExvYWQoKSBjb25zdCB7IHJl
dHVybiBzaXplIC8gMjsgfQotICAgICAgICAKKworICAgICAgICAvLyBUaGlzIGNhbiBiZSBhbnkg
dmFsdWUgPj0gMSBiZWNhdXNlIHRoZSBzdHViJ3Mgc2l6ZSBpcyAwLCBlbnN1cmluZyB0aGF0Cisg
ICAgICAgIC8vIG1fc3R1YlRhYmxlIGlzIGFsd2F5cyBzZWVuIGFzICJmdWxsIi4gV2UgY2hvb3Nl
IDEwIGZvciBubyByZWFzb24gb3RoZXIKKyAgICAgICAgLy8gdGhhbiBpdCBnaXZlcyBzb21lIHdh
cm0gZnV6emllcyBzaW5jZSBpdCBpcyBncmVhdGVyIHRoYW4gMS4KKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBzdHViRGVmYXVsdExvYWRWYWx1ZSA9IDEwOworCiAgICAgICAgIHVu
c2lnbmVkIHNpemU7IC8vIFRoaXMgaXMgaW1tdXRhYmxlLgogICAgICAgICB1bnNpZ25lZCBtYXNr
OyAvLyBUaGlzIGlzIGltbXV0YWJsZS4KICAgICAgICAgQXRvbWljPHVuc2lnbmVkPiBsb2FkOwpA
QCAtMTIyLDYgKzEzMSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb250YWluc0ltcGwodm9pZCog
cHRyKSBjb25zdAogICAgIHsKICAgICAgICAgVGFibGUqIHRhYmxlID0gbV90YWJsZS5sb2FkUmVs
YXhlZCgpOworICAgICAgICBpZiAodGFibGUgPT0gJm1fc3R1YlRhYmxlKQorICAgICAgICAgICAg
cmV0dXJuIGNvbnRhaW5zSW1wbFNsb3cocHRyKTsKKwogICAgICAgICB1bnNpZ25lZCBtYXNrID0g
dGFibGUtPm1hc2s7CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSBoYXNoKHB0cikgJiBt
YXNrOwogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXJ0SW5kZXg7CkBAIC0xNTUsMTMgKzE2
NywxNiBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBhZGRTbG93KFRhYmxlKiB0YWJsZSwgdW5zaWduZWQgbWFzaywgdW5zaWduZWQgc3RhcnRJbmRl
eCwgdW5zaWduZWQgaW5kZXgsIHZvaWQqIHB0cik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgY29udGFpbnNJbXBsU2xvdyh2b2lkKiBwdHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3Qgc2l6ZVNsb3coKSBjb25zdDsKIAogICAgIHZvaWQgcmVzaXplSWZOZWNlc3Nh
cnkoKTsKICAgICBib29sIHJlc2l6ZUFuZEFkZCh2b2lkKiBwdHIpOwotICAgIAorCiAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxUYWJsZT4sIDQ+IG1fYWxsVGFibGVzOwogICAgIEF0b21pYzxU
YWJsZSo+IG1fdGFibGU7IC8vIFRoaXMgaXMgbmV2ZXIgbnVsbC4KLSAgICBMb2NrIG1fbG9jazsg
Ly8gV2UganVzdCB1c2UgdGhpcyB0byBjb250cm9sIHJlc2l6ZSByYWNlcy4KKyAgICBUYWJsZSBt
X3N0dWJUYWJsZTsKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOyAvLyBXZSBqdXN0IHVzZSB0aGlz
IHRvIGNvbnRyb2wgcmVzaXplIHJhY2VzLgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423526</attachid>
            <date>2021-03-17 13:43:36 -0700</date>
            <delta_ts>2021-03-17 13:56:20 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-223241.patch</filename>
            <type>text/plain</type>
            <size>13675</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQ1MzgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggcmFjZSBjb25kaXRpb24gaW4gQ29uY3VycmVudFB0ckhhc2hTZXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyNDEK
KyAgICAgICAgcmRhcjovLzc0NjM3ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmFjZS10by1hZGQtb3BhcXVlLXJvb3RzLWluLUNv
bmN1cnJlbnRQdHJIYXNoU2V0LmpzOiBBZGRlZC4KKwogMjAyMS0wMy0xNiAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyNzQ0MDUuCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yYWNlLXRvLWFkZC1vcGFxdWUtcm9v
dHMtaW4tQ29uY3VycmVudFB0ckhhc2hTZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJl
c3MvcmFjZS10by1hZGQtb3BhcXVlLXJvb3RzLWluLUNvbmN1cnJlbnRQdHJIYXNoU2V0LmpzCShu
b25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3JhY2UtdG8tYWRkLW9wYXF1ZS1yb290cy1p
bi1Db25jdXJyZW50UHRySGFzaFNldC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAK
Ky8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0AgcnVuRGVmYXVsdCgiLS12ZXJpZnlHQz10
cnVlIiwgIi0tc2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzPTIiKQorLy9AIHNsb3chCisKK2xldCBh
cnJheSA9IFtdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykKKyAgICBhcnJheVtp
XSA9IG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKSk7CkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0
NTg0KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MTcgQEAKKzIwMjEtMDMtMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEZpeCByYWNlIGNvbmRpdGlvbiBpbiBDb25jdXJyZW50UHRySGFzaFNldC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzI0MQorICAgICAgICBy
ZGFyOi8vNzQ2Mzc4OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBleGlzdHMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBDb25jdXJyZW50UHRy
SGFzaFNldDo6cmVzaXplSWZOZWNlc3NhcnkoKSBtYXkKKyAgICAgICAgbm90IGNhcHR1cmUgYW4g
ZW50cnkgYWRkZWQgYnkgQ29uY3VycmVudFB0ckhhc2hTZXQ6OmFkZFNsb3coKSBjb25jdXJyZW50
bHkuCisKKyAgICAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQ6OmFkZFNsb3coKSBjdXJyZW50bHkg
ZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KHRhYmxlLT5sb2FkLmV4Y2hhbmdlQWRkKDEpID49IHRhYmxlLT5tYXhMb2FkKCkpICAgICAvLyAo
YTEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNpemVBbmRBZGQocHRyKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAoYTIpCisgICAgCisgICAgICAgICAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgICAgICAgICB2b2lkKiBvbGRFbnRyeSA9IHRhYmxlLT5hcnJheVtp
bmRleF0uY29tcGFyZUV4Y2hhbmdlU3Ryb25nKG51bGxwdHIsIHB0cik7ICAgLy8gKGEzKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIW9sZEVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV90YWJsZS5sb2FkKCkgIT0gdGFibGUpIHsgICAgICAgICAgICAgICAgICAvLyAoYTQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYWRkZWQgYW4gZW50cnkgdG8gYW4g
b2xkIHRhYmxlISBXZSBuZWVkIHRvIHJlZXhlY3V0ZSB0aGUgYWRkIG9uIHRoZSBuZXcgdGFibGUu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZChwdHIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAoYTUpCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAoYTYpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG9sZEVudHJ5ID09IHB0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICAuLi4gLy8gc2V0IGluZGV4IHRvIG5leHQg
ZW50cnkgc2xvdCB0byB0cnkuCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgIENvbmN1cnJlbnRQdHJIYXNoU2V0OjpyZXNpemVJZk5lY2Vzc2FyeSgpIGN1cnJlbnRs
eSBkb2VzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IChyMSkKKyAgICAgICAgICAgICAgICBUYWJsZSogdGFibGUgPSBtX3RhYmxlLmxvYWRSZWxheGVk
KCk7CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlLT5sb2FkLmxvYWRSZWxheGVkKCkgPCB0YWJs
ZS0+bWF4TG9hZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
ICAgICAvLyAocjIpCisKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFibGU+IG5l
d1RhYmxlID0gVGFibGU6OmNyZWF0ZSh0YWJsZS0+c2l6ZSAqIDIpOworICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS0+c2l6
ZTsgKytpKSB7ICAgICAgICAgICAgLy8gKHIzKQorICAgICAgICAgICAgICAgICAgICB2b2lkKiBw
dHIgPSB0YWJsZS0+YXJyYXlbaV0ubG9hZFJlbGF4ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFwdHIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIC4uLiAvLyBjb3B5IHB0ciB0byBuZXdUYWJsZS4gICAgICAgICAg
ICAgICAgICAgICAgICAvLyAocjQpCisgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAg
ICAgICAgIC4uLgorICAgICAgICAgICAgICAgIG1fdGFibGUuc3RvcmUobmV3VGFibGUuZ2V0KCkp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHI1KQorICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgfQorCisgICAgICAgIExldCdzIHNheSB0aHJlYWQgVDEgaXMgZXhlY3V0aW5n
IGFkZFNsb3coKSwgYW5kIHRocmVhZCBUMiBpcyBjb25jdXJyZW50bHkgZXhlY3V0aW5nCisgICAg
ICAgIHJlc2l6ZUlmTmVjZXNzYXJ5KCkuCisKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2lu
ZyBzY2VuYXJpbyAoaW4gY2hyb25vbG9naWNhbCBvcmRlcik6CisgICAgICAgIDEuIFQyIGhhcyBh
cnJpdmVkIGF0IGp1c3QgYmVmb3JlIChyNSkgaS5lLiBpdCBpcyBhbHJlYWR5IGRvbmUgY29weWlu
ZyB0aGUgZW50cmllcworICAgICAgICAgICBpbiB0aGUgb2xkIG1fdGFibGUuICAKKyAgICAgICAg
Mi4gVDEgZXhlY3V0ZXMgKGEzKSBhbmQgd3JpdGVzIGEgbmV3IGVudHJ5IGludG8gbV90YWJsZS4K
KyAgICAgICAgMy4gVDEgY2hlY2tzIHRoYXQgdGhlIHRhYmxlIGhhc24ndCBiZWVuIHJlcGxhY2Vk
IGF0IChhNCksIGFuZCBzZWVzIHRoYXQgaXQgaGFzCisgICAgICAgICAgIG5vdC4KKyAgICAgICAg
NC4gVDEgcmV0dXJucyBhdCAoYTYpLCB0aGlua2luZyB0aGF0IGl0cyBuZXcgZW50cnkgaXMgY29t
bWl0dGVkLgorICAgICAgICA1LiBUMiBzZXRzIHRoZSBuZXcgbV90YWJsZSBhdCAocjUpLCB0aGVy
ZWJ5IGRpc2NhcmRpbmcgdGhlIG5ldyBlbnRyeSB0aGF0IFQxIGhhcworICAgICAgICAgICBqdXN0
IHdyaXR0ZW4uCisKKyAgICAgICAgVGhlIGZpeCBpcyB0byBzZXQgbV90YWJsZSB0byBhIG5ld2x5
IGludHJvZHVjZWQgbV9zdHViVGFibGUgYXQgKHIyKS4gIG1fc3R1YlRhYmxlCisgICAgICAgIGlz
IHNldCB1cCB3aXRoIGEgc2l6ZSBvZiAwLCBhbmQgbG9hZCB2YWx1ZSBvZiAxMC4gIFRoaXMgbWVh
bnMgaXQgaXMgYWx3YXlzIGZ1bGwuCisgICAgICAgIFdpdGggdGhpcywgdGhlIGZvbGxvd2luZyBz
Y2VuYXJpb3MgY2FuIHBsYXkgb3V0OgorCisgICAgICAgIFNjZW5hcmlvIDE6IFQyIGluc3RhbGxz
IG1fc3R1YlRhYmxlIGJlZm9yZSBUMSByZWFjaGVzIChhMSkKKworICAgICAgICAxLiBBdCAoYTEp
LCBUMSBzZWVzIHRoYXQgbV90YWJsZSAod2hpY2ggaXMgbV9zdHViVGFibGUpIGlzIGZ1bGwuCisg
ICAgICAgIDIuIFQxIGNhbGxzIHJlc2l6ZUFuZEFkZCgpIGF0IChhMiksIHdoaWNoIGVuZHMgdXAg
Y2FsbGluZyByZXNpemVJZk5lY2Vzc2FyeSgpCisgICAgICAgICAgIGFuZCBibG9ja2luZyBvbiB0
aGUgbG9jayBhdCAocjEpLgorCisgICAgICAgIFNjZW5hcmlvIDI6IFQyIGluc3RhbGxzIG1fc3R1
YlRhYmxlIGFmdGVyIFQxIHJlYWNoZXMganVzdCBiZWZvcmUgKGEzKQorCisgICAgICAgIDEuIFQx
IHdyaXRlcyB0aGUgbmV3IGVudHJ5IGF0IChhMykuCisgICAgICAgIDIuIFQxIGNoZWNrcyBtX3Rh
YmxlIGF0IChhNCksIGFuZCBzZWVzIHRoYXQgaXQgaGFzIGNoYW5nZWQgKG5vdyBwb2ludGluZyB0
bworICAgICAgICAgICBtX3N0dWJUYWJsZSkuCisgICAgICAgIDMuIFQxIGNhbGxzIGFkZCgpIGFn
YWluIGF0IChhNSkgdG8gcmVkbyB0aGUgb3BlcmF0aW9uLCBhbmQgZW5kcyB3aXRoIHNjZW5hcmlv
IDEuCisKKyAgICAgICAgU2NlbmFyaW8gMzogVDIgaW5zdGFsbHMgbV9zdHViVGFibGUgYWZ0ZXIg
VDEgcmVhY2hlcyAoYTMpLCBidXQgYmVmb3JlIChhNCkKKworICAgICAgICAxLiBUaGUgbmV3IGVu
dHJ5IGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGlmIGl0IG1hZGUg
dGhlIGN1dCBvZmYKKyAgICAgICAgICAgZm9yIFQyIHRvIGNvcHkgaXQgb3Igbm90LiAgQnV0LCBp
dCBkb2Vzbid0IG1hdHRlciBiZWNhdXNlIC4uLgorICAgICAgICAyLiBUMSBjaGVja3MgbV90YWJs
ZSBhdCAoYTQpLCBhbmQgc2VlcyB0aGF0IGl0IGhhcyBjaGFuZ2VkIChub3cgcG9pbnRpbmcgdG8K
KyAgICAgICAgICAgbV9zdHViVGFibGUpLgorICAgICAgICAzLiBUMSBjYWxscyBhZGQoKSBhZ2Fp
biBhdCAoYTUpIHRvIHJlZG8gdGhlIG9wZXJhdGlvbiwgYW5kIGVuZHMgd2l0aCBzY2VuYXJpbyAx
LgorCisgICAgICAgIFNjZW5hcmlvIDQ6IFQyIGluc3RhbGxzIG1fc3R1YlRhYmxlIGFmdGVyIFQx
IHJlYWNoZXMgKGE0KQorCisgICAgICAgIDEuIFRoZSBuZXcgZW50cnkgaGFzIGFscmVhZHkgYmVl
biBhZGRlZC4KKyAgICAgICAgMi4gVDEgY2hlY2tzIG1fdGFibGUgYXQgKGE0KSwgYW5kIHNlZXMg
dGhhdCBpdCBoYXMgTk9UIGNoYW5nZWQgKGJlY2F1c2UgVDIgaGFzbid0CisgICAgICAgICAgIGlu
c3RhbGxlZCBtX3N0dWJUYWJsZSB5ZXQpLiAgVGhpcyBtZWFucyBUMidzIGNvcHkgbG9vcCBpcyBn
dWFyYW50ZWVkIHRvIG5vdAorICAgICAgICAgICBoYXZlIHN0YXJ0ZWQgeWV0IGkuZS4gdGhlIG5l
dyBlbnRyeSB3aWxsIGRlZmluaXRlbHkgYmUgcGlja2VkIHVwIGJ5IHRoZSBjb3B5CisgICAgICAg
ICAgIGxvb3AuCisgICAgICAgIDMuIFQxIHJldHVybnMgYXQgKGE2KSwgYW5kIGFsbCBpcyB3ZWxs
LgorCisgICAgICAgICogd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcDoKKyAgICAgICAgKFdU
Rjo6Q29uY3VycmVudFB0ckhhc2hTZXQ6OmRlbGV0ZU9sZFRhYmxlcyk6CisgICAgICAgIChXVEY6
OkNvbmN1cnJlbnRQdHJIYXNoU2V0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdURjo6Q29uY3Vy
cmVudFB0ckhhc2hTZXQ6OmNvbnRhaW5zSW1wbFNsb3cgY29uc3QpOgorICAgICAgICAoV1RGOjpD
b25jdXJyZW50UHRySGFzaFNldDo6c2l6ZVNsb3cgY29uc3QpOgorICAgICAgICAoV1RGOjpDb25j
dXJyZW50UHRySGFzaFNldDo6cmVzaXplSWZOZWNlc3NhcnkpOgorICAgICAgICAoV1RGOjpDb25j
dXJyZW50UHRySGFzaFNldDo6VGFibGU6OmluaXRpYWxpemVTdHViKToKKyAgICAgICAgKiB3dGYv
Q29uY3VycmVudFB0ckhhc2hTZXQuaDoKKwogMjAyMS0wMy0xNyAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFBvcHVsYXRlIE5TVVJMU2Vzc2lv
biB3aXRoIGF0dHJpYnV0ZWQgYnVuZGxlIElECkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Db25jdXJy
ZW50UHRySGFzaFNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ29uY3VycmVu
dFB0ckhhc2hTZXQuY3BwCShyZXZpc2lvbiAyNzQ1MzgpCisrKyBTb3VyY2UvV1RGL3d0Zi9Db25j
dXJyZW50UHRySGFzaFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsOCBAQCB2b2lkIENv
bmN1cnJlbnRQdHJIYXNoU2V0OjpkZWxldGVPbGRUYWJsCiAgICAgLy8gVGhpcyBpcyBqdXN0IGlu
IGNhc2UuIEl0IGRvZXMgbm90IG1ha2UgaXQgT0sgZm9yIG90aGVyIHRocmVhZHMgdG8gY2FsbCBh
ZGQoKS4gQnV0IGl0IG1pZ2h0IHByZXZlbnQKICAgICAvLyBzb21lIGJhZCBjcmFzaGVzIGlmIHdl
IGRpZCBtYWtlIHRoYXQgbWlzdGFrZS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7IAotICAgIAorCisgICAgQVNTRVJUKG1fdGFibGUubG9hZFJlbGF4ZWQoKSAhPSAmbV9zdHVi
VGFibGUpOwogICAgIG1fYWxsVGFibGVzLnJlbW92ZUFsbE1hdGNoaW5nKAogICAgICAgICBbJl0g
KHN0ZDo6dW5pcXVlX3B0cjxUYWJsZT4mIHRhYmxlKSAtPiBib29sIHsKICAgICAgICAgICAgIHJl
dHVybiB0YWJsZS5nZXQoKSAhPSBtX3RhYmxlLmxvYWRSZWxheGVkKCk7CkBAIC02NSw2ICs2Niw3
IEBAIHZvaWQgQ29uY3VycmVudFB0ckhhc2hTZXQ6OmluaXRpYWxpemUoKQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUYWJsZT4gdGFibGUgPSBUYWJsZTo6Y3JlYXRlKGluaXRpYWxTaXplKTsKICAgICBt
X3RhYmxlLnN0b3JlUmVsYXhlZCh0YWJsZS5nZXQoKSk7CiAgICAgbV9hbGxUYWJsZXMuYXBwZW5k
KFdURk1vdmUodGFibGUpKTsKKyAgICBtX3N0dWJUYWJsZS5pbml0aWFsaXplU3R1YigpOwogfQog
CiBib29sIENvbmN1cnJlbnRQdHJIYXNoU2V0OjphZGRTbG93KFRhYmxlKiB0YWJsZSwgdW5zaWdu
ZWQgbWFzaywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgaW5kZXgsIHZvaWQqIHB0cikK
QEAgLTg4LDEzICs5MCw0MyBAQCBib29sIENvbmN1cnJlbnRQdHJIYXNoU2V0OjphZGRTbG93KFRh
YmxlCiAgICAgfQogfQogCitib29sIENvbmN1cnJlbnRQdHJIYXNoU2V0Ojpjb250YWluc0ltcGxT
bG93KHZvaWQqIHB0cikgY29uc3QKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CisgICAgQVNTRVJUKG1fdGFibGUubG9hZFJlbGF4ZWQoKSAhPSAmbV9zdHViVGFibGUpOwor
ICAgIHJldHVybiBjb250YWluc0ltcGwocHRyKTsKK30KKworc2l6ZV90IENvbmN1cnJlbnRQdHJI
YXNoU2V0OjpzaXplU2xvdygpIGNvbnN0Cit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworICAgIEFTU0VSVChtX3RhYmxlLmxvYWRSZWxheGVkKCkgIT0gJm1fc3R1YlRhYmxl
KTsKKyAgICByZXR1cm4gc2l6ZSgpOworfQorCiB2b2lkIENvbmN1cnJlbnRQdHJIYXNoU2V0Ojpy
ZXNpemVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OwogICAgIFRhYmxlKiB0YWJsZSA9IG1fdGFibGUubG9hZFJlbGF4ZWQoKTsKKyAgICBBU1NFUlQo
dGFibGUgIT0gJm1fc3R1YlRhYmxlKTsKICAgICBpZiAodGFibGUtPmxvYWQubG9hZFJlbGF4ZWQo
KSA8IHRhYmxlLT5tYXhMb2FkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIC8vIFN0
dWJiaW5nIG91dCBtX3RhYmxlIHdpdGggbV9zdHViVGFibGUgaGVyZSBpcyBuZWNlc3NhcnkgdG8g
ZW5zdXJlIHRoYXQKKyAgICAvLyB3ZSBkb24ndCBtaXNzIGNvcHlpbmcgYW55IGVudHJpZXMgdGhh
dCBtYXkgYmUgY29uY3VycmVudGx5IGJlIGFkZGVkLgorICAgIC8vCisgICAgLy8gSWYgYWRkU2xv
dygpIGNvbXBsZXRlcyBiZWZvcmUgdGhpcyBzdHViYmluZywgdGhlIG5ldyBlbnRyeSBpcyBndWFy
YW50ZWVkCisgICAgLy8gdG8gYmUgY29waWVkIGJlbG93LgorICAgIC8vCisgICAgLy8gSWYgYWRk
U2xvdygpIGNvbXBsZXRlcyBhZnRlciB0aGlzIHN0dWJiaW5nLCBhZGRTbG93KCkgIHdpbGwgY2hl
Y2sgbV90YWJsZQorICAgIC8vIGJlZm9yZSBpdCBmaW5pc2hlcywgYW5kIGRldGVjdCB0aGF0IGl0
cyBuZXdseSBhZGRlZCBlbnRyeSBtYXkgbm90IGhhdmUKKyAgICAvLyBtYWRlIGl0IGluLiBBcyBh
IHJlc3VsdCwgaXQgd2lsbCB0cnkgdG8gcmUtYWRkIHRoZSBlbnRyeSwgYW5kIGVuZCB1cAorICAg
IC8vIGJsb2NraW5nIG9uIHJlc2l6ZUlmTmVjZXNzYXJ5KCkgdW50aWwgdGhlIHJlc2l6aW5nIGlz
IGRvbncuIFRoaXMgaXMKKyAgICAvLyBiZWNhdXNlIG1fc3R1YlRhYmxlIHdpbGwgdGVsbCBhZGRT
bG93KCkgdGhpbmsgdGhhdCB0aGUgdGFibGUgaXMgb3V0IG9mCisgICAgLy8gc3BhY2UgYW5kIGl0
IG5lZWRzIHRvIHJlc2l6ZS4gTk9URTogbV9zdHViVGFibGUgYWx3YXlzIHNheXMgaXQgaXMgb3V0
IG9mCisgICAgLy8gc3BhY2UuCisgICAgbV90YWJsZS5zdG9yZSgmbV9zdHViVGFibGUpOworCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRhYmxlPiBuZXdUYWJsZSA9IFRhYmxlOjpjcmVhdGUodGFibGUt
PnNpemUgKiAyKTsKICAgICB1bnNpZ25lZCBtYXNrID0gbmV3VGFibGUtPm1hc2s7CiAgICAgdW5z
aWduZWQgbG9hZCA9IDA7CkBAIC0xMjEsOCArMTUzLDI3IEBAIHZvaWQgQ29uY3VycmVudFB0ckhh
c2hTZXQ6OnJlc2l6ZUlmTmVjZXMKICAgICB9CiAgICAgCiAgICAgbmV3VGFibGUtPmxvYWQuc3Rv
cmVSZWxheGVkKGxvYWQpOwotICAgIAorCiAgICAgbV90YWJsZS5zdG9yZShuZXdUYWJsZS5nZXQo
KSk7CisKKyAgICAvLyBhZGRTbG93KCkgd2lsbCBhbHdheXMgc3RhcnQgYnkgZXhjaGFuZ2VBZGQn
aW5nIDEgdG8gdGhlIGN1cnJlbnQgbV90YWJsZSdzCisgICAgLy8gbG9hZCB2YWx1ZSBiZWZvcmUg
Y2hlY2tpbmcgaWYgaXQgZXhjZWVkcyBpdHMgbWF4IGFsbG93ZWQgbG9hZC4gRm9yIHRoZQorICAg
IC8vIHJlYWwgbV90YWJsZSwgdGhpcyBpcyBub3QgYW4gaXNzdWUgYmVjYXVzZSBhdCBtb3N0LCBp
dCB3aWxsIGFjY3VtbXVsYXRlCisgICAgLy8gdXAgdG8gTiBleHRyYSBhZGRzIGFib3ZlIG1heCBs
b2FkLCB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgdGhyZWFkcworICAgIC8vIGNvbmN1cnJyZW50
bHkgYWRkaW5nIGVudHJpZXMuCisgICAgLy8KKyAgICAvLyBIb3dldmVyLCBtX3RhYmxlIG1heSBi
ZSByZXBsYWNlZCB3aXRoIG1fc3R1YlRhYmxlIGZvciBlYWNoIHJlc2l6ZQorICAgIC8vIG9wZXJh
dGlvbi4gQXMgYSByZXN1bHQsIHRoZSBjdW1tdWxhdGl2ZSBlcnJvciBvbiBpdHMgbG9hZCB2YWx1
ZQorICAgIC8vIG1heSBmYXIgZXhjZWVkIE4gKGFzIHNwZWNpZmllZCBhYm92ZSkuIFRvIGZpeCB0
aGlzLCB3ZSBhbHdheXMgcmVzZXQgaXQKKyAgICAvLyBoZXJlIHRvIHByZXZlbnQgYW4gb3ZlcmZs
b3cuIE5vdGU6IGEgbG9hZCBvZiBzdHViRGVmYXVsdExvYWRWYWx1ZSBtZWFucworICAgIC8vIHRo
YXQgbV9zdHViVGFibGUgaXMgZnVsbCBzaW5jZSBpdHMgc2l6ZSBpcyAwLgorICAgIC8vCisgICAg
Ly8gSW4gcHJhY3RpY2UsIHRoaXMgd29uJ3QgbWF0dGVyIGJlY2F1c2Ugd2UgbW9zdCBsaWtlbHkg
d29uJ3QgZG8gc28gbWFueQorICAgIC8vIHJlc2l6ZSBvcGVyYXRpb25zIHN1Y2ggdGhhdCB0aGlz
IHdpbGwgZ2V0IHRvIHRoZSBwb2ludCBvZiBvdmVyZmxvd2luZy4KKyAgICAvLyBIb3dldmVyLCBz
aW5jZSByZXNpemluZyBpcyBub3QgaW4gdGhlIGZhc3QgcGF0aCwgbGV0J3MganVzdCBiZSBwZWRh
bnRpYworICAgIC8vIGFuZCByZXNldCBpdCBmb3IgY29ycmVjdG5lc3MuCisgICAgbV9zdHViVGFi
bGUubG9hZC5zdG9yZShUYWJsZTo6c3R1YkRlZmF1bHRMb2FkVmFsdWUpOworCiAgICAgbV9hbGxU
YWJsZXMuYXBwZW5kKFdURk1vdmUobmV3VGFibGUpKTsKIH0KIApAQCAtMTQzLDUgKzE5NCwxNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q29uY3VycmVudFB0ckhhc2hTZXQ6OlRhCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAordm9pZCBDb25jdXJyZW50UHRySGFzaFNldDo6VGFibGU6OmluaXRpYWxpemVT
dHViKCkKK3sKKyAgICAvLyBUaGUgc3R1YiB0YWJsZSBpcyBzZXQgdXAgdG8gbG9vayBsaWtlIGl0
IGlzIGFscmVhZHkgZmlsbGVkIHVwLiBUaGlzIGlzCisgICAgLy8gc28gdGhhdCBpdCBjYW4gYmUg
dXNlZCBkdXJpbmcgcmVzaXppbmcgdG8gZm9yY2UgYWxsIGF0dGVtcHRzIHRvIGFkZCB0bworICAg
IC8vIGJlIHJvdXRlZCB0byByZXNpemVBbmRBZGQoKSB3aGVyZSBpdCB3aWxsIGJsb2NrIHVudGls
IHRoZSByZXNpemluZyBpcworICAgIC8vIGRvbmUuCisgICAgc2l6ZSA9IDA7CisgICAgbWFzayA9
IDA7CisgICAgbG9hZC5zdG9yZVJlbGF4ZWQoc3R1YkRlZmF1bHRMb2FkVmFsdWUpOworICAgIGFy
cmF5WzBdLnN0b3JlUmVsYXhlZChudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaAkocmV2aXNpb24gMjc0NTM4
KQorKysgU291cmNlL1dURi93dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsMTAgQEAgcHVibGljOgogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3RhYmxlLmxvYWRSZWxheGVkKCktPmxvYWQubG9h
ZFJlbGF4ZWQoKTsKKyAgICAgICAgVGFibGUqIHRhYmxlID0gbV90YWJsZS5sb2FkUmVsYXhlZCgp
OworICAgICAgICBpZiAodGFibGUgPT0gJm1fc3R1YlRhYmxlKQorICAgICAgICAgICAgcmV0dXJu
IHNpemVTbG93KCk7CisgICAgICAgIHJldHVybiB0YWJsZS0+bG9hZC5sb2FkUmVsYXhlZCgpOwog
ICAgIH0KICAgICAKICAgICAvLyBPbmx5IGNhbGwgd2hlbiB5b3Uga25vdyB0aGF0IG5vIG90aGVy
IHRocmVhZCBjYW4gY2FsbCBhZGQoKS4gVGhpcyBmcmVlcyB1cCBtZW1vcnkgd2l0aG91dCBjaGFu
Z2luZwpAQCAtOTAsOSArOTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAKICAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxUYWJsZT4gY3JlYXRlKHVuc2lnbmVkIHNpemUpOwotICAgICAgICAKKyAgICAgICAgdm9pZCBp
bml0aWFsaXplU3R1YigpOworCiAgICAgICAgIHVuc2lnbmVkIG1heExvYWQoKSBjb25zdCB7IHJl
dHVybiBzaXplIC8gMjsgfQotICAgICAgICAKKworICAgICAgICAvLyBUaGlzIGNhbiBiZSBhbnkg
dmFsdWUgPj0gMSBiZWNhdXNlIHRoZSBzdHViJ3Mgc2l6ZSBpcyAwLCBlbnN1cmluZyB0aGF0Cisg
ICAgICAgIC8vIG1fc3R1YlRhYmxlIGlzIGFsd2F5cyBzZWVuIGFzICJmdWxsIi4gV2UgY2hvb3Nl
IDEwIGZvciBubyByZWFzb24gb3RoZXIKKyAgICAgICAgLy8gdGhhbiBpdCBnaXZlcyBzb21lIHdh
cm0gZnV6emllcyBzaW5jZSBpdCBpcyBncmVhdGVyIHRoYW4gMS4KKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBzdHViRGVmYXVsdExvYWRWYWx1ZSA9IDEwOworCiAgICAgICAgIHVu
c2lnbmVkIHNpemU7IC8vIFRoaXMgaXMgaW1tdXRhYmxlLgogICAgICAgICB1bnNpZ25lZCBtYXNr
OyAvLyBUaGlzIGlzIGltbXV0YWJsZS4KICAgICAgICAgQXRvbWljPHVuc2lnbmVkPiBsb2FkOwpA
QCAtMTIyLDYgKzEzMSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb250YWluc0ltcGwodm9pZCog
cHRyKSBjb25zdAogICAgIHsKICAgICAgICAgVGFibGUqIHRhYmxlID0gbV90YWJsZS5sb2FkUmVs
YXhlZCgpOworICAgICAgICBpZiAodGFibGUgPT0gJm1fc3R1YlRhYmxlKQorICAgICAgICAgICAg
cmV0dXJuIGNvbnRhaW5zSW1wbFNsb3cocHRyKTsKKwogICAgICAgICB1bnNpZ25lZCBtYXNrID0g
dGFibGUtPm1hc2s7CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSBoYXNoKHB0cikgJiBt
YXNrOwogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXJ0SW5kZXg7CkBAIC0xNTUsMTMgKzE2
NywxNiBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBhZGRTbG93KFRhYmxlKiB0YWJsZSwgdW5zaWduZWQgbWFzaywgdW5zaWduZWQgc3RhcnRJbmRl
eCwgdW5zaWduZWQgaW5kZXgsIHZvaWQqIHB0cik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgY29udGFpbnNJbXBsU2xvdyh2b2lkKiBwdHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3Qgc2l6ZVNsb3coKSBjb25zdDsKIAogICAgIHZvaWQgcmVzaXplSWZOZWNlc3Nh
cnkoKTsKICAgICBib29sIHJlc2l6ZUFuZEFkZCh2b2lkKiBwdHIpOwotICAgIAorCiAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxUYWJsZT4sIDQ+IG1fYWxsVGFibGVzOwogICAgIEF0b21pYzxU
YWJsZSo+IG1fdGFibGU7IC8vIFRoaXMgaXMgbmV2ZXIgbnVsbC4KLSAgICBMb2NrIG1fbG9jazsg
Ly8gV2UganVzdCB1c2UgdGhpcyB0byBjb250cm9sIHJlc2l6ZSByYWNlcy4KKyAgICBUYWJsZSBt
X3N0dWJUYWJsZTsKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOyAvLyBXZSBqdXN0IHVzZSB0aGlz
IHRvIGNvbnRyb2wgcmVzaXplIHJhY2VzLgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>
<flag name="review"
          id="442913"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>