<?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>229848</bug_id>
          
          <creation_ts>2021-09-02 20:11:50 -0700</creation_ts>
          <short_desc>FontFaceSet.has() needs to react to style changes</short_desc>
          <delta_ts>2021-09-09 02:39:34 -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>New Bugs</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>
          
          <blocked>229850</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1790031</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-02 20:11:50 -0700</bug_when>
    <thetext>FontFaceSet.has() needs to react to style changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790033</commentid>
    <comment_count>1</comment_count>
      <attachid>437238</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-02 20:15:09 -0700</bug_when>
    <thetext>Created attachment 437238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790035</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-02 20:16:14 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790040</commentid>
    <comment_count>3</comment_count>
      <attachid>437239</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-02 20:34:54 -0700</bug_when>
    <thetext>Created attachment 437239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790215</commentid>
    <comment_count>4</comment_count>
      <attachid>437239</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-09-03 09:47:58 -0700</bug_when>
    <thetext>Comment on attachment 437239
Patch

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

&gt; Source/WebCore/css/FontFaceSet.cpp:110
&gt; +    auto protect = m_backing;

Same as the others, would use

Ref protect = m_backing;

&gt; Source/WebCore/css/FontFaceSet.cpp:113
&gt;      return m_backing-&gt;hasFace(face.backing());

Seems like this should use protect to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790325</commentid>
    <comment_count>5</comment_count>
      <attachid>437305</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-03 13:13:11 -0700</bug_when>
    <thetext>Created attachment 437305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790422</commentid>
    <comment_count>6</comment_count>
      <attachid>437305</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-03 16:07:29 -0700</bug_when>
    <thetext>Comment on attachment 437305
Patch

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

I don’t understand why m_backing is not sufficient protection and why we need a local variable.

&gt; Source/WebCore/css/FontFaceSet.cpp:113
&gt; -    return m_backing-&gt;hasFace(face.backing());
&gt; +    Ref protect = m_backing;
&gt; +    if (face.backing().cssConnection())
&gt; +        protect-&gt;updateStyleIfNeeded();
&gt; +    return protect-&gt;hasFace(face.backing());

I don’t understand why m_backing is not sufficient protection and why we need a local variable. A &quot;protect&quot; idiom should be very rarely needed. Instead the top level callers of functions need to use Ref or RefPtr.

If FontFaceSet *itself* might be dereferenced as a side effect of updating style, then the correct question is who could call this on a FontFaceSet without holding a reference to the FontFaceSet. If the call is from JavaScript, then the JavaScript bindings themselves will be holding a reference to the FontFaceSet, so it would have to be a call from within WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790478</commentid>
    <comment_count>7</comment_count>
      <attachid>437305</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-03 21:17:40 -0700</bug_when>
    <thetext>Comment on attachment 437305
Patch

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

&gt;&gt; Source/WebCore/css/FontFaceSet.cpp:113
&gt;&gt; +    return protect-&gt;hasFace(face.backing());
&gt; 
&gt; I don’t understand why m_backing is not sufficient protection and why we need a local variable. A &quot;protect&quot; idiom should be very rarely needed. Instead the top level callers of functions need to use Ref or RefPtr.
&gt; 
&gt; If FontFaceSet *itself* might be dereferenced as a side effect of updating style, then the correct question is who could call this on a FontFaceSet without holding a reference to the FontFaceSet. If the call is from JavaScript, then the JavaScript bindings themselves will be holding a reference to the FontFaceSet, so it would have to be a call from within WebCore.

You&apos;re right - the only callers of this are from JS. So, JS will maintain a ref to FontFaceSet, and FontFaceSet will maintain a ref to CSSFontFaceSet. So this doesn&apos;t need to be protected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790479</commentid>
    <comment_count>8</comment_count>
      <attachid>437337</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-03 21:20:16 -0700</bug_when>
    <thetext>Created attachment 437337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790487</commentid>
    <comment_count>9</comment_count>
      <attachid>437305</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-03 22:00:10 -0700</bug_when>
    <thetext>Comment on attachment 437305
Patch

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

&gt;&gt;&gt; Source/WebCore/css/FontFaceSet.cpp:113
&gt;&gt;&gt; +    return protect-&gt;hasFace(face.backing());
&gt;&gt; 
&gt;&gt; I don’t understand why m_backing is not sufficient protection and why we need a local variable. A &quot;protect&quot; idiom should be very rarely needed. Instead the top level callers of functions need to use Ref or RefPtr.
&gt;&gt; 
&gt;&gt; If FontFaceSet *itself* might be dereferenced as a side effect of updating style, then the correct question is who could call this on a FontFaceSet without holding a reference to the FontFaceSet. If the call is from JavaScript, then the JavaScript bindings themselves will be holding a reference to the FontFaceSet, so it would have to be a call from within WebCore.
&gt; 
&gt; You&apos;re right - the only callers of this are from JS. So, JS will maintain a ref to FontFaceSet, and FontFaceSet will maintain a ref to CSSFontFaceSet. So this doesn&apos;t need to be protected.

https://bugs.webkit.org/show_bug.cgi?id=229911</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791820</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 02:38:48 -0700</bug_when>
    <thetext>Committed r282204 (241491@main): &lt;https://commits.webkit.org/241491@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437337.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791821</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-09 02:39:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/82916442&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437238</attachid>
            <date>2021-09-02 20:15:09 -0700</date>
            <delta_ts>2021-09-02 20:34:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229848-20210902201508.patch</filename>
            <type>text/plain</type>
            <size>4667</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmZDIyYjg4M2I2MGM1
YmExYjgyNGU2MzE5ZjJiNDBlMTcxNjRmNS4uZThkZGVlYzA1YjdkODZiMjRhN2Y0YjNiMTYyMzY5
ZDNjZDdlOGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA5LTAyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udEZhY2VT
ZXQuaGFzKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hhbmdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBjb250ZW50IHNheXMgImRvY3Vt
ZW50LmZvbnRzLmhhcyguLi4pIiwgdGhlICIuaGFzKC4uLikiIHBhcnQgbmVlZHMgdG8KKyAgICAg
ICAgdXBkYXRlIHN0eWxlIGluc3RlYWQgb2YgdGhlICJkb2N1bWVudC5mb250cyIgcGFydC4gVGhp
cyBpcyBiZWNhdXNlIGl0J3MKKyAgICAgICAgdG90YWxseSBsZWdhbCBmb3IgY29udGVudCB0byBz
YXk6CisKKyAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5mb250czsKKyAgICAgICAgLy8gTW9kaWZ5
IHN0eWxlIGhlcmUKKyAgICAgICAgLi4uIGYuaGFzKC4uLikgLi4uIDw9PT0gVGhpcyBuZWVkcyB0
byByZWZsZWN0IHRoZSBzdHlsZSBjaGFuZ2VzLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFz
Lmh0bWwKKworICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RmFjZVNldDo6aGFzIGNvbnN0KToKKwogMjAyMS0wOS0wMiAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdW0dQVVBdIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDIGRvZXMgbm90IHdvcmsgcHJvcGVybHkgd2hlbiBhdWRpbyBhbmQgdmlkZW8gZXhj
aGFuZ2UgdGhlaXIgdHJhY2sgSURzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAppbmRleCA0
YjZiYWY3MDUyNjBmZDE1ZGRhZDgyMzViYTg1NjlmNzY0OGE3YmQ3Li42YmEwODE2Zjg2YjYyYWFm
YTIzYzcyMmQyNGRjMTM4MjVhMDI1NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAK
QEAgLTEwNyw2ICsxMDcsOSBAQCBGb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6On5QZW5kaW5n
UHJvbWlzZSgpID0gZGVmYXVsdDsKIAogYm9vbCBGb250RmFjZVNldDo6aGFzKEZvbnRGYWNlJiBm
YWNlKSBjb25zdAogeworICAgIGF1dG8gcHJvdGVjdCA9IG1fYmFja2luZzsKKyAgICBpZiAoZmFj
ZS5iYWNraW5nKCkuY3NzQ29ubmVjdGlvbigpKQorICAgICAgICBwcm90ZWN0LT51cGRhdGVTdHls
ZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1fYmFja2luZy0+aGFzRmFjZShmYWNlLmJhY2tpbmco
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGExYTFlYTA1NjNlZTgw
YzdmNTNhMDU3MThjOWYxZTE3ODIwNmJlMGUuLmI2YzI1MzBkY2RiZjAxYmI1YzcxZDJhZGZmYjMx
MzNhN2E5ZDhhZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA5LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgRm9udEZhY2VTZXQuaGFzKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hh
bmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
ODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Zm9udC1sb2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy5odG1sOiBBZGRlZC4KKwogMjAyMS0wOS0wMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtDT09QXSBodG1sL2Ny
b3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3AtbmF2aWdhdGUtc2FtZS1vcmlnaW4tY3NwLXNh
bmRib3guaHRtbCBXUFQgdGVzdCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udC1sb2FkaW5nL2ZvbnRm
YWNlc2V0LWhhcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udC1sb2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTkyNjYwMDhkMDYxYTQ4YTdlYjFlYzA2M2ZkZTYwMWM5YjEyMGNj
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBmb250ZmFjZXNldC1oYXMKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnQt
bG9hZGluZy9mb250ZmFjZXNldC1oYXMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjFmNGY0YjYzOWU2YjdmMTdmYWY4MmE0ZWQ3NDBjZjUyZmMyMzIwOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFzLmh0bWwKQEAgLTAsMCAr
MSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkIGlkPSJoZWFkIj4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTXlsZXMgQy4gTWF4
ZmllbGQiIGhyZWY9Im1tYXhmaWVsZEBhcHBsZS5jb20iPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnQtbG9hZGluZy0zLyNkb20tZm9udGZh
Y2VzZXQtaGFzIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iRW5zdXJlIHRoYXQgY2Fs
bGluZyBGb250RmFjZVNldC5oYXMoKSB3b3JrcyBwcm9wZXJseS4iIC8+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgaWQ9InN0eWxlIj4K
K0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiAiV2ViRm9udCI7CisgICAgc3JjOiB1cmwo
InJlc291cmNlcy9Sb2NoZXN0ZXIub3RmIikgZm9ybWF0KCJvcGVudHlwZSIpOworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3Rlc3QoZnVuY3Rpb24odCkgeworICAgIGxl
dCBmb250cyA9IGRvY3VtZW50LmZvbnRzOworICAgIGxldCBmb250ID0gZm9udHMua2V5cygpLm5l
eHQoKS52YWx1ZTsKKyAgICBsZXQgZm9udDIgPSBuZXcgRm9udEZhY2UoIldlYkZvbnQyIiwgInVy
bCgncmVzb3VyY2VzL1JvY2hlc3Rlci5vdGYnKSBmb3JtYXQoJ29wZW50eXBlJykiKTsKKyAgICBh
c3NlcnRfdHJ1ZShmb250cy5oYXMoZm9udCkpOworICAgIGFzc2VydF9mYWxzZShmb250cy5oYXMo
Zm9udDIpKTsKKyAgICBmb250cy5hZGQoZm9udDIpOworICAgIGFzc2VydF90cnVlKGZvbnRzLmhh
cyhmb250KSk7CisgICAgYXNzZXJ0X3RydWUoZm9udHMuaGFzKGZvbnQyKSk7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImhlYWQiKS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3R5bGUiKSk7CisgICAgYXNzZXJ0X2ZhbHNlKGZvbnRzLmhhcyhmb250KSk7CisgICAg
YXNzZXJ0X3RydWUoZm9udHMuaGFzKGZvbnQyKSk7CisgICAgZm9udHMuZGVsZXRlKGZvbnQyKTsK
KyAgICBhc3NlcnRfZmFsc2UoZm9udHMuaGFzKGZvbnQpKTsKKyAgICBhc3NlcnRfZmFsc2UoZm9u
dHMuaGFzKGZvbnQyKSk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437239</attachid>
            <date>2021-09-02 20:34:54 -0700</date>
            <delta_ts>2021-09-03 13:13:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229848-20210902203453.patch</filename>
            <type>text/plain</type>
            <size>4768</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmZDIyYjg4M2I2MGM1
YmExYjgyNGU2MzE5ZjJiNDBlMTcxNjRmNS4uZThkZGVlYzA1YjdkODZiMjRhN2Y0YjNiMTYyMzY5
ZDNjZDdlOGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA5LTAyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udEZhY2VT
ZXQuaGFzKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hhbmdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBjb250ZW50IHNheXMgImRvY3Vt
ZW50LmZvbnRzLmhhcyguLi4pIiwgdGhlICIuaGFzKC4uLikiIHBhcnQgbmVlZHMgdG8KKyAgICAg
ICAgdXBkYXRlIHN0eWxlIGluc3RlYWQgb2YgdGhlICJkb2N1bWVudC5mb250cyIgcGFydC4gVGhp
cyBpcyBiZWNhdXNlIGl0J3MKKyAgICAgICAgdG90YWxseSBsZWdhbCBmb3IgY29udGVudCB0byBz
YXk6CisKKyAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5mb250czsKKyAgICAgICAgLy8gTW9kaWZ5
IHN0eWxlIGhlcmUKKyAgICAgICAgLi4uIGYuaGFzKC4uLikgLi4uIDw9PT0gVGhpcyBuZWVkcyB0
byByZWZsZWN0IHRoZSBzdHlsZSBjaGFuZ2VzLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFz
Lmh0bWwKKworICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RmFjZVNldDo6aGFzIGNvbnN0KToKKwogMjAyMS0wOS0wMiAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdW0dQVVBdIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDIGRvZXMgbm90IHdvcmsgcHJvcGVybHkgd2hlbiBhdWRpbyBhbmQgdmlkZW8gZXhj
aGFuZ2UgdGhlaXIgdHJhY2sgSURzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAppbmRleCA0
YjZiYWY3MDUyNjBmZDE1ZGRhZDgyMzViYTg1NjlmNzY0OGE3YmQ3Li42YmEwODE2Zjg2YjYyYWFm
YTIzYzcyMmQyNGRjMTM4MjVhMDI1NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAK
QEAgLTEwNyw2ICsxMDcsOSBAQCBGb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6On5QZW5kaW5n
UHJvbWlzZSgpID0gZGVmYXVsdDsKIAogYm9vbCBGb250RmFjZVNldDo6aGFzKEZvbnRGYWNlJiBm
YWNlKSBjb25zdAogeworICAgIGF1dG8gcHJvdGVjdCA9IG1fYmFja2luZzsKKyAgICBpZiAoZmFj
ZS5iYWNraW5nKCkuY3NzQ29ubmVjdGlvbigpKQorICAgICAgICBwcm90ZWN0LT51cGRhdGVTdHls
ZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1fYmFja2luZy0+aGFzRmFjZShmYWNlLmJhY2tpbmco
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGExYTFlYTA1NjNlZTgw
YzdmNTNhMDU3MThjOWYxZTE3ODIwNmJlMGUuLjQ3Zjk4ZmVjNzRmZWYxNWU3MzRkOTIyMjIzYzdj
Y2ZkNGY5Njc2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTA5LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgRm9udEZhY2VTZXQuaGFzKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hh
bmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
ODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyB0ZXN0IGlzIGJlaW5nIHVwc3RyZWFtZWQgdG8gV1BUIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0L3B1bGwvMzAzMjIKKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRp
bmcvZm9udGZhY2VzZXQtaGFzLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA5LTAyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0NPT1BdIGh0bWwvY3Jvc3Mtb3JpZ2lu
LW9wZW5lci1wb2xpY3kvY29vcC1uYXZpZ2F0ZS1zYW1lLW9yaWdpbi1jc3Atc2FuZGJveC5odG1s
IFdQVCB0ZXN0IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hOTI2NjAwOGQwNjFhNDhhN2ViMWVjMDYzZmRlNjAxYzliMTIwY2M5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorCitQQVNTIGZvbnRmYWNlc2V0LWhhcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udC1sb2FkaW5nL2Zv
bnRmYWNlc2V0LWhhcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMzdlOGE4ZTkxMTEwNGZjMGRhYzg1YmZhMGJlNjdkMTIwOGZiOTA4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMuaHRtbApAQCAtMCwwICsxLDM3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQgaWQ9ImhlYWQiPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJNeWxlcyBDLiBNYXhmaWVsZCIgaHJl
Zj0ibW1heGZpZWxkQGFwcGxlLmNvbSI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udC1sb2FkaW5nLTMvI2RvbS1mb250ZmFjZXNldC1oYXMi
PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJFbnN1cmUgdGhhdCBjYWxsaW5nIEZvbnRG
YWNlU2V0LmhhcygpIHdvcmtzIHByb3Blcmx5LiIgLz4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzdHlsZSBpZD0ic3R5bGUiPgorQGZvbnQtZmFj
ZSB7CisgICAgZm9udC1mYW1pbHk6ICJXZWJGb250IjsKKyAgICBzcmM6IHVybCgicmVzb3VyY2Vz
L1JvY2hlc3Rlci5vdGYiKSBmb3JtYXQoIm9wZW50eXBlIik7Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgordGVzdChmdW5jdGlvbih0KSB7CisgICAgbGV0IGZvbnRzID0g
ZG9jdW1lbnQuZm9udHM7CisgICAgbGV0IGZvbnQgPSBmb250cy5rZXlzKCkubmV4dCgpLnZhbHVl
OworICAgIGxldCBmb250MiA9IG5ldyBGb250RmFjZSgiV2ViRm9udDIiLCAidXJsKCdyZXNvdXJj
ZXMvR2VuUjEwMi53b2ZmMicpIGZvcm1hdCgnd29mZjInKSIpOworICAgIGFzc2VydF90cnVlKGZv
bnRzLmhhcyhmb250KSk7CisgICAgYXNzZXJ0X2ZhbHNlKGZvbnRzLmhhcyhmb250MikpOworICAg
IGZvbnRzLmFkZChmb250Mik7CisgICAgYXNzZXJ0X3RydWUoZm9udHMuaGFzKGZvbnQpKTsKKyAg
ICBhc3NlcnRfdHJ1ZShmb250cy5oYXMoZm9udDIpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaGVhZCIpLnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHlsZSIp
KTsKKyAgICBhc3NlcnRfZmFsc2UoZm9udHMuaGFzKGZvbnQpKTsKKyAgICBhc3NlcnRfdHJ1ZShm
b250cy5oYXMoZm9udDIpKTsKKyAgICBmb250cy5kZWxldGUoZm9udDIpOworICAgIGFzc2VydF9m
YWxzZShmb250cy5oYXMoZm9udCkpOworICAgIGFzc2VydF9mYWxzZShmb250cy5oYXMoZm9udDIp
KTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437305</attachid>
            <date>2021-09-03 13:13:11 -0700</date>
            <delta_ts>2021-09-03 21:20:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229848-20210903131310.patch</filename>
            <type>text/plain</type>
            <size>4812</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM1MWQxYzA1ZmY2MmRl
Njk2MDRhNzhmYTA0NGNlZTVmZmQxNWNiYy4uYjg1YTdiYTVhY2YyMDFlM2FhYTE1NjVjN2Y5NTMx
YmU0Yjk5ODY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA5LTAzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udEZhY2VT
ZXQuaGFzKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hhbmdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBjb250ZW50IHNheXMgImRvY3Vt
ZW50LmZvbnRzLmhhcyguLi4pIiwgdGhlICIuaGFzKC4uLikiIHBhcnQgbmVlZHMgdG8KKyAgICAg
ICAgdXBkYXRlIHN0eWxlIGluc3RlYWQgb2YgdGhlICJkb2N1bWVudC5mb250cyIgcGFydC4gVGhp
cyBpcyBiZWNhdXNlIGl0J3MKKyAgICAgICAgdG90YWxseSBsZWdhbCBmb3IgY29udGVudCB0byBz
YXk6CisKKyAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5mb250czsKKyAgICAgICAgLy8gTW9kaWZ5
IHN0eWxlIGhlcmUKKyAgICAgICAgLi4uIGYuaGFzKC4uLikgLi4uIDw9PT0gVGhpcyBuZWVkcyB0
byByZWZsZWN0IHRoZSBzdHlsZSBjaGFuZ2VzLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFz
Lmh0bWwKKworICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RmFjZVNldDo6aGFzIGNvbnN0KToKKwogMjAyMS0wOS0wMyAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnRGYWNlU2V0LmNoZWNrKCkg
bmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5j
cHAKaW5kZXggZmRjMjI0NmNjZjBhMzEyYjliYjgzMGY2YjBjMTRjNTEyYjUzMDQ2NC4uYWIzMjc2
N2YwMTA1M2E4NzM0ZjJlMzMwYzhkYWExYWUzZDhiMWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuY3BwCkBAIC0xMDcsNyArMTA3LDEwIEBAIEZvbnRGYWNlU2V0OjpQZW5kaW5nUHJvbWlz
ZTo6flBlbmRpbmdQcm9taXNlKCkgPSBkZWZhdWx0OwogCiBib29sIEZvbnRGYWNlU2V0OjpoYXMo
Rm9udEZhY2UmIGZhY2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYmFja2luZy0+aGFzRmFjZShm
YWNlLmJhY2tpbmcoKSk7CisgICAgUmVmIHByb3RlY3QgPSBtX2JhY2tpbmc7CisgICAgaWYgKGZh
Y2UuYmFja2luZygpLmNzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgcHJvdGVjdC0+dXBkYXRlU3R5
bGVJZk5lZWRlZCgpOworICAgIHJldHVybiBwcm90ZWN0LT5oYXNGYWNlKGZhY2UuYmFja2luZygp
KTsKIH0KIAogc2l6ZV90IEZvbnRGYWNlU2V0OjpzaXplKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IDlhMTQxZDgwODBmYmE1MDg0OGUyYmI1NDE5NTdiZDI3NDQ3MDE3NWUuLmMw
MzE5ODUxNzRmNGY0ZjVkMjMyMzE0MThhNzkzZjA4ZjU3OGJkMmMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA5LTAzICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udEZhY2VTZXQuaGFzKCkg
bmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IHdhcyBsYW5kZWQgdXBzdHJlYW0gaW4g
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvcHVsbC8zMDMyMgorCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udC1sb2FkaW5nL2ZvbnRmYWNl
c2V0LWhhcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMuaHRtbDogQWRkZWQuCisKIDIw
MjEtMDktMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5l
ci1wb2xpY3kvY29vcC1jc3Atc2FuZGJveC1uYXZpZ2F0ZS5odHRwcy5odG1sIGlzIGEgZmxha3kg
ZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZv
bnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MjY2
MDA4ZDA2MWE0OGE3ZWIxZWMwNjNmZGU2MDFjOWIxMjBjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udC1s
b2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgZm9udGZhY2VzZXQtaGFzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZm9udC1sb2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzN2U4YThl
OTExMTA0ZmMwZGFjODViZmEwYmU2N2QxMjA4ZmI5MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udC1sb2Fk
aW5nL2ZvbnRmYWNlc2V0LWhhcy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZCBpZD0iaGVhZCI+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9ImF1dGhvciIgdGl0bGU9Ik15bGVzIEMuIE1heGZpZWxkIiBocmVmPSJtbWF4ZmllbGRA
YXBwbGUuY29tIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1mb250LWxvYWRpbmctMy8jZG9tLWZvbnRmYWNlc2V0LWhhcyI+Cis8bWV0YSBuYW1l
PSJhc3NlcnQiIGNvbnRlbnQ9IkVuc3VyZSB0aGF0IGNhbGxpbmcgRm9udEZhY2VTZXQuaGFzKCkg
d29ya3MgcHJvcGVybHkuIiAvPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHN0eWxlIGlkPSJzdHlsZSI+CitAZm9udC1mYWNlIHsKKyAgICBmb250
LWZhbWlseTogIldlYkZvbnQiOworICAgIHNyYzogdXJsKCJyZXNvdXJjZXMvUm9jaGVzdGVyLm90
ZiIpIGZvcm1hdCgib3BlbnR5cGUiKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+Cit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICBsZXQgZm9udHMgPSBkb2N1bWVudC5mb250
czsKKyAgICBsZXQgZm9udCA9IGZvbnRzLmtleXMoKS5uZXh0KCkudmFsdWU7CisgICAgbGV0IGZv
bnQyID0gbmV3IEZvbnRGYWNlKCJXZWJGb250MiIsICJ1cmwoJ3Jlc291cmNlcy9HZW5SMTAyLndv
ZmYyJykgZm9ybWF0KCd3b2ZmMicpIik7CisgICAgYXNzZXJ0X3RydWUoZm9udHMuaGFzKGZvbnQp
KTsKKyAgICBhc3NlcnRfZmFsc2UoZm9udHMuaGFzKGZvbnQyKSk7CisgICAgZm9udHMuYWRkKGZv
bnQyKTsKKyAgICBhc3NlcnRfdHJ1ZShmb250cy5oYXMoZm9udCkpOworICAgIGFzc2VydF90cnVl
KGZvbnRzLmhhcyhmb250MikpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoZWFkIiku
cmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlIikpOworICAgIGFzc2Vy
dF9mYWxzZShmb250cy5oYXMoZm9udCkpOworICAgIGFzc2VydF90cnVlKGZvbnRzLmhhcyhmb250
MikpOworICAgIGZvbnRzLmRlbGV0ZShmb250Mik7CisgICAgYXNzZXJ0X2ZhbHNlKGZvbnRzLmhh
cyhmb250KSk7CisgICAgYXNzZXJ0X2ZhbHNlKGZvbnRzLmhhcyhmb250MikpOworfSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437337</attachid>
            <date>2021-09-03 21:20:16 -0700</date>
            <delta_ts>2021-09-09 02:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229848-20210903212015.patch</filename>
            <type>text/plain</type>
            <size>4704</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVlNDJhZmQzMDFmMmRj
YTNmMmQ3NzgxYzEzYjdkMjYwY2MzNWM4NS4uMDI0ZjAyYjVjODZiOTM2MzViZTNjYzM1OTIwODBl
OGFjNTFkOGFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA5LTAzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udEZhY2VT
ZXQuaGFzKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hhbmdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBjb250ZW50IHNheXMgImRvY3Vt
ZW50LmZvbnRzLmhhcyguLi4pIiwgdGhlICIuaGFzKC4uLikiIHBhcnQgbmVlZHMgdG8KKyAgICAg
ICAgdXBkYXRlIHN0eWxlIGluc3RlYWQgb2YgdGhlICJkb2N1bWVudC5mb250cyIgcGFydC4gVGhp
cyBpcyBiZWNhdXNlIGl0J3MKKyAgICAgICAgdG90YWxseSBsZWdhbCBmb3IgY29udGVudCB0byBz
YXk6CisKKyAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5mb250czsKKyAgICAgICAgLy8gTW9kaWZ5
IHN0eWxlIGhlcmUKKyAgICAgICAgLi4uIGYuaGFzKC4uLikgLi4uIDw9PT0gVGhpcyBuZWVkcyB0
byByZWZsZWN0IHRoZSBzdHlsZSBjaGFuZ2VzLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2VzZXQtaGFz
Lmh0bWwKKworICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RmFjZVNldDo6aGFzIGNvbnN0KToKKwogMjAyMS0wOS0wMyAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFsd2F5cyBm
ZXRjaCB0aGUgZmlyc3QgbWFuaWZlc3QgaWYgcHJvdmlkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuY3BwCmluZGV4IGZkYzIyNDZjY2YwYTMxMmI5YmI4MzBmNmIwYzE0YzUxMmI1MzA0NjQuLmY5
Mzc1ODJlNzAwOWIxNzQxNzQzZTMzNWZmZjdhN2MyOTVhMTM3NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlU2V0LmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIEZvbnRGYWNlU2V0OjpQZW5kaW5nUHJv
bWlzZTo6flBlbmRpbmdQcm9taXNlKCkgPSBkZWZhdWx0OwogCiBib29sIEZvbnRGYWNlU2V0Ojpo
YXMoRm9udEZhY2UmIGZhY2UpIGNvbnN0CiB7CisgICAgaWYgKGZhY2UuYmFja2luZygpLmNzc0Nv
bm5lY3Rpb24oKSkKKyAgICAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAg
ICAgcmV0dXJuIG1fYmFja2luZy0+aGFzRmFjZShmYWNlLmJhY2tpbmcoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGUwYTkwZTc3NDE2ZWZkNmJlZTE3MWVmZGQ2YmFl
MThlNWRiYTA3NjcuLmMxNmZiZjdiZmU2YmRiNjE3MGU0OTdiYTdjNWFhYjQ5N2Q2OGY1NjAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA5LTAz
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9u
dEZhY2VTZXQuaGFzKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUgY2hhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODQ4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IHdhcyBsYW5k
ZWQgdXBzdHJlYW0gaW4gaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQv
cHVsbC8zMDMyMgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udC1s
b2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMuaHRt
bDogQWRkZWQuCisKIDIwMjEtMDktMDMgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIGlmcmFtZXMgc2hvdWxkIGdldCBhbiBvcGFxdWUgYmFja2dyb3VuZCB3
aGVuIHRoZSBlbWJlZGRpbmcgZWxlbWVudCBhbmQgZW1iZWRkZWQgcm9vdCBjb2xvci1zY2hlbWVz
IGRvIG5vdCBtYXRjaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWZvbnQtbG9hZGluZy9mb250ZmFjZXNldC1oYXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE5MjY2MDA4ZDA2MWE0OGE3ZWIxZWMwNjNmZGU2MDFjOWIxMjBjYzkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Zm9udC1sb2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgZm9udGZhY2VzZXQtaGFzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250LWxvYWRpbmcvZm9udGZhY2Vz
ZXQtaGFzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZm9udC1sb2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAz
N2U4YThlOTExMTA0ZmMwZGFjODViZmEwYmU2N2QxMjA4ZmI5MDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9u
dC1sb2FkaW5nL2ZvbnRmYWNlc2V0LWhhcy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZCBpZD0iaGVhZCI+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik15bGVzIEMuIE1heGZpZWxkIiBocmVmPSJtbWF4
ZmllbGRAYXBwbGUuY29tIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1mb250LWxvYWRpbmctMy8jZG9tLWZvbnRmYWNlc2V0LWhhcyI+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkVuc3VyZSB0aGF0IGNhbGxpbmcgRm9udEZhY2VTZXQu
aGFzKCkgd29ya3MgcHJvcGVybHkuIiAvPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHN0eWxlIGlkPSJzdHlsZSI+CitAZm9udC1mYWNlIHsKKyAg
ICBmb250LWZhbWlseTogIldlYkZvbnQiOworICAgIHNyYzogdXJsKCJyZXNvdXJjZXMvUm9jaGVz
dGVyLm90ZiIpIGZvcm1hdCgib3BlbnR5cGUiKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQ+Cit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICBsZXQgZm9udHMgPSBkb2N1bWVu
dC5mb250czsKKyAgICBsZXQgZm9udCA9IGZvbnRzLmtleXMoKS5uZXh0KCkudmFsdWU7CisgICAg
bGV0IGZvbnQyID0gbmV3IEZvbnRGYWNlKCJXZWJGb250MiIsICJ1cmwoJ3Jlc291cmNlcy9HZW5S
MTAyLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpIik7CisgICAgYXNzZXJ0X3RydWUoZm9udHMuaGFz
KGZvbnQpKTsKKyAgICBhc3NlcnRfZmFsc2UoZm9udHMuaGFzKGZvbnQyKSk7CisgICAgZm9udHMu
YWRkKGZvbnQyKTsKKyAgICBhc3NlcnRfdHJ1ZShmb250cy5oYXMoZm9udCkpOworICAgIGFzc2Vy
dF90cnVlKGZvbnRzLmhhcyhmb250MikpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJo
ZWFkIikucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlIikpOworICAg
IGFzc2VydF9mYWxzZShmb250cy5oYXMoZm9udCkpOworICAgIGFzc2VydF90cnVlKGZvbnRzLmhh
cyhmb250MikpOworICAgIGZvbnRzLmRlbGV0ZShmb250Mik7CisgICAgYXNzZXJ0X2ZhbHNlKGZv
bnRzLmhhcyhmb250KSk7CisgICAgYXNzZXJ0X2ZhbHNlKGZvbnRzLmhhcyhmb250MikpOworfSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>