<?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>225890</bug_id>
          
          <creation_ts>2021-05-17 15:00:31 -0700</creation_ts>
          <short_desc>Use UTF-8 internally from Strings inside SQLiteStatement</short_desc>
          <delta_ts>2021-05-18 12:00:23 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1760908</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 15:00:31 -0700</bug_when>
    <thetext>Use UTF-8 internally from Strings inside SQLiteStatement. Our SQLite databases use UTF-8 internally for text encoding (see we open the database with sqlite3_open_v2() and not sqlite3_open16).

Previously, we were providing UTF-16 strings to SQLite, which meant it had to convert it internally to UTF-8.
Also, whenever we were requesting a string from SQLite, it had to convert it from UTF-8 to UTF-16 before returning it to us. Our String constructed from returned from SQLiteStatement would also be 16-bit encoded, even if all ASCII so we were potentially wasting memory too.

We now provide UTF-8 to SQLite by using StringView::utf8(). We also request UTF-8 strings from SQLite and rely on String::fromUTF8() to convert it to a WTF::String. For all ASCII characters, this means we&apos;ll end up with a 8-bit String and save memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760909</commentid>
    <comment_count>1</comment_count>
      <attachid>428876</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 15:02:21 -0700</bug_when>
    <thetext>Created attachment 428876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760913</commentid>
    <comment_count>2</comment_count>
      <attachid>428878</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 15:32:22 -0700</bug_when>
    <thetext>Created attachment 428878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760921</commentid>
    <comment_count>3</comment_count>
      <attachid>428883</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 15:56:59 -0700</bug_when>
    <thetext>Created attachment 428883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760953</commentid>
    <comment_count>4</comment_count>
      <attachid>428892</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 16:52:20 -0700</bug_when>
    <thetext>Created attachment 428892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760991</commentid>
    <comment_count>5</comment_count>
      <attachid>428904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 18:41:01 -0700</bug_when>
    <thetext>Created attachment 428904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761015</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-17 20:13:37 -0700</bug_when>
    <thetext>Is this compatible with existing databases in files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761016</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 20:15:36 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Is this compatible with existing databases in files?

Yes, there is no compatibility issue here. Our databases already use UTF-8 encoding. Now we also use UTF-8 in SQLiteStatement to reduce the amount of conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761049</commentid>
    <comment_count>8</comment_count>
      <attachid>428904</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-17 23:18:25 -0700</bug_when>
    <thetext>Comment on attachment 428904
Patch

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

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:120
&gt; +    auto utf8Text = text.utf8();

Seems like we should consider an idiom that uses the characters in place for all-ASCII strings. No need to make a copy on the heap in that case, and that may be the common case, and the scan through the characters to check they are all ASCII is probably efficient enough that it’s an optimization on balance. We could make a function that returns a structure that sometimes contains a CString but always contains a const char* pointing to the UTF-8 characters, and a length. Or we could make a function that takes a lambda and calls it with the UTF-8 characters and length. Or we can just write it out here:

    CString buffer;
    const char* characters;
    unsigned length;
    if (text.is8Bit() &amp;&amp; text.isAllASCII()) {
        characters = reinterpret_cast&lt;const char*&gt;(text.characters8());
        length = text.length();
    } else {
        buffer = text.utf8();
        characters = utf8Buffer.data();
        length = utf8Buffer.length();
    }
    return sqlite3_bind_text(m_statement, index, characters, length, SQLITE_TRANSIENT);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761146</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-18 07:38:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 428904 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428904&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:120
&gt; &gt; +    auto utf8Text = text.utf8();
&gt; 
&gt; Seems like we should consider an idiom that uses the characters in place for
&gt; all-ASCII strings. No need to make a copy on the heap in that case, and that
&gt; may be the common case, and the scan through the characters to check they
&gt; are all ASCII is probably efficient enough that it’s an optimization on
&gt; balance. We could make a function that returns a structure that sometimes
&gt; contains a CString but always contains a const char* pointing to the UTF-8
&gt; characters, and a length. Or we could make a function that takes a lambda
&gt; and calls it with the UTF-8 characters and length. Or we can just write it
&gt; out here:
&gt; 
&gt;     CString buffer;
&gt;     const char* characters;
&gt;     unsigned length;
&gt;     if (text.is8Bit() &amp;&amp; text.isAllASCII()) {
&gt;         characters = reinterpret_cast&lt;const char*&gt;(text.characters8());
&gt;         length = text.length();
&gt;     } else {
&gt;         buffer = text.utf8();
&gt;         characters = utf8Buffer.data();
&gt;         length = utf8Buffer.length();
&gt;     }
&gt;     return sqlite3_bind_text(m_statement, index, characters, length,
&gt; SQLITE_TRANSIENT);

Yes, I agree all ASCII is likely a common case. I&apos;ll make this optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761147</commentid>
    <comment_count>10</comment_count>
      <attachid>428936</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-18 07:42:20 -0700</bug_when>
    <thetext>Created attachment 428936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761167</commentid>
    <comment_count>11</comment_count>
      <attachid>428936</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-18 08:56:49 -0700</bug_when>
    <thetext>Comment on attachment 428936
Patch

This last minute optimization caused a regression, I must have messed up something. I&apos;ll investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761192</commentid>
    <comment_count>12</comment_count>
      <attachid>428950</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-18 10:09:54 -0700</bug_when>
    <thetext>Created attachment 428950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761227</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-18 11:59:37 -0700</bug_when>
    <thetext>Committed r277667 (237869@main): &lt;https://commits.webkit.org/237869@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428950.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761228</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-18 12:00:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/78166478&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428876</attachid>
            <date>2021-05-17 15:02:21 -0700</date>
            <delta_ts>2021-05-17 15:32:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225890-20210517150221.patch</filename>
            <type>text/plain</type>
            <size>4739</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMmVjZjYzYWJkMmJj
NzgwOTVkZTQ5MDQ5MDVkOWI4MGQwYjk0OC4uYzQ1ODJhOTQyNmE3MTFjZDk3NTVlMGI4NjllNTNh
Njk2MDJlYjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFVURi04IGludGVybmFs
bHkgZnJvbSBTdHJpbmdzIGluc2lkZSBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBVVEYtOCBpbnRlcm5hbGx5IGZyb20g
U3RyaW5ncyBpbnNpZGUgU1FMaXRlU3RhdGVtZW50LiBPdXIgU1FMaXRlIGRhdGFiYXNlcyB1c2Ug
VVRGLTgKKyAgICAgICAgaW50ZXJuYWxseSBmb3IgdGV4dCBlbmNvZGluZyAoc2VlIHdlIG9wZW4g
dGhlIGRhdGFiYXNlIHdpdGggc3FsaXRlM19vcGVuX3YyKCkgYW5kIG5vdAorICAgICAgICBzcWxp
dGUzX29wZW4xNigpKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIHByb3ZpZGluZyBV
VEYtMTYgc3RyaW5ncyB0byBTUUxpdGUsIHdoaWNoIG1lYW50IGl0IGhhZCB0byBjb252ZXJ0IGl0
CisgICAgICAgIGludGVybmFsbHkgdG8gVVRGLTguIEFsc28sIHdoZW5ldmVyIHdlIHdlcmUgcmVx
dWVzdGluZyBhIHN0cmluZyBmcm9tIFNRTGl0ZSwgaXQgaGFkIHRvCisgICAgICAgIGNvbnZlcnQg
aXQgZnJvbSBVVEYtOCB0byBVVEYtMTYgYmVmb3JlIHJldHVybmluZyBpdCB0byB1cy4gT3VyIFN0
cmluZyBjb25zdHJ1Y3RlZCBmcm9tCisgICAgICAgIHJldHVybmVkIGZyb20gU1FMaXRlU3RhdGVt
ZW50IHdvdWxkIGFsc28gYmUgMTYtYml0IGVuY29kZWQsIGV2ZW4gaWYgYWxsIEFTQ0lJIHNvIHdl
IHdlcmUKKyAgICAgICAgcG90ZW50aWFsbHkgd2FzdGluZyBtZW1vcnkgdG9vLgorCisgICAgICAg
IFdlIG5vdyBwcm92aWRlIFVURi04IHRvIFNRTGl0ZSBieSB1c2luZyBTdHJpbmdWaWV3Ojp1dGY4
KCkuIFdlIGFsc28gcmVxdWVzdCBVVEYtOCBzdHJpbmdzCisgICAgICAgIGZyb20gU1FMaXRlIGFu
ZCByZWx5IG9uIFN0cmluZzo6ZnJvbVVURjgoKSB0byBjb252ZXJ0IGl0IHRvIGEgV1RGOjpTdHJp
bmcuIEZvciBhbGwgQVNDSUkKKyAgICAgICAgY2hhcmFjdGVycywgdGhpcyBtZWFucyB3ZSdsbCBl
bmQgdXAgd2l0aCBhIDgtYml0IFN0cmluZyBhbmQgc2F2ZSBtZW1vcnkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudDo6YmluZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
OjpnZXRDb2x1bW5OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6Z2V0
Q29sdW1uVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oOgor
CiAyMDIxLTA1LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QXZvaWQgbW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1l
bnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
CmluZGV4IDQ4ZjlhZWUyZDcxZDkxZmI0NTcwMjIyZDRlNWIwNzg4YTBiZTE1ZGYuLjRiM2ZjMGFk
OTlmNThlNjgxMTUxYmRhNGY0Y2ZmNmJhZGE3N2QzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0xMTYsMjIgKzExNiwxMyBAQCBp
bnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4
dCkKICAgICByZXR1cm4gYmluZEJsb2IoaW5kZXgsIGNoYXJhY3RlcnMsIHRleHQubGVuZ3RoKCkg
KiBzaXplb2YoVUNoYXIpKTsKIH0KIAotaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZFRleHQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpCitpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4
dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCkKIHsKICAgICBBU1NFUlQoaW5kZXggPiAwKTsK
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA8PSBiaW5kUGFyYW1ldGVy
Q291bnQoKSk7CiAKLSAgICAvLyBTdHJpbmc6OmNoYXJhY3RlcnMoKSByZXR1cm5zIDAgZm9yIHRo
ZSBlbXB0eSBzdHJpbmcsIHdoaWNoIFNRTGl0ZQotICAgIC8vIHRyZWF0cyBhcyBhIG51bGwsIHNv
IHdlIHN1cHBseSBhIG5vbi1udWxsIHBvaW50ZXIgZm9yIHRoYXQgY2FzZS4KLSAgICBhdXRvIHVw
Y29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodGV4dCkudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCk7Ci0gICAgVUNoYXIgYW55Q2hhcmFjdGVyID0gMDsKLSAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczsKLSAgICBpZiAodGV4dC5pc0VtcHR5KCkgJiYgIXRleHQuaXNOdWxsKCkpCi0gICAg
ICAgIGNoYXJhY3RlcnMgPSAmYW55Q2hhcmFjdGVyOwotICAgIGVsc2UKLSAgICAgICAgY2hhcmFj
dGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLQotICAgIHJldHVybiBzcWxpdGUzX2JpbmRf
dGV4dDE2KG1fc3RhdGVtZW50LCBpbmRleCwgY2hhcmFjdGVycywgc2l6ZW9mKFVDaGFyKSAqIHRl
eHQubGVuZ3RoKCksIFNRTElURV9UUkFOU0lFTlQpOworICAgIGF1dG8gdXRmOFRleHQgPSB0ZXh0
LnV0ZjgoKTsKKyAgICByZXR1cm4gc3FsaXRlM19iaW5kX3RleHQobV9zdGF0ZW1lbnQsIGluZGV4
LCB1dGY4VGV4dC5kYXRhKCksIHV0ZjhUZXh0Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5UKTsK
IH0KIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEludChpbnQgaW5kZXgsIGludCBpbnRlZ2Vy
KQpAQCAtMjA5LDcgKzIwMCw3IEBAIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbk5h
bWUoaW50IGNvbCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmIChjb2x1bW5Db3Vu
dCgpIDw9IGNvbCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfY29sdW1uX25hbWUxNihtX3N0
YXRlbWVudCwgY29sKSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29s
dW1uX25hbWUobV9zdGF0ZW1lbnQsIGNvbCkpOwogfQogCiBTUUxWYWx1ZSBTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtblZhbHVlKGludCBjb2wpCkBAIC0yNDksNyArMjQwLDcgQEAgU3RyaW5nIFNR
TGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uVGV4dChpbnQgY29sKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgaWYgKGNvbHVtbkNvdW50KCkgPD0gY29sKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
c3FsaXRlM19jb2x1bW5fdGV4dDE2KG1fc3RhdGVtZW50LCBjb2wpKSwgc3FsaXRlM19jb2x1bW5f
Ynl0ZXMxNihtX3N0YXRlbWVudCwgY29sKSAvIHNpemVvZihVQ2hhcikpOworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1uX3RleHQobV9zdGF0ZW1lbnQsIGNvbCkpOwog
fQogICAgIAogZG91YmxlIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uRG91YmxlKGludCBjb2wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKaW5kZXgg
NjM1MTJiYjZlYjQ5YTZlZTE5ZTcxZjFjNjdiMWZlOGYyOWY2NWM4ZC4uMzE0ZjA4MjY3NzUwYTIz
MjY4MzFhNGJlYjc1NDljMGE2ZmZmNDdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwgY29uc3Qgdm9pZCogYmxv
YiwgaW50IHNpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVGV4dChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVGV4dChpbnQg
aW5kZXgsIFN0cmluZ1ZpZXcpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kSW50KGludCBp
bmRleCwgaW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEludDY0KGludCBpbmRleCwg
aW50NjRfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmREb3VibGUoaW50IGluZGV4LCBk
b3VibGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428878</attachid>
            <date>2021-05-17 15:32:22 -0700</date>
            <delta_ts>2021-05-17 15:56:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225890-20210517153221.patch</filename>
            <type>text/plain</type>
            <size>4744</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiNWI3Y2Q5NGIzNzE5
ODViZDlhN2MwNzI2YzU0MDE2MDY1NzRhNy4uYWYwZDcxNTQ1ZmFlOGU0NzZmMTQxMmMyODYwZmUy
NTQzN2JhMWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFVURi04IGludGVybmFs
bHkgZnJvbSBTdHJpbmdzIGluc2lkZSBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBVVEYtOCBpbnRlcm5hbGx5IGZyb20g
U3RyaW5ncyBpbnNpZGUgU1FMaXRlU3RhdGVtZW50LiBPdXIgU1FMaXRlIGRhdGFiYXNlcyB1c2Ug
VVRGLTgKKyAgICAgICAgaW50ZXJuYWxseSBmb3IgdGV4dCBlbmNvZGluZyAoc2luY2Ugd2Ugb3Bl
biB0aGUgZGF0YWJhc2Ugd2l0aCBzcWxpdGUzX29wZW5fdjIoKSBhbmQgbm90CisgICAgICAgIHNx
bGl0ZTNfb3BlbjE2KCkpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgcHJvdmlkaW5n
IFVURi0xNiBzdHJpbmdzIHRvIFNRTGl0ZSwgd2hpY2ggbWVhbnQgaXQgaGFkIHRvIGNvbnZlcnQg
aXQKKyAgICAgICAgaW50ZXJuYWxseSB0byBVVEYtOC4gQWxzbywgd2hlbmV2ZXIgd2Ugd2VyZSBy
ZXF1ZXN0aW5nIGEgc3RyaW5nIGZyb20gU1FMaXRlLCBpdCBoYWQgdG8KKyAgICAgICAgY29udmVy
dCBpdCBmcm9tIFVURi04IHRvIFVURi0xNiBiZWZvcmUgcmV0dXJuaW5nIGl0IHRvIHVzLiBPdXIg
U3RyaW5nIGNvbnN0cnVjdGVkIGZyb20KKyAgICAgICAgcmV0dXJuZWQgZnJvbSBTUUxpdGVTdGF0
ZW1lbnQgd291bGQgYWxzbyBiZSAxNi1iaXQgZW5jb2RlZCwgZXZlbiBpZiBhbGwgQVNDSUkgc28g
d2Ugd2VyZQorICAgICAgICBwb3RlbnRpYWxseSB3YXN0aW5nIG1lbW9yeSB0b28uCisKKyAgICAg
ICAgV2Ugbm93IHByb3ZpZGUgVVRGLTggdG8gU1FMaXRlIGJ5IHVzaW5nIFN0cmluZ1ZpZXc6OnV0
ZjgoKS4gV2UgYWxzbyByZXF1ZXN0IFVURi04IHN0cmluZ3MKKyAgICAgICAgZnJvbSBTUUxpdGUg
YW5kIHJlbHkgb24gU3RyaW5nOjpmcm9tVVRGOCgpIHRvIGNvbnZlcnQgaXQgdG8gYSBXVEY6OlN0
cmluZy4gRm9yIGFsbCBBU0NJSQorICAgICAgICBjaGFyYWN0ZXJzLCB0aGlzIG1lYW5zIHdlJ2xs
IGVuZCB1cCB3aXRoIGEgOC1iaXQgU3RyaW5nIGFuZCBzYXZlIG1lbW9yeS4KKworICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6
CisKIDIwMjEtMDUtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBVc2Uga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFpbiB3aGVyZSBh
dmFpbGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKaW5kZXggNDhmOWFlZTJkNzFkOTFmYjQ1NzAyMjJkNGU1YjA3ODhhMGJlMTVkZi4uNGIz
ZmMwYWQ5OWY1OGU2ODExNTFiZGE0ZjRjZmY2YmFkYTc3ZDM2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTExNiwyMiArMTE2LDEz
IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0ZXh0KQogICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgY2hhcmFjdGVycywgdGV4dC5sZW5n
dGgoKSAqIHNpemVvZihVQ2hhcikpOwogfQogCi1pbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4
dChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OmJp
bmRUZXh0KGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQogewogICAgIEFTU0VSVChpbmRleCA+
IDApOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJh
bWV0ZXJDb3VudCgpKTsKIAotICAgIC8vIFN0cmluZzo6Y2hhcmFjdGVycygpIHJldHVybnMgMCBm
b3IgdGhlIGVtcHR5IHN0cmluZywgd2hpY2ggU1FMaXRlCi0gICAgLy8gdHJlYXRzIGFzIGEgbnVs
bCwgc28gd2Ugc3VwcGx5IGEgbm9uLW51bGwgcG9pbnRlciBmb3IgdGhhdCBjYXNlLgotICAgIGF1
dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0ZXh0KS51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKTsKLSAgICBVQ2hhciBhbnlDaGFyYWN0ZXIgPSAwOwotICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzOwotICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAmJiAhdGV4dC5pc051bGwoKSkK
LSAgICAgICAgY2hhcmFjdGVycyA9ICZhbnlDaGFyYWN0ZXI7Ci0gICAgZWxzZQotICAgICAgICBj
aGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotCi0gICAgcmV0dXJuIHNxbGl0ZTNf
YmluZF90ZXh0MTYobV9zdGF0ZW1lbnQsIGluZGV4LCBjaGFyYWN0ZXJzLCBzaXplb2YoVUNoYXIp
ICogdGV4dC5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgYXV0byB1dGY4VGV4dCA9
IHRleHQudXRmOCgpOworICAgIHJldHVybiBzcWxpdGUzX2JpbmRfdGV4dChtX3N0YXRlbWVudCwg
aW5kZXgsIHV0ZjhUZXh0LmRhdGEoKSwgdXRmOFRleHQubGVuZ3RoKCksIFNRTElURV9UUkFOU0lF
TlQpOwogfQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kSW50KGludCBpbmRleCwgaW50IGlu
dGVnZXIpCkBAIC0yMDksNyArMjAwLDcgQEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29s
dW1uTmFtZShpbnQgY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGNvbHVt
bkNvdW50KCkgPD0gY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19jb2x1bW5fbmFtZTE2
KG1fc3RhdGVtZW50LCBjb2wpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3FsaXRl
M19jb2x1bW5fbmFtZShtX3N0YXRlbWVudCwgY29sKSk7CiB9CiAKIFNRTFZhbHVlIFNRTGl0ZVN0
YXRlbWVudDo6Z2V0Q29sdW1uVmFsdWUoaW50IGNvbCkKQEAgLTI0OSw3ICsyNDAsNyBAQCBTdHJp
bmcgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5UZXh0KGludCBjb2wpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBpZiAoY29sdW1uQ291bnQoKSA8PSBjb2wpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihzcWxpdGUzX2NvbHVtbl90ZXh0MTYobV9zdGF0ZW1lbnQsIGNvbCkpLCBzcWxpdGUzX2Nv
bHVtbl9ieXRlczE2KG1fc3RhdGVtZW50LCBjb2wpIC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoc3FsaXRlM19jb2x1bW5fdGV4dChtX3N0YXRlbWVudCwgY29s
KSk7CiB9CiAgICAgCiBkb3VibGUgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5Eb3VibGUoaW50
IGNvbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaApp
bmRleCA2MzUxMmJiNmViNDlhNmVlMTllNzFmMWM2N2IxZmU4ZjI5ZjY1YzhkLi4zMTRmMDgyNjc3
NTBhMjMyNjgzMWE0YmViNzU0OWMwYTZmZmY0N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEJsb2IoaW50IGluZGV4LCBjb25zdCB2b2lk
KiBibG9iLCBpbnQgc2l6ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBp
bmRleCwgY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRUZXh0KGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRUZXh0
KGludCBpbmRleCwgU3RyaW5nVmlldyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRJbnQo
aW50IGluZGV4LCBpbnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kSW50NjQoaW50IGlu
ZGV4LCBpbnQ2NF90KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZERvdWJsZShpbnQgaW5k
ZXgsIGRvdWJsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428883</attachid>
            <date>2021-05-17 15:56:59 -0700</date>
            <delta_ts>2021-05-17 17:40:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225890-20210517155658.patch</filename>
            <type>text/plain</type>
            <size>4821</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyMTI0OGJjOGFkM2Mx
M2QwMzY1YzVjZjVmZWFjMWY4MWM5YjU3My4uMTQzOTQ5YWIzOWE3YTY2ODQ1MjIwMjI3NjUwMGFk
MjliNTlmNWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFVURi04IGludGVybmFs
bHkgZnJvbSBTdHJpbmdzIGluc2lkZSBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBVVEYtOCBpbnRlcm5hbGx5IGZyb20g
U3RyaW5ncyBpbnNpZGUgU1FMaXRlU3RhdGVtZW50LiBPdXIgU1FMaXRlIGRhdGFiYXNlcyB1c2Ug
VVRGLTgKKyAgICAgICAgaW50ZXJuYWxseSBmb3IgdGV4dCBlbmNvZGluZyAoc2luY2Ugd2Ugb3Bl
biB0aGUgZGF0YWJhc2Ugd2l0aCBzcWxpdGUzX29wZW5fdjIoKSBhbmQgbm90CisgICAgICAgIHNx
bGl0ZTNfb3BlbjE2KCkpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgcHJvdmlkaW5n
IFVURi0xNiBzdHJpbmdzIHRvIFNRTGl0ZSwgd2hpY2ggbWVhbnQgaXQgaGFkIHRvIGNvbnZlcnQg
aXQKKyAgICAgICAgaW50ZXJuYWxseSB0byBVVEYtOC4gQWxzbywgd2hlbmV2ZXIgd2Ugd2VyZSBy
ZXF1ZXN0aW5nIGEgc3RyaW5nIGZyb20gU1FMaXRlLCBpdCBoYWQgdG8KKyAgICAgICAgY29udmVy
dCBpdCBmcm9tIFVURi04IHRvIFVURi0xNiBiZWZvcmUgcmV0dXJuaW5nIGl0IHRvIHVzLiBPdXIg
U3RyaW5nIGNvbnN0cnVjdGVkIGZyb20KKyAgICAgICAgcmV0dXJuZWQgZnJvbSBTUUxpdGVTdGF0
ZW1lbnQgd291bGQgYWxzbyBiZSAxNi1iaXQgZW5jb2RlZCwgZXZlbiBpZiBhbGwgQVNDSUkgc28g
d2Ugd2VyZQorICAgICAgICBwb3RlbnRpYWxseSB3YXN0aW5nIG1lbW9yeSB0b28uCisKKyAgICAg
ICAgV2Ugbm93IHByb3ZpZGUgVVRGLTggdG8gU1FMaXRlIGJ5IHVzaW5nIFN0cmluZ1ZpZXc6OnV0
ZjgoKS4gV2UgYWxzbyByZXF1ZXN0IFVURi04IHN0cmluZ3MKKyAgICAgICAgZnJvbSBTUUxpdGUg
YW5kIHJlbHkgb24gU3RyaW5nOjpmcm9tVVRGOCgpIHRvIGNvbnZlcnQgaXQgdG8gYSBXVEY6OlN0
cmluZy4gRm9yIGFsbCBBU0NJSQorICAgICAgICBjaGFyYWN0ZXJzLCB0aGlzIG1lYW5zIHdlJ2xs
IGVuZCB1cCB3aXRoIGEgOC1iaXQgU3RyaW5nIGFuZCBzYXZlIG1lbW9yeS4KKworICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6
CisKIDIwMjEtMDUtMTcgIEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBbMi4zMy4xXSBGYWlscyB0byBidWlsZCB3aGVuIEhBVkVfT1BFTkdMX0VTXzMg
aXMgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAKaW5kZXggNDhmOWFlZTJkNzFkOTFmYjQ1NzAyMjJkNGU1YjA3ODhhMGJlMTVkZi4uYWU5OWFh
ZTM1YjU5ZmNkNzBjMGNjNDVmZjdhYmQ0ZmU4YjQ1YjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTExNiwyMiArMTE2LDEzIEBA
IGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgY2hhcmFjdGVycywgdGV4dC5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikpOwogfQogCi1pbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4dChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRU
ZXh0KGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQogewogICAgIEFTU0VSVChpbmRleCA+IDAp
OwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0
ZXJDb3VudCgpKTsKIAotICAgIC8vIFN0cmluZzo6Y2hhcmFjdGVycygpIHJldHVybnMgMCBmb3Ig
dGhlIGVtcHR5IHN0cmluZywgd2hpY2ggU1FMaXRlCi0gICAgLy8gdHJlYXRzIGFzIGEgbnVsbCwg
c28gd2Ugc3VwcGx5IGEgbm9uLW51bGwgcG9pbnRlciBmb3IgdGhhdCBjYXNlLgotICAgIGF1dG8g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0ZXh0KS51cGNvbnZlcnRlZENoYXJh
Y3RlcnMoKTsKLSAgICBVQ2hhciBhbnlDaGFyYWN0ZXIgPSAwOwotICAgIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzOwotICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAmJiAhdGV4dC5pc051bGwoKSkKLSAg
ICAgICAgY2hhcmFjdGVycyA9ICZhbnlDaGFyYWN0ZXI7Ci0gICAgZWxzZQotICAgICAgICBjaGFy
YWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotCi0gICAgcmV0dXJuIHNxbGl0ZTNfYmlu
ZF90ZXh0MTYobV9zdGF0ZW1lbnQsIGluZGV4LCBjaGFyYWN0ZXJzLCBzaXplb2YoVUNoYXIpICog
dGV4dC5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgYXV0byB1dGY4VGV4dCA9IHRl
eHQudXRmOCgpOworICAgIHJldHVybiBzcWxpdGUzX2JpbmRfdGV4dChtX3N0YXRlbWVudCwgaW5k
ZXgsIHV0ZjhUZXh0LmRhdGEoKSwgdXRmOFRleHQubGVuZ3RoKCksIFNRTElURV9UUkFOU0lFTlQp
OwogfQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kSW50KGludCBpbmRleCwgaW50IGludGVn
ZXIpCkBAIC0yMDksNyArMjAwLDcgQEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1u
TmFtZShpbnQgY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGNvbHVtbkNv
dW50KCkgPD0gY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19jb2x1bW5fbmFtZTE2KG1f
c3RhdGVtZW50LCBjb2wpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3FsaXRlM19j
b2x1bW5fbmFtZShtX3N0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMobV9zdGF0
ZW1lbnQsIGNvbCkpOwogfQogCiBTUUxWYWx1ZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtblZh
bHVlKGludCBjb2wpCkBAIC0yNDksNyArMjQwLDcgQEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6
Z2V0Q29sdW1uVGV4dChpbnQgY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYg
KGNvbHVtbkNvdW50KCkgPD0gY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19jb2x1bW5f
dGV4dDE2KG1fc3RhdGVtZW50LCBjb2wpKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMxNihtX3N0YXRl
bWVudCwgY29sKSAvIHNpemVvZihVQ2hhcikpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHNxbGl0ZTNfY29sdW1uX3RleHQobV9zdGF0ZW1lbnQsIGNvbCksIHNxbGl0ZTNfY29sdW1uX2J5
dGVzKG1fc3RhdGVtZW50LCBjb2wpKTsKIH0KICAgICAKIGRvdWJsZSBTUUxpdGVTdGF0ZW1lbnQ6
OmdldENvbHVtbkRvdWJsZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5oCmluZGV4IDYzNTEyYmI2ZWI0OWE2ZWUxOWU3MWYxYzY3YjFmZThm
MjlmNjVjOGQuLjMxNGYwODI2Nzc1MGEyMzI2ODMxYTRiZWI3NTQ5YzBhNmZmZjQ3ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihp
bnQgaW5kZXgsIGNvbnN0IHZvaWQqIGJsb2IsIGludCBzaXplKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgYmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgYmluZFRleHQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgYmluZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgYmluZEludChpbnQgaW5kZXgsIGludCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IGJpbmRJbnQ2NChpbnQgaW5kZXgsIGludDY0X3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIGlu
dCBiaW5kRG91YmxlKGludCBpbmRleCwgZG91YmxlKTsK
</data>
<flag name="commit-queue"
          id="449951"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428892</attachid>
            <date>2021-05-17 16:52:20 -0700</date>
            <delta_ts>2021-05-17 18:41:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225890-20210517165219.patch</filename>
            <type>text/plain</type>
            <size>6017</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyMTI0OGJjOGFkM2Mx
M2QwMzY1YzVjZjVmZWFjMWY4MWM5YjU3My4uMTQzOTQ5YWIzOWE3YTY2ODQ1MjIwMjI3NjUwMGFk
MjliNTlmNWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFVURi04IGludGVybmFs
bHkgZnJvbSBTdHJpbmdzIGluc2lkZSBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBVVEYtOCBpbnRlcm5hbGx5IGZyb20g
U3RyaW5ncyBpbnNpZGUgU1FMaXRlU3RhdGVtZW50LiBPdXIgU1FMaXRlIGRhdGFiYXNlcyB1c2Ug
VVRGLTgKKyAgICAgICAgaW50ZXJuYWxseSBmb3IgdGV4dCBlbmNvZGluZyAoc2luY2Ugd2Ugb3Bl
biB0aGUgZGF0YWJhc2Ugd2l0aCBzcWxpdGUzX29wZW5fdjIoKSBhbmQgbm90CisgICAgICAgIHNx
bGl0ZTNfb3BlbjE2KCkpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgcHJvdmlkaW5n
IFVURi0xNiBzdHJpbmdzIHRvIFNRTGl0ZSwgd2hpY2ggbWVhbnQgaXQgaGFkIHRvIGNvbnZlcnQg
aXQKKyAgICAgICAgaW50ZXJuYWxseSB0byBVVEYtOC4gQWxzbywgd2hlbmV2ZXIgd2Ugd2VyZSBy
ZXF1ZXN0aW5nIGEgc3RyaW5nIGZyb20gU1FMaXRlLCBpdCBoYWQgdG8KKyAgICAgICAgY29udmVy
dCBpdCBmcm9tIFVURi04IHRvIFVURi0xNiBiZWZvcmUgcmV0dXJuaW5nIGl0IHRvIHVzLiBPdXIg
U3RyaW5nIGNvbnN0cnVjdGVkIGZyb20KKyAgICAgICAgcmV0dXJuZWQgZnJvbSBTUUxpdGVTdGF0
ZW1lbnQgd291bGQgYWxzbyBiZSAxNi1iaXQgZW5jb2RlZCwgZXZlbiBpZiBhbGwgQVNDSUkgc28g
d2Ugd2VyZQorICAgICAgICBwb3RlbnRpYWxseSB3YXN0aW5nIG1lbW9yeSB0b28uCisKKyAgICAg
ICAgV2Ugbm93IHByb3ZpZGUgVVRGLTggdG8gU1FMaXRlIGJ5IHVzaW5nIFN0cmluZ1ZpZXc6OnV0
ZjgoKS4gV2UgYWxzbyByZXF1ZXN0IFVURi04IHN0cmluZ3MKKyAgICAgICAgZnJvbSBTUUxpdGUg
YW5kIHJlbHkgb24gU3RyaW5nOjpmcm9tVVRGOCgpIHRvIGNvbnZlcnQgaXQgdG8gYSBXVEY6OlN0
cmluZy4gRm9yIGFsbCBBU0NJSQorICAgICAgICBjaGFyYWN0ZXJzLCB0aGlzIG1lYW5zIHdlJ2xs
IGVuZCB1cCB3aXRoIGEgOC1iaXQgU3RyaW5nIGFuZCBzYXZlIG1lbW9yeS4KKworICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6
CisKIDIwMjEtMDUtMTcgIEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBbMi4zMy4xXSBGYWlscyB0byBidWlsZCB3aGVuIEhBVkVfT1BFTkdMX0VTXzMg
aXMgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAKaW5kZXggNDhmOWFlZTJkNzFkOTFmYjQ1NzAyMjJkNGU1YjA3ODhhMGJlMTVkZi4uMzI4YWJm
MmVjZjZhNzc1YWZiY2M1NWI2OWNlYjk1MGZmNTZiNTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTExNiwyMiArMTE2LDEzIEBA
IGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgY2hhcmFjdGVycywgdGV4dC5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikpOwogfQogCi1pbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4dChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRU
ZXh0KGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQogewogICAgIEFTU0VSVChpbmRleCA+IDAp
OwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0
ZXJDb3VudCgpKTsKIAotICAgIC8vIFN0cmluZzo6Y2hhcmFjdGVycygpIHJldHVybnMgMCBmb3Ig
dGhlIGVtcHR5IHN0cmluZywgd2hpY2ggU1FMaXRlCi0gICAgLy8gdHJlYXRzIGFzIGEgbnVsbCwg
c28gd2Ugc3VwcGx5IGEgbm9uLW51bGwgcG9pbnRlciBmb3IgdGhhdCBjYXNlLgotICAgIGF1dG8g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0ZXh0KS51cGNvbnZlcnRlZENoYXJh
Y3RlcnMoKTsKLSAgICBVQ2hhciBhbnlDaGFyYWN0ZXIgPSAwOwotICAgIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzOwotICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAmJiAhdGV4dC5pc051bGwoKSkKLSAg
ICAgICAgY2hhcmFjdGVycyA9ICZhbnlDaGFyYWN0ZXI7Ci0gICAgZWxzZQotICAgICAgICBjaGFy
YWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotCi0gICAgcmV0dXJuIHNxbGl0ZTNfYmlu
ZF90ZXh0MTYobV9zdGF0ZW1lbnQsIGluZGV4LCBjaGFyYWN0ZXJzLCBzaXplb2YoVUNoYXIpICog
dGV4dC5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgYXV0byB1dGY4VGV4dCA9IHRl
eHQudXRmOCgpOworICAgIHJldHVybiBzcWxpdGUzX2JpbmRfdGV4dChtX3N0YXRlbWVudCwgaW5k
ZXgsIHV0ZjhUZXh0LmRhdGEoKSwgdXRmOFRleHQubGVuZ3RoKCksIFNRTElURV9UUkFOU0lFTlQp
OwogfQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kSW50KGludCBpbmRleCwgaW50IGludGVn
ZXIpCkBAIC0yMDksNyArMjAwLDcgQEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1u
TmFtZShpbnQgY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGNvbHVtbkNv
dW50KCkgPD0gY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19jb2x1bW5fbmFtZTE2KG1f
c3RhdGVtZW50LCBjb2wpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3FsaXRlM19j
b2x1bW5fbmFtZShtX3N0YXRlbWVudCwgY29sKSk7CiB9CiAKIFNRTFZhbHVlIFNRTGl0ZVN0YXRl
bWVudDo6Z2V0Q29sdW1uVmFsdWUoaW50IGNvbCkKQEAgLTIyNCwxOCArMjE1LDE2IEBAIFNRTFZh
bHVlIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uVmFsdWUoaW50IGNvbCkKICAgICAvLyAiKG1v
c3RseSkgaWdub3JlZCIKICAgICBzcWxpdGUzX3ZhbHVlKiB2YWx1ZSA9IHNxbGl0ZTNfY29sdW1u
X3ZhbHVlKG1fc3RhdGVtZW50LCBjb2wpOwogICAgIHN3aXRjaCAoc3FsaXRlM192YWx1ZV90eXBl
KHZhbHVlKSkgewotICAgICAgICBjYXNlIFNRTElURV9JTlRFR0VSOiAgICAvLyBTUUxWYWx1ZSBh
bmQgSlMgZG9uJ3QgcmVwcmVzZW50IGludGVnZXJzLCBzbyB1c2UgRkxPQVQgLWNhc2UKLSAgICAg
ICAgY2FzZSBTUUxJVEVfRkxPQVQ6Ci0gICAgICAgICAgICByZXR1cm4gc3FsaXRlM192YWx1ZV9k
b3VibGUodmFsdWUpOwotICAgICAgICBjYXNlIFNRTElURV9CTE9COiAgICAgICAvLyBTUUxWYWx1
ZSBhbmQgSlMgZG9uJ3QgcmVwcmVzZW50IGJsb2JzLCBzbyB1c2UgVEVYVCAtY2FzZQotICAgICAg
ICBjYXNlIFNRTElURV9URVhUOiB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfdmFsdWVfdGV4dDE2KHZhbHVl
KSk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUo
c3RyaW5nKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNRTElURV9OVUxMOgotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNRTElURV9JTlRFR0VSOiAvLyBTUUxWYWx1ZSBhbmQgSlMgZG9uJ3QgcmVwcmVz
ZW50IGludGVnZXJzLCBzbyB1c2UgRkxPQVQgLWNhc2UKKyAgICBjYXNlIFNRTElURV9GTE9BVDoK
KyAgICAgICAgcmV0dXJuIHNxbGl0ZTNfdmFsdWVfZG91YmxlKHZhbHVlKTsKKyAgICBjYXNlIFNR
TElURV9CTE9COiAvLyBTUUxWYWx1ZSBhbmQgSlMgZG9uJ3QgcmVwcmVzZW50IGJsb2JzLCBzbyB1
c2UgVEVYVCAtY2FzZQorICAgIGNhc2UgU1FMSVRFX1RFWFQ6CisgICAgICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHNxbGl0ZTNfdmFsdWVfdGV4dCh2YWx1ZSksIHNxbGl0ZTNfdmFsdWVfYnl0
ZXModmFsdWUpKTsKKyAgICBjYXNlIFNRTElURV9OVUxMOgorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTI0OSw3ICsyMzgsNyBAQCBTdHJpbmcgU1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5UZXh0KGludCBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAo
Y29sdW1uQ291bnQoKSA8PSBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1
cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl90
ZXh0MTYobV9zdGF0ZW1lbnQsIGNvbCkpLCBzcWxpdGUzX2NvbHVtbl9ieXRlczE2KG1fc3RhdGVt
ZW50LCBjb2wpIC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
c3FsaXRlM19jb2x1bW5fdGV4dChtX3N0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0
ZXMobV9zdGF0ZW1lbnQsIGNvbCkpOwogfQogICAgIAogZG91YmxlIFNRTGl0ZVN0YXRlbWVudDo6
Z2V0Q29sdW1uRG91YmxlKGludCBjb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmgKaW5kZXggNjM1MTJiYjZlYjQ5YTZlZTE5ZTcxZjFjNjdiMWZlOGYy
OWY2NWM4ZC4uMzE0ZjA4MjY3NzUwYTIzMjY4MzFhNGJlYjc1NDljMGE2ZmZmNDdmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaApAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGlu
dCBpbmRleCwgY29uc3Qgdm9pZCogYmxvYiwgaW50IHNpemUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGludCBiaW5kSW50KGludCBpbmRleCwgaW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgYmluZEludDY0KGludCBpbmRleCwgaW50NjRfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGJpbmREb3VibGUoaW50IGluZGV4LCBkb3VibGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428904</attachid>
            <date>2021-05-17 18:41:01 -0700</date>
            <delta_ts>2021-05-18 07:42:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225890-20210517184100.patch</filename>
            <type>text/plain</type>
            <size>7154</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNjYjVjMWI1Y2VmY2Q0
ZmE4M2U4OWNkZWQ5NGM0MWU2ZTgwOGExMi4uZTM4ZjFjZWNmOWFhZTZiOTNkNzEzODVhNWM3OGI3
Y2Q5MDI0YjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFVURi04IGludGVybmFs
bHkgZnJvbSBTdHJpbmdzIGluc2lkZSBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBVVEYtOCBpbnRlcm5hbGx5IGZyb20g
U3RyaW5ncyBpbnNpZGUgU1FMaXRlU3RhdGVtZW50LiBPdXIgU1FMaXRlIGRhdGFiYXNlcyB1c2Ug
VVRGLTgKKyAgICAgICAgaW50ZXJuYWxseSBmb3IgdGV4dCBlbmNvZGluZyAoc2luY2Ugd2Ugb3Bl
biB0aGUgZGF0YWJhc2Ugd2l0aCBzcWxpdGUzX29wZW5fdjIoKSBhbmQgbm90CisgICAgICAgIHNx
bGl0ZTNfb3BlbjE2KCkpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgcHJvdmlkaW5n
IFVURi0xNiBzdHJpbmdzIHRvIFNRTGl0ZSwgd2hpY2ggbWVhbnQgaXQgaGFkIHRvIGNvbnZlcnQg
aXQKKyAgICAgICAgaW50ZXJuYWxseSB0byBVVEYtOC4gQWxzbywgd2hlbmV2ZXIgd2Ugd2VyZSBy
ZXF1ZXN0aW5nIGEgc3RyaW5nIGZyb20gU1FMaXRlLCBpdCBoYWQgdG8KKyAgICAgICAgY29udmVy
dCBpdCBmcm9tIFVURi04IHRvIFVURi0xNiBiZWZvcmUgcmV0dXJuaW5nIGl0IHRvIHVzLiBPdXIg
U3RyaW5nIGNvbnN0cnVjdGVkIGZyb20KKyAgICAgICAgcmV0dXJuZWQgZnJvbSBTUUxpdGVTdGF0
ZW1lbnQgd291bGQgYWxzbyBiZSAxNi1iaXQgZW5jb2RlZCwgZXZlbiBpZiBhbGwgQVNDSUkgc28g
d2Ugd2VyZQorICAgICAgICBwb3RlbnRpYWxseSB3YXN0aW5nIG1lbW9yeSB0b28uCisKKyAgICAg
ICAgV2Ugbm93IHByb3ZpZGUgVVRGLTggdG8gU1FMaXRlIGJ5IHVzaW5nIFN0cmluZ1ZpZXc6OnV0
ZjgoKS4gV2UgYWxzbyByZXF1ZXN0IFVURi04IHN0cmluZ3MKKyAgICAgICAgZnJvbSBTUUxpdGUg
YW5kIHJlbHkgb24gU3RyaW5nOjpmcm9tVVRGOCgpIHRvIGNvbnZlcnQgaXQgdG8gYSBXVEY6OlN0
cmluZy4gRm9yIGFsbCBBU0NJSQorICAgICAgICBjaGFyYWN0ZXJzLCB0aGlzIG1lYW5zIHdlJ2xs
IGVuZCB1cCB3aXRoIGEgOC1iaXQgU3RyaW5nIGFuZCBzYXZlIG1lbW9yeS4KKworICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6
CisKIDIwMjEtMDUtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEcm9wIHVubmVjZXNzYXJ5IFNRTGl0ZURhdGFiYXNlOjp1cGRhdGVMYXN0Q2hhbmdlc0NvdW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuY3BwCmluZGV4IGFjNzhiYjkyZDc0OTUyMTE0OGYxYjFlYTMzOTE5Yzk0ZDU3MjNlMTQu
Ljg4MjlkOWI4MmVjYzJjMjQzZDgzZmFkN2NhY2Q3MzVjN2U3NTkwZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAt
MzYzLDcgKzM2Myw3IEBAIGJvb2wgQ29va2llSmFyREI6Omhhc0Nvb2tpZXMoY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIHN0YXRlbWVudC5iaW5kTnVsbCgyKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgcmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAg
ICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgU3RyaW5nKCIqLiIpICsgcmVnaXN0cmFibGVEb21h
aW4uc3RyaW5nKCkpOworICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgbWFrZVN0cmluZygi
Ki4iLCByZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkpOwogICAgIH0KIAogICAgIHJldHVybiBz
dGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1c7CkBAIC00MDYsNyArNDA2LDcgQEAgT3B0aW9u
YWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QKICAgICBpZiAoQ29va2llVXRpbDo6aXNJUEFkZHJlc3MocmVxdWVz
dEhvc3QpIHx8ICFyZXF1ZXN0SG9zdC5jb250YWlucygnLicpIHx8IHJlZ2lzdHJhYmxlRG9tYWlu
LmlzRW1wdHkoKSkKICAgICAgICAgcHN0bXQtPmJpbmROdWxsKDYpOwogICAgIGVsc2UKLSAgICAg
ICAgcHN0bXQtPmJpbmRUZXh0KDYsIFN0cmluZygiKi4iKSArIHJlZ2lzdHJhYmxlRG9tYWluLnN0
cmluZygpKTsKKyAgICAgICAgcHN0bXQtPmJpbmRUZXh0KDYsIG1ha2VTdHJpbmcoIiouIiwgcmVn
aXN0cmFibGVEb21haW4uc3RyaW5nKCkpKTsKIAogICAgIFZlY3RvcjxDb29raWU+IHJlc3VsdHM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAK
aW5kZXggMDIwY2U1NzhjYjFlZjExZmY1MDMzMDNmNWJkZGUyODRmOTVhNGU1Yi4uMmNmZDhjMTk2
M2M1Y2E2ZjlkM2U1NDk0MWM0NjIzN2YwZDg1ZjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTExMiwyMiArMTEyLDEzIEBAIGlu
dCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0
KQogICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgY2hhcmFjdGVycywgdGV4dC5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcikpOwogfQogCi1pbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4dChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0
KGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQogewogICAgIEFTU0VSVChpbmRleCA+IDApOwog
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0ZXJD
b3VudCgpKTsKIAotICAgIC8vIFN0cmluZzo6Y2hhcmFjdGVycygpIHJldHVybnMgMCBmb3IgdGhl
IGVtcHR5IHN0cmluZywgd2hpY2ggU1FMaXRlCi0gICAgLy8gdHJlYXRzIGFzIGEgbnVsbCwgc28g
d2Ugc3VwcGx5IGEgbm9uLW51bGwgcG9pbnRlciBmb3IgdGhhdCBjYXNlLgotICAgIGF1dG8gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0ZXh0KS51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKTsKLSAgICBVQ2hhciBhbnlDaGFyYWN0ZXIgPSAwOwotICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzOwotICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAmJiAhdGV4dC5pc051bGwoKSkKLSAgICAg
ICAgY2hhcmFjdGVycyA9ICZhbnlDaGFyYWN0ZXI7Ci0gICAgZWxzZQotICAgICAgICBjaGFyYWN0
ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotCi0gICAgcmV0dXJuIHNxbGl0ZTNfYmluZF90
ZXh0MTYobV9zdGF0ZW1lbnQsIGluZGV4LCBjaGFyYWN0ZXJzLCBzaXplb2YoVUNoYXIpICogdGV4
dC5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgYXV0byB1dGY4VGV4dCA9IHRleHQu
dXRmOCgpOworICAgIHJldHVybiBzcWxpdGUzX2JpbmRfdGV4dChtX3N0YXRlbWVudCwgaW5kZXgs
IHV0ZjhUZXh0LmRhdGEoKSwgdXRmOFRleHQubGVuZ3RoKCksIFNRTElURV9UUkFOU0lFTlQpOwog
fQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kSW50KGludCBpbmRleCwgaW50IGludGVnZXIp
CkBAIC0yMDUsNyArMTk2LDcgQEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uTmFt
ZShpbnQgY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGNvbHVtbkNvdW50
KCkgPD0gY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFN0cmluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19jb2x1bW5fbmFtZTE2KG1fc3Rh
dGVtZW50LCBjb2wpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3FsaXRlM19jb2x1
bW5fbmFtZShtX3N0YXRlbWVudCwgY29sKSk7CiB9CiAKIFNRTFZhbHVlIFNRTGl0ZVN0YXRlbWVu
dDo6Z2V0Q29sdW1uVmFsdWUoaW50IGNvbCkKQEAgLTIyMCwxOCArMjExLDE2IEBAIFNRTFZhbHVl
IFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uVmFsdWUoaW50IGNvbCkKICAgICAvLyAiKG1vc3Rs
eSkgaWdub3JlZCIKICAgICBzcWxpdGUzX3ZhbHVlKiB2YWx1ZSA9IHNxbGl0ZTNfY29sdW1uX3Zh
bHVlKG1fc3RhdGVtZW50LCBjb2wpOwogICAgIHN3aXRjaCAoc3FsaXRlM192YWx1ZV90eXBlKHZh
bHVlKSkgewotICAgICAgICBjYXNlIFNRTElURV9JTlRFR0VSOiAgICAvLyBTUUxWYWx1ZSBhbmQg
SlMgZG9uJ3QgcmVwcmVzZW50IGludGVnZXJzLCBzbyB1c2UgRkxPQVQgLWNhc2UKLSAgICAgICAg
Y2FzZSBTUUxJVEVfRkxPQVQ6Ci0gICAgICAgICAgICByZXR1cm4gc3FsaXRlM192YWx1ZV9kb3Vi
bGUodmFsdWUpOwotICAgICAgICBjYXNlIFNRTElURV9CTE9COiAgICAgICAvLyBTUUxWYWx1ZSBh
bmQgSlMgZG9uJ3QgcmVwcmVzZW50IGJsb2JzLCBzbyB1c2UgVEVYVCAtY2FzZQotICAgICAgICBj
YXNlIFNRTElURV9URVhUOiB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfdmFsdWVfdGV4dDE2KHZhbHVlKSk7
Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoc3Ry
aW5nKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNRTElURV9OVUxMOgotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNRTElURV9JTlRFR0VSOiAvLyBTUUxWYWx1ZSBhbmQgSlMgZG9uJ3QgcmVwcmVzZW50
IGludGVnZXJzLCBzbyB1c2UgRkxPQVQgLWNhc2UKKyAgICBjYXNlIFNRTElURV9GTE9BVDoKKyAg
ICAgICAgcmV0dXJuIHNxbGl0ZTNfdmFsdWVfZG91YmxlKHZhbHVlKTsKKyAgICBjYXNlIFNRTElU
RV9CTE9COiAvLyBTUUxWYWx1ZSBhbmQgSlMgZG9uJ3QgcmVwcmVzZW50IGJsb2JzLCBzbyB1c2Ug
VEVYVCAtY2FzZQorICAgIGNhc2UgU1FMSVRFX1RFWFQ6CisgICAgICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KHNxbGl0ZTNfdmFsdWVfdGV4dCh2YWx1ZSksIHNxbGl0ZTNfdmFsdWVfYnl0ZXMo
dmFsdWUpKTsKKyAgICBjYXNlIFNRTElURV9OVUxMOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTI0NSw3ICsyMzQsNyBAQCBTdHJpbmcgU1FMaXRlU3RhdGVtZW50OjpnZXRD
b2x1bW5UZXh0KGludCBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoY29s
dW1uQ291bnQoKSA8PSBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4g
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl90ZXh0
MTYobV9zdGF0ZW1lbnQsIGNvbCkpLCBzcWxpdGUzX2NvbHVtbl9ieXRlczE2KG1fc3RhdGVtZW50
LCBjb2wpIC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3Fs
aXRlM19jb2x1bW5fdGV4dChtX3N0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMo
bV9zdGF0ZW1lbnQsIGNvbCkpOwogfQogICAgIAogZG91YmxlIFNRTGl0ZVN0YXRlbWVudDo6Z2V0
Q29sdW1uRG91YmxlKGludCBjb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlU3RhdGVtZW50LmgKaW5kZXggMTIwY2UxNjhhNmEyYmVkZjQ3NjI2MTM5NDFiMTM4MDE4NTAx
ODhjYi4uYzgyYTIzZWQ0M2E0ZTNhYjg2YTM5ZWEyYWU1MjNjNDgxOTBhZmIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaApAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBp
bmRleCwgY29uc3Qgdm9pZCogYmxvYiwgaW50IHNpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGlu
dCBiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGludCBiaW5kVGV4dChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBiaW5kSW50KGludCBpbmRleCwgaW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
YmluZEludDY0KGludCBpbmRleCwgaW50NjRfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJp
bmREb3VibGUoaW50IGluZGV4LCBkb3VibGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428936</attachid>
            <date>2021-05-18 07:42:20 -0700</date>
            <delta_ts>2021-05-18 10:09:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225890-20210518074219.patch</filename>
            <type>text/plain</type>
            <size>7438</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlOTcyNDJmNDI1NmFj
NDgyOWMyY2I4YmUyYjIwODdlZDczNWZiMC4uYTE0NmY3MWY0YTQ5ZDg5MmM3ZTI1YzMxYjhkN2Qx
ZjlkYTQxZDQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFVURi04IGludGVybmFs
bHkgZnJvbSBTdHJpbmdzIGluc2lkZSBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBVVEYtOCBpbnRlcm5hbGx5IGZyb20gU3Ry
aW5ncyBpbnNpZGUgU1FMaXRlU3RhdGVtZW50LiBPdXIgU1FMaXRlIGRhdGFiYXNlcyB1c2UgVVRG
LTgKKyAgICAgICAgaW50ZXJuYWxseSBmb3IgdGV4dCBlbmNvZGluZyAoc2luY2Ugd2Ugb3BlbiB0
aGUgZGF0YWJhc2Ugd2l0aCBzcWxpdGUzX29wZW5fdjIoKSBhbmQgbm90CisgICAgICAgIHNxbGl0
ZTNfb3BlbjE2KCkpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgcHJvdmlkaW5nIFVU
Ri0xNiBzdHJpbmdzIHRvIFNRTGl0ZSwgd2hpY2ggbWVhbnQgaXQgaGFkIHRvIGNvbnZlcnQgaXQK
KyAgICAgICAgaW50ZXJuYWxseSB0byBVVEYtOC4gQWxzbywgd2hlbmV2ZXIgd2Ugd2VyZSByZXF1
ZXN0aW5nIGEgc3RyaW5nIGZyb20gU1FMaXRlLCBpdCBoYWQgdG8KKyAgICAgICAgY29udmVydCBp
dCBmcm9tIFVURi04IHRvIFVURi0xNiBiZWZvcmUgcmV0dXJuaW5nIGl0IHRvIHVzLiBPdXIgU3Ry
aW5nIGNvbnN0cnVjdGVkIGZyb20KKyAgICAgICAgcmV0dXJuZWQgZnJvbSBTUUxpdGVTdGF0ZW1l
bnQgd291bGQgYWxzbyBiZSAxNi1iaXQgZW5jb2RlZCwgZXZlbiBpZiBhbGwgQVNDSUkgc28gd2Ug
d2VyZQorICAgICAgICBwb3RlbnRpYWxseSB3YXN0aW5nIG1lbW9yeSB0b28uCisKKyAgICAgICAg
V2Ugbm93IHByb3ZpZGUgVVRGLTggdG8gU1FMaXRlIGJ5IHVzaW5nIFN0cmluZ1ZpZXc6OnV0Zjgo
KS4gV2UgYWxzbyByZXF1ZXN0IFVURi04IHN0cmluZ3MKKyAgICAgICAgZnJvbSBTUUxpdGUgYW5k
IHJlbHkgb24gU3RyaW5nOjpmcm9tVVRGOCgpIHRvIGNvbnZlcnQgaXQgdG8gYSBXVEY6OlN0cmlu
Zy4gRm9yIGFsbCBBU0NJSQorICAgICAgICBjaGFyYWN0ZXJzLCB0aGlzIG1lYW5zIHdlJ2xsIGVu
ZCB1cCB3aXRoIGEgOC1iaXQgU3RyaW5nIGFuZCBzYXZlIG1lbW9yeS4KKworICAgICAgICAqIHBs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6
OmdldENvbHVtbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpnZXRD
b2x1bW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisK
IDIwMjEtMDUtMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtNZWRpYVN0cmVhbV1bR1N0cmVhbWVyXSBGbGFreSBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3Bw
CmluZGV4IGRmZjg5MTZkMDU1ZDE0ZDEwMWYxZGI4ODkwNmQzMTE5YmViYzAzNjQuLmExMmYxZTE0
NzJlYmZkOWViZTE1M2JkN2FhY2EyOTQ5NjZlYjZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzYzLDcgKzM2
Myw3IEBAIGJvb2wgQ29va2llSmFyREI6Omhhc0Nvb2tpZXMoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIHN0YXRlbWVudC5iaW5kTnVsbCgyKTsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgcmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgICAgICBzdGF0
ZW1lbnQuYmluZFRleHQoMiwgU3RyaW5nKCIqLiIpICsgcmVnaXN0cmFibGVEb21haW4uc3RyaW5n
KCkpOworICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgbWFrZVN0cmluZygiKi4iLCByZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSkpOwogICAgIH0KIAogICAgIHJldHVybiBzdGF0ZW1lbnQu
c3RlcCgpID09IFNRTElURV9ST1c7CkBAIC00MDYsNyArNDA2LDcgQEAgT3B0aW9uYWw8VmVjdG9y
PENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QKICAgICBpZiAoQ29va2llVXRpbDo6aXNJUEFkZHJlc3MocmVxdWVzdEhvc3QpIHx8
ICFyZXF1ZXN0SG9zdC5jb250YWlucygnLicpIHx8IHJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHko
KSkKICAgICAgICAgcHN0bXQtPmJpbmROdWxsKDYpOwogICAgIGVsc2UKLSAgICAgICAgcHN0bXQt
PmJpbmRUZXh0KDYsIFN0cmluZygiKi4iKSArIHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsK
KyAgICAgICAgcHN0bXQtPmJpbmRUZXh0KDYsIG1ha2VTdHJpbmcoIiouIiwgcmVnaXN0cmFibGVE
b21haW4uc3RyaW5nKCkpKTsKIAogICAgIFZlY3RvcjxDb29raWU+IHJlc3VsdHM7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggNzA5
ZDQxYmYxNGQ5OWRmNzVlYWM4Y2I3ODA2YTkwMmJkYTI5NDg2MC4uODMzZDUwOGI5ZWRiZDA0Yzg5
YjM0MDFhOTBiMGJmYTdkOWU1YWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTEwNywyMiArMTA3LDE3IEBAIGludCBTUUxpdGVT
dGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiBiaW5kQmxvYihpbmRleCwgY2hhcmFjdGVycywgdGV4dC5sZW5ndGgoKSAqIHNpemVvZihV
Q2hhcikpOwogfQogCi1pbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4dChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdGV4dCkKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRl
eCwgU3RyaW5nVmlldyB0ZXh0KQogewogICAgIEFTU0VSVChpbmRleCA+IDApOwogICAgIEFTU0VS
VChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsK
IAotICAgIC8vIFN0cmluZzo6Y2hhcmFjdGVycygpIHJldHVybnMgMCBmb3IgdGhlIGVtcHR5IHN0
cmluZywgd2hpY2ggU1FMaXRlCi0gICAgLy8gdHJlYXRzIGFzIGEgbnVsbCwgc28gd2Ugc3VwcGx5
IGEgbm9uLW51bGwgcG9pbnRlciBmb3IgdGhhdCBjYXNlLgotICAgIGF1dG8gdXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0ZXh0KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAg
ICBVQ2hhciBhbnlDaGFyYWN0ZXIgPSAwOwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzOwot
ICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAmJiAhdGV4dC5pc051bGwoKSkKLSAgICAgICAgY2hhcmFj
dGVycyA9ICZhbnlDaGFyYWN0ZXI7Ci0gICAgZWxzZQotICAgICAgICBjaGFyYWN0ZXJzID0gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIC8vIEZhc3QgcGF0aCB3aGVuIHRoZSBpbnB1dCB0ZXh0
IGlzIGFsbCBBU0NJSS4KKyAgICBpZiAodGV4dC5pczhCaXQoKSAmJiB0ZXh0LmlzQWxsQVNDSUko
KSkKKyAgICAgICAgcmV0dXJuIHNxbGl0ZTNfYmluZF90ZXh0KG1fc3RhdGVtZW50LCBpbmRleCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGV4dC5jaGFyYWN0ZXJzOCgpKSwgdGV4dC5s
ZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CiAKLSAgICByZXR1cm4gc3FsaXRlM19iaW5kX3Rl
eHQxNihtX3N0YXRlbWVudCwgaW5kZXgsIGNoYXJhY3RlcnMsIHNpemVvZihVQ2hhcikgKiB0ZXh0
Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKKyAgICBhdXRvIHV0ZjhUZXh0ID0gdGV4dC51
dGY4KCk7CisgICAgcmV0dXJuIHNxbGl0ZTNfYmluZF90ZXh0KG1fc3RhdGVtZW50LCBpbmRleCwg
dXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CiB9
CiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRJbnQoaW50IGluZGV4LCBpbnQgaW50ZWdlcikK
QEAgLTE4OSw3ICsxODQsNyBAQCBTdHJpbmcgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5OYW1l
KGludCBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoY29sdW1uQ291bnQo
KSA8PSBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9uYW1lMTYobV9zdGF0
ZW1lbnQsIGNvbCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzcWxpdGUzX2NvbHVt
bl9uYW1lKG1fc3RhdGVtZW50LCBjb2wpKTsKIH0KIAogU1FMVmFsdWUgU1FMaXRlU3RhdGVtZW50
OjpnZXRDb2x1bW5WYWx1ZShpbnQgY29sKQpAQCAtMjA0LDE4ICsxOTksMTYgQEAgU1FMVmFsdWUg
U1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5WYWx1ZShpbnQgY29sKQogICAgIC8vICIobW9zdGx5
KSBpZ25vcmVkIgogICAgIHNxbGl0ZTNfdmFsdWUqIHZhbHVlID0gc3FsaXRlM19jb2x1bW5fdmFs
dWUobV9zdGF0ZW1lbnQsIGNvbCk7CiAgICAgc3dpdGNoIChzcWxpdGUzX3ZhbHVlX3R5cGUodmFs
dWUpKSB7Ci0gICAgICAgIGNhc2UgU1FMSVRFX0lOVEVHRVI6ICAgIC8vIFNRTFZhbHVlIGFuZCBK
UyBkb24ndCByZXByZXNlbnQgaW50ZWdlcnMsIHNvIHVzZSBGTE9BVCAtY2FzZQotICAgICAgICBj
YXNlIFNRTElURV9GTE9BVDoKLSAgICAgICAgICAgIHJldHVybiBzcWxpdGUzX3ZhbHVlX2RvdWJs
ZSh2YWx1ZSk7Ci0gICAgICAgIGNhc2UgU1FMSVRFX0JMT0I6ICAgICAgIC8vIFNRTFZhbHVlIGFu
ZCBKUyBkb24ndCByZXByZXNlbnQgYmxvYnMsIHNvIHVzZSBURVhUIC1jYXNlCi0gICAgICAgIGNh
c2UgU1FMSVRFX1RFWFQ6IHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM192YWx1ZV90ZXh0MTYodmFsdWUpKTsK
LSAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShzdHJp
bmcpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU1FMSVRFX05VTEw6Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU1FMSVRFX0lOVEVHRVI6IC8vIFNRTFZhbHVlIGFuZCBKUyBkb24ndCByZXByZXNlbnQg
aW50ZWdlcnMsIHNvIHVzZSBGTE9BVCAtY2FzZQorICAgIGNhc2UgU1FMSVRFX0ZMT0FUOgorICAg
ICAgICByZXR1cm4gc3FsaXRlM192YWx1ZV9kb3VibGUodmFsdWUpOworICAgIGNhc2UgU1FMSVRF
X0JMT0I6IC8vIFNRTFZhbHVlIGFuZCBKUyBkb24ndCByZXByZXNlbnQgYmxvYnMsIHNvIHVzZSBU
RVhUIC1jYXNlCisgICAgY2FzZSBTUUxJVEVfVEVYVDoKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoc3FsaXRlM192YWx1ZV90ZXh0KHZhbHVlKSwgc3FsaXRlM192YWx1ZV9ieXRlcyh2
YWx1ZSkpOworICAgIGNhc2UgU1FMSVRFX05VTEw6CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMjI5LDcgKzIyMiw3IEBAIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmdldENv
bHVtblRleHQoaW50IGNvbCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmIChjb2x1
bW5Db3VudCgpIDw9IGNvbCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfY29sdW1uX3RleHQx
NihtX3N0YXRlbWVudCwgY29sKSksIHNxbGl0ZTNfY29sdW1uX2J5dGVzMTYobV9zdGF0ZW1lbnQs
IGNvbCkgLyBzaXplb2YoVUNoYXIpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzcWxp
dGUzX2NvbHVtbl90ZXh0KG1fc3RhdGVtZW50LCBjb2wpLCBzcWxpdGUzX2NvbHVtbl9ieXRlcyht
X3N0YXRlbWVudCwgY29sKSk7CiB9CiAgICAgCiBkb3VibGUgU1FMaXRlU3RhdGVtZW50OjpnZXRD
b2x1bW5Eb3VibGUoaW50IGNvbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVTdGF0ZW1lbnQuaAppbmRleCAxZDYzMDk4MDk5ZjdjOGQ4ZTdmMGQ1NTRlNGJmN2I0YTBhYTIx
YzhlLi44NDBlYThmMDZhMmE4MjAzNGRmMjFkMmUwMmU1ZTM1MmQ3MWFkNzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEJsb2IoaW50IGlu
ZGV4LCBjb25zdCB2b2lkKiBibG9iLCBpbnQgc2l6ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
aW50IGJpbmRUZXh0KGludCBpbmRleCwgY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgaW50IGJpbmRUZXh0KGludCBpbmRleCwgU3RyaW5nVmlldyk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgaW50IGJpbmRJbnQoaW50IGluZGV4LCBpbnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBi
aW5kSW50NjQoaW50IGluZGV4LCBpbnQ2NF90KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmlu
ZERvdWJsZShpbnQgaW5kZXgsIGRvdWJsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428950</attachid>
            <date>2021-05-18 10:09:54 -0700</date>
            <delta_ts>2021-05-18 11:59:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225890-20210518100953.patch</filename>
            <type>text/plain</type>
            <size>7428</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhiNWExYTZhYWU3ZTY3
YTA2NGY2YTQyYjZkZjNlMjkxN2IzNGM4OC4uZDFhYjU3M2M3ZDJkNGM2YTc1YWVhYjUyM2RhZTA2
NjQ3MjIyODRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFVURi04IGludGVybmFs
bHkgZnJvbSBTdHJpbmdzIGluc2lkZSBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBVVEYtOCBpbnRlcm5hbGx5IGZyb20gU3Ry
aW5ncyBpbnNpZGUgU1FMaXRlU3RhdGVtZW50LiBPdXIgU1FMaXRlIGRhdGFiYXNlcyB1c2UgVVRG
LTgKKyAgICAgICAgaW50ZXJuYWxseSBmb3IgdGV4dCBlbmNvZGluZyAoc2luY2Ugd2Ugb3BlbiB0
aGUgZGF0YWJhc2Ugd2l0aCBzcWxpdGUzX29wZW5fdjIoKSBhbmQgbm90CisgICAgICAgIHNxbGl0
ZTNfb3BlbjE2KCkpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgcHJvdmlkaW5nIFVU
Ri0xNiBzdHJpbmdzIHRvIFNRTGl0ZSwgd2hpY2ggbWVhbnQgaXQgaGFkIHRvIGNvbnZlcnQgaXQK
KyAgICAgICAgaW50ZXJuYWxseSB0byBVVEYtOC4gQWxzbywgd2hlbmV2ZXIgd2Ugd2VyZSByZXF1
ZXN0aW5nIGEgc3RyaW5nIGZyb20gU1FMaXRlLCBpdCBoYWQgdG8KKyAgICAgICAgY29udmVydCBp
dCBmcm9tIFVURi04IHRvIFVURi0xNiBiZWZvcmUgcmV0dXJuaW5nIGl0IHRvIHVzLiBPdXIgU3Ry
aW5nIGNvbnN0cnVjdGVkIGZyb20KKyAgICAgICAgcmV0dXJuZWQgZnJvbSBTUUxpdGVTdGF0ZW1l
bnQgd291bGQgYWxzbyBiZSAxNi1iaXQgZW5jb2RlZCwgZXZlbiBpZiBhbGwgQVNDSUkgc28gd2Ug
d2VyZQorICAgICAgICBwb3RlbnRpYWxseSB3YXN0aW5nIG1lbW9yeSB0b28uCisKKyAgICAgICAg
V2Ugbm93IHByb3ZpZGUgVVRGLTggdG8gU1FMaXRlIGJ5IHVzaW5nIFN0cmluZ1ZpZXc6OnV0Zjgo
KS4gV2UgYWxzbyByZXF1ZXN0IFVURi04IHN0cmluZ3MKKyAgICAgICAgZnJvbSBTUUxpdGUgYW5k
IHJlbHkgb24gU3RyaW5nOjpmcm9tVVRGOCgpIHRvIGNvbnZlcnQgaXQgdG8gYSBXVEY6OlN0cmlu
Zy4gRm9yIGFsbCBBU0NJSQorICAgICAgICBjaGFyYWN0ZXJzLCB0aGlzIG1lYW5zIHdlJ2xsIGVu
ZCB1cCB3aXRoIGEgOC1iaXQgU3RyaW5nIGFuZCBzYXZlIG1lbW9yeS4KKworICAgICAgICAqIHBs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6
OmdldENvbHVtbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpnZXRD
b2x1bW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisK
IDIwMjEtMDUtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHN1cmUgU1FMaXRlU3RhdGVtZW50IG9iamVjdHMgZ2V0IGRlc3Ryb3llZCBiZWZvcmUgdGhl
IGRhdGFiYXNlIGlzIGNsb3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggZGZmODkxNmQwNTVkMTRkMTAxZjFkYjg4
OTA2ZDMxMTliZWJjMDM2NC4uYTEyZjFlMTQ3MmViZmQ5ZWJlMTUzYmQ3YWFjYTI5NDk2NmViNmYy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBDb29raWVKYXJEQjo6aGFzQ29v
a2llcyhjb25zdCBVUkwmIHVybCkKICAgICAgICAgc3RhdGVtZW50LmJpbmROdWxsKDIpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCByZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSk7Ci0gICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBTdHJpbmcoIiouIikg
KyByZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7CisgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4
dCgyLCBtYWtlU3RyaW5nKCIqLiIsIHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVzsKQEAgLTQwNiw3
ICs0MDYsNyBAQCBPcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdAogICAgIGlmIChDb29raWVVdGlsOjpp
c0lQQWRkcmVzcyhyZXF1ZXN0SG9zdCkgfHwgIXJlcXVlc3RIb3N0LmNvbnRhaW5zKCcuJykgfHwg
cmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQogICAgICAgICBwc3RtdC0+YmluZE51bGwoNik7
CiAgICAgZWxzZQotICAgICAgICBwc3RtdC0+YmluZFRleHQoNiwgU3RyaW5nKCIqLiIpICsgcmVn
aXN0cmFibGVEb21haW4uc3RyaW5nKCkpOworICAgICAgICBwc3RtdC0+YmluZFRleHQoNiwgbWFr
ZVN0cmluZygiKi4iLCByZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkpOwogCiAgICAgVmVjdG9y
PENvb2tpZT4gcmVzdWx0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlU3RhdGVtZW50LmNwcAppbmRleCBjNTA4NGY2NzA3ZGM2NmRkODVjYTk0OTVhZjA4NWEzODE4
YjhkNDJiLi4yMjhkZjA2M2IzODU5ODVjNTUxMDdjZjNmMDNiNWYzNmY5ZGU2NmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMTEw
LDIyICsxMTAsMTcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIGJpbmRCbG9iKGluZGV4LCBjaGFyYWN0ZXJz
LCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7CiB9CiAKLWludCBTUUxpdGVTdGF0ZW1l
bnQ6OmJpbmRUZXh0KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQoraW50IFNRTGl0ZVN0
YXRlbWVudDo6YmluZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpCiB7CiAgICAgQVNT
RVJUKGluZGV4ID4gMCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkg
PD0gYmluZFBhcmFtZXRlckNvdW50KCkpOwogCi0gICAgLy8gU3RyaW5nOjpjaGFyYWN0ZXJzKCkg
cmV0dXJucyAwIGZvciB0aGUgZW1wdHkgc3RyaW5nLCB3aGljaCBTUUxpdGUKLSAgICAvLyB0cmVh
dHMgYXMgYSBudWxsLCBzbyB3ZSBzdXBwbHkgYSBub24tbnVsbCBwb2ludGVyIGZvciB0aGF0IGNh
c2UuCi0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHRleHQpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIFVDaGFyIGFueUNoYXJhY3RlciA9IDA7Ci0gICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnM7Ci0gICAgaWYgKHRleHQuaXNFbXB0eSgpICYmICF0ZXh0
LmlzTnVsbCgpKQotICAgICAgICBjaGFyYWN0ZXJzID0gJmFueUNoYXJhY3RlcjsKLSAgICBlbHNl
Ci0gICAgICAgIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgLy8gRmFz
dCBwYXRoIHdoZW4gdGhlIGlucHV0IHRleHQgaXMgYWxsIEFTQ0lJLgorICAgIGlmICh0ZXh0Lmlz
OEJpdCgpICYmIHRleHQuaXNBbGxBU0NJSSgpKQorICAgICAgICByZXR1cm4gc3FsaXRlM19iaW5k
X3RleHQobV9zdGF0ZW1lbnQsIGluZGV4LCB0ZXh0Lmxlbmd0aCgpID8gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4odGV4dC5jaGFyYWN0ZXJzOCgpKSA6ICIiLCB0ZXh0Lmxlbmd0aCgpLCBT
UUxJVEVfVFJBTlNJRU5UKTsKIAotICAgIHJldHVybiBzcWxpdGUzX2JpbmRfdGV4dDE2KG1fc3Rh
dGVtZW50LCBpbmRleCwgY2hhcmFjdGVycywgc2l6ZW9mKFVDaGFyKSAqIHRleHQubGVuZ3RoKCks
IFNRTElURV9UUkFOU0lFTlQpOworICAgIGF1dG8gdXRmOFRleHQgPSB0ZXh0LnV0ZjgoKTsKKyAg
ICByZXR1cm4gc3FsaXRlM19iaW5kX3RleHQobV9zdGF0ZW1lbnQsIGluZGV4LCB1dGY4VGV4dC5k
YXRhKCksIHV0ZjhUZXh0Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKIH0KIAogaW50IFNR
TGl0ZVN0YXRlbWVudDo6YmluZEludChpbnQgaW5kZXgsIGludCBpbnRlZ2VyKQpAQCAtMTkyLDcg
KzE4Nyw3IEBAIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbk5hbWUoaW50IGNvbCkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmIChjb2x1bW5Db3VudCgpIDw9IGNvbCkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfY29sdW1uX25hbWUxNihtX3N0YXRlbWVudCwgY29s
KSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1uX25hbWUobV9z
dGF0ZW1lbnQsIGNvbCkpOwogfQogCiBTUUxWYWx1ZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVt
blZhbHVlKGludCBjb2wpCkBAIC0yMDcsMTggKzIwMiwxNiBAQCBTUUxWYWx1ZSBTUUxpdGVTdGF0
ZW1lbnQ6OmdldENvbHVtblZhbHVlKGludCBjb2wpCiAgICAgLy8gIihtb3N0bHkpIGlnbm9yZWQi
CiAgICAgc3FsaXRlM192YWx1ZSogdmFsdWUgPSBzcWxpdGUzX2NvbHVtbl92YWx1ZShtX3N0YXRl
bWVudCwgY29sKTsKICAgICBzd2l0Y2ggKHNxbGl0ZTNfdmFsdWVfdHlwZSh2YWx1ZSkpIHsKLSAg
ICAgICAgY2FzZSBTUUxJVEVfSU5URUdFUjogICAgLy8gU1FMVmFsdWUgYW5kIEpTIGRvbid0IHJl
cHJlc2VudCBpbnRlZ2Vycywgc28gdXNlIEZMT0FUIC1jYXNlCi0gICAgICAgIGNhc2UgU1FMSVRF
X0ZMT0FUOgotICAgICAgICAgICAgcmV0dXJuIHNxbGl0ZTNfdmFsdWVfZG91YmxlKHZhbHVlKTsK
LSAgICAgICAgY2FzZSBTUUxJVEVfQkxPQjogICAgICAgLy8gU1FMVmFsdWUgYW5kIEpTIGRvbid0
IHJlcHJlc2VudCBibG9icywgc28gdXNlIFRFWFQgLWNhc2UKLSAgICAgICAgY2FzZSBTUUxJVEVf
VEVYVDogewotICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0cmluZyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX3ZhbHVlX3RleHQxNih2YWx1ZSkpOwotICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKHN0cmluZyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBTUUxJVEVfTlVMTDoKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTUUxJ
VEVfSU5URUdFUjogLy8gU1FMVmFsdWUgYW5kIEpTIGRvbid0IHJlcHJlc2VudCBpbnRlZ2Vycywg
c28gdXNlIEZMT0FUIC1jYXNlCisgICAgY2FzZSBTUUxJVEVfRkxPQVQ6CisgICAgICAgIHJldHVy
biBzcWxpdGUzX3ZhbHVlX2RvdWJsZSh2YWx1ZSk7CisgICAgY2FzZSBTUUxJVEVfQkxPQjogLy8g
U1FMVmFsdWUgYW5kIEpTIGRvbid0IHJlcHJlc2VudCBibG9icywgc28gdXNlIFRFWFQgLWNhc2UK
KyAgICBjYXNlIFNRTElURV9URVhUOgorICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChz
cWxpdGUzX3ZhbHVlX3RleHQodmFsdWUpLCBzcWxpdGUzX3ZhbHVlX2J5dGVzKHZhbHVlKSk7Cisg
ICAgY2FzZSBTUUxJVEVfTlVMTDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0yMzIsNyArMjI1LDcgQEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uVGV4dChp
bnQgY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGNvbHVtbkNvdW50KCkg
PD0gY29sKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19jb2x1bW5fdGV4dDE2KG1fc3RhdGVt
ZW50LCBjb2wpKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMxNihtX3N0YXRlbWVudCwgY29sKSAvIHNp
emVvZihVQ2hhcikpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1u
X3RleHQobV9zdGF0ZW1lbnQsIGNvbCksIHNxbGl0ZTNfY29sdW1uX2J5dGVzKG1fc3RhdGVtZW50
LCBjb2wpKTsKIH0KICAgICAKIGRvdWJsZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbkRvdWJs
ZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5oCmluZGV4IDFkNjMwOTgwOTlmN2M4ZDhlN2YwZDU1NGU0YmY3YjRhMGFhMjFjOGUuLjg0MGVh
OGYwNmEyYTgyMDM0ZGYyMWQyZTAyZTVlMzUyZDcxYWQ3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0
IHZvaWQqIGJsb2IsIGludCBzaXplKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEJsb2Io
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZFRl
eHQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmlu
ZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmlu
ZEludChpbnQgaW5kZXgsIGludCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRJbnQ2NChp
bnQgaW5kZXgsIGludDY0X3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kRG91YmxlKGlu
dCBpbmRleCwgZG91YmxlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>