<?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>170119</bug_id>
          
          <creation_ts>2017-03-27 08:59:30 -0700</creation_ts>
          <short_desc>Try to normalize variation ranges (to fix overly heavy fonts on facebook.com)</short_desc>
          <delta_ts>2017-04-04 13:03:46 -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>Text</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>162815</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1291476</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-03-27 08:59:30 -0700</bug_when>
    <thetext>Many fonts support ranges of the variation axes which don&apos;t play well with font-weight, stretch, and style. Let&apos;s see if we can fix them by applying a heuristic and normalizing he values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292273</commentid>
    <comment_count>1</comment_count>
      <attachid>305698</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-03-28 20:18:41 -0700</bug_when>
    <thetext>Created attachment 305698
Needs tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292275</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-03-28 20:19:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/31234983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292317</commentid>
    <comment_count>3</comment_count>
      <attachid>305711</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-03-29 00:09:04 -0700</bug_when>
    <thetext>Created attachment 305711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292608</commentid>
    <comment_count>4</comment_count>
      <attachid>305801</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-03-29 15:38:21 -0700</bug_when>
    <thetext>Created attachment 305801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292616</commentid>
    <comment_count>5</comment_count>
      <attachid>305801</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-29 15:45:50 -0700</bug_when>
    <thetext>Comment on attachment 305801
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Try to normalize variation ranges

This title could be improved.

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=170119

Radar should go here.

&gt; Source/WebCore/ChangeLog:29
&gt; +        TrueType GX-style variation fonts use one particular scale for values on their
&gt; +        weight/width/slope axes - usually the values lie between -1 and 1 on that scale.
&gt; +        However, OpenType 1.8-style fonts use the CSS scale for values on these axes.
&gt; +        For the purposes of font selection, these values need to lie on the same scale.
&gt; +        However, when font selection is completed and the variation values are actually
&gt; +        being applied to the fonts, values which lie on the font&apos;s actual scale need to
&gt; +        be applied. This patch adds normalize*() and denormalize*() functions to perform
&gt; +        both of these operations. 
&gt; +
&gt; +        The conversion itself between the two scales isn&apos;t an exact mapping. Mapping
&gt; +        slope is just a linear relationship with 0deg &lt;=&gt; 0 and 20deg &lt;=&gt; 1 (as per the
&gt; +        CSS Fonts spec). Mapping widths is similar, it uses a 2-component piecewise
&gt; +        linear relationship which includes the values given in the Microsoft OpenType
&gt; +        spec for the OS/2 table&apos;s usWidthClass field. Weights are more difficult, so I
&gt; +        plotted the CSS weights and the GX-style weights for every style of San
&gt; +        Francisco, saw that the relationship appears to be linear, and ran a linear
&gt; +        regression to compute the line equation.
&gt; +
&gt; +        As for the actual discrimination of determining whether a font is a GX-style
&gt; +        font or not, we can use the presence of the &apos;STAT&apos; table. This table didn&apos;t
&gt; +        exist when GX fonts were being created, and OpenType 1.8 variable fonts are
&gt; +        required to have this table.

Doesn&apos;t say &quot;Facebook&quot; anywhere. Please describe the user-facing symptom.

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:451
&gt; +// FIXME: Get the real values from Core Text.

Is there a radar you can reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292621</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-03-29 16:12:13 -0700</bug_when>
    <thetext>Committed r214572: &lt;http://trac.webkit.org/changeset/214572&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292656</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-03-29 17:37:42 -0700</bug_when>
    <thetext>Committed r214585: &lt;http://trac.webkit.org/changeset/214585&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305698</attachid>
            <date>2017-03-28 20:18:41 -0700</date>
            <delta_ts>2017-03-29 00:09:00 -0700</delta_ts>
            <desc>Needs tests</desc>
            <filename>bug-170119-20170328201840.patch</filename>
            <type>text/plain</type>
            <size>13573</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMyODg5Mjk4NzZjMjBh
NmIzYTdmNDQ1MzE4MDYxY2NjYzJiYTEwMi4uNjI0MmJkNWM0ZTYyY2QzZWEwMjMyMGJiMDljMjNj
ZWFmMTY5YTBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTI4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVHJ5IHRvIG5v
cm1hbGl6ZSB2YXJpYXRpb24gcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzAxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzR1hWYXJpYWJsZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplV2VpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVNsb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OmRlbm9ybWFsaXplV2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmRlbm9ybWFsaXplV2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6ZGVub3JtYWxpemVTbG9wZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpub3JtYWxpemVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpwcmVwYXJlUGxhdGZvcm1Gb250
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmV0Y2hGcm9tQ29yZVRleHRUcmFpdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Zm9udFdlaWdodEZyb21Db3JlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0VmFyaWF0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFi
aWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhcGFiaWxpdGll
c0ZvckZvbnREZXNjcmlwdG9yKToKKwogMjAxNy0wMy0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgTWlzc2luZyByZW5kZXIgdHJlZSBwb3NpdGlvbiBpbnZh
bGlkYXRpb24gd2hlbiB0ZWFyaW5nIGRvd24gcmVuZGVyZXJzIGZvciBkaXNwbGF5OmNvbnRlbnRz
IHN1YnRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBiYjY3MDljZWVlN2Y0YjI3ZDM2
YzlkZjAzNDgxZTVmNDIwNjE1NzdhLi4wNTU3YzBmZWFhMzI0ZjZjYmUyMzc1NzJjZmJkMzdhZDY3
NmMxMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC00MjgsOCArNDI4LDYyIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBmb250SXNTeXN0ZW1Gb250KENURm9udFJlZiBmb250KQogICAgIGF1
dG8gbmFtZSA9IGFkb3B0Q0YoQ1RGb250Q29weVBvc3RTY3JpcHROYW1lKGZvbnQpKTsKICAgICBy
ZXR1cm4gQ0ZTdHJpbmdHZXRMZW5ndGgobmFtZS5nZXQoKSkgPiAwICYmIENGU3RyaW5nR2V0Q2hh
cmFjdGVyQXRJbmRleChuYW1lLmdldCgpLCAwKSA9PSAnLic7CiB9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc0dYVmFyaWFibGVGb250KENURm9udFJlZiBmb250KQoreworICAgIGF1dG8gdGFibGVz
ID0gYWRvcHRDRihDVEZvbnRDb3B5QXZhaWxhYmxlVGFibGVzKGZvbnQsIGtDVEZvbnRUYWJsZU9w
dGlvbk5vT3B0aW9ucykpOworICAgIGlmICghdGFibGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYXV0byBzaXplID0gQ0ZBcnJheUdldENvdW50KHRhYmxlcy5nZXQoKSk7CisgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIC8vIFRoaXMgaXMgc28g
eXVja3kuCisgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZlcmVuY2Uv
Y29yZXRleHQvMTUxMDc3NC1jdGZvbnRjb3B5YXZhaWxhYmxldGFibGVzCisgICAgICAgIC8vICJU
aGUgcmV0dXJuZWQgc2V0IHdpbGwgY29udGFpbiB1bmJveGVkIHZhbHVlcywgd2hpY2ggY2FuIGJl
IGV4dHJhY3RlZCBsaWtlIHNvOiIKKyAgICAgICAgLy8gIkNURm9udFRhYmxlVGFnIHRhZyA9IChD
VEZvbnRUYWJsZVRhZykodWludHB0cl90KUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodGFncywgaW5k
ZXgpOyIKKyAgICAgICAgQ1RGb250VGFibGVUYWcgdGFibGVUYWcgPSBzdGF0aWNfY2FzdDxDVEZv
bnRUYWJsZVRhZz4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgodGFibGVzLmdldCgpLCBpKSkpOworICAgICAgICBpZiAodGFibGVUYWcgPT0ga0NURm9u
dFRhYmxlU1RBVCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKKy8vIFRoZXNlIHZhbHVlcyB3ZXJlIGNhbGN1bGF0ZWQgYnkgcGVyZm9ybWlu
ZyBhIGxpbmVhciByZWdyZXNzaW9uIG9uIHRoZSBDU1Mgd2VpZ2h0cy93aWR0aHMvc2xvcGVzIGFu
ZCBDb3JlIFRleHQgd2VpZ2h0cy93aWR0aHMvc2xvcGVzIG9mIFNhbiBGcmFuY2lzY28uCisvLyBG
SVhNRTogR2V0IHRoZSByZWFsIHZhbHVlcyBmcm9tIENvcmUgVGV4dC4KK3N0YXRpYyBpbmxpbmUg
ZmxvYXQgbm9ybWFsaXplV2VpZ2h0KGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiA1MjMuNyAq
IHZhbHVlIC0gMTA5LjM7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQgbm9ybWFsaXplU2xvcGUo
ZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlICogMzAwOworfQorCitzdGF0aWMgaW5s
aW5lIGZsb2F0IGRlbm9ybWFsaXplV2VpZ2h0KGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiAo
dmFsdWUgKyAxMDkuMykgLyA1MjMuNzsKK30KKworc3RhdGljIGlubGluZSBmbG9hdCBkZW5vcm1h
bGl6ZVdpZHRoKGZsb2F0IHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA8IDEyNSkKKyAgICAgICAg
cmV0dXJuICh2YWx1ZSAtIDEwMCkgLyA1MDsKKyAgICByZXR1cm4gKHZhbHVlIC0gNTApIC8gMTUw
OworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IGRlbm9ybWFsaXplU2xvcGUoZmxvYXQgdmFsdWUp
Cit7CisgICAgcmV0dXJuIHZhbHVlIC8gMzAwOworfQogI2VuZGlmCiAKK3N0YXRpYyBpbmxpbmUg
ZmxvYXQgbm9ybWFsaXplV2lkdGgoZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlIDwgMC41
KQorICAgICAgICByZXR1cm4gdmFsdWUgKiA1MCArIDEwMDsKKyAgICByZXR1cm4gdmFsdWUgKiAx
NTAgKyA1MDsKK30KKwogUmV0YWluUHRyPENURm9udFJlZj4gcHJlcGFyZVBsYXRmb3JtRm9udChD
VEZvbnRSZWYgb3JpZ2luYWxGb250LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9k
ZSwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyogZm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9u
dFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJpYW50U2V0dGluZ3MsIGNvbnN0IEZvbnRGZWF0
dXJlU2V0dGluZ3MmIGZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzJiB2YXJpYW50
U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25SZXF1ZXN0IGZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25z
dCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvbnMsIEZvbnRPcHRpY2FsU2l6aW5nIGZv
bnRPcHRpY2FsU2l6aW5nLCBmbG9hdCBzaXplKQogewogICAgIGJvb2wgYWx3YXlzQWRkVmFyaWF0
aW9ucyA9IGZhbHNlOwpAQCAtNDgzLDYgKzUzNyw3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHBy
ZXBhcmVQbGF0Zm9ybUZvbnQoQ1RGb250UmVmIG9yaWdpbmFsRm9udCwgVGV4dFJlbmRlcmluZ01v
CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICBWYXJpYXRpb25zTWFwIHZhcmlhdGlv
bnNUb0JlQXBwbGllZDsKIAorICAgIGJvb2wgbmVlZHNDb252ZXJzaW9uID0gaXNHWFZhcmlhYmxl
Rm9udChvcmlnaW5hbEZvbnQpOwogICAgIGF1dG8gYXBwbHlWYXJpYXRpb25WYWx1ZSA9IFsmXShj
b25zdCBGb250VGFnJiB0YWcsIGZsb2F0IHZhbHVlLCBib29sIGlzRGVmYXVsdFZhbHVlKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjg3MDc4MjI+IGlz
IGZpeGVkCiAjZGVmaW5lIFdPUktBUk9VTkRfQ09SRVRFWFRfVkFSSUFUSU9OU19ERUZBVUxUX1ZB
TFVFX0JVRyAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMTAwMDApKQpAQCAtNTA3LDkgKzU2MiwxNyBAQCBSZXRhaW5QdHI8Q1RGb250
UmVmPiBwcmVwYXJlUGxhdGZvcm1Gb250KENURm9udFJlZiBvcmlnaW5hbEZvbnQsIFRleHRSZW5k
ZXJpbmdNbwogCiAgICAgLy8gVGhlIHN5c3RlbSBmb250IGlzIHNvbWV3aGF0IG1hZ2ljYWwuIERv
bid0IG1lc3Mgd2l0aCBpdHMgdmFyaWF0aW9ucy4KICAgICBpZiAoIWZvbnRJc1N5c3RlbUZvbnQo
b3JpZ2luYWxGb250KSkgewotICAgICAgICBhcHBseVZhcmlhdGlvbih7eyd3JywgJ2cnLCAnaCcs
ICd0J319LCBzdGF0aWNfY2FzdDxmbG9hdD4oZm9udFNlbGVjdGlvblJlcXVlc3Qud2VpZ2h0KSk7
Ci0gICAgICAgIGFwcGx5VmFyaWF0aW9uKHt7J3cnLCAnZCcsICd0JywgJ2gnfX0sIHN0YXRpY19j
YXN0PGZsb2F0Pihmb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aCkpOwotICAgICAgICBhcHBseVZh
cmlhdGlvbih7eydzJywgJ2wnLCAnbicsICd0J319LCBzdGF0aWNfY2FzdDxmbG9hdD4oZm9udFNl
bGVjdGlvblJlcXVlc3Quc2xvcGUpKTsKKyAgICAgICAgZmxvYXQgd2VpZ2h0ID0gZm9udFNlbGVj
dGlvblJlcXVlc3Qud2VpZ2h0OworICAgICAgICBmbG9hdCB3aWR0aCA9IGZvbnRTZWxlY3Rpb25S
ZXF1ZXN0LndpZHRoOworICAgICAgICBmbG9hdCBzbG9wZSA9IGZvbnRTZWxlY3Rpb25SZXF1ZXN0
LnNsb3BlOworICAgICAgICBpZiAobmVlZHNDb252ZXJzaW9uKSB7CisgICAgICAgICAgICB3ZWln
aHQgPSBkZW5vcm1hbGl6ZVdlaWdodCh3ZWlnaHQpOworICAgICAgICAgICAgd2lkdGggPSBkZW5v
cm1hbGl6ZVdpZHRoKHdpZHRoKTsKKyAgICAgICAgICAgIHNsb3BlID0gZGVub3JtYWxpemVTbG9w
ZShzbG9wZSk7CisgICAgICAgIH0KKyAgICAgICAgYXBwbHlWYXJpYXRpb24oe3sndycsICdnJywg
J2gnLCAndCd9fSwgd2VpZ2h0KTsKKyAgICAgICAgYXBwbHlWYXJpYXRpb24oe3sndycsICdkJywg
J3QnLCAnaCd9fSwgd2lkdGgpOworICAgICAgICBhcHBseVZhcmlhdGlvbih7eydzJywgJ2wnLCAn
bicsICd0J319LCBzbG9wZSk7CiAgICAgfQogCiAgICAgaWYgKGZvbnRPcHRpY2FsU2l6aW5nID09
IEZvbnRPcHRpY2FsU2l6aW5nOjpFbmFibGVkKSB7CkBAIC02MDEsMTcgKzY2NCwxNiBAQCBSZWZQ
dHI8Rm9udD4gRm9udENhY2hlOjpzaW1pbGFyRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBjb25zdCBBdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgRm9u
dFNlbGVjdGlvblZhbHVlIHN0cmV0Y2hGcm9tQ29yZVRleHRUcmFpdHMoQ0ZEaWN0aW9uYXJ5UmVm
IHRyYWl0cykKK3N0YXRpYyBmbG9hdCBzdHJldGNoRnJvbUNvcmVUZXh0VHJhaXRzKENGRGljdGlv
bmFyeVJlZiB0cmFpdHMpCiB7CiAgICAgYXV0byB3aWR0aE51bWJlciA9IHN0YXRpY19jYXN0PENG
TnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZSh0cmFpdHMsIGtDVEZvbnRXaWR0aFRyYWl0
KSk7Ci0gICAgaWYgKHdpZHRoTnVtYmVyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgbm9ybWFs
aXphdGlvbiBmcm9tIENvcmUgVGV4dCdzIFstMSwgMV0gcmFuZ2UgdG8gQ1NTJ3MgWzUwJSwgMjAw
JV0gcmFuZ2UgaXNuJ3QgcGVyZmVjdC4KLSAgICAgICAgZmxvYXQgY3RXaWR0aDsKLSAgICAgICAg
YXV0byBzdWNjZXNzID0gQ0ZOdW1iZXJHZXRWYWx1ZSh3aWR0aE51bWJlciwga0NGTnVtYmVyRmxv
YXRUeXBlLCAmY3RXaWR0aCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vz
cyk7Ci0gICAgICAgIHJldHVybiBGb250U2VsZWN0aW9uVmFsdWUoY3RXaWR0aCA8IDAuNSA/IGN0
V2lkdGggKiA1MCArIDEwMCA6IGN0V2lkdGggKiAxNTAgKyA1MCk7Ci0gICAgfQotICAgIHJldHVy
biBub3JtYWxTdHJldGNoVmFsdWUoKTsKKyAgICBpZiAoIXdpZHRoTnVtYmVyKQorICAgICAgICBy
ZXR1cm4gbm9ybWFsU3RyZXRjaFZhbHVlKCk7CisKKyAgICBmbG9hdCBjdFdpZHRoOworICAgIGF1
dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFsdWUod2lkdGhOdW1iZXIsIGtDRk51bWJlckZsb2F0
VHlwZSwgJmN0V2lkdGgpOworICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7Cisg
ICAgcmV0dXJuIG5vcm1hbGl6ZVdpZHRoKGN0V2lkdGgpOwogfQogCiBzdGF0aWMgdm9pZCBpbnZh
bGlkYXRlRm9udENhY2hlKCk7CkBAIC03MDgsMjUgKzc3MCwyNSBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNTeXN0ZW1Gb250KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogfQogCiAjaWYgU0hP
VUxEX1VTRV9DT1JFX1RFWFRfRk9OVF9MT09LVVAKLXN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUg
Zm9udFdlaWdodEZyb21Db3JlVGV4dChDR0Zsb2F0IHdlaWdodCkKK3N0YXRpYyBmbG9hdCBmb250
V2VpZ2h0RnJvbUNvcmVUZXh0KENHRmxvYXQgd2VpZ2h0KQogewogICAgIGlmICh3ZWlnaHQgPCAt
MC42KQotICAgICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVlKDEwMCk7CisgICAgICAgIHJl
dHVybiAxMDA7CiAgICAgaWYgKHdlaWdodCA8IC0wLjM2NSkKLSAgICAgICAgcmV0dXJuIEZvbnRT
ZWxlY3Rpb25WYWx1ZSgyMDApOworICAgICAgICByZXR1cm4gMjAwOwogICAgIGlmICh3ZWlnaHQg
PCAtMC4xMTUpCi0gICAgICAgIHJldHVybiBGb250U2VsZWN0aW9uVmFsdWUoMzAwKTsKKyAgICAg
ICAgcmV0dXJuIDMwMDsKICAgICBpZiAod2VpZ2h0IDwgIDAuMTMwKQotICAgICAgICByZXR1cm4g
Rm9udFNlbGVjdGlvblZhbHVlKDQwMCk7CisgICAgICAgIHJldHVybiA0MDA7CiAgICAgaWYgKHdl
aWdodCA8ICAwLjIzNSkKLSAgICAgICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApOwor
ICAgICAgICByZXR1cm4gNTAwOwogICAgIGlmICh3ZWlnaHQgPCAgMC4zNTApCi0gICAgICAgIHJl
dHVybiBGb250U2VsZWN0aW9uVmFsdWUoNjAwKTsKKyAgICAgICAgcmV0dXJuIDYwMDsKICAgICBp
ZiAod2VpZ2h0IDwgIDAuNTAwKQotICAgICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVlKDcw
MCk7CisgICAgICAgIHJldHVybiA3MDA7CiAgICAgaWYgKHdlaWdodCA8ICAwLjcwMCkKLSAgICAg
ICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZSg4MDApOwotICAgIHJldHVybiBGb250U2VsZWN0
aW9uVmFsdWUoOTAwKTsKKyAgICAgICAgcmV0dXJuIDgwMDsKKyAgICByZXR1cm4gOTAwOwogfQog
I2VuZGlmCiAKQEAgLTgzNSwxNCArODk3LDIxIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJp
bmcsIEluc3RhbGxlZEZvbnQ+IG1fcG9zdFNjcmlwdE5hbWVUb0ZvbnREZXNjcmlwdG9yczsKIH07
CiAKKy8vIEJlY2F1c2UgdGhpcyBzdHJ1Y3QgaG9sZHMgaW50ZXJtZWRpYXRlIHZhbHVlcyB3aGlj
aCBtYXkgYmUgaW4gdGhlIGNvbXByZXNzZWQgLTEgLSAxIEdYIHJhbmdlLCB3ZSBkb24ndCB3YW50
IHRvIHVzZSB0aGUgcmVsYXRpdmVseSBsYXJnZQorLy8gcXVhbnRpemF0aW9uIG9mIEZvbnRTZWxl
Y3Rpb25WYWx1ZS4gSW5zdGVhZCwgZG8gdGhpcyBsb2dpYyB3aXRoIGZsb2F0cy4KK3N0cnVjdCBN
aW5NYXggeworICAgIGZsb2F0IG1pbmltdW07CisgICAgZmxvYXQgbWF4aW11bTsKK307CisKIHN0
cnVjdCBWYXJpYXRpb25DYXBhYmlsaXRpZXMgewotICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVj
dGlvblJhbmdlPiB3ZWlnaHQ7Ci0gICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+
IHdpZHRoOwotICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiBzbG9wZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1pbk1heD4gd2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TWluTWF4
PiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1pbk1heD4gc2xvcGU7CiB9OwogCiAjaWYgRU5B
QkxFKFZBUklBVElPTl9GT05UUykKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25S
YW5nZT4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRpY3Rpb25hcnlSZWYgYXhpcykKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1pbk1heD4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRpY3Rpb25h
cnlSZWYgYXhpcykKIHsKICAgICBDRk51bWJlclJlZiBtaW5pbXVtVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXhpcywga0NURm9udFZhcmlhdGlv
bkF4aXNNaW5pbXVtVmFsdWVLZXkpKTsKICAgICBDRk51bWJlclJlZiBtYXhpbXVtVmFsdWUgPSBz
dGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXhpcywga0NURm9u
dFZhcmlhdGlvbkF4aXNNYXhpbXVtVmFsdWVLZXkpKTsKQEAgLTg1MSw3ICs5MjAsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGV4dHJhY3RWYXJpYXRpb25Cb3Vu
ZHMoQ0ZEaWN0aW9uYXJ5UmVmCiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShtaW5pbXVtVmFsdWUsIGtD
Rk51bWJlckZsb2F0VHlwZSwgJnJhd01pbmltdW1WYWx1ZSk7CiAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZShtYXhpbXVtVmFsdWUsIGtDRk51bWJlckZsb2F0VHlwZSwgJnJhd01heGltdW1WYWx1ZSk7CiAg
ICAgaWYgKHJhd01pbmltdW1WYWx1ZSA8IHJhd01heGltdW1WYWx1ZSkKLSAgICAgICAgcmV0dXJu
IHt7IEZvbnRTZWxlY3Rpb25WYWx1ZShyYXdNaW5pbXVtVmFsdWUpLCBGb250U2VsZWN0aW9uVmFs
dWUocmF3TWF4aW11bVZhbHVlKSB9fTsKKyAgICAgICAgcmV0dXJuIHt7IHJhd01pbmltdW1WYWx1
ZSwgcmF3TWF4aW11bVZhbHVlIH19OwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5k
aWYKQEAgLTg2NCw3ICs5MzMsOCBAQCBzdGF0aWMgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlh
dGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKENURm9udERlc2NyaQogICAgIGlmICgh
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZShmb250RGVzY3JpcHRvciwga0NU
Rm9udFZhcmlhdGlvbkF0dHJpYnV0ZSkpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAg
YXV0byB2YXJpYXRpb25zID0gYWRvcHRDRihDVEZvbnRDb3B5VmFyaWF0aW9uQXhlcyhhZG9wdENG
KENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvciwgMCwgbnVsbHB0
cikpLmdldCgpKSk7CisgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9u
dERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IsIDAsIG51bGxwdHIpKTsKKyAgICBhdXRvIHZhcmlh
dGlvbnMgPSBhZG9wdENGKENURm9udENvcHlWYXJpYXRpb25BeGVzKGZvbnQuZ2V0KCkpKTsKICAg
ICBpZiAoIXZhcmlhdGlvbnMpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTg4NSw2ICs5
NTUsMTUgQEAgc3RhdGljIFZhcmlhdGlvbkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYXBhYmlsaXRp
ZXNGb3JGb250RGVzY3JpcHRvcihDVEZvbnREZXNjcmkKICAgICAgICAgZWxzZSBpZiAocmF3QXhp
c0lkZW50aWZpZXIgPT0gMHg3MzZDNkU3NCkgLy8gJ3NsbnQnCiAgICAgICAgICAgICByZXN1bHQu
c2xvcGUgPSBleHRyYWN0VmFyaWF0aW9uQm91bmRzKGF4aXMpOwogICAgIH0KKworICAgIGlmIChp
c0dYVmFyaWFibGVGb250KGZvbnQuZ2V0KCkpKSB7CisgICAgICAgIGlmIChyZXN1bHQud2VpZ2h0
KQorICAgICAgICAgICAgcmVzdWx0LndlaWdodCA9IHt7IG5vcm1hbGl6ZVdlaWdodChyZXN1bHQu
d2VpZ2h0LnZhbHVlKCkubWluaW11bSksIG5vcm1hbGl6ZVdlaWdodChyZXN1bHQud2VpZ2h0LnZh
bHVlKCkubWF4aW11bSkgfX07CisgICAgICAgIGlmIChyZXN1bHQud2lkdGgpCisgICAgICAgICAg
ICByZXN1bHQud2lkdGggPSB7eyBub3JtYWxpemVXaWR0aChyZXN1bHQud2lkdGgudmFsdWUoKS5t
aW5pbXVtKSwgbm9ybWFsaXplV2lkdGgocmVzdWx0LndpZHRoLnZhbHVlKCkubWF4aW11bSkgfX07
CisgICAgICAgIGlmIChyZXN1bHQuc2xvcGUpCisgICAgICAgICAgICByZXN1bHQuc2xvcGUgPSB7
eyBub3JtYWxpemVTbG9wZShyZXN1bHQuc2xvcGUudmFsdWUoKS5taW5pbXVtKSwgbm9ybWFsaXpl
U2xvcGUocmVzdWx0LnNsb3BlLnZhbHVlKCkubWF4aW11bSkgfX07CisgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZm9udERlc2NyaXB0b3IpOwogI2VuZGlmCkBAIC05MTksMTAgKzk5OCwx
MCBAQCBGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlw
dG9yKENURm9udERlc2NyaXB0b3JSZWYgZm9udAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IHN5bWJvbGljVHJhaXRzOwogICAgICAgICAgICAgICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBDRk51
bWJlckdldFZhbHVlKHN5bWJvbGljVHJhaXRzTnVtYmVyLCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAm
c3ltYm9saWNUcmFpdHMpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nl
c3MsIHN1Y2Nlc3MpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIHNsb3BlVmFsdWUgPSBzeW1i
b2xpY1RyYWl0cyAmIGtDVEZvbnRUcmFpdEl0YWxpYyA/IGl0YWxpY1ZhbHVlKCkgOiBub3JtYWxJ
dGFsaWNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHNsb3BlVmFsdWUgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oc3ltYm9saWNUcmFpdHMgJiBrQ1RGb250VHJhaXRJdGFsaWMgPyBpdGFs
aWNWYWx1ZSgpIDogbm9ybWFsSXRhbGljVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIHZh
cmlhdGlvbkNhcGFiaWxpdGllcy5zbG9wZSA9IHt7IHNsb3BlVmFsdWUsIHNsb3BlVmFsdWUgfX07
CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbkNh
cGFiaWxpdGllcy5zbG9wZSA9IHt7IG5vcm1hbEl0YWxpY1ZhbHVlKCksIG5vcm1hbEl0YWxpY1Zh
bHVlKCkgfX07CisgICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbkNhcGFiaWxpdGllcy5zbG9w
ZSA9IHt7IHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxJdGFsaWNWYWx1ZSgpKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG5vcm1hbEl0YWxpY1ZhbHVlKCkpIH19OwogICAgICAgICAgICAgfQogCiAjaWYg
U0hPVUxEX1VTRV9DT1JFX1RFWFRfRk9OVF9MT09LVVAKQEAgLTkzNSw3ICsxMDE0LDcgQEAgRm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXNGb3JGb250RGVzY3JpcHRvcihDVEZv
bnREZXNjcmlwdG9yUmVmIGZvbnQKICAgICAgICAgICAgICAgICAgICAgYXV0byB3ZWlnaHRWYWx1
ZSA9IGZvbnRXZWlnaHRGcm9tQ29yZVRleHQoY3RXZWlnaHQpOwogICAgICAgICAgICAgICAgICAg
ICB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0ge3sgd2VpZ2h0VmFsdWUsIHdlaWdodFZh
bHVlIH19OwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB2YXJp
YXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0ge3sgbm9ybWFsV2VpZ2h0VmFsdWUoKSwgbm9ybWFs
V2VpZ2h0VmFsdWUoKSB9fTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uQ2FwYWJpbGl0
aWVzLndlaWdodCA9IHt7IHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxXZWlnaHRWYWx1ZSgpKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbFdlaWdodFZhbHVlKCkpIH19OwogICAgICAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIH0KQEAgLTk0OCwxNCArMTAyNywxNSBAQCBGb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKENURm9udERlc2NyaXB0
b3JSZWYgZm9udAogICAgICAgICAgICAgZmxvYXQgY3NzV2VpZ2h0OwogICAgICAgICAgICAgYXV0
byBzdWNjZXNzID0gQ0ZOdW1iZXJHZXRWYWx1ZSh3ZWlnaHROdW1iZXIuZ2V0KCksIGtDRk51bWJl
ckZsb2F0VHlwZSwgJmNzc1dlaWdodCk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nl
c3MsIHN1Y2Nlc3MpOwotICAgICAgICAgICAgYXV0byB3ZWlnaHRWYWx1ZSA9IEZvbnRTZWxlY3Rp
b25WYWx1ZShjc3NXZWlnaHQpOwotICAgICAgICAgICAgdmFyaWF0aW9uQ2FwYWJpbGl0aWVzLndl
aWdodCA9IHt7IHdlaWdodFZhbHVlLCB3ZWlnaHRWYWx1ZSB9fTsKKyAgICAgICAgICAgIHZhcmlh
dGlvbkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7eyBjc3NXZWlnaHQsIGNzc1dlaWdodCB9fTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0g
e3sgbm9ybWFsV2VpZ2h0VmFsdWUoKSwgbm9ybWFsV2VpZ2h0VmFsdWUoKSB9fTsKKyAgICAgICAg
ICAgIHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7eyBzdGF0aWNfY2FzdDxmbG9hdD4o
bm9ybWFsV2VpZ2h0VmFsdWUoKSksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxXZWlnaHRWYWx1
ZSgpKSB9fTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiB7IHZhcmlhdGlvbkNhcGFiaWxp
dGllcy53ZWlnaHQudmFsdWUoKSwgdmFyaWF0aW9uQ2FwYWJpbGl0aWVzLndpZHRoLnZhbHVlKCks
IHZhcmlhdGlvbkNhcGFiaWxpdGllcy5zbG9wZS52YWx1ZSgpIH07CisgICAgcmV0dXJuIHt7IEZv
bnRTZWxlY3Rpb25WYWx1ZSh2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0LnZhbHVlKCkubWlu
aW11bSksIEZvbnRTZWxlY3Rpb25WYWx1ZSh2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0LnZh
bHVlKCkubWF4aW11bSkgfSwKKyAgICAgICAgeyBGb250U2VsZWN0aW9uVmFsdWUodmFyaWF0aW9u
Q2FwYWJpbGl0aWVzLndpZHRoLnZhbHVlKCkubWluaW11bSksIEZvbnRTZWxlY3Rpb25WYWx1ZSh2
YXJpYXRpb25DYXBhYmlsaXRpZXMud2lkdGgudmFsdWUoKS5tYXhpbXVtKSB9LAorICAgICAgICB7
IEZvbnRTZWxlY3Rpb25WYWx1ZSh2YXJpYXRpb25DYXBhYmlsaXRpZXMuc2xvcGUudmFsdWUoKS5t
aW5pbXVtKSwgRm9udFNlbGVjdGlvblZhbHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy5zbG9wZS52
YWx1ZSgpLm1heGltdW0pIH19OwogfQogCiAjaWYgIVNIT1VMRF9VU0VfQ09SRV9URVhUX0ZPTlRf
TE9PS1VQCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305711</attachid>
            <date>2017-03-29 00:09:04 -0700</date>
            <delta_ts>2017-03-29 15:38:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170119-20170329000903.patch</filename>
            <type>text/plain</type>
            <size>14989</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI0ZTRiY2E3MWQ2MGM3
ZWFiMmI0YjAyMzYxN2IzM2I2NmY0ZDRhYS4uNTc4ZDhmNzFmYjkyMDg5Mjk2MjA1MTA2NzViNzkz
ZjU1MzFiOTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTI4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVHJ5IHRvIG5v
cm1hbGl6ZSB2YXJpYXRpb24gcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzAxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvdmFyaWF0aW9ucy9mb250LXNlbGVjdGlv
bi1wcm9wZXJ0aWVzLWV4cGVjdGVkLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzR1hWYXJp
YWJsZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplV2VpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6Om5vcm1hbGl6ZVNsb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbm9ybWFsaXpl
V2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmRlbm9ybWFsaXplV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6ZGVub3JtYWxpemVTbG9wZSk6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpwcmVwYXJlUGxhdGZvcm1Gb250KToKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmV0Y2hGcm9tQ29yZVRleHRUcmFpdHMpOgorICAgICAgICAoV2ViQ29yZTo6
Zm9udFdlaWdodEZyb21Db3JlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFyaWF0
aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZv
bnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhcGFiaWxpdGllc0ZvckZvbnREZXNj
cmlwdG9yKToKKwogMjAxNy0wMy0yOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgTGliV2ViUlRDUHJvdmlkZXIgc2hvdWxkIGFsbG93IHNldHRpbmcgZW5jb2Rl
ciBhbmQgZGVjb2RlciBmYWN0b3JpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBiYjY3
MDljZWVlN2Y0YjI3ZDM2YzlkZjAzNDgxZTVmNDIwNjE1NzdhLi45YTQ3MGQ0MTZjNjQwYmFkOWEx
Y2NmNzk0MjA4NmNmMDAyNzIxMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC00Mjgs
OCArNDI4LDYyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmb250SXNTeXN0ZW1Gb250KENURm9udFJl
ZiBmb250KQogICAgIGF1dG8gbmFtZSA9IGFkb3B0Q0YoQ1RGb250Q29weVBvc3RTY3JpcHROYW1l
KGZvbnQpKTsKICAgICByZXR1cm4gQ0ZTdHJpbmdHZXRMZW5ndGgobmFtZS5nZXQoKSkgPiAwICYm
IENGU3RyaW5nR2V0Q2hhcmFjdGVyQXRJbmRleChuYW1lLmdldCgpLCAwKSA9PSAnLic7CiB9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc0dYVmFyaWFibGVGb250KENURm9udFJlZiBmb250KQorewor
ICAgIGF1dG8gdGFibGVzID0gYWRvcHRDRihDVEZvbnRDb3B5QXZhaWxhYmxlVGFibGVzKGZvbnQs
IGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpOworICAgIGlmICghdGFibGVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBzaXplID0gQ0ZBcnJheUdldENvdW50KHRhYmxlcy5n
ZXQoKSk7CisgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
IC8vIFRoaXMgaXMgc28geXVja3kuCisgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxl
LmNvbS9yZWZlcmVuY2UvY29yZXRleHQvMTUxMDc3NC1jdGZvbnRjb3B5YXZhaWxhYmxldGFibGVz
CisgICAgICAgIC8vICJUaGUgcmV0dXJuZWQgc2V0IHdpbGwgY29udGFpbiB1bmJveGVkIHZhbHVl
cywgd2hpY2ggY2FuIGJlIGV4dHJhY3RlZCBsaWtlIHNvOiIKKyAgICAgICAgLy8gIkNURm9udFRh
YmxlVGFnIHRhZyA9IChDVEZvbnRUYWJsZVRhZykodWludHB0cl90KUNGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgodGFncywgaW5kZXgpOyIKKyAgICAgICAgQ1RGb250VGFibGVUYWcgdGFibGVUYWcgPSBz
dGF0aWNfY2FzdDxDVEZvbnRUYWJsZVRhZz4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgodGFibGVzLmdldCgpLCBpKSkpOworICAgICAgICBpZiAodGFi
bGVUYWcgPT0gJ3N0YXQnKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworLy8gVGhlc2UgdmFsdWVzIHdlcmUgY2FsY3VsYXRlZCBieSBwZXJm
b3JtaW5nIGEgbGluZWFyIHJlZ3Jlc3Npb24gb24gdGhlIENTUyB3ZWlnaHRzL3dpZHRocy9zbG9w
ZXMgYW5kIENvcmUgVGV4dCB3ZWlnaHRzL3dpZHRocy9zbG9wZXMgb2YgU2FuIEZyYW5jaXNjby4K
Ky8vIEZJWE1FOiBHZXQgdGhlIHJlYWwgdmFsdWVzIGZyb20gQ29yZSBUZXh0Lgorc3RhdGljIGlu
bGluZSBmbG9hdCBub3JtYWxpemVXZWlnaHQoZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIDUy
My43ICogdmFsdWUgLSAxMDkuMzsKK30KKworc3RhdGljIGlubGluZSBmbG9hdCBub3JtYWxpemVT
bG9wZShmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgKiAzMDA7Cit9CisKK3N0YXRp
YyBpbmxpbmUgZmxvYXQgZGVub3JtYWxpemVXZWlnaHQoZmxvYXQgdmFsdWUpCit7CisgICAgcmV0
dXJuICh2YWx1ZSArIDEwOS4zKSAvIDUyMy43OworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IGRl
bm9ybWFsaXplV2lkdGgoZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlIDwgMTI1KQorICAg
ICAgICByZXR1cm4gKHZhbHVlIC0gMTAwKSAvIDUwOworICAgIHJldHVybiAodmFsdWUgLSA1MCkg
LyAxNTA7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQgZGVub3JtYWxpemVTbG9wZShmbG9hdCB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgLyAzMDA7Cit9CiAjZW5kaWYKIAorc3RhdGljIGlu
bGluZSBmbG9hdCBub3JtYWxpemVXaWR0aChmbG9hdCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUg
PCAwLjUpCisgICAgICAgIHJldHVybiB2YWx1ZSAqIDUwICsgMTAwOworICAgIHJldHVybiB2YWx1
ZSAqIDE1MCArIDUwOworfQorCiBSZXRhaW5QdHI8Q1RGb250UmVmPiBwcmVwYXJlUGxhdGZvcm1G
b250KENURm9udFJlZiBvcmlnaW5hbEZvbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJp
bmdNb2RlLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzKiBmb250RmFjZUZlYXR1cmVzLCBjb25z
dCBGb250VmFyaWFudFNldHRpbmdzKiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgY29uc3QgRm9u
dEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIHZh
cmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblJlcXVlc3QgZm9udFNlbGVjdGlvblJlcXVlc3Qs
IGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgdmFyaWF0aW9ucywgRm9udE9wdGljYWxTaXpp
bmcgZm9udE9wdGljYWxTaXppbmcsIGZsb2F0IHNpemUpCiB7CiAgICAgYm9vbCBhbHdheXNBZGRW
YXJpYXRpb25zID0gZmFsc2U7CkBAIC00ODMsNiArNTM3LDcgQEAgUmV0YWluUHRyPENURm9udFJl
Zj4gcHJlcGFyZVBsYXRmb3JtRm9udChDVEZvbnRSZWYgb3JpZ2luYWxGb250LCBUZXh0UmVuZGVy
aW5nTW8KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgIFZhcmlhdGlvbnNNYXAgdmFy
aWF0aW9uc1RvQmVBcHBsaWVkOwogCisgICAgYm9vbCBuZWVkc0NvbnZlcnNpb24gPSBpc0dYVmFy
aWFibGVGb250KG9yaWdpbmFsRm9udCk7CiAgICAgYXV0byBhcHBseVZhcmlhdGlvblZhbHVlID0g
WyZdKGNvbnN0IEZvbnRUYWcmIHRhZywgZmxvYXQgdmFsdWUsIGJvb2wgaXNEZWZhdWx0VmFsdWUp
IHsKICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yODcwNzgy
Mj4gaXMgZml4ZWQKICNkZWZpbmUgV09SS0FST1VORF9DT1JFVEVYVF9WQVJJQVRJT05TX0RFRkFV
TFRfVkFMVUVfQlVHICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDwgMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDExMDAwMCkpCkBAIC01MDcsOSArNTYyLDE3IEBAIFJldGFpblB0cjxD
VEZvbnRSZWY+IHByZXBhcmVQbGF0Zm9ybUZvbnQoQ1RGb250UmVmIG9yaWdpbmFsRm9udCwgVGV4
dFJlbmRlcmluZ01vCiAKICAgICAvLyBUaGUgc3lzdGVtIGZvbnQgaXMgc29tZXdoYXQgbWFnaWNh
bC4gRG9uJ3QgbWVzcyB3aXRoIGl0cyB2YXJpYXRpb25zLgogICAgIGlmICghZm9udElzU3lzdGVt
Rm9udChvcmlnaW5hbEZvbnQpKSB7Ci0gICAgICAgIGFwcGx5VmFyaWF0aW9uKHt7J3cnLCAnZycs
ICdoJywgJ3QnfX0sIHN0YXRpY19jYXN0PGZsb2F0Pihmb250U2VsZWN0aW9uUmVxdWVzdC53ZWln
aHQpKTsKLSAgICAgICAgYXBwbHlWYXJpYXRpb24oe3sndycsICdkJywgJ3QnLCAnaCd9fSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGZvbnRTZWxlY3Rpb25SZXF1ZXN0LndpZHRoKSk7Ci0gICAgICAgIGFw
cGx5VmFyaWF0aW9uKHt7J3MnLCAnbCcsICduJywgJ3QnfX0sIHN0YXRpY19jYXN0PGZsb2F0Pihm
b250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZSkpOworICAgICAgICBmbG9hdCB3ZWlnaHQgPSBmb250
U2VsZWN0aW9uUmVxdWVzdC53ZWlnaHQ7CisgICAgICAgIGZsb2F0IHdpZHRoID0gZm9udFNlbGVj
dGlvblJlcXVlc3Qud2lkdGg7CisgICAgICAgIGZsb2F0IHNsb3BlID0gZm9udFNlbGVjdGlvblJl
cXVlc3Quc2xvcGU7CisgICAgICAgIGlmIChuZWVkc0NvbnZlcnNpb24pIHsKKyAgICAgICAgICAg
IHdlaWdodCA9IGRlbm9ybWFsaXplV2VpZ2h0KHdlaWdodCk7CisgICAgICAgICAgICB3aWR0aCA9
IGRlbm9ybWFsaXplV2lkdGgod2lkdGgpOworICAgICAgICAgICAgc2xvcGUgPSBkZW5vcm1hbGl6
ZVNsb3BlKHNsb3BlKTsKKyAgICAgICAgfQorICAgICAgICBhcHBseVZhcmlhdGlvbih7eyd3Jywg
J2cnLCAnaCcsICd0J319LCB3ZWlnaHQpOworICAgICAgICBhcHBseVZhcmlhdGlvbih7eyd3Jywg
J2QnLCAndCcsICdoJ319LCB3aWR0aCk7CisgICAgICAgIGFwcGx5VmFyaWF0aW9uKHt7J3MnLCAn
bCcsICduJywgJ3QnfX0sIHNsb3BlKTsKICAgICB9CiAKICAgICBpZiAoZm9udE9wdGljYWxTaXpp
bmcgPT0gRm9udE9wdGljYWxTaXppbmc6OkVuYWJsZWQpIHsKQEAgLTYwMSwxNyArNjY0LDE2IEBA
IFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnNpbWlsYXJGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIGNvbnN0IEF0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRp
YyBGb250U2VsZWN0aW9uVmFsdWUgc3RyZXRjaEZyb21Db3JlVGV4dFRyYWl0cyhDRkRpY3Rpb25h
cnlSZWYgdHJhaXRzKQorc3RhdGljIGZsb2F0IHN0cmV0Y2hGcm9tQ29yZVRleHRUcmFpdHMoQ0ZE
aWN0aW9uYXJ5UmVmIHRyYWl0cykKIHsKICAgICBhdXRvIHdpZHRoTnVtYmVyID0gc3RhdGljX2Nh
c3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHRyYWl0cywga0NURm9udFdpZHRo
VHJhaXQpKTsKLSAgICBpZiAod2lkdGhOdW1iZXIpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBu
b3JtYWxpemF0aW9uIGZyb20gQ29yZSBUZXh0J3MgWy0xLCAxXSByYW5nZSB0byBDU1MncyBbNTAl
LCAyMDAlXSByYW5nZSBpc24ndCBwZXJmZWN0LgotICAgICAgICBmbG9hdCBjdFdpZHRoOwotICAg
ICAgICBhdXRvIHN1Y2Nlc3MgPSBDRk51bWJlckdldFZhbHVlKHdpZHRoTnVtYmVyLCBrQ0ZOdW1i
ZXJGbG9hdFR5cGUsICZjdFdpZHRoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBz
dWNjZXNzKTsKLSAgICAgICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZShjdFdpZHRoIDwgMC41
ID8gY3RXaWR0aCAqIDUwICsgMTAwIDogY3RXaWR0aCAqIDE1MCArIDUwKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG5vcm1hbFN0cmV0Y2hWYWx1ZSgpOworICAgIGlmICghd2lkdGhOdW1iZXIpCisgICAg
ICAgIHJldHVybiBub3JtYWxTdHJldGNoVmFsdWUoKTsKKworICAgIGZsb2F0IGN0V2lkdGg7Cisg
ICAgYXV0byBzdWNjZXNzID0gQ0ZOdW1iZXJHZXRWYWx1ZSh3aWR0aE51bWJlciwga0NGTnVtYmVy
RmxvYXRUeXBlLCAmY3RXaWR0aCk7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNz
KTsKKyAgICByZXR1cm4gbm9ybWFsaXplV2lkdGgoY3RXaWR0aCk7CiB9CiAKIHN0YXRpYyB2b2lk
IGludmFsaWRhdGVGb250Q2FjaGUoKTsKQEAgLTcwOCwyNSArNzcwLDI1IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc1N5c3RlbUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB9CiAKICNp
ZiBTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tVUAotc3RhdGljIEZvbnRTZWxlY3Rpb25W
YWx1ZSBmb250V2VpZ2h0RnJvbUNvcmVUZXh0KENHRmxvYXQgd2VpZ2h0KQorc3RhdGljIGZsb2F0
IGZvbnRXZWlnaHRGcm9tQ29yZVRleHQoQ0dGbG9hdCB3ZWlnaHQpCiB7CiAgICAgaWYgKHdlaWdo
dCA8IC0wLjYpCi0gICAgICAgIHJldHVybiBGb250U2VsZWN0aW9uVmFsdWUoMTAwKTsKKyAgICAg
ICAgcmV0dXJuIDEwMDsKICAgICBpZiAod2VpZ2h0IDwgLTAuMzY1KQotICAgICAgICByZXR1cm4g
Rm9udFNlbGVjdGlvblZhbHVlKDIwMCk7CisgICAgICAgIHJldHVybiAyMDA7CiAgICAgaWYgKHdl
aWdodCA8IC0wLjExNSkKLSAgICAgICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZSgzMDApOwor
ICAgICAgICByZXR1cm4gMzAwOwogICAgIGlmICh3ZWlnaHQgPCAgMC4xMzApCi0gICAgICAgIHJl
dHVybiBGb250U2VsZWN0aW9uVmFsdWUoNDAwKTsKKyAgICAgICAgcmV0dXJuIDQwMDsKICAgICBp
ZiAod2VpZ2h0IDwgIDAuMjM1KQotICAgICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVlKDUw
MCk7CisgICAgICAgIHJldHVybiA1MDA7CiAgICAgaWYgKHdlaWdodCA8ICAwLjM1MCkKLSAgICAg
ICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZSg2MDApOworICAgICAgICByZXR1cm4gNjAwOwog
ICAgIGlmICh3ZWlnaHQgPCAgMC41MDApCi0gICAgICAgIHJldHVybiBGb250U2VsZWN0aW9uVmFs
dWUoNzAwKTsKKyAgICAgICAgcmV0dXJuIDcwMDsKICAgICBpZiAod2VpZ2h0IDwgIDAuNzAwKQot
ICAgICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVlKDgwMCk7Ci0gICAgcmV0dXJuIEZvbnRT
ZWxlY3Rpb25WYWx1ZSg5MDApOworICAgICAgICByZXR1cm4gODAwOworICAgIHJldHVybiA5MDA7
CiB9CiAjZW5kaWYKIApAQCAtODM1LDE0ICs4OTcsMjEgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PFN0cmluZywgSW5zdGFsbGVkRm9udD4gbV9wb3N0U2NyaXB0TmFtZVRvRm9udERlc2NyaXB0b3Jz
OwogfTsKIAorLy8gQmVjYXVzZSB0aGlzIHN0cnVjdCBob2xkcyBpbnRlcm1lZGlhdGUgdmFsdWVz
IHdoaWNoIG1heSBiZSBpbiB0aGUgY29tcHJlc3NlZCAtMSAtIDEgR1ggcmFuZ2UsIHdlIGRvbid0
IHdhbnQgdG8gdXNlIHRoZSByZWxhdGl2ZWx5IGxhcmdlCisvLyBxdWFudGl6YXRpb24gb2YgRm9u
dFNlbGVjdGlvblZhbHVlLiBJbnN0ZWFkLCBkbyB0aGlzIGxvZ2ljIHdpdGggZmxvYXRzLgorc3Ry
dWN0IE1pbk1heCB7CisgICAgZmxvYXQgbWluaW11bTsKKyAgICBmbG9hdCBtYXhpbXVtOworfTsK
Kwogc3RydWN0IFZhcmlhdGlvbkNhcGFiaWxpdGllcyB7Ci0gICAgc3RkOjpvcHRpb25hbDxGb250
U2VsZWN0aW9uUmFuZ2U+IHdlaWdodDsKLSAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25S
YW5nZT4gd2lkdGg7Ci0gICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IHNsb3Bl
OworICAgIHN0ZDo6b3B0aW9uYWw8TWluTWF4PiB3ZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxN
aW5NYXg+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8TWluTWF4PiBzbG9wZTsKIH07CiAKICNp
ZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVj
dGlvblJhbmdlPiBleHRyYWN0VmFyaWF0aW9uQm91bmRzKENGRGljdGlvbmFyeVJlZiBheGlzKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TWluTWF4PiBleHRyYWN0VmFyaWF0aW9uQm91bmRzKENGRGlj
dGlvbmFyeVJlZiBheGlzKQogewogICAgIENGTnVtYmVyUmVmIG1pbmltdW1WYWx1ZSA9IHN0YXRp
Y19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShheGlzLCBrQ1RGb250VmFy
aWF0aW9uQXhpc01pbmltdW1WYWx1ZUtleSkpOwogICAgIENGTnVtYmVyUmVmIG1heGltdW1WYWx1
ZSA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShheGlzLCBr
Q1RGb250VmFyaWF0aW9uQXhpc01heGltdW1WYWx1ZUtleSkpOwpAQCAtODUxLDcgKzkyMCw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gZXh0cmFjdFZhcmlhdGlv
bkJvdW5kcyhDRkRpY3Rpb25hcnlSZWYKICAgICBDRk51bWJlckdldFZhbHVlKG1pbmltdW1WYWx1
ZSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmcmF3TWluaW11bVZhbHVlKTsKICAgICBDRk51bWJlckdl
dFZhbHVlKG1heGltdW1WYWx1ZSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmcmF3TWF4aW11bVZhbHVl
KTsKICAgICBpZiAocmF3TWluaW11bVZhbHVlIDwgcmF3TWF4aW11bVZhbHVlKQotICAgICAgICBy
ZXR1cm4ge3sgRm9udFNlbGVjdGlvblZhbHVlKHJhd01pbmltdW1WYWx1ZSksIEZvbnRTZWxlY3Rp
b25WYWx1ZShyYXdNYXhpbXVtVmFsdWUpIH19OworICAgICAgICByZXR1cm4ge3sgcmF3TWluaW11
bVZhbHVlLCByYXdNYXhpbXVtVmFsdWUgfX07CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
ICNlbmRpZgpAQCAtODY0LDcgKzkzMyw4IEBAIHN0YXRpYyBWYXJpYXRpb25DYXBhYmlsaXRpZXMg
dmFyaWF0aW9uQ2FwYWJpbGl0aWVzRm9yRm9udERlc2NyaXB0b3IoQ1RGb250RGVzY3JpCiAgICAg
aWYgKCFhZG9wdENGKENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlKGZvbnREZXNjcmlwdG9y
LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKENURm9udENvcHlWYXJpYXRpb25BeGVzKGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLCAwLCBu
dWxscHRyKSkuZ2V0KCkpKTsKKyAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdp
dGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvciwgMCwgbnVsbHB0cikpOworICAgIGF1dG8g
dmFyaWF0aW9ucyA9IGFkb3B0Q0YoQ1RGb250Q29weVZhcmlhdGlvbkF4ZXMoZm9udC5nZXQoKSkp
OwogICAgIGlmICghdmFyaWF0aW9ucykKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtODg1
LDYgKzk1NSwxNSBAQCBzdGF0aWMgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlhdGlvbkNhcGFi
aWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKENURm9udERlc2NyaQogICAgICAgICBlbHNlIGlmIChy
YXdBeGlzSWRlbnRpZmllciA9PSAweDczNkM2RTc0KSAvLyAnc2xudCcKICAgICAgICAgICAgIHJl
c3VsdC5zbG9wZSA9IGV4dHJhY3RWYXJpYXRpb25Cb3VuZHMoYXhpcyk7CiAgICAgfQorCisgICAg
aWYgKGlzR1hWYXJpYWJsZUZvbnQoZm9udC5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC53
ZWlnaHQpCisgICAgICAgICAgICByZXN1bHQud2VpZ2h0ID0ge3sgbm9ybWFsaXplV2VpZ2h0KHJl
c3VsdC53ZWlnaHQudmFsdWUoKS5taW5pbXVtKSwgbm9ybWFsaXplV2VpZ2h0KHJlc3VsdC53ZWln
aHQudmFsdWUoKS5tYXhpbXVtKSB9fTsKKyAgICAgICAgaWYgKHJlc3VsdC53aWR0aCkKKyAgICAg
ICAgICAgIHJlc3VsdC53aWR0aCA9IHt7IG5vcm1hbGl6ZVdpZHRoKHJlc3VsdC53aWR0aC52YWx1
ZSgpLm1pbmltdW0pLCBub3JtYWxpemVXaWR0aChyZXN1bHQud2lkdGgudmFsdWUoKS5tYXhpbXVt
KSB9fTsKKyAgICAgICAgaWYgKHJlc3VsdC5zbG9wZSkKKyAgICAgICAgICAgIHJlc3VsdC5zbG9w
ZSA9IHt7IG5vcm1hbGl6ZVNsb3BlKHJlc3VsdC5zbG9wZS52YWx1ZSgpLm1pbmltdW0pLCBub3Jt
YWxpemVTbG9wZShyZXN1bHQuc2xvcGUudmFsdWUoKS5tYXhpbXVtKSB9fTsKKyAgICB9CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShmb250RGVzY3JpcHRvcik7CiAjZW5kaWYKQEAgLTkxOSwxMCAr
OTk4LDEwIEBAIEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzRm9yRm9udERl
c2NyaXB0b3IoQ1RGb250RGVzY3JpcHRvclJlZiBmb250CiAgICAgICAgICAgICAgICAgICAgIGlu
dDMyX3Qgc3ltYm9saWNUcmFpdHM7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9
IENGTnVtYmVyR2V0VmFsdWUoc3ltYm9saWNUcmFpdHNOdW1iZXIsIGtDRk51bWJlclNJbnQzMlR5
cGUsICZzeW1ib2xpY1RyYWl0cyk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c3VjY2Vzcywgc3VjY2Vzcyk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2xvcGVWYWx1ZSA9
IHN5bWJvbGljVHJhaXRzICYga0NURm9udFRyYWl0SXRhbGljID8gaXRhbGljVmFsdWUoKSA6IG5v
cm1hbEl0YWxpY1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gc2xvcGVWYWx1ZSA9
IHN0YXRpY19jYXN0PGZsb2F0PihzeW1ib2xpY1RyYWl0cyAmIGtDVEZvbnRUcmFpdEl0YWxpYyA/
IGl0YWxpY1ZhbHVlKCkgOiBub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgdmFyaWF0aW9uQ2FwYWJpbGl0aWVzLnNsb3BlID0ge3sgc2xvcGVWYWx1ZSwgc2xvcGVWYWx1
ZSB9fTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFyaWF0
aW9uQ2FwYWJpbGl0aWVzLnNsb3BlID0ge3sgbm9ybWFsSXRhbGljVmFsdWUoKSwgbm9ybWFsSXRh
bGljVmFsdWUoKSB9fTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uQ2FwYWJpbGl0aWVz
LnNsb3BlID0ge3sgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbEl0YWxpY1ZhbHVlKCkpLCBzdGF0
aWNfY2FzdDxmbG9hdD4obm9ybWFsSXRhbGljVmFsdWUoKSkgfX07CiAgICAgICAgICAgICB9CiAK
ICNpZiBTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tVUApAQCAtOTM1LDcgKzEwMTQsNyBA
QCBGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9y
KENURm9udERlc2NyaXB0b3JSZWYgZm9udAogICAgICAgICAgICAgICAgICAgICBhdXRvIHdlaWdo
dFZhbHVlID0gZm9udFdlaWdodEZyb21Db3JlVGV4dChjdFdlaWdodCk7CiAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7eyB3ZWlnaHRWYWx1ZSwgd2Vp
Z2h0VmFsdWUgfX07CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7eyBub3JtYWxXZWlnaHRWYWx1ZSgpLCBu
b3JtYWxXZWlnaHRWYWx1ZSgpIH19OworICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb25DYXBh
YmlsaXRpZXMud2VpZ2h0ID0ge3sgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbFdlaWdodFZhbHVl
KCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsV2VpZ2h0VmFsdWUoKSkgfX07CiAgICAgICAg
ICAgICB9CiAjZW5kaWYKICAgICAgICAgfQpAQCAtOTQ4LDE0ICsxMDI3LDE1IEBAIEZvbnRTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzRm9yRm9udERlc2NyaXB0b3IoQ1RGb250RGVz
Y3JpcHRvclJlZiBmb250CiAgICAgICAgICAgICBmbG9hdCBjc3NXZWlnaHQ7CiAgICAgICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBDRk51bWJlckdldFZhbHVlKHdlaWdodE51bWJlci5nZXQoKSwga0NG
TnVtYmVyRmxvYXRUeXBlLCAmY3NzV2VpZ2h0KTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c3VjY2Vzcywgc3VjY2Vzcyk7Ci0gICAgICAgICAgICBhdXRvIHdlaWdodFZhbHVlID0gRm9udFNl
bGVjdGlvblZhbHVlKGNzc1dlaWdodCk7Ci0gICAgICAgICAgICB2YXJpYXRpb25DYXBhYmlsaXRp
ZXMud2VpZ2h0ID0ge3sgd2VpZ2h0VmFsdWUsIHdlaWdodFZhbHVlIH19OworICAgICAgICAgICAg
dmFyaWF0aW9uQ2FwYWJpbGl0aWVzLndlaWdodCA9IHt7IGNzc1dlaWdodCwgY3NzV2VpZ2h0IH19
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWln
aHQgPSB7eyBub3JtYWxXZWlnaHRWYWx1ZSgpLCBub3JtYWxXZWlnaHRWYWx1ZSgpIH19OworICAg
ICAgICAgICAgdmFyaWF0aW9uQ2FwYWJpbGl0aWVzLndlaWdodCA9IHt7IHN0YXRpY19jYXN0PGZs
b2F0Pihub3JtYWxXZWlnaHRWYWx1ZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbFdlaWdo
dFZhbHVlKCkpIH19OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHsgdmFyaWF0aW9uQ2Fw
YWJpbGl0aWVzLndlaWdodC52YWx1ZSgpLCB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2lkdGgudmFs
dWUoKSwgdmFyaWF0aW9uQ2FwYWJpbGl0aWVzLnNsb3BlLnZhbHVlKCkgfTsKKyAgICByZXR1cm4g
e3sgRm9udFNlbGVjdGlvblZhbHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQudmFsdWUo
KS5taW5pbXVtKSwgRm9udFNlbGVjdGlvblZhbHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWln
aHQudmFsdWUoKS5tYXhpbXVtKSB9LAorICAgICAgICB7IEZvbnRTZWxlY3Rpb25WYWx1ZSh2YXJp
YXRpb25DYXBhYmlsaXRpZXMud2lkdGgudmFsdWUoKS5taW5pbXVtKSwgRm9udFNlbGVjdGlvblZh
bHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy53aWR0aC52YWx1ZSgpLm1heGltdW0pIH0sCisgICAg
ICAgIHsgRm9udFNlbGVjdGlvblZhbHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy5zbG9wZS52YWx1
ZSgpLm1pbmltdW0pLCBGb250U2VsZWN0aW9uVmFsdWUodmFyaWF0aW9uQ2FwYWJpbGl0aWVzLnNs
b3BlLnZhbHVlKCkubWF4aW11bSkgfX07CiB9CiAKICNpZiAhU0hPVUxEX1VTRV9DT1JFX1RFWFRf
Rk9OVF9MT09LVVAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBmY2ZjMjBiOTIwNTA0ZTQ2MmJjNTg1OTM1OGIzZTFkNTA5MGRj
NmUxLi5kYTdkN2EzODkxOTBhOTViODA0ZTYzYmE0ZjJkOGQwZTUwYTZlNzc1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTctMDMtMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBUcnkgdG8gbm9ybWFsaXplIHZhcmlhdGlvbiByYW5nZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDExOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC90ZXh0
L3ZhcmlhdGlvbnMvZm9udC1zZWxlY3Rpb24tcHJvcGVydGllcy1leHBlY3RlZC5odG1sOgorCiAy
MDE3LTAzLTI3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IE9ubHkgYXR0YWNoIEF0dHJpYnV0ZXMgdG8gYSBnaXZlbiBlbGVtZW50IG9uZSB0aW1lCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdmFyaWF0aW9ucy9mb250LXNlbGVjdGlvbi1w
cm9wZXJ0aWVzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdmFyaWF0aW9u
cy9mb250LXNlbGVjdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLmh0bWwKaW5kZXggODhmYTVmZTA2
ZGJhMTZiMmM3ODVhOTI4OTYxMDM4NmQwNjI5MDM0Yi4uOTZjMmExZmQxYmFlNjczZTExOGEzMDc0
NGY4NTY4YWIxMzBhZTU4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3Zhcmlh
dGlvbnMvZm9udC1zZWxlY3Rpb24tcHJvcGVydGllcy1leHBlY3RlZC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC92YXJpYXRpb25zL2ZvbnQtc2VsZWN0aW9uLXByb3BlcnRpZXMtZXhw
ZWN0ZWQuaHRtbApAQCAtMTAsNyArMTAsNyBAQAogPC9oZWFkPgogPGJvZHk+CiBUaGlzIHRlc3Qg
bWFrZXMgc3VyZSB0aGF0IHRoZSBmb250IHNlbGVjdGlvbiBwcm9wZXJ0aWVzIGFmZmVjdCBmb250
IHZhcmlhdGlvbnMuCi08ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQm94aXM7IGZvbnQtdmFyaWF0
aW9uLXNldHRpbmdzOiAnd2R0aCcgOTAwOyI+SGVsbG88L2Rpdj4KKzxkaXYgc3R5bGU9ImZvbnQt
ZmFtaWx5OiBCb3hpczsgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3ZHRoJyA1LjY2NjY7Ij5I
ZWxsbzwvZGl2PgogPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IEJveGlzOyBmb250LXZhcmlhdGlv
bi1zZXR0aW5nczogJ3dkdGgnIDEwMDsiPkhlbGxvPC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305801</attachid>
            <date>2017-03-29 15:38:21 -0700</date>
            <delta_ts>2017-03-29 15:45:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170119-20170329153820.patch</filename>
            <type>text/plain</type>
            <size>17154</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1ODllYjdkN2JmNWI0
NzE0OTgwNTkxZGE0Yzg1Zjc3MjJjZGQ2NC4uYTcxMTZiZWI2ZGQ0N2FjNDAzN2I4OGQ1ZDU1OWVi
Y2FiMjkxNjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE3LTAzLTI5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVHJ5IHRvIG5v
cm1hbGl6ZSB2YXJpYXRpb24gcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzAxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUcnVlVHlwZSBHWC1zdHlsZSB2YXJpYXRpb24gZm9udHMgdXNlIG9u
ZSBwYXJ0aWN1bGFyIHNjYWxlIGZvciB2YWx1ZXMgb24gdGhlaXIKKyAgICAgICAgd2VpZ2h0L3dp
ZHRoL3Nsb3BlIGF4ZXMgLSB1c3VhbGx5IHRoZSB2YWx1ZXMgbGllIGJldHdlZW4gLTEgYW5kIDEg
b24gdGhhdCBzY2FsZS4KKyAgICAgICAgSG93ZXZlciwgT3BlblR5cGUgMS44LXN0eWxlIGZvbnRz
IHVzZSB0aGUgQ1NTIHNjYWxlIGZvciB2YWx1ZXMgb24gdGhlc2UgYXhlcy4KKyAgICAgICAgRm9y
IHRoZSBwdXJwb3NlcyBvZiBmb250IHNlbGVjdGlvbiwgdGhlc2UgdmFsdWVzIG5lZWQgdG8gbGll
IG9uIHRoZSBzYW1lIHNjYWxlLgorICAgICAgICBIb3dldmVyLCB3aGVuIGZvbnQgc2VsZWN0aW9u
IGlzIGNvbXBsZXRlZCBhbmQgdGhlIHZhcmlhdGlvbiB2YWx1ZXMgYXJlIGFjdHVhbGx5CisgICAg
ICAgIGJlaW5nIGFwcGxpZWQgdG8gdGhlIGZvbnRzLCB2YWx1ZXMgd2hpY2ggbGllIG9uIHRoZSBm
b250J3MgYWN0dWFsIHNjYWxlIG5lZWQgdG8KKyAgICAgICAgYmUgYXBwbGllZC4gVGhpcyBwYXRj
aCBhZGRzIG5vcm1hbGl6ZSooKSBhbmQgZGVub3JtYWxpemUqKCkgZnVuY3Rpb25zIHRvIHBlcmZv
cm0KKyAgICAgICAgYm90aCBvZiB0aGVzZSBvcGVyYXRpb25zLiAKKworICAgICAgICBUaGUgY29u
dmVyc2lvbiBpdHNlbGYgYmV0d2VlbiB0aGUgdHdvIHNjYWxlcyBpc24ndCBhbiBleGFjdCBtYXBw
aW5nLiBNYXBwaW5nCisgICAgICAgIHNsb3BlIGlzIGp1c3QgYSBsaW5lYXIgcmVsYXRpb25zaGlw
IHdpdGggMGRlZyA8PT4gMCBhbmQgMjBkZWcgPD0+IDEgKGFzIHBlciB0aGUKKyAgICAgICAgQ1NT
IEZvbnRzIHNwZWMpLiBNYXBwaW5nIHdpZHRocyBpcyBzaW1pbGFyLCBpdCB1c2VzIGEgMi1jb21w
b25lbnQgcGllY2V3aXNlCisgICAgICAgIGxpbmVhciByZWxhdGlvbnNoaXAgd2hpY2ggaW5jbHVk
ZXMgdGhlIHZhbHVlcyBnaXZlbiBpbiB0aGUgTWljcm9zb2Z0IE9wZW5UeXBlCisgICAgICAgIHNw
ZWMgZm9yIHRoZSBPUy8yIHRhYmxlJ3MgdXNXaWR0aENsYXNzIGZpZWxkLiBXZWlnaHRzIGFyZSBt
b3JlIGRpZmZpY3VsdCwgc28gSQorICAgICAgICBwbG90dGVkIHRoZSBDU1Mgd2VpZ2h0cyBhbmQg
dGhlIEdYLXN0eWxlIHdlaWdodHMgZm9yIGV2ZXJ5IHN0eWxlIG9mIFNhbgorICAgICAgICBGcmFu
Y2lzY28sIHNhdyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgYXBwZWFycyB0byBiZSBsaW5lYXIsIGFu
ZCByYW4gYSBsaW5lYXIKKyAgICAgICAgcmVncmVzc2lvbiB0byBjb21wdXRlIHRoZSBsaW5lIGVx
dWF0aW9uLgorCisgICAgICAgIEFzIGZvciB0aGUgYWN0dWFsIGRpc2NyaW1pbmF0aW9uIG9mIGRl
dGVybWluaW5nIHdoZXRoZXIgYSBmb250IGlzIGEgR1gtc3R5bGUKKyAgICAgICAgZm9udCBvciBu
b3QsIHdlIGNhbiB1c2UgdGhlIHByZXNlbmNlIG9mIHRoZSAnU1RBVCcgdGFibGUuIFRoaXMgdGFi
bGUgZGlkbid0CisgICAgICAgIGV4aXN0IHdoZW4gR1ggZm9udHMgd2VyZSBiZWluZyBjcmVhdGVk
LCBhbmQgT3BlblR5cGUgMS44IHZhcmlhYmxlIGZvbnRzIGFyZQorICAgICAgICByZXF1aXJlZCB0
byBoYXZlIHRoaXMgdGFibGUuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L3ZhcmlhdGlvbnMv
Zm9udC1zZWxlY3Rpb24tcHJvcGVydGllcy1leHBlY3RlZC5odG1sCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc0dYVmFyaWFibGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVdlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVTbG9wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkZW5vcm1hbGl6ZVdlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpkZW5vcm1hbGl6ZVdpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OmRlbm9ybWFsaXplU2xvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6bm9ybWFsaXplV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6cHJlcGFyZVBsYXRmb3JtRm9u
dCk6IEluc3RlYWQgb2YgdXNpbmcgRm9udFNlbGVjdGlvblZhbHVlcyBmb3IgdGhlCisgICAgICAg
IGludGVybWVkaWF0ZSB2YWx1ZXMsIHdlIHNob3VsZCB1c2UgZmxvYXRzIGluc3RlYWQuIFRoaXMg
aXMgYmVjYXVzZQorICAgICAgICBGb250U2VsZWN0aW9uVmFsdWVzIGFyZSBmaXhlZC1wb2ludCBu
dW1iZXJzIHdpdGggdGhlIGRlbm9taW5hdG9yIGhhdmluZyAyIGJpdHMuCisgICAgICAgIFdoZW4g
dXNpbmcgdGhpcyBkYXRhIHR5cGUgdG8gcmVwcmVzZW50IHZhbHVlcyBvbiB0aGUgR1ggc2NhbGUs
IHdoaWNoIGFyZSB1c3VhbGx5CisgICAgICAgIGJldHdlZW4gMCBhbmQgMSwgeW91IGxvc2UgYSBs
b3Qgb2YgZmlkZWxpdHkuIEluc3RlYWQsIG91ciBpbnRlcm1lZGlhdGUKKyAgICAgICAgY2FsY3Vs
YXRpb25zIHNob3VsZCBiZSBkb25lIHdpdGggZmxvYXRzLCBhbmQgY29udmVydGVkIHRvIEZvbnRT
ZWxlY3Rpb25WYWx1ZXMgYXQKKyAgICAgICAgdGhlIGVuZCB3aGVuIHRoZXkgYXJlIHJlcHJlc2Vu
dGF0aXZlIG9mIHZhbHVlcyBvbiB0aGUgQ1NTIHNjYWxlLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
ZXRjaEZyb21Db3JlVGV4dFRyYWl0cyk6CisgICAgICAgIChXZWJDb3JlOjpmb250V2VpZ2h0RnJv
bUNvcmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RWYXJpYXRpb25Cb3VuZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6dmFyaWF0aW9uQ2FwYWJpbGl0aWVzRm9yRm9udERlc2NyaXB0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y2FwYWJpbGl0aWVzRm9yRm9udERlc2NyaXB0b3IpOgorCiAy
MDE3LTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQW5p
bWF0ZWQgU1ZHIGltYWdlcyBhcmUgbm90IHBhdXNlZCBpbiBwYWdlcyBsb2FkZWQgaW4gdGhlIGJh
Y2tncm91bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBiYjY3MDljZWVlN2Y0YjI3ZDM2
YzlkZjAzNDgxZTVmNDIwNjE1NzdhLi45YTQ3MGQ0MTZjNjQwYmFkOWExY2NmNzk0MjA4NmNmMDAy
NzIxMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC00MjgsOCArNDI4LDYyIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBmb250SXNTeXN0ZW1Gb250KENURm9udFJlZiBmb250KQogICAgIGF1
dG8gbmFtZSA9IGFkb3B0Q0YoQ1RGb250Q29weVBvc3RTY3JpcHROYW1lKGZvbnQpKTsKICAgICBy
ZXR1cm4gQ0ZTdHJpbmdHZXRMZW5ndGgobmFtZS5nZXQoKSkgPiAwICYmIENGU3RyaW5nR2V0Q2hh
cmFjdGVyQXRJbmRleChuYW1lLmdldCgpLCAwKSA9PSAnLic7CiB9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc0dYVmFyaWFibGVGb250KENURm9udFJlZiBmb250KQoreworICAgIGF1dG8gdGFibGVz
ID0gYWRvcHRDRihDVEZvbnRDb3B5QXZhaWxhYmxlVGFibGVzKGZvbnQsIGtDVEZvbnRUYWJsZU9w
dGlvbk5vT3B0aW9ucykpOworICAgIGlmICghdGFibGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYXV0byBzaXplID0gQ0ZBcnJheUdldENvdW50KHRhYmxlcy5nZXQoKSk7CisgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIC8vIFRoaXMgaXMgc28g
eXVja3kuCisgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZlcmVuY2Uv
Y29yZXRleHQvMTUxMDc3NC1jdGZvbnRjb3B5YXZhaWxhYmxldGFibGVzCisgICAgICAgIC8vICJU
aGUgcmV0dXJuZWQgc2V0IHdpbGwgY29udGFpbiB1bmJveGVkIHZhbHVlcywgd2hpY2ggY2FuIGJl
IGV4dHJhY3RlZCBsaWtlIHNvOiIKKyAgICAgICAgLy8gIkNURm9udFRhYmxlVGFnIHRhZyA9IChD
VEZvbnRUYWJsZVRhZykodWludHB0cl90KUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodGFncywgaW5k
ZXgpOyIKKyAgICAgICAgQ1RGb250VGFibGVUYWcgdGFibGVUYWcgPSBzdGF0aWNfY2FzdDxDVEZv
bnRUYWJsZVRhZz4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgodGFibGVzLmdldCgpLCBpKSkpOworICAgICAgICBpZiAodGFibGVUYWcgPT0gJ3N0YXQn
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworLy8gVGhlc2UgdmFsdWVzIHdlcmUgY2FsY3VsYXRlZCBieSBwZXJmb3JtaW5nIGEgbGluZWFy
IHJlZ3Jlc3Npb24gb24gdGhlIENTUyB3ZWlnaHRzL3dpZHRocy9zbG9wZXMgYW5kIENvcmUgVGV4
dCB3ZWlnaHRzL3dpZHRocy9zbG9wZXMgb2YgU2FuIEZyYW5jaXNjby4KKy8vIEZJWE1FOiBHZXQg
dGhlIHJlYWwgdmFsdWVzIGZyb20gQ29yZSBUZXh0Lgorc3RhdGljIGlubGluZSBmbG9hdCBub3Jt
YWxpemVXZWlnaHQoZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIDUyMy43ICogdmFsdWUgLSAx
MDkuMzsKK30KKworc3RhdGljIGlubGluZSBmbG9hdCBub3JtYWxpemVTbG9wZShmbG9hdCB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgKiAzMDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQg
ZGVub3JtYWxpemVXZWlnaHQoZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuICh2YWx1ZSArIDEw
OS4zKSAvIDUyMy43OworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IGRlbm9ybWFsaXplV2lkdGgo
ZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlIDwgMTI1KQorICAgICAgICByZXR1cm4gKHZh
bHVlIC0gMTAwKSAvIDUwOworICAgIHJldHVybiAodmFsdWUgLSA1MCkgLyAxNTA7Cit9CisKK3N0
YXRpYyBpbmxpbmUgZmxvYXQgZGVub3JtYWxpemVTbG9wZShmbG9hdCB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gdmFsdWUgLyAzMDA7Cit9CiAjZW5kaWYKIAorc3RhdGljIGlubGluZSBmbG9hdCBub3Jt
YWxpemVXaWR0aChmbG9hdCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPCAwLjUpCisgICAgICAg
IHJldHVybiB2YWx1ZSAqIDUwICsgMTAwOworICAgIHJldHVybiB2YWx1ZSAqIDE1MCArIDUwOwor
fQorCiBSZXRhaW5QdHI8Q1RGb250UmVmPiBwcmVwYXJlUGxhdGZvcm1Gb250KENURm9udFJlZiBv
cmlnaW5hbEZvbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBjb25zdCBG
b250RmVhdHVyZVNldHRpbmdzKiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNl
dHRpbmdzKiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5n
cyYgZmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIHZhcmlhbnRTZXR0aW5ncywg
Rm9udFNlbGVjdGlvblJlcXVlc3QgZm9udFNlbGVjdGlvblJlcXVlc3QsIGNvbnN0IEZvbnRWYXJp
YXRpb25TZXR0aW5ncyYgdmFyaWF0aW9ucywgRm9udE9wdGljYWxTaXppbmcgZm9udE9wdGljYWxT
aXppbmcsIGZsb2F0IHNpemUpCiB7CiAgICAgYm9vbCBhbHdheXNBZGRWYXJpYXRpb25zID0gZmFs
c2U7CkBAIC00ODMsNiArNTM3LDcgQEAgUmV0YWluUHRyPENURm9udFJlZj4gcHJlcGFyZVBsYXRm
b3JtRm9udChDVEZvbnRSZWYgb3JpZ2luYWxGb250LCBUZXh0UmVuZGVyaW5nTW8KICNpZiBFTkFC
TEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgIFZhcmlhdGlvbnNNYXAgdmFyaWF0aW9uc1RvQmVBcHBs
aWVkOwogCisgICAgYm9vbCBuZWVkc0NvbnZlcnNpb24gPSBpc0dYVmFyaWFibGVGb250KG9yaWdp
bmFsRm9udCk7CiAgICAgYXV0byBhcHBseVZhcmlhdGlvblZhbHVlID0gWyZdKGNvbnN0IEZvbnRU
YWcmIHRhZywgZmxvYXQgdmFsdWUsIGJvb2wgaXNEZWZhdWx0VmFsdWUpIHsKICAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yODcwNzgyMj4gaXMgZml4ZWQKICNk
ZWZpbmUgV09SS0FST1VORF9DT1JFVEVYVF9WQVJJQVRJT05TX0RFRkFVTFRfVkFMVUVfQlVHICgo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDExMDAwMCkpCkBAIC01MDcsOSArNTYyLDE3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHByZXBh
cmVQbGF0Zm9ybUZvbnQoQ1RGb250UmVmIG9yaWdpbmFsRm9udCwgVGV4dFJlbmRlcmluZ01vCiAK
ICAgICAvLyBUaGUgc3lzdGVtIGZvbnQgaXMgc29tZXdoYXQgbWFnaWNhbC4gRG9uJ3QgbWVzcyB3
aXRoIGl0cyB2YXJpYXRpb25zLgogICAgIGlmICghZm9udElzU3lzdGVtRm9udChvcmlnaW5hbEZv
bnQpKSB7Ci0gICAgICAgIGFwcGx5VmFyaWF0aW9uKHt7J3cnLCAnZycsICdoJywgJ3QnfX0sIHN0
YXRpY19jYXN0PGZsb2F0Pihmb250U2VsZWN0aW9uUmVxdWVzdC53ZWlnaHQpKTsKLSAgICAgICAg
YXBwbHlWYXJpYXRpb24oe3sndycsICdkJywgJ3QnLCAnaCd9fSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZvbnRTZWxlY3Rpb25SZXF1ZXN0LndpZHRoKSk7Ci0gICAgICAgIGFwcGx5VmFyaWF0aW9uKHt7
J3MnLCAnbCcsICduJywgJ3QnfX0sIHN0YXRpY19jYXN0PGZsb2F0Pihmb250U2VsZWN0aW9uUmVx
dWVzdC5zbG9wZSkpOworICAgICAgICBmbG9hdCB3ZWlnaHQgPSBmb250U2VsZWN0aW9uUmVxdWVz
dC53ZWlnaHQ7CisgICAgICAgIGZsb2F0IHdpZHRoID0gZm9udFNlbGVjdGlvblJlcXVlc3Qud2lk
dGg7CisgICAgICAgIGZsb2F0IHNsb3BlID0gZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGU7Cisg
ICAgICAgIGlmIChuZWVkc0NvbnZlcnNpb24pIHsKKyAgICAgICAgICAgIHdlaWdodCA9IGRlbm9y
bWFsaXplV2VpZ2h0KHdlaWdodCk7CisgICAgICAgICAgICB3aWR0aCA9IGRlbm9ybWFsaXplV2lk
dGgod2lkdGgpOworICAgICAgICAgICAgc2xvcGUgPSBkZW5vcm1hbGl6ZVNsb3BlKHNsb3BlKTsK
KyAgICAgICAgfQorICAgICAgICBhcHBseVZhcmlhdGlvbih7eyd3JywgJ2cnLCAnaCcsICd0J319
LCB3ZWlnaHQpOworICAgICAgICBhcHBseVZhcmlhdGlvbih7eyd3JywgJ2QnLCAndCcsICdoJ319
LCB3aWR0aCk7CisgICAgICAgIGFwcGx5VmFyaWF0aW9uKHt7J3MnLCAnbCcsICduJywgJ3QnfX0s
IHNsb3BlKTsKICAgICB9CiAKICAgICBpZiAoZm9udE9wdGljYWxTaXppbmcgPT0gRm9udE9wdGlj
YWxTaXppbmc6OkVuYWJsZWQpIHsKQEAgLTYwMSwxNyArNjY0LDE2IEBAIFJlZlB0cjxGb250PiBG
b250Q2FjaGU6OnNpbWlsYXJGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IGNvbnN0IEF0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBGb250U2VsZWN0aW9u
VmFsdWUgc3RyZXRjaEZyb21Db3JlVGV4dFRyYWl0cyhDRkRpY3Rpb25hcnlSZWYgdHJhaXRzKQor
c3RhdGljIGZsb2F0IHN0cmV0Y2hGcm9tQ29yZVRleHRUcmFpdHMoQ0ZEaWN0aW9uYXJ5UmVmIHRy
YWl0cykKIHsKICAgICBhdXRvIHdpZHRoTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKHRyYWl0cywga0NURm9udFdpZHRoVHJhaXQpKTsKLSAgICBp
ZiAod2lkdGhOdW1iZXIpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBub3JtYWxpemF0aW9uIGZy
b20gQ29yZSBUZXh0J3MgWy0xLCAxXSByYW5nZSB0byBDU1MncyBbNTAlLCAyMDAlXSByYW5nZSBp
c24ndCBwZXJmZWN0LgotICAgICAgICBmbG9hdCBjdFdpZHRoOwotICAgICAgICBhdXRvIHN1Y2Nl
c3MgPSBDRk51bWJlckdldFZhbHVlKHdpZHRoTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZj
dFdpZHRoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLSAgICAg
ICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZShjdFdpZHRoIDwgMC41ID8gY3RXaWR0aCAqIDUw
ICsgMTAwIDogY3RXaWR0aCAqIDE1MCArIDUwKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5vcm1hbFN0
cmV0Y2hWYWx1ZSgpOworICAgIGlmICghd2lkdGhOdW1iZXIpCisgICAgICAgIHJldHVybiBub3Jt
YWxTdHJldGNoVmFsdWUoKTsKKworICAgIGZsb2F0IGN0V2lkdGg7CisgICAgYXV0byBzdWNjZXNz
ID0gQ0ZOdW1iZXJHZXRWYWx1ZSh3aWR0aE51bWJlciwga0NGTnVtYmVyRmxvYXRUeXBlLCAmY3RX
aWR0aCk7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKKyAgICByZXR1cm4g
bm9ybWFsaXplV2lkdGgoY3RXaWR0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGludmFsaWRhdGVGb250
Q2FjaGUoKTsKQEAgLTcwOCwyNSArNzcwLDI1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5c3Rl
bUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB9CiAKICNpZiBTSE9VTERfVVNFX0NP
UkVfVEVYVF9GT05UX0xPT0tVUAotc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBmb250V2VpZ2h0
RnJvbUNvcmVUZXh0KENHRmxvYXQgd2VpZ2h0KQorc3RhdGljIGZsb2F0IGZvbnRXZWlnaHRGcm9t
Q29yZVRleHQoQ0dGbG9hdCB3ZWlnaHQpCiB7CiAgICAgaWYgKHdlaWdodCA8IC0wLjYpCi0gICAg
ICAgIHJldHVybiBGb250U2VsZWN0aW9uVmFsdWUoMTAwKTsKKyAgICAgICAgcmV0dXJuIDEwMDsK
ICAgICBpZiAod2VpZ2h0IDwgLTAuMzY1KQotICAgICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZh
bHVlKDIwMCk7CisgICAgICAgIHJldHVybiAyMDA7CiAgICAgaWYgKHdlaWdodCA8IC0wLjExNSkK
LSAgICAgICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZSgzMDApOworICAgICAgICByZXR1cm4g
MzAwOwogICAgIGlmICh3ZWlnaHQgPCAgMC4xMzApCi0gICAgICAgIHJldHVybiBGb250U2VsZWN0
aW9uVmFsdWUoNDAwKTsKKyAgICAgICAgcmV0dXJuIDQwMDsKICAgICBpZiAod2VpZ2h0IDwgIDAu
MjM1KQotICAgICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVlKDUwMCk7CisgICAgICAgIHJl
dHVybiA1MDA7CiAgICAgaWYgKHdlaWdodCA8ICAwLjM1MCkKLSAgICAgICAgcmV0dXJuIEZvbnRT
ZWxlY3Rpb25WYWx1ZSg2MDApOworICAgICAgICByZXR1cm4gNjAwOwogICAgIGlmICh3ZWlnaHQg
PCAgMC41MDApCi0gICAgICAgIHJldHVybiBGb250U2VsZWN0aW9uVmFsdWUoNzAwKTsKKyAgICAg
ICAgcmV0dXJuIDcwMDsKICAgICBpZiAod2VpZ2h0IDwgIDAuNzAwKQotICAgICAgICByZXR1cm4g
Rm9udFNlbGVjdGlvblZhbHVlKDgwMCk7Ci0gICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZSg5
MDApOworICAgICAgICByZXR1cm4gODAwOworICAgIHJldHVybiA5MDA7CiB9CiAjZW5kaWYKIApA
QCAtODM1LDE0ICs4OTcsMjEgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgSW5zdGFs
bGVkRm9udD4gbV9wb3N0U2NyaXB0TmFtZVRvRm9udERlc2NyaXB0b3JzOwogfTsKIAorLy8gQmVj
YXVzZSB0aGlzIHN0cnVjdCBob2xkcyBpbnRlcm1lZGlhdGUgdmFsdWVzIHdoaWNoIG1heSBiZSBp
biB0aGUgY29tcHJlc3NlZCAtMSAtIDEgR1ggcmFuZ2UsIHdlIGRvbid0IHdhbnQgdG8gdXNlIHRo
ZSByZWxhdGl2ZWx5IGxhcmdlCisvLyBxdWFudGl6YXRpb24gb2YgRm9udFNlbGVjdGlvblZhbHVl
LiBJbnN0ZWFkLCBkbyB0aGlzIGxvZ2ljIHdpdGggZmxvYXRzLgorc3RydWN0IE1pbk1heCB7Cisg
ICAgZmxvYXQgbWluaW11bTsKKyAgICBmbG9hdCBtYXhpbXVtOworfTsKKwogc3RydWN0IFZhcmlh
dGlvbkNhcGFiaWxpdGllcyB7Ci0gICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+
IHdlaWdodDsKLSAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gd2lkdGg7Ci0g
ICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IHNsb3BlOworICAgIHN0ZDo6b3B0
aW9uYWw8TWluTWF4PiB3ZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxNaW5NYXg+IHdpZHRoOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TWluTWF4PiBzbG9wZTsKIH07CiAKICNpZiBFTkFCTEUoVkFSSUFU
SU9OX0ZPTlRTKQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiBleHRy
YWN0VmFyaWF0aW9uQm91bmRzKENGRGljdGlvbmFyeVJlZiBheGlzKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8TWluTWF4PiBleHRyYWN0VmFyaWF0aW9uQm91bmRzKENGRGljdGlvbmFyeVJlZiBheGlz
KQogewogICAgIENGTnVtYmVyUmVmIG1pbmltdW1WYWx1ZSA9IHN0YXRpY19jYXN0PENGTnVtYmVy
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShheGlzLCBrQ1RGb250VmFyaWF0aW9uQXhpc01pbmlt
dW1WYWx1ZUtleSkpOwogICAgIENGTnVtYmVyUmVmIG1heGltdW1WYWx1ZSA9IHN0YXRpY19jYXN0
PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShheGlzLCBrQ1RGb250VmFyaWF0aW9u
QXhpc01heGltdW1WYWx1ZUtleSkpOwpAQCAtODUxLDcgKzkyMCw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRpY3Rp
b25hcnlSZWYKICAgICBDRk51bWJlckdldFZhbHVlKG1pbmltdW1WYWx1ZSwga0NGTnVtYmVyRmxv
YXRUeXBlLCAmcmF3TWluaW11bVZhbHVlKTsKICAgICBDRk51bWJlckdldFZhbHVlKG1heGltdW1W
YWx1ZSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmcmF3TWF4aW11bVZhbHVlKTsKICAgICBpZiAocmF3
TWluaW11bVZhbHVlIDwgcmF3TWF4aW11bVZhbHVlKQotICAgICAgICByZXR1cm4ge3sgRm9udFNl
bGVjdGlvblZhbHVlKHJhd01pbmltdW1WYWx1ZSksIEZvbnRTZWxlY3Rpb25WYWx1ZShyYXdNYXhp
bXVtVmFsdWUpIH19OworICAgICAgICByZXR1cm4ge3sgcmF3TWluaW11bVZhbHVlLCByYXdNYXhp
bXVtVmFsdWUgfX07CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZgpAQCAtODY0
LDcgKzkzMyw4IEBAIHN0YXRpYyBWYXJpYXRpb25DYXBhYmlsaXRpZXMgdmFyaWF0aW9uQ2FwYWJp
bGl0aWVzRm9yRm9udERlc2NyaXB0b3IoQ1RGb250RGVzY3JpCiAgICAgaWYgKCFhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlKGZvbnREZXNjcmlwdG9yLCBrQ1RGb250VmFyaWF0
aW9uQXR0cmlidXRlKSkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBhdXRvIHZhcmlh
dGlvbnMgPSBhZG9wdENGKENURm9udENvcHlWYXJpYXRpb25BeGVzKGFkb3B0Q0YoQ1RGb250Q3Jl
YXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLCAwLCBudWxscHRyKSkuZ2V0KCkp
KTsKKyAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRv
cihmb250RGVzY3JpcHRvciwgMCwgbnVsbHB0cikpOworICAgIGF1dG8gdmFyaWF0aW9ucyA9IGFk
b3B0Q0YoQ1RGb250Q29weVZhcmlhdGlvbkF4ZXMoZm9udC5nZXQoKSkpOwogICAgIGlmICghdmFy
aWF0aW9ucykKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtODg1LDYgKzk1NSwxNSBAQCBz
dGF0aWMgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnRE
ZXNjcmlwdG9yKENURm9udERlc2NyaQogICAgICAgICBlbHNlIGlmIChyYXdBeGlzSWRlbnRpZmll
ciA9PSAweDczNkM2RTc0KSAvLyAnc2xudCcKICAgICAgICAgICAgIHJlc3VsdC5zbG9wZSA9IGV4
dHJhY3RWYXJpYXRpb25Cb3VuZHMoYXhpcyk7CiAgICAgfQorCisgICAgaWYgKGlzR1hWYXJpYWJs
ZUZvbnQoZm9udC5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC53ZWlnaHQpCisgICAgICAg
ICAgICByZXN1bHQud2VpZ2h0ID0ge3sgbm9ybWFsaXplV2VpZ2h0KHJlc3VsdC53ZWlnaHQudmFs
dWUoKS5taW5pbXVtKSwgbm9ybWFsaXplV2VpZ2h0KHJlc3VsdC53ZWlnaHQudmFsdWUoKS5tYXhp
bXVtKSB9fTsKKyAgICAgICAgaWYgKHJlc3VsdC53aWR0aCkKKyAgICAgICAgICAgIHJlc3VsdC53
aWR0aCA9IHt7IG5vcm1hbGl6ZVdpZHRoKHJlc3VsdC53aWR0aC52YWx1ZSgpLm1pbmltdW0pLCBu
b3JtYWxpemVXaWR0aChyZXN1bHQud2lkdGgudmFsdWUoKS5tYXhpbXVtKSB9fTsKKyAgICAgICAg
aWYgKHJlc3VsdC5zbG9wZSkKKyAgICAgICAgICAgIHJlc3VsdC5zbG9wZSA9IHt7IG5vcm1hbGl6
ZVNsb3BlKHJlc3VsdC5zbG9wZS52YWx1ZSgpLm1pbmltdW0pLCBub3JtYWxpemVTbG9wZShyZXN1
bHQuc2xvcGUudmFsdWUoKS5tYXhpbXVtKSB9fTsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShmb250RGVzY3JpcHRvcik7CiAjZW5kaWYKQEAgLTkxOSwxMCArOTk4LDEwIEBAIEZvbnRT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzRm9yRm9udERlc2NyaXB0b3IoQ1RGb250
RGVzY3JpcHRvclJlZiBmb250CiAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3ltYm9saWNU
cmFpdHM7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFs
dWUoc3ltYm9saWNUcmFpdHNOdW1iZXIsIGtDRk51bWJlclNJbnQzMlR5cGUsICZzeW1ib2xpY1Ry
YWl0cyk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vz
cyk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2xvcGVWYWx1ZSA9IHN5bWJvbGljVHJhaXRz
ICYga0NURm9udFRyYWl0SXRhbGljID8gaXRhbGljVmFsdWUoKSA6IG5vcm1hbEl0YWxpY1ZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gc2xvcGVWYWx1ZSA9IHN0YXRpY19jYXN0PGZs
b2F0PihzeW1ib2xpY1RyYWl0cyAmIGtDVEZvbnRUcmFpdEl0YWxpYyA/IGl0YWxpY1ZhbHVlKCkg
OiBub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uQ2Fw
YWJpbGl0aWVzLnNsb3BlID0ge3sgc2xvcGVWYWx1ZSwgc2xvcGVWYWx1ZSB9fTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uQ2FwYWJpbGl0aWVz
LnNsb3BlID0ge3sgbm9ybWFsSXRhbGljVmFsdWUoKSwgbm9ybWFsSXRhbGljVmFsdWUoKSB9fTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uQ2FwYWJpbGl0aWVzLnNsb3BlID0ge3sgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbEl0YWxpY1ZhbHVlKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
bm9ybWFsSXRhbGljVmFsdWUoKSkgfX07CiAgICAgICAgICAgICB9CiAKICNpZiBTSE9VTERfVVNF
X0NPUkVfVEVYVF9GT05UX0xPT0tVUApAQCAtOTM1LDcgKzEwMTQsNyBAQCBGb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKENURm9udERlc2NyaXB0
b3JSZWYgZm9udAogICAgICAgICAgICAgICAgICAgICBhdXRvIHdlaWdodFZhbHVlID0gZm9udFdl
aWdodEZyb21Db3JlVGV4dChjdFdlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhdGlv
bkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7eyB3ZWlnaHRWYWx1ZSwgd2VpZ2h0VmFsdWUgfX07CiAg
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbkNhcGFi
aWxpdGllcy53ZWlnaHQgPSB7eyBub3JtYWxXZWlnaHRWYWx1ZSgpLCBub3JtYWxXZWlnaHRWYWx1
ZSgpIH19OworICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0
ID0ge3sgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbFdlaWdodFZhbHVlKCkpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4obm9ybWFsV2VpZ2h0VmFsdWUoKSkgfX07CiAgICAgICAgICAgICB9CiAjZW5kaWYK
ICAgICAgICAgfQpAQCAtOTQ4LDE0ICsxMDI3LDE1IEBAIEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRp
ZXMgY2FwYWJpbGl0aWVzRm9yRm9udERlc2NyaXB0b3IoQ1RGb250RGVzY3JpcHRvclJlZiBmb250
CiAgICAgICAgICAgICBmbG9hdCBjc3NXZWlnaHQ7CiAgICAgICAgICAgICBhdXRvIHN1Y2Nlc3Mg
PSBDRk51bWJlckdldFZhbHVlKHdlaWdodE51bWJlci5nZXQoKSwga0NGTnVtYmVyRmxvYXRUeXBl
LCAmY3NzV2VpZ2h0KTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vz
cyk7Ci0gICAgICAgICAgICBhdXRvIHdlaWdodFZhbHVlID0gRm9udFNlbGVjdGlvblZhbHVlKGNz
c1dlaWdodCk7Ci0gICAgICAgICAgICB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0ge3sg
d2VpZ2h0VmFsdWUsIHdlaWdodFZhbHVlIH19OworICAgICAgICAgICAgdmFyaWF0aW9uQ2FwYWJp
bGl0aWVzLndlaWdodCA9IHt7IGNzc1dlaWdodCwgY3NzV2VpZ2h0IH19OwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7eyBub3JtYWxX
ZWlnaHRWYWx1ZSgpLCBub3JtYWxXZWlnaHRWYWx1ZSgpIH19OworICAgICAgICAgICAgdmFyaWF0
aW9uQ2FwYWJpbGl0aWVzLndlaWdodCA9IHt7IHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxXZWln
aHRWYWx1ZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbFdlaWdodFZhbHVlKCkpIH19Owog
ICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHsgdmFyaWF0aW9uQ2FwYWJpbGl0aWVzLndlaWdo
dC52YWx1ZSgpLCB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2lkdGgudmFsdWUoKSwgdmFyaWF0aW9u
Q2FwYWJpbGl0aWVzLnNsb3BlLnZhbHVlKCkgfTsKKyAgICByZXR1cm4ge3sgRm9udFNlbGVjdGlv
blZhbHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQudmFsdWUoKS5taW5pbXVtKSwgRm9u
dFNlbGVjdGlvblZhbHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQudmFsdWUoKS5tYXhp
bXVtKSB9LAorICAgICAgICB7IEZvbnRTZWxlY3Rpb25WYWx1ZSh2YXJpYXRpb25DYXBhYmlsaXRp
ZXMud2lkdGgudmFsdWUoKS5taW5pbXVtKSwgRm9udFNlbGVjdGlvblZhbHVlKHZhcmlhdGlvbkNh
cGFiaWxpdGllcy53aWR0aC52YWx1ZSgpLm1heGltdW0pIH0sCisgICAgICAgIHsgRm9udFNlbGVj
dGlvblZhbHVlKHZhcmlhdGlvbkNhcGFiaWxpdGllcy5zbG9wZS52YWx1ZSgpLm1pbmltdW0pLCBG
b250U2VsZWN0aW9uVmFsdWUodmFyaWF0aW9uQ2FwYWJpbGl0aWVzLnNsb3BlLnZhbHVlKCkubWF4
aW11bSkgfX07CiB9CiAKICNpZiAhU0hPVUxEX1VTRV9DT1JFX1RFWFRfRk9OVF9MT09LVVAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAwODZkZjQ4MDNiZThhNWJhMmRiODYzZGJkMzU4N2MyZDYwNjBlMDA1Li5mZjhjYzE5YjNk
ZDRlYTJmZTUzNWUwNDA5ZjhjMTUxYjFiZWRkMTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTctMDMtMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBUcnkgdG8gbm9ybWFsaXplIHZhcmlhdGlvbiByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDExOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC90ZXh0L3ZhcmlhdGlvbnMvZm9u
dC1zZWxlY3Rpb24tcHJvcGVydGllcy1leHBlY3RlZC5odG1sOgorCiAyMDE3LTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQW5pbWF0ZWQgU1ZHIGltYWdl
cyBhcmUgbm90IHBhdXNlZCBpbiBwYWdlcyBsb2FkZWQgaW4gdGhlIGJhY2tncm91bmQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC92YXJpYXRpb25zL2ZvbnQtc2VsZWN0aW9uLXBy
b3BlcnRpZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC92YXJpYXRpb25z
L2ZvbnQtc2VsZWN0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQuaHRtbAppbmRleCA4OGZhNWZlMDZk
YmExNmIyYzc4NWE5Mjg5NjEwMzg2ZDA2MjkwMzRiLi45NmMyYTFmZDFiYWU2NzNlMTE4YTMwNzQ0
Zjg1NjhhYjEzMGFlNThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdmFyaWF0
aW9ucy9mb250LXNlbGVjdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L3ZhcmlhdGlvbnMvZm9udC1zZWxlY3Rpb24tcHJvcGVydGllcy1leHBl
Y3RlZC5odG1sCkBAIC0xMCw3ICsxMCw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KIFRoaXMgdGVzdCBt
YWtlcyBzdXJlIHRoYXQgdGhlIGZvbnQgc2VsZWN0aW9uIHByb3BlcnRpZXMgYWZmZWN0IGZvbnQg
dmFyaWF0aW9ucy4KLTxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBCb3hpczsgZm9udC12YXJpYXRp
b24tc2V0dGluZ3M6ICd3ZHRoJyA5MDA7Ij5IZWxsbzwvZGl2PgorPGRpdiBzdHlsZT0iZm9udC1m
YW1pbHk6IEJveGlzOyBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dkdGgnIDUuNjY2NjsiPkhl
bGxvPC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQm94aXM7IGZvbnQtdmFyaWF0aW9u
LXNldHRpbmdzOiAnd2R0aCcgMTAwOyI+SGVsbG88L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4K
</data>
<flag name="review"
          id="327210"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>