<?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>149775</bug_id>
          
          <creation_ts>2015-10-02 16:56:44 -0700</creation_ts>
          <short_desc>FontCascade::typesettingFeatures() is not privy to font-variant-* nor font-feature-settings</short_desc>
          <delta_ts>2015-10-20 11:07:42 -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>
          <dependson>150074</dependson>
          <blocked>149779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1130362</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-02 16:56:44 -0700</bug_when>
    <thetext>It needs to be updated to include this additional information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130370</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-02 17:06:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/22959756&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132478</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-12 14:07:02 -0700</bug_when>
    <thetext>It is computed from text-rendering, font-kerning, and font-variant-ligatures.

It is used in a few places:
1. In the simple text code path, we don&apos;t run shaping if K&amp;L is disabled
2. We use a more sophisticated space width measuring algorithm if kerning is enabled, in both RenderBlockLineLayout and BreakingContext
3. In the complex text code path, we create the CTLine/CTTypesetter with options to reflect K&amp;L
4. If the font has a typesetting feature other than kerning/ligatures (of which there are none), we fall to the complex text codepath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132479</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-12 14:07:46 -0700</bug_when>
    <thetext>WidthIterator::supportsTypesettingFeatures() can just be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132536</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-12 15:43:19 -0700</bug_when>
    <thetext>Related: https://bugs.webkit.org/show_bug.cgi?id=150051

This related bug removes the 4th use (above) of FontCascade::typesettingFeatures().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132558</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-12 16:14:45 -0700</bug_when>
    <thetext>The design for this should be to add a few more bits to TypesettingFeatures.

s_defaultTypesettingFeatures will have to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132575</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-12 16:58:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; The design for this should be to add a few more bits to TypesettingFeatures.
&gt; 
&gt; s_defaultTypesettingFeatures will have to be updated.

This doesn&apos;t seem right. Adding bits to TypesettingFeatures for every value of font-variant-* would make the type redundant with FontVariantSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132578</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-12 17:01:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; It is computed from text-rendering, font-kerning, and font-variant-ligatures.
&gt; 
&gt; It is used in a few places:
&gt; 1. In the simple text code path, we don&apos;t run shaping if K&amp;L is disabled
&gt; 2. We use a more sophisticated space width measuring algorithm if kerning is
&gt; enabled, in both RenderBlockLineLayout and BreakingContext
&gt; 3. In the complex text code path, we create the CTLine/CTTypesetter with
&gt; options to reflect K&amp;L
&gt; 4. If the font has a typesetting feature other than kerning/ligatures (of
&gt; which there are none), we fall to the complex text codepath

5. FontCascade uses it to determine if we should use the simple vs complex code path for various operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132585</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-12 17:08:00 -0700</bug_when>
    <thetext>s_defaultTypesettingFeatures gets set by the WebKitKerningAndLigaturesEnabledByDefault default which defaults to YES.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134268</commentid>
    <comment_count>9</comment_count>
      <attachid>263391</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-17 16:47:48 -0700</bug_when>
    <thetext>Created attachment 263391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134269</commentid>
    <comment_count>10</comment_count>
      <attachid>263391</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-17 17:03:42 -0700</bug_when>
    <thetext>Comment on attachment 263391
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:333
&gt; +    // Step 4: Font-variant

font-kerning should be applied here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134272</commentid>
    <comment_count>11</comment_count>
      <attachid>263391</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-17 17:28:01 -0700</bug_when>
    <thetext>Comment on attachment 263391
Patch

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

&gt; Source/WebCore/platform/graphics/Font.cpp:382
&gt;      UNUSED_PARAM(glyphs);

This else block needs to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134349</commentid>
    <comment_count>12</comment_count>
      <attachid>263424</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-18 09:40:27 -0700</bug_when>
    <thetext>Created attachment 263424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134367</commentid>
    <comment_count>13</comment_count>
      <attachid>263424</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-18 15:42:08 -0700</bug_when>
    <thetext>Comment on attachment 263424
Patch

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

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:596
&gt; +    // Font::applyTransforms() doesn&apos;t know which features to enable/disable.

Comment should be more specific. I believe you mean something like “Because Font::applyTransforms() doesn&apos;t know which features to enable/disable it the simple code path can’t properly handle feature or variant settings.” But maybe there’s a shorter and even clearer way to say that.

&gt; Source/WebCore/platform/graphics/FontCascade.h:324
&gt; +    // This is only used for the simple text codepath.

An interesting statement, but not sure exactly why it’s relevant. Typically, comments that state how a function is used become obsolete as callers use them in new ways. If this stated *why* this is suitable only for the simple text code path, then it would probably be more useful.

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:329
&gt; +    // Step 1: CoreText handles our defaults

What does “our defaults” mean? Specifically, what is “our”?

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:331
&gt; +    // Steps 2-3: FIXME: Consult with @font-face

Would be clearer if it said:

    // Steps 2-3: Consult with @font-face
    // FIXME: This is not yet implemented.

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:343
&gt; +        // We may want to turn off more stuff here.

Oblique comment. More useful would be a comment explaining where the list above came from; particularly, what is the criteria for being in this list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134794</commentid>
    <comment_count>14</comment_count>
      <attachid>263547</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-19 20:02:38 -0700</bug_when>
    <thetext>Created attachment 263547
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134802</commentid>
    <comment_count>15</comment_count>
      <attachid>263547</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 21:56:07 -0700</bug_when>
    <thetext>Comment on attachment 263547
Patch for committing

Clearing flags on attachment: 263547

Committed r191331: &lt;http://trac.webkit.org/changeset/191331&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263391</attachid>
            <date>2015-10-17 16:47:48 -0700</date>
            <delta_ts>2015-10-18 09:40:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149775-20151017164708.patch</filename>
            <type>text/plain</type>
            <size>28754</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFkZGRkMzQwNzdkNDYy
OTYwZjdhNTAyOWE5MTkzM2UxOGM1ODBmNC4uNWEzYjQwMDk4MTFjNTJlOGIyYjEwOGVhNmZhODJm
N2M4NTM1NWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE1LTEwLTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udENhc2Nh
ZGU6OnR5cGVzZXR0aW5nRmVhdHVyZXMoKSBpcyBub3QgcHJpdnkgdG8gZm9udC12YXJpYW50LSog
bm9yIGZvbnQtZmVhdHVyZS1zZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5Nzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBoYXMgdHdvIHBpZWNlczoKKworICAgICAgICBX
ZSB1c2VkIHRvIGhhdmUgYSBib29sZWFuLCBlbmFibGVMaWdhdHVyZXMsIHdoaWNoIGFmZmVjdGVk
IGhvdyB3ZSBwZXJmb3JtIHNoYXBpbmcgaW4gYm90aCBvdXIKKyAgICAgICAgc2ltcGxlIGFuZCBj
b21wbGV4IHRleHQgY29kZXBhdGhzLiBIb3dldmVyLCBpbiB0aGlzIGJyYXZlIG5ldyB3b3JsZCBv
ZiBmb250LWZlYXR1cmUtc2V0dGluZ3MKKyAgICAgICAgYW5kIGZvbnQtdmFyaWFudC0qLCB0aGVy
ZSBhcmUgbWFueSBwcm9wZXJ0aWVzIHdoaWNoIG1heSBhZmZlY3Qgc2hhcGluZyAoYW5kIG11bHRp
cGxlIGtpbmRzCisgICAgICAgIG9mIGxpZ2F0dXJlcykuIFRoaXMgcGF0Y2ggcmVuYW1lcyB0aGlz
IGJvb2xlYW4gdG8gcmVxdWlyZXNTaGFwaW5nLCBhbmQgdGVhY2hlcyBpdCBhYm91dCBhbGwKKyAg
ICAgICAgdGhlIHZhcmlvdXMgcHJvcGVydGllcyB3aGljaCBhZmZlY3QgdGV4dCBzaGFwaW5nLgor
CisgICAgICAgIFNpbWlsYXJseSwgb25lIG9mIHRoZSBwbGFjZXMgd2hpY2ggdXNlZCB0aGlzIGVu
YWJsZUxpZ2F0dXJlcyBib29sZWFuIHdhcyB0byB0ZWxsIENvcmVUZXh0CisgICAgICAgIGlmIGl0
IHNob3VsZCBkaXNhYmxlIGxpZ2F0dXJlcy4gSG93ZXZlciwgd2Ugbm93IGhhdmUgbXVjaCBmaW5l
ci1ncmFpbmVkIGNvbnRyb2wgb3ZlcgorICAgICAgICBsaWdhdHVyZXMgZHVyaW5nIGZvbnQgY3Jl
YXRpb24uIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGRpY3RhdGluZyB3
aGljaAorICAgICAgICBmb250IGZlYXR1cmVzIHNob3VsZCBiZSBlbmFibGVkIGVudGlyZWx5IHRv
IHRoZSBGb250LiBUaGVyZWZvcmUsIGdldENGU3RyaW5nQXR0cmlidXRlcygpCisgICAgICAgIGRv
ZXNuJ3Qga25vdyBhbnl0aGluZyBhYm91dCBsaWdhdHVyZXMgYW55bW9yZTsgdGhlIGxvZ2ljIGlu
c2lkZSBmb250IGNyZWF0aW9uIGlzIHVzZWQKKyAgICAgICAgaW5zdGVhZC4KKworICAgICAgICBB
biBhZGRlZCBiZW5lZml0IG9mIG1vdmluZyBhbGwgdGhlIGZvbnQgZmVhdHVyZSBsb2dpYyB0byBv
bmUgcGxhY2UgaXMgdGhhdCB3ZSBjYW4gaW1wbGVtZW50CisgICAgICAgIHRoZSBmZWF0dXJlIHJl
c29sdXRpb24gYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUgQ1NTMyBmb250cyBzcGVjLiBUaGlz
IHBhdGNoIGFkZHMgYSB0ZXN0IHRvCisgICAgICAgIG1ha2VzIHN1cmUgdGhhdCB0ZXh0LXJlbmRl
cmluZywgZm9udC1mZWF0dXJlLXNldHRpbmdzLCBhbmQgZm9udC12YXJpYW50LSogcGxheSB0b2dl
dGhlcgorICAgICAgICBuaWNlbHkuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L211bHRpcGxl
LWZlYXR1cmUtcHJvcGVydGllcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmFwcGx5VHJhbnNmb3Jtcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpGb250
Q2FzY2FkZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y29kZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OnJlcXVpcmVzU2hhcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
Y29tcHV0ZVJlcXVpcmVzU2hhcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZW5hYmxlTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
Ojpjb21wdXRlRW5hYmxlTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0
b3I6OldpZHRoSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBw
bHlGb250VHJhbnNmb3Jtcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVy
YXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVQbGF0Zm9ybUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnQ6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW06
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4
VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpnZXRD
RlN0cmluZ0F0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdGb250RGF0YS5oOgorCiAyMDE1
LTEwLTE3ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgdGhlIENTUzQgJ3JldmVydCcga2V5d29yZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKaW5kZXggOGVjY2VlNjdjOGUzYjFmNjhjODM1YWM1ODdlYjlhOGViNjM5
YWJjNi4uY2Y5M2VlMzQ2ODRhM2U4MTA3NzQ4ZTIwMTUyMGUyMGMwOTUzMDFiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTM3MSwxMiArMzcxLDEyIEBA
IFBhc3NSZWZQdHI8Rm9udD4gRm9udDo6Y3JlYXRlU2NhbGVkRm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwKICAgICByZXR1cm4gcGxhdGZvcm1DcmVhdGVTY2FsZWRG
b250KGZvbnREZXNjcmlwdGlvbiwgc2NhbGVGYWN0b3IpOwogfQogCi1ib29sIEZvbnQ6OmFwcGx5
VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIEdseXBoQnVmZmVyQWR2YW5jZSog
YWR2YW5jZXMsIHNpemVfdCBnbHlwaENvdW50LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgZW5h
YmxlTGlnYXR1cmVzKSBjb25zdAorYm9vbCBGb250OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZm
ZXJHbHlwaCogZ2x5cGhzLCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCBzaXplX3QgZ2x5
cGhDb3VudCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVzU2hhcGluZykgY29uc3QK
IHsKICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSB0cmFuc2Zvcm1zIG9uIFNWRyBmb250cyBpbnRl
cm5hbGx5LCBzaW5jZSB0aGV5IGFyZSByZW5kZXJlZCBpbnRlcm5hbGx5LgogICAgIEFTU0VSVCgh
aXNTVkdGb250KCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENURm9udFRyYW5zZm9ybU9w
dGlvbnMgb3B0aW9ucyA9IChlbmFibGVLZXJuaW5nID8ga0NURm9udFRyYW5zZm9ybUFwcGx5UG9z
aXRpb25pbmcgOiAwKSB8IChlbmFibGVMaWdhdHVyZXMgPyBrQ1RGb250VHJhbnNmb3JtQXBwbHlT
aGFwaW5nIDogMCk7CisgICAgQ1RGb250VHJhbnNmb3JtT3B0aW9ucyBvcHRpb25zID0gKGVuYWJs
ZUtlcm5pbmcgPyBrQ1RGb250VHJhbnNmb3JtQXBwbHlQb3NpdGlvbmluZyA6IDApIHwgKHJlcXVp
cmVzU2hhcGluZyA/IGtDVEZvbnRUcmFuc2Zvcm1BcHBseVNoYXBpbmcgOiAwKTsKICAgICByZXR1
cm4gQ1RGb250VHJhbnNmb3JtR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBnbHlwaHMs
IHJlaW50ZXJwcmV0X2Nhc3Q8Q0dTaXplKj4oYWR2YW5jZXMpLCBnbHlwaENvdW50LCBvcHRpb25z
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGdseXBocyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKaW5kZXggYzQwOGE0NThiNmMzOTAyMzk5NGI3YzBmMzNlMzUwNDY5
NDE5ZDcxYy4uYmM3OGVmZjM0ZjU2Nzk3ZTBkMmFlMTQ1YTA0ODMxMDYwZTY4ZjRhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZE5vdEJlVXNlZEZvckFyYWJpYygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkTm90QmVVc2VkRm9yQXJhYmljOyB9OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGdldENGU3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJs
ZUtlcm5pbmcsIGJvb2wgZW5hYmxlTGlnYXR1cmVzLCBGb250T3JpZW50YXRpb24pIGNvbnN0Owor
ICAgIENGRGljdGlvbmFyeVJlZiBnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVLZXJu
aW5nLCBGb250T3JpZW50YXRpb24pIGNvbnN0OwogICAgIGJvb2wgaGFzQ3VzdG9tVHJhY2tpbmco
KSBjb25zdCB7IHJldHVybiBpc1N5c3RlbUZvbnQoKTsgfQogI2VuZGlmCiAKQEAgLTIwMCw3ICsy
MDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1
ZW5jZShjb25zdCBVQ2hhciosIHNpemVfdCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIGJvb2wgYXBw
bHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyR2x5cGgqLCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCBzaXpl
X3QgZ2x5cGhDb3VudCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIGVuYWJsZUxpZ2F0dXJlcykg
Y29uc3Q7CisgICAgYm9vbCBhcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXJHbHlwaCosIEdseXBo
QnVmZmVyQWR2YW5jZSosIHNpemVfdCBnbHlwaENvdW50LCBib29sIGVuYWJsZUtlcm5pbmcsIGJv
b2wgcmVxdWlyZXNTaGFwaW5nKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFU
Rk9STShXSU4pCiAgICAgYm9vbCBpc1N5c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lz
dGVtRm9udDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCmluZGV4IDY5NzdkMGRlNGJmMjlhYjkxNmZjYWU5YWExMGYyNDI2MmY3MDRhZmMu
LmNiNTcwYmExOWMyNDk2N2EwMjQyNGM2ZDVkYjg2MzMxODZkNGZlOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUoKQogICAgICwgbV93b3JkU3BhY2luZygw
KQogICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fZW5hYmxl
S2VybmluZyhmYWxzZSkKLSAgICAsIG1fZW5hYmxlTGlnYXR1cmVzKGZhbHNlKQorICAgICwgbV9y
ZXF1aXJlc1NoYXBpbmcoZmFsc2UpCiB7CiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBGb250Q2Fz
Y2FkZTo6Rm9udENhc2NhZGUoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZmQsIGZsb2F0
IGxldHRlclNwYWNpbmcsCiAgICAgLCBtX3dvcmRTcGFjaW5nKHdvcmRTcGFjaW5nKQogICAgICwg
bV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCh1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHko
ZmQuZmlyc3RGYW1pbHkoKSkpCiAgICAgLCBtX2VuYWJsZUtlcm5pbmcoY29tcHV0ZUVuYWJsZUtl
cm5pbmcoKSkKLSAgICAsIG1fZW5hYmxlTGlnYXR1cmVzKGNvbXB1dGVFbmFibGVLZXJuaW5nKCkp
CisgICAgLCBtX3JlcXVpcmVzU2hhcGluZyhjb21wdXRlUmVxdWlyZXNTaGFwaW5nKCkpCiB7CiB9
CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgZm9udERhdGEsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbgogICAgICwgbV93
b3JkU3BhY2luZygwKQogICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAg
ICAsIG1fZW5hYmxlS2VybmluZyhjb21wdXRlRW5hYmxlS2VybmluZygpKQotICAgICwgbV9lbmFi
bGVMaWdhdHVyZXMoY29tcHV0ZUVuYWJsZUtlcm5pbmcoKSkKKyAgICAsIG1fcmVxdWlyZXNTaGFw
aW5nKGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKSkKIHsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5z
ZXRGb250U21vb3RoaW5nKGZvbnRTbW9vdGhpbmdNb2RlKTsKICNpZiBQTEFURk9STShJT1MpCkBA
IC0xNDQsNyArMTQ0LDcgQEAgRm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNj
YWRlJiBvdGhlcikKICAgICAsIG1fd29yZFNwYWNpbmcob3RoZXIubV93b3JkU3BhY2luZykKICAg
ICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wob3RoZXIubV91c2VCYWNrc2xhc2hBc1llblN5
bWJvbCkKICAgICAsIG1fZW5hYmxlS2VybmluZyhjb21wdXRlRW5hYmxlS2VybmluZygpKQotICAg
ICwgbV9lbmFibGVMaWdhdHVyZXMoY29tcHV0ZUVuYWJsZUtlcm5pbmcoKSkKKyAgICAsIG1fcmVx
dWlyZXNTaGFwaW5nKGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKSkKIHsKIH0KIApAQCAtMTU2LDcg
KzE1Niw3IEBAIEZvbnRDYXNjYWRlJiBGb250Q2FzY2FkZTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRD
YXNjYWRlJiBvdGhlcikKICAgICBtX3dvcmRTcGFjaW5nID0gb3RoZXIubV93b3JkU3BhY2luZzsK
ICAgICBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sID0gb3RoZXIubV91c2VCYWNrc2xhc2hBc1ll
blN5bWJvbDsKICAgICBtX2VuYWJsZUtlcm5pbmcgPSBvdGhlci5tX2VuYWJsZUtlcm5pbmc7Ci0g
ICAgbV9lbmFibGVMaWdhdHVyZXMgPSBvdGhlci5tX2VuYWJsZUxpZ2F0dXJlczsKKyAgICBtX3Jl
cXVpcmVzU2hhcGluZyA9IG90aGVyLm1fcmVxdWlyZXNTaGFwaW5nOwogICAgIHJldHVybiAqdGhp
czsKIH0KIApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQ
dHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKICAgICBtX2ZvbnRzID0gcmV0
cmlldmVPckFkZENhY2hlZEZvbnRzKG1fZm9udERlc2NyaXB0aW9uLCBXVEY6Om1vdmUoZm9udFNl
bGVjdG9yKSk7CiAgICAgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCA9IHVzZUJhY2tzbGFzaEFz
WWVuU2lnbkZvckZhbWlseShmaXJzdEZhbWlseSgpKTsKICAgICBtX2VuYWJsZUtlcm5pbmcgPSBj
b21wdXRlRW5hYmxlS2VybmluZygpOwotICAgIG1fZW5hYmxlTGlnYXR1cmVzID0gY29tcHV0ZUVu
YWJsZUxpZ2F0dXJlcygpOworICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gY29tcHV0ZVJlcXVpcmVz
U2hhcGluZygpOwogfQogCiBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uKSBjb25zdApAQCAtMzE3LDcgKzMxNyw3IEBAIGZsb2F0IEZvbnRDYXNjYWRl
OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAg
IC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFs
IHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9i
LzEwMDA1MAotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5p
bmcoKSB8fCBlbmFibGVMaWdhdHVyZXMoKSkgJiYgKGZyb20gfHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFpc0RyYXduV2l0aFNWR0ZvbnQocnVuKSkKKyAg
ICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4ICYmIChlbmFibGVLZXJuaW5nKCkgfHwgcmVx
dWlyZXNTaGFwaW5nKCkpICYmIChmcm9tIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0bykgIT0g
cnVuLmxlbmd0aCgpKSAmJiAhaXNEcmF3bldpdGhTVkdGb250KHJ1bikpCiAgICAgICAgIGNvZGVQ
YXRoVG9Vc2UgPSBDb21wbGV4OwogCiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkK
QEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1bgogCiAgICAgQ29kZVBh
dGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUg
ZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcg
YW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKGNv
ZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCAmJiAoZW5hYmxlS2VybmluZygpIHx8IGVuYWJsZUxpZ2F0
dXJlcygpKSAmJiAoZnJvbSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG8pICE9IHJ1bi5sZW5n
dGgoKSkgJiYgIWlzRHJhd25XaXRoU1ZHRm9udChydW4pKQorICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYg
KGZyb20gfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFp
c0RyYXduV2l0aFNWR0ZvbnQocnVuKSkKICAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7
CiAKICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4KQpAQCAtMzU3LDkgKzM1Nyw4IEBA
IGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzCiAgICAgICAgICAgICBnbHlwaE92ZXJmbG93ID0gMDsK
ICAgICB9CiAKLSAgICBib29sIGhhc0tlcm5pbmdPckxpZ2F0dXJlcyA9IGVuYWJsZUtlcm5pbmco
KSB8fCBlbmFibGVMaWdhdHVyZXMoKTsKICAgICBib29sIGhhc1dvcmRTcGFjaW5nT3JMZXR0ZXJT
cGFjaW5nID0gd29yZFNwYWNpbmcoKSB8fCBsZXR0ZXJTcGFjaW5nKCk7Ci0gICAgZmxvYXQqIGNh
Y2hlRW50cnkgPSBtX2ZvbnRzLT53aWR0aENhY2hlKCkuYWRkKHJ1biwgc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OnF1aWV0X05hTigpLCBoYXNLZXJuaW5nT3JMaWdhdHVyZXMsIGhhc1dvcmRT
cGFjaW5nT3JMZXR0ZXJTcGFjaW5nLCBnbHlwaE92ZXJmbG93KTsKKyAgICBmbG9hdCogY2FjaGVF
bnRyeSA9IG1fZm9udHMtPndpZHRoQ2FjaGUoKS5hZGQocnVuLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6cXVpZXRfTmFOKCksIGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmco
KSwgaGFzV29yZFNwYWNpbmdPckxldHRlclNwYWNpbmcsIGdseXBoT3ZlcmZsb3cpOwogICAgIGlm
IChjYWNoZUVudHJ5ICYmICFzdGQ6OmlzbmFuKCpjYWNoZUVudHJ5KSkKICAgICAgICAgcmV0dXJu
ICpjYWNoZUVudHJ5OwogCkBAIC01MDksNyArNTA4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6YWRq
dXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBz
ZWwKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8v
IEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1
bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEw
MDA1MAotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmco
KSB8fCBlbmFibGVMaWdhdHVyZXMoKSkgJiYgKGZyb20gfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFpc0RyYXduV2l0aFNWR0ZvbnQocnVuKSkKKyAgICBp
ZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4ICYmIChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWly
ZXNTaGFwaW5nKCkpICYmIChmcm9tIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0bykgIT0gcnVu
Lmxlbmd0aCgpKSAmJiAhaXNEcmF3bldpdGhTVkdGb250KHJ1bikpCiAgICAgICAgIGNvZGVQYXRo
VG9Vc2UgPSBDb21wbGV4OwogCiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkKQEAg
LTUyMSw3ICs1MjAsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbAogaW50IEZvbnRDYXNjYWRl
OjpvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wgaW5j
bHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBj
b2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxp
Z2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKGNvZGVQYXRo
KHJ1bikgIT0gQ29tcGxleCAmJiAoIShlbmFibGVLZXJuaW5nKCkgfHwgZW5hYmxlTGlnYXR1cmVz
KCkpIHx8IGlzRHJhd25XaXRoU1ZHRm9udChydW4pKSkKKyAgICBpZiAoY29kZVBhdGgocnVuKSAh
PSBDb21wbGV4ICYmICghKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgfHwg
aXNEcmF3bldpdGhTVkdGb250KHJ1bikpKQogICAgICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRp
b25Gb3JTaW1wbGVUZXh0KHJ1biwgeCwgaW5jbHVkZVBhcnRpYWxHbHlwaHMpOwogCiAgICAgcmV0
dXJuIG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQocnVuLCB4LCBpbmNsdWRlUGFydGlh
bEdseXBocyk7CkBAIC01OTQsMTIgKzU5MywxMiBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9u
dENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1bikgY29uc3QKICAgICAgICAgcmV0
dXJuIFNpbXBsZTsKICNlbmRpZgogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5l
Y2Vzc2FyeSBiZWNhdXNlIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcygpIHNob3VsZCBwZXJmb3JtIGFs
bCBuZWNlc3Nhcnkgc2hhcGluZy4KKyAgICAvLyBGb250OjphcHBseVRyYW5zZm9ybXMoKSBkb2Vz
bid0IGtub3cgd2hpY2ggZmVhdHVyZXMgdG8gZW5hYmxlL2Rpc2FibGUuCiAgICAgaWYgKG1fZm9u
dERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSA+IDAgfHwgIW1fZm9udERlc2Ny
aXB0aW9uLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCiAgICAgICAgIHJldHVybiBD
b21wbGV4OwogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAgIGlmIChydW4ubGVuZ3RoKCkgPiAx
ICYmIChlbmFibGVLZXJuaW5nKCkgfHwgZW5hYmxlTGlnYXR1cmVzKCkpKQorICAgIGlmIChydW4u
bGVuZ3RoKCkgPiAxICYmIChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpKQog
ICAgICAgICByZXR1cm4gQ29tcGxleDsKICNlbmRpZgogCkBAIC0xNDIxLDcgKzE0MjAsNyBAQCBm
bG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLCBIYXNoU2V0PGNvbnN0IEZvbgogewogICAgIFdpZHRoSXRlcmF0b3IgaXQodGhpcywgcnVu
LCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1
ZmZlcjsKLSAgICBpdC5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgKGVuYWJsZUtlcm5pbmcoKSB8fCBl
bmFibGVMaWdhdHVyZXMoKSkgPyAmZ2x5cGhCdWZmZXIgOiBudWxscHRyKTsKKyAgICBpdC5hZHZh
bmNlKHJ1bi5sZW5ndGgoKSwgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkg
PyAmZ2x5cGhCdWZmZXIgOiBudWxscHRyKTsKIAogICAgIGlmIChnbHlwaE92ZXJmbG93KSB7CiAg
ICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+
dG9wLCBjZWlsZigtaXQubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+
Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFzY2VudCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2MjQ1NTAyMDJm
NTk0NzYzM2IxMGQxOTE3YzRiOWNmNzViNWQ0MGQyLi41MzFhYjQ4Y2JjZDJkMjZjZjM1ZDk0YmU3
M2ZjMzk2YjgwNWNkZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgRm9udFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9u
LnJlbmRlcmluZ01vZGUoKTsgfQogCiAgICAgYm9vbCBlbmFibGVLZXJuaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmFibGVLZXJuaW5nOyB9Ci0gICAgYm9vbCBlbmFibGVMaWdhdHVyZXMoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZUxpZ2F0dXJlczsgfQorICAgIGJvb2wgcmVxdWlyZXNTaGFwaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc1NoYXBpbmc7IH0KIAogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmlyc3RGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi5m
aXJzdEZhbWlseSgpOyB9CiAgICAgdW5zaWduZWQgZmFtaWx5Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOyB9CkBAIC0zMTcsMTMgKzMxNywxMyBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gYWR2YW5jZWRUZXh0UmVuZGVyaW5nTW9kZSgpOwog
ICAgIH0KIAotICAgIGJvb2wgY29tcHV0ZUVuYWJsZUxpZ2F0dXJlcygpIGNvbnN0CisgICAgLy8g
VGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRoZSBzaW1wbGUgdGV4dCBjb2RlcGF0aC4KKyAgICBib29s
IGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBsaWdh
dHVyZXMgPSBtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q29tbW9uTGlnYXR1cmVzKCk7Ci0gICAg
ICAgIGlmIChsaWdhdHVyZXMgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllcykKKyAgICAgICAg
aWYgKCFtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50U2V0dGluZ3MoKS5pc0FsbE5vcm1hbCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2ZvbnREZXNjcmlwdGlvbi5m
ZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgaWYgKGxpZ2F0dXJlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm8pCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBhZHZhbmNlZFRleHRSZW5kZXJpbmdNb2Rl
KCk7CiAgICAgfQogCkBAIC0zMzQsNyArMzM0LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3dv
cmRTcGFjaW5nOwogICAgIG11dGFibGUgYm9vbCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sOwog
ICAgIG11dGFibGUgdW5zaWduZWQgbV9lbmFibGVLZXJuaW5nIDogMTsgLy8gQ29tcHV0ZWQgZnJv
bSBtX2ZvbnREZXNjcmlwdGlvbi4KLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZW5hYmxlTGlnYXR1
cmVzIDogMTsgLy8gQ29tcHV0ZWQgZnJvbSBtX2ZvbnREZXNjcmlwdGlvbi4KKyAgICBtdXRhYmxl
IHVuc2lnbmVkIG1fcmVxdWlyZXNTaGFwaW5nIDogMTsgLy8gQ29tcHV0ZWQgZnJvbSBtX2ZvbnRE
ZXNjcmlwdGlvbi4KIH07CiAKIHZvaWQgaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAK
aW5kZXggYjBhNWY1OGY0MDZiNDcyZjIwMzgwZjczMTliZTI5YmI4ZWVkMjFmNy4uODNkN2QxMjAy
ZTM5ZDQ5ZDhhMDEyOTFlOTYzMzljNzM5MGYwNzg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
V2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBGb250Q2FzY2FkZSogZm9udCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBIYXNoU2UKICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFja0Zv
bnRzKQogICAgICwgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMoYWNjb3VudEZvckdseXBoQm91bmRz
KQogICAgICwgbV9lbmFibGVLZXJuaW5nKGZvbnQtPmVuYWJsZUtlcm5pbmcoKSkKLSAgICAsIG1f
ZW5hYmxlTGlnYXR1cmVzKGZvbnQtPmVuYWJsZUxpZ2F0dXJlcygpKQorICAgICwgbV9yZXF1aXJl
c1NoYXBpbmcoZm9udC0+cmVxdWlyZXNTaGFwaW5nKCkpCiAgICAgLCBtX2ZvclRleHRFbXBoYXNp
cyhmb3JUZXh0RW1waGFzaXMpCiB7CiAgICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbm9uLXplcm8s
IGNvdW50IHRoZSBudW1iZXIgb2Ygc3BhY2VzIGluIHRoZSBydW4KQEAgLTEwMSw3ICsxMDEsNyBA
QCBpbmxpbmUgYXV0byBXaWR0aEl0ZXJhdG9yOjpzaG91bGRBcHBseUZvbnRUcmFuc2Zvcm1zKGNv
bnN0IEdseXBoQnVmZmVyKiBnbHlwaEJ1ZgogewogICAgIGlmIChnbHlwaEJ1ZmZlciAmJiBnbHlw
aEJ1ZmZlci0+c2l6ZSgpID09IChsYXN0R2x5cGhDb3VudCArIDEpICYmIGlzU29mdEJhbmtFbW9q
aShwcmV2aW91c0NoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1zVHlwZTo6Rm9y
Y2VkOwotICAgIGlmIChtX3J1bi5sZW5ndGgoKSA8PSAxIHx8ICEobV9lbmFibGVLZXJuaW5nIHx8
IG1fZW5hYmxlTGlnYXR1cmVzKSkKKyAgICBpZiAobV9ydW4ubGVuZ3RoKCkgPD0gMSB8fCAhKG1f
ZW5hYmxlS2VybmluZyB8fCBtX3JlcXVpcmVzU2hhcGluZykpCiAgICAgICAgIHJldHVybiBUcmFu
c2Zvcm1zVHlwZTo6Tm9uZTsKICAgICByZXR1cm4gVHJhbnNmb3Jtc1R5cGU6Ok5vdEZvcmNlZDsK
IH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlG
b250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIsIGJvb2wgbAogICAgICAgICB9
CiAgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgZm9udC0+YXBwbHlUcmFuc2Zvcm1zKGdseXBo
QnVmZmVyLT5nbHlwaHMobGFzdEdseXBoQ291bnQpLCBhZHZhbmNlcyArIGxhc3RHbHlwaENvdW50
LCBnbHlwaEJ1ZmZlclNpemUgLSBsYXN0R2x5cGhDb3VudCwgbV9lbmFibGVLZXJuaW5nLCBtX2Vu
YWJsZUxpZ2F0dXJlcyk7CisgICAgICAgIGZvbnQtPmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZl
ci0+Z2x5cGhzKGxhc3RHbHlwaENvdW50KSwgYWR2YW5jZXMgKyBsYXN0R2x5cGhDb3VudCwgZ2x5
cGhCdWZmZXJTaXplIC0gbGFzdEdseXBoQ291bnQsIG1fZW5hYmxlS2VybmluZywgbV9yZXF1aXJl
c1NoYXBpbmcpOwogCiAgICAgaWYgKCFsdHIpCiAgICAgICAgIGdseXBoQnVmZmVyLT5yZXZlcnNl
KGxhc3RHbHlwaENvdW50LCBnbHlwaEJ1ZmZlclNpemUgLSBsYXN0R2x5cGhDb3VudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKaW5kZXgg
YjM1NjM0MWYxMjg3YmI3ZDcyZGU2MWYwMDY2MWIzNTg1Y2IxYjRiYS4uMTc4MjY2M2RhZTE2MjY1
Y2FkZjFiYTk4NmQ3ZDY3ZDcyMGQ2MWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaApAQCAtODksNyArODksNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBtX2ZhbGxiYWNrRm9udHMgeyBudWxscHRyIH07CiAg
ICAgYm9vbCBtX2FjY291bnRGb3JHbHlwaEJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Vu
YWJsZUtlcm5pbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVMaWdhdHVyZXMgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9yZXF1aXJlc1NoYXBpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9m
b3JUZXh0RW1waGFzaXMgeyBmYWxzZSB9OwogICAgIGZsb2F0IG1fbWF4R2x5cGhCb3VuZGluZ0Jv
eFkgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCkgfTsKICAgICBmbG9hdCBtX21p
bkdseXBoQm91bmRpbmdCb3hZIHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggYjdjZWNmNDIzNjdiNjBhNTdmMjIwMzlhYjE0
ZTFmNzNjYzE3MTU1ZS4uN2IzZjhkYTk5YTM1Y2UxZmZiYTczMjVhMDQ0M2RhNmI5OWM0YWQyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMzIxLDEzICszMjEsMjkgQEAgc3RhdGljIEZl
YXR1cmVzTWFwIGNvbXB1dGVGZWF0dXJlU2V0dGluZ3NGcm9tVmFyaWFudHMoY29uc3QgRm9udFZh
cmlhbnRTZXR0aW5ncyYKIAogUmV0YWluUHRyPENURm9udFJlZj4gcHJlcGFyZVBsYXRmb3JtRm9u
dChDVEZvbnRSZWYgb3JpZ2luYWxGb250LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5n
TW9kZSwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJp
YW50U2V0dGluZ3MmIHZhcmlhbnRTZXR0aW5ncykKIHsKLSAgICBpZiAoIW9yaWdpbmFsRm9udCB8
fCAoIWZlYXR1cmVzLnNpemUoKSAmJiAodGV4dFJlbmRlcmluZ01vZGUgIT0gT3B0aW1pemVMZWdp
YmlsaXR5KSAmJiB2YXJpYW50U2V0dGluZ3MuaXNBbGxOb3JtYWwoKSkpCisgICAgaWYgKCFvcmln
aW5hbEZvbnQgfHwgKCFmZWF0dXJlcy5zaXplKCkgJiYgKHRleHRSZW5kZXJpbmdNb2RlID09IEF1
dG9UZXh0UmVuZGVyaW5nKSAmJiB2YXJpYW50U2V0dGluZ3MuaXNBbGxOb3JtYWwoKSkpCiAgICAg
ICAgIHJldHVybiBvcmlnaW5hbEZvbnQ7CiAKLSAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY29uc3Vs
dCB3aXRoIHRoZSBAZm9udC1mYWNlIGZpcnN0LCBsaWtlIHRoZSBzcGVjIHNheXMgd2Ugc2hvdWxk
LgorICAgIC8vIFRoaXMgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBhdCBodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLWZvbnRzLyNmZWF0dXJlLXByZWNlZGVuY2UKIAotICAgIC8vIFNwZWMgc2F5cyB0
aGF0IGZvbnQtZmVhdHVyZS1zZXR0aW5ncyBzaG91bGQgb3ZlcnJpZGUgZm9udC12YXJpYW50LSou
CisgICAgLy8gU3RlcCAxOiBDb3JlVGV4dCBoYW5kbGVzIG91ciBkZWZhdWx0cworCisgICAgLy8g
U3RlcHMgMi0zOiBGSVhNRTogQ29uc3VsdCB3aXRoIEBmb250LWZhY2UKKworICAgIC8vIFN0ZXAg
NDogRm9udC12YXJpYW50CiAgICAgYXV0byBmb250RmVhdHVyZVNldHRpbmdzRnJvbVZhcmlhbnRz
ID0gY29tcHV0ZUZlYXR1cmVTZXR0aW5nc0Zyb21WYXJpYW50cyh2YXJpYW50U2V0dGluZ3MpOwor
CisgICAgLy8gU3RlcCA1OiBPdGhlciBwcm9wZXJ0aWVzICh0ZXh0LXJlbmRlcmluZykKKyAgICBp
ZiAodGV4dFJlbmRlcmluZ01vZGUgPT0gT3B0aW1pemVTcGVlZCkgeworICAgICAgICBmb250RmVh
dHVyZVNldHRpbmdzRnJvbVZhcmlhbnRzLnNldChmb250RmVhdHVyZVRhZygibGlnYSIpLCAwKTsK
KyAgICAgICAgZm9udEZlYXR1cmVTZXR0aW5nc0Zyb21WYXJpYW50cy5zZXQoZm9udEZlYXR1cmVU
YWcoImNsaWciKSwgMCk7CisgICAgICAgIGZvbnRGZWF0dXJlU2V0dGluZ3NGcm9tVmFyaWFudHMu
c2V0KGZvbnRGZWF0dXJlVGFnKCJkbGlnIiksIDApOworICAgICAgICBmb250RmVhdHVyZVNldHRp
bmdzRnJvbVZhcmlhbnRzLnNldChmb250RmVhdHVyZVRhZygiaGxpZyIpLCAwKTsKKyAgICAgICAg
Zm9udEZlYXR1cmVTZXR0aW5nc0Zyb21WYXJpYW50cy5zZXQoZm9udEZlYXR1cmVUYWcoImNhbHQi
KSwgMCk7CisgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHR1cm4gb2ZmIG1vcmUgc3R1ZmYgaGVy
ZS4KKyAgICB9CisKKyAgICAvLyBTdGVwIDY6IEZvbnQtZmVhdHVyZS1zZXR0aW5ncwogICAgIGZv
ciAoYXV0byYgbmV3RmVhdHVyZSA6IGZlYXR1cmVzKQogICAgICAgICBmb250RmVhdHVyZVNldHRp
bmdzRnJvbVZhcmlhbnRzLnNldChuZXdGZWF0dXJlLnRhZygpLCBuZXdGZWF0dXJlLnZhbHVlKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q29jb2EubW0KaW5kZXggMDQ1MjU2YjU3NjQ2ZWM0MWM5MjliNzExMjZmZGU3MjU5YzRhMTc1MC4u
ZDMwYmIyNjY3M2EyMGNjZjVlZjU5OGFhY2UyZWY5Y2MxNmNjMDhiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQpAQCAtNDc1
LDcgKzQ3NSw3IEBAIGJvb2wgRm9udDo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVu
Y2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsCiAKICAgICBSZXRhaW5QdHI8Q0ZU
eXBlUmVmPiBmb250RXF1YWxpdHlPYmplY3QgPSBwbGF0Zm9ybURhdGEoKS5vYmplY3RGb3JFcXVh
bGl0eUNoZWNrKCk7CiAKLSAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY2hhcmFjdGVycywgbGVu
Z3RoLCBnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoZmFsc2UsIGZhbHNlLCBwbGF0Zm9ybURhdGEoKS5v
cmllbnRhdGlvbigpKSB9OworICAgIFByb3ZpZGVySW5mbyBpbmZvID0geyBjaGFyYWN0ZXJzLCBs
ZW5ndGgsIGdldENGU3RyaW5nQXR0cmlidXRlcyhmYWxzZSwgcGxhdGZvcm1EYXRhKCkub3JpZW50
YXRpb24oKSkgfTsKICAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lID0gYWRvcHRDRihDVExp
bmVDcmVhdGVXaXRoVW5pQ2hhclByb3ZpZGVyKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywg
MCwgJmluZm8pKTsKIAogICAgIENGQXJyYXlSZWYgcnVuQXJyYXkgPSBDVExpbmVHZXRHbHlwaFJ1
bnMobGluZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0K
aW5kZXggMWExNTQ4MDdjNGM4ODJkOWQ5MWQ3MTJmYzVjZDgzYmZlYjA0MTlmMy4uMjQwY2JjY2E5
N2JiZTllNjMyZjVmMjZhMDgyYjNmM2FhYzJjNDgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5tbQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgQ29tcGxleFRleHRD
b250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hh
ciogY3AsCiAKICAgICAgICAgUmV0YWluUHRyPFdlYkNhc2NhZGVMaXN0PiBjYXNjYWRlTGlzdCA9
IGFkb3B0TlMoW1tXZWJDYXNjYWRlTGlzdCBhbGxvY10gaW5pdFdpdGhGb250OiZtX2ZvbnQgY2hh
cmFjdGVyOmJhc2VDaGFyYWN0ZXJdKTsKIAotICAgICAgICBzdHJpbmdBdHRyaWJ1dGVzID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBmb250LT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9mb250LmVuYWJsZUtlcm5pbmcoKSwgbV9m
b250LmVuYWJsZUxpZ2F0dXJlcygpLCBmb250LT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigp
KSkpOworICAgICAgICBzdHJpbmdBdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBmb250LT5nZXRDRlN0cmluZ0F0
dHJpYnV0ZXMobV9mb250LmVuYWJsZUtlcm5pbmcoKSwgZm9udC0+cGxhdGZvcm1EYXRhKCkub3Jp
ZW50YXRpb24oKSkpKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIGF0dHJpYnV0ZUtleXNb
XSA9IHsga0NURm9udENhc2NhZGVMaXN0QXR0cmlidXRlIH07CiAgICAgICAgIGNvbnN0IHZvaWQq
IHZhbHVlc1tdID0geyBjYXNjYWRlTGlzdC5nZXQoKSB9OwogICAgICAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYXR0cmlidXRlS2V5cywgdmFsdWVzLCBzaXplb2YoYXR0cmlidXRl
S2V5cykgLyBzaXplb2YoKmF0dHJpYnV0ZUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CkBAIC0yMjUsNyArMjI1
LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNG
b3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjcCwKICAgICAgICAgUmV0YWluUHRyPENURm9udFJl
Zj4gZm9udFdpdGhDYXNjYWRlTGlzdCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlQ29weVdpdGhBdHRy
aWJ1dGVzKGZvbnQtPnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBtX2ZvbnQucGl4ZWxTaXplKCks
IDAsIGZvbnREZXNjcmlwdG9yLmdldCgpKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGNvbnN0X2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4oc3RyaW5nQXR0cmlidXRlcy5nZXQo
KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250V2l0aENhc2NhZGVMaXN0LmdldCgpKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgc3RyaW5nQXR0cmlidXRlcyA9IGZvbnQtPmdldENGU3RyaW5nQXR0
cmlidXRlcyhtX2ZvbnQuZW5hYmxlS2VybmluZygpLCBtX2ZvbnQuZW5hYmxlTGlnYXR1cmVzKCks
IGZvbnQtPnBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpOworICAgICAgICBzdHJpbmdBdHRy
aWJ1dGVzID0gZm9udC0+Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKG1fZm9udC5lbmFibGVLZXJuaW5n
KCksIGZvbnQtPnBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpOwogCiAgICAgUmV0YWluUHRy
PENUTGluZVJlZj4gbGluZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4IGFm
N2RhZTA3N2JlNmJkZDU3Y2IxZDZmNDJjMjM2ZGU1OTJhZGE5NDIuLjFmMTgzMjllYjRkMzZjYzA5
YmJjMjZmYzdlZjcwY2JiMDg4YWU5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAK
QEAgLTM1LDkgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRkRpY3Rpb25hcnlS
ZWYgRm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCBl
bmFibGVMaWdhdHVyZXMsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3QKK0NGRGlj
dGlvbmFyeVJlZiBGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVLZXJuaW5n
LCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQga2V5
ID0gKGVuYWJsZUtlcm5pbmcgPDwgMSB8IGVuYWJsZUxpZ2F0dXJlcykgKyAxOworICAgIHVuc2ln
bmVkIGtleSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmFibGVLZXJuaW5nKSArIDE7CiAgICAg
SGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+OjpBZGRSZXN1bHQg
YWRkUmVzdWx0ID0gbV9DRlN0cmluZ0F0dHJpYnV0ZXMuYWRkKGtleSwgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4oKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGF0dHJpYnV0
ZXNEaWN0aW9uYXJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQpAQCAtNTQsMTIgKzU0LDYgQEAgQ0ZEaWN0aW9uYXJ5UmVmIEZvbnQ6
OmdldENGU3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgZW5hYmxlTGln
YXQKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobXV0YWJsZUF0dHJpYnV0ZXMsIGtDVEtl
cm5BdHRyaWJ1dGVOYW1lLCB6ZXJvS2VybmluZ1ZhbHVlKTsKICAgICB9CiAKLSAgICBpZiAoIWVu
YWJsZUxpZ2F0dXJlcykgewotICAgICAgICBjb25zdCBpbnQgemVybyA9IDA7Ci0gICAgICAgIHN0
YXRpYyBDRk51bWJlclJlZiBlc3NlbnRpYWxMaWdhdHVyZXNWYWx1ZSA9IENGTnVtYmVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZ6ZXJvKTsKLSAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUobXV0YWJsZUF0dHJpYnV0ZXMsIGtDVExpZ2F0dXJlQXR0cmli
dXRlTmFtZSwgZXNzZW50aWFsTGlnYXR1cmVzVmFsdWUpOwotICAgIH0KLQogICAgIGlmIChvcmll
bnRhdGlvbiA9PSBWZXJ0aWNhbCkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobXV0YWJs
ZUF0dHJpYnV0ZXMsIGtDVFZlcnRpY2FsRm9ybXNBdHRyaWJ1dGVOYW1lLCBrQ0ZCb29sZWFuVHJ1
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmgKaW5kZXggZWMwMzFmZWUzMWNlYTAxMTdhYmRj
ZmExOTI1YTJjOWI3YWUxYjUzNi4uMTk1NTM4ZDE4ZDcxNjMzMTVhZDM5ZDQ3MTQzOTQ1ZTVkMjc0
ZTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGZpbGxCTVBHbHlwaHMoU1ZHRm9udEVsZW1lbnQqLCBHbHlwaFBhZ2UqLCBV
Q2hhciogYnVmZmVyKSBjb25zdDsKICAgICBib29sIGZpbGxOb25CTVBHbHlwaHMoU1ZHRm9udEVs
ZW1lbnQqLCBHbHlwaFBhZ2UqLCBVQ2hhciogYnVmZmVyKSBjb25zdDsKIAotICAgIGJvb2wgYXBw
bHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyR2x5cGgqLCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCBzaXpl
X3QsIGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCBlbmFibGVMaWdhdHVyZXMpIGNvbnN0ID0gZGVs
ZXRlOworICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyR2x5cGgqLCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCBzaXplX3QsIGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCByZXF1aXJlc1No
YXBpbmcpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgLy8gVGhzIFNWR0ZvbnRGYWNlRWxlbWVudCBp
cyBrZXB0IGFsaXZlIC0tCiAgICAgLy8gMSkgaW4gdGhlIGV4dGVybmFsIGZvbnQgY2FzZTogYnkg
dGhlIENTU0ZvbnRGYWNlU291cmNlLCB3aGljaCBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgZXh0
ZXJuYWwgU1ZHIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGE4N2Y2MTk2MzYyZTI2M2U0ZmJkMjQ5MWE1ZmJj
YWUzNTE0OTM2OC4uOGM5MGNhYWRjZTlhNDg3NmRiYTQ3Zjc4N2MzZGMwMWI3NTY2MjNlMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEwLTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udENhc2NhZGU6OnR5cGVzZXR0aW5nRmVhdHVy
ZXMoKSBpcyBub3QgcHJpdnkgdG8gZm9udC12YXJpYW50LSogbm9yIGZvbnQtZmVhdHVyZS1zZXR0
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
Nzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3RleHQvbXVsdGlwbGUtZmVhdHVyZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvdGV4dC9tdWx0aXBsZS1mZWF0dXJlLXByb3BlcnRpZXMuaHRtbDog
QWRkZWQuCisKIDIwMTUtMTAtMTcgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCB0aGUgQ1NTNCAncmV2ZXJ0JyBrZXl3b3JkLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGllcy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGll
cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0YWViOTAxNzRiMTlhOGYwN2EyMmYxZGQ4MWUy
ODg0ZDk1YzQ3N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbXVs
dGlwbGUtZmVhdHVyZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRl
c3QgbWFrZXMgc3VyZSB0aGF0IGZlYXR1cmUgcmVzb2x1dGlvbiBvcmRlciBpcyBob25vcmVkLiBG
b3IgbW9yZSBpbmZvcm1hdGlvbiwgY2xpY2sgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1mb250cy8jZmVhdHVyZS1wcmVjZWRlbmNlIj5oZXJlPC9hPi4gVGhlIHRlc3QgcGFzc2Vz
IGlmIHRoZXJlIGlzIGEgcGFydGljdWxhciBzZXF1ZW5jZSBvZiBYcyBhbmQgY2hlY2sgbWFya3Mg
YmVsb3cuCis8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogRm9udFdpdGhGZWF0dXJlc09URjsiPgor
PHNwYW4+Qjwvc3Bhbj4KKzxzcGFuPkI8L3NwYW4+Cis8c3Bhbj5BPC9zcGFuPgorPHNwYW4+Qjwv
c3Bhbj4KKzxzcGFuPkE8L3NwYW4+Cis8c3Bhbj5CPC9zcGFuPgorPHNwYW4+QTwvc3Bhbj4KKzxz
cGFuPkI8L3NwYW4+Cis8c3Bhbj5CPC9zcGFuPgorPHNwYW4+QTwvc3Bhbj4KKzwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxl
LWZlYXR1cmUtcHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxl
LWZlYXR1cmUtcHJvcGVydGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNGUyYzIwYWE4NTZjNDhhOWUz
ZjA5Y2ZmNmE2Mjc4ZmUxYjFiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbXVsdGlwbGUtZmVhdHVyZS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSwyMCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRl
c3QgbWFrZXMgc3VyZSB0aGF0IGZlYXR1cmUgcmVzb2x1dGlvbiBvcmRlciBpcyBob25vcmVkLiBG
b3IgbW9yZSBpbmZvcm1hdGlvbiwgY2xpY2sgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1mb250cy8jZmVhdHVyZS1wcmVjZWRlbmNlIj5oZXJlPC9hPi4gVGhlIHRlc3QgcGFzc2Vz
IGlmIHRoZXJlIGlzIGEgcGFydGljdWxhciBzZXF1ZW5jZSBvZiBYcyBhbmQgY2hlY2sgbWFya3Mg
YmVsb3cuCis8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogRm9udFdpdGhGZWF0dXJlc09URjsiPgor
PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IGNvbW1vbi1saWdhdHVyZXM7IHRl
eHQtcmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkOyI+Qzwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250
LXZhcmlhbnQtbGlnYXR1cmVzOiBuby1jb21tb24tbGlnYXR1cmVzOyB0ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVTcGVlZDsiPkM8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0
dXJlczogY29tbW9uLWxpZ2F0dXJlczsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0
eTsiPkM8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29t
bW9uLWxpZ2F0dXJlczsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8L3Nw
YW4+Cis8c3BhbiBzdHlsZT0iZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMSwgJ2NsaWcn
IDE7IHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkOyI+Qzwvc3Bhbj4KKzxzcGFuIHN0eWxl
PSJmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJyAwLCAnY2xpZycgMDsgdGV4dC1yZW5kZXJp
bmc6IG9wdGltaXplU3BlZWQ7Ij5DPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmVhdHVyZS1z
ZXR0aW5nczogJ2xpZ2EnIDEsICdjbGlnJyAxOyB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdp
YmlsaXR5OyI+Qzwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6ICds
aWdhJyAwLCAnY2xpZycgMDsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8
L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29tbW9uLWxpZ2F0
dXJlczsgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMCwgJ2NsaWcnIDA7Ij5DPC9zcGFu
PgorPHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVy
ZXM7IGZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnIDEsICdjbGlnJyAxOyI+Qzwvc3Bhbj4K
KzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263424</attachid>
            <date>2015-10-18 09:40:27 -0700</date>
            <delta_ts>2015-10-18 15:42:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149775-20151018093947.patch</filename>
            <type>text/plain</type>
            <size>29087</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg0ZjExYzU1OGY4MDAx
ZjdkZGM4MTI1NGY0MTM4ZjQ3OWZiMmQwNC4uNGE2ZjljYmI2NjdhZjFjNWY4YTAyMTYyYjlkM2Ix
MDg0YjEzMDZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY3IEBACiAyMDE1LTEwLTE4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKKyAgICAgICAgRm9udENhc2Nh
ZGU6OnR5cGVzZXR0aW5nRmVhdHVyZXMoKSBpcyBub3QgcHJpdnkgdG8gZm9udC12YXJpYW50LSog
bm9yIGZvbnQtZmVhdHVyZS1zZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5Nzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBoYXMgdHdvIHBpZWNlczoKKworICAgICAgICBX
ZSB1c2VkIHRvIGhhdmUgYSBib29sZWFuLCBlbmFibGVMaWdhdHVyZXMsIHdoaWNoIGFmZmVjdGVk
IGhvdyB3ZSBwZXJmb3JtIHNoYXBpbmcgaW4gYm90aCBvdXIKKyAgICAgICAgc2ltcGxlIGFuZCBj
b21wbGV4IHRleHQgY29kZXBhdGhzLiBIb3dldmVyLCBpbiB0aGlzIGJyYXZlIG5ldyB3b3JsZCBv
ZiBmb250LWZlYXR1cmUtc2V0dGluZ3MKKyAgICAgICAgYW5kIGZvbnQtdmFyaWFudC0qLCB0aGVy
ZSBhcmUgbWFueSBwcm9wZXJ0aWVzIHdoaWNoIG1heSBhZmZlY3Qgc2hhcGluZyAoYW5kIG11bHRp
cGxlIGtpbmRzCisgICAgICAgIG9mIGxpZ2F0dXJlcykuIFRoaXMgcGF0Y2ggcmVuYW1lcyB0aGlz
IGJvb2xlYW4gdG8gcmVxdWlyZXNTaGFwaW5nLCBhbmQgdGVhY2hlcyBpdCBhYm91dCBhbGwKKyAg
ICAgICAgdGhlIHZhcmlvdXMgcHJvcGVydGllcyB3aGljaCBhZmZlY3QgdGV4dCBzaGFwaW5nLgor
CisgICAgICAgIFNpbWlsYXJseSwgb25lIG9mIHRoZSBwbGFjZXMgd2hpY2ggdXNlZCB0aGlzIGVu
YWJsZUxpZ2F0dXJlcyBib29sZWFuIHdhcyB0byB0ZWxsIENvcmVUZXh0CisgICAgICAgIGlmIGl0
IHNob3VsZCBkaXNhYmxlIGxpZ2F0dXJlcy4gSG93ZXZlciwgd2Ugbm93IGhhdmUgbXVjaCBmaW5l
ci1ncmFpbmVkIGNvbnRyb2wgb3ZlcgorICAgICAgICBsaWdhdHVyZXMgZHVyaW5nIGZvbnQgY3Jl
YXRpb24uIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGRpY3RhdGluZyB3
aGljaAorICAgICAgICBmb250IGZlYXR1cmVzIHNob3VsZCBiZSBlbmFibGVkIGVudGlyZWx5IHRv
IHRoZSBGb250LiBUaGVyZWZvcmUsIGdldENGU3RyaW5nQXR0cmlidXRlcygpCisgICAgICAgIGRv
ZXNuJ3Qga25vdyBhbnl0aGluZyBhYm91dCBsaWdhdHVyZXMgYW55bW9yZTsgdGhlIGxvZ2ljIGlu
c2lkZSBmb250IGNyZWF0aW9uIGlzIHVzZWQKKyAgICAgICAgaW5zdGVhZC4KKworICAgICAgICBB
biBhZGRlZCBiZW5lZml0IG9mIG1vdmluZyBhbGwgdGhlIGZvbnQgZmVhdHVyZSBsb2dpYyB0byBv
bmUgcGxhY2UgaXMgdGhhdCB3ZSBjYW4gaW1wbGVtZW50CisgICAgICAgIHRoZSBmZWF0dXJlIHJl
c29sdXRpb24gYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUgQ1NTMyBmb250cyBzcGVjLiBUaGlz
IHBhdGNoIGFkZHMgYSB0ZXN0IHRvCisgICAgICAgIG1ha2VzIHN1cmUgdGhhdCB0ZXh0LXJlbmRl
cmluZywgZm9udC1mZWF0dXJlLXNldHRpbmdzLCBhbmQgZm9udC12YXJpYW50LSogcGxheSB0b2dl
dGhlcgorICAgICAgICBuaWNlbHkuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L211bHRpcGxl
LWZlYXR1cmUtcHJvcGVydGllcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmFwcGx5VHJhbnNmb3Jtcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpGb250
Q2FzY2FkZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y29kZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OnJlcXVpcmVzU2hhcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
Y29tcHV0ZVJlcXVpcmVzU2hhcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZW5hYmxlTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
Ojpjb21wdXRlRW5hYmxlTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0
b3I6OldpZHRoSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBw
bHlGb250VHJhbnNmb3Jtcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVy
YXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVQbGF0Zm9ybUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnQ6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW06
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4
VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpnZXRD
RlN0cmluZ0F0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdGb250RGF0YS5oOgorCisyMDE1
LTEwLTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKICAgICAg
ICAgU3RvcCBob25vcmluZyB0aGUgdXNlciBkZWZhdWx0ICJXZWJLaXRLZXJuaW5nQW5kTGlnYXR1
cmVzRW5hYmxlZEJ5RGVmYXVsdCIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDI4NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCmluZGV4IDhlY2NlZTY3YzhlM2IxZjY4YzgzNWFjNTg3ZWI5YThlYjYzOWFiYzYuLjUw
NjU0NGQ2ODMwODlkZTBlZDlhZTMwYTVmZGYwMDA0YTBmM2I5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0zNzEsMTkgKzM3MSwxOSBAQCBQYXNzUmVm
UHRyPEZvbnQ+IEZvbnQ6OmNyZWF0ZVNjYWxlZEZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sCiAgICAgcmV0dXJuIHBsYXRmb3JtQ3JlYXRlU2NhbGVkRm9udChmb250
RGVzY3JpcHRpb24sIHNjYWxlRmFjdG9yKTsKIH0KIAotYm9vbCBGb250OjphcHBseVRyYW5zZm9y
bXMoR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2Vz
LCBzaXplX3QgZ2x5cGhDb3VudCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIGVuYWJsZUxpZ2F0
dXJlcykgY29uc3QKK2Jvb2wgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyR2x5cGgq
IGdseXBocywgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgc2l6ZV90IGdseXBoQ291bnQs
IGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcpIGNvbnN0CiB7CiAgICAg
Ly8gV2UgbmVlZCB0byBoYW5kbGUgdHJhbnNmb3JtcyBvbiBTVkcgZm9udHMgaW50ZXJuYWxseSwg
c2luY2UgdGhleSBhcmUgcmVuZGVyZWQgaW50ZXJuYWxseS4KICAgICBBU1NFUlQoIWlzU1ZHRm9u
dCgpKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDVEZvbnRUcmFuc2Zvcm1PcHRpb25zIG9w
dGlvbnMgPSAoZW5hYmxlS2VybmluZyA/IGtDVEZvbnRUcmFuc2Zvcm1BcHBseVBvc2l0aW9uaW5n
IDogMCkgfCAoZW5hYmxlTGlnYXR1cmVzID8ga0NURm9udFRyYW5zZm9ybUFwcGx5U2hhcGluZyA6
IDApOworICAgIENURm9udFRyYW5zZm9ybU9wdGlvbnMgb3B0aW9ucyA9IChlbmFibGVLZXJuaW5n
ID8ga0NURm9udFRyYW5zZm9ybUFwcGx5UG9zaXRpb25pbmcgOiAwKSB8IChyZXF1aXJlc1NoYXBp
bmcgPyBrQ1RGb250VHJhbnNmb3JtQXBwbHlTaGFwaW5nIDogMCk7CiAgICAgcmV0dXJuIENURm9u
dFRyYW5zZm9ybUdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5cGhzLCByZWludGVy
cHJldF9jYXN0PENHU2l6ZSo+KGFkdmFuY2VzKSwgZ2x5cGhDb3VudCwgb3B0aW9ucyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShnbHlwaHMpOwogICAgIFVOVVNFRF9QQVJBTShhZHZhbmNlcyk7
CiAgICAgVU5VU0VEX1BBUkFNKGdseXBoQ291bnQpOwogICAgIFVOVVNFRF9QQVJBTShlbmFibGVL
ZXJuaW5nKTsKLSAgICBVTlVTRURfUEFSQU0oZW5hYmxlTGlnYXR1cmVzKTsKKyAgICBVTlVTRURf
UEFSQU0ocmVxdWlyZXNTaGFwaW5nKTsKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCBjNDA4YTQ1OGI2YzM5MDIz
OTk0YjdjMGYzM2UzNTA0Njk0MTlkNzFjLi5iYzc4ZWZmMzRmNTY3OTdlMGQyYWUxNDVhMDQ4MzEw
NjBlNjhmNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0x
OTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkTm90QmVVc2VkRm9yQXJhYmlj
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGROb3RCZVVzZWRGb3JBcmFiaWM7IH07CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDRkRpY3Rpb25hcnlSZWYgZ2V0Q0ZTdHJpbmdBdHRy
aWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCBlbmFibGVMaWdhdHVyZXMsIEZvbnRPcmll
bnRhdGlvbikgY29uc3Q7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGdldENGU3RyaW5nQXR0cmlidXRl
cyhib29sIGVuYWJsZUtlcm5pbmcsIEZvbnRPcmllbnRhdGlvbikgY29uc3Q7CiAgICAgYm9vbCBo
YXNDdXN0b21UcmFja2luZygpIGNvbnN0IHsgcmV0dXJuIGlzU3lzdGVtRm9udCgpOyB9CiAjZW5k
aWYKIApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhblJlbmRlckNvbWJp
bmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiwgc2l6ZV90KSBjb25zdDsKICNlbmRp
ZgogCi0gICAgYm9vbCBhcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXJHbHlwaCosIEdseXBoQnVm
ZmVyQWR2YW5jZSosIHNpemVfdCBnbHlwaENvdW50LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wg
ZW5hYmxlTGlnYXR1cmVzKSBjb25zdDsKKyAgICBib29sIGFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1
ZmZlckdseXBoKiwgR2x5cGhCdWZmZXJBZHZhbmNlKiwgc2l6ZV90IGdseXBoQ291bnQsIGJvb2wg
ZW5hYmxlS2VybmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcpIGNvbnN0OwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICBib29sIGlzU3lzdGVtRm9udCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTeXN0ZW1Gb250OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNjk3N2QwZGU0YmYyOWFiOTE2ZmNhZTlh
YTEwZjI0MjYyZjcwNGFmYy4uY2I1NzBiYTE5YzI0OTY3YTAyNDI0YzZkNWRiODYzMzE4NmQ0ZmU5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEZvbnRDYXNjYWRlOjpGb250Q2FzY2FkZSgpCiAgICAg
LCBtX3dvcmRTcGFjaW5nKDApCiAgICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKGZhbHNl
KQogICAgICwgbV9lbmFibGVLZXJuaW5nKGZhbHNlKQotICAgICwgbV9lbmFibGVMaWdhdHVyZXMo
ZmFsc2UpCisgICAgLCBtX3JlcXVpcmVzU2hhcGluZyhmYWxzZSkKIHsKIH0KIApAQCAtMTEzLDcg
KzExMyw3IEBAIEZvbnRDYXNjYWRlOjpGb250Q2FzY2FkZShjb25zdCBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiBmZCwgZmxvYXQgbGV0dGVyU3BhY2luZywKICAgICAsIG1fd29yZFNwYWNpbmcod29y
ZFNwYWNpbmcpCiAgICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKHVzZUJhY2tzbGFzaEFz
WWVuU2lnbkZvckZhbWlseShmZC5maXJzdEZhbWlseSgpKSkKICAgICAsIG1fZW5hYmxlS2Vybmlu
Zyhjb21wdXRlRW5hYmxlS2VybmluZygpKQotICAgICwgbV9lbmFibGVMaWdhdHVyZXMoY29tcHV0
ZUVuYWJsZUtlcm5pbmcoKSkKKyAgICAsIG1fcmVxdWlyZXNTaGFwaW5nKGNvbXB1dGVSZXF1aXJl
c1NoYXBpbmcoKSkKIHsKIH0KIApAQCAtMTI1LDcgKzEyNSw3IEBAIEZvbnRDYXNjYWRlOjpGb250
Q2FzY2FkZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250RGF0YSwgRm9udFNtb290aGluZ01v
ZGUgZm9uCiAgICAgLCBtX3dvcmRTcGFjaW5nKDApCiAgICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVu
U3ltYm9sKGZhbHNlKQogICAgICwgbV9lbmFibGVLZXJuaW5nKGNvbXB1dGVFbmFibGVLZXJuaW5n
KCkpCi0gICAgLCBtX2VuYWJsZUxpZ2F0dXJlcyhjb21wdXRlRW5hYmxlS2VybmluZygpKQorICAg
ICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpKQogewogICAgIG1f
Zm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoZm9udFNtb290aGluZ01vZGUpOwogI2lm
IFBMQVRGT1JNKElPUykKQEAgLTE0NCw3ICsxNDQsNyBAQCBGb250Q2FzY2FkZTo6Rm9udENhc2Nh
ZGUoY29uc3QgRm9udENhc2NhZGUmIG90aGVyKQogICAgICwgbV93b3JkU3BhY2luZyhvdGhlci5t
X3dvcmRTcGFjaW5nKQogICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbChvdGhlci5tX3Vz
ZUJhY2tzbGFzaEFzWWVuU3ltYm9sKQogICAgICwgbV9lbmFibGVLZXJuaW5nKGNvbXB1dGVFbmFi
bGVLZXJuaW5nKCkpCi0gICAgLCBtX2VuYWJsZUxpZ2F0dXJlcyhjb21wdXRlRW5hYmxlS2Vybmlu
ZygpKQorICAgICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpKQog
ewogfQogCkBAIC0xNTYsNyArMTU2LDcgQEAgRm9udENhc2NhZGUmIEZvbnRDYXNjYWRlOjpvcGVy
YXRvcj0oY29uc3QgRm9udENhc2NhZGUmIG90aGVyKQogICAgIG1fd29yZFNwYWNpbmcgPSBvdGhl
ci5tX3dvcmRTcGFjaW5nOwogICAgIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgPSBvdGhlci5t
X3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sOwogICAgIG1fZW5hYmxlS2VybmluZyA9IG90aGVyLm1f
ZW5hYmxlS2VybmluZzsKLSAgICBtX2VuYWJsZUxpZ2F0dXJlcyA9IG90aGVyLm1fZW5hYmxlTGln
YXR1cmVzOworICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gb3RoZXIubV9yZXF1aXJlc1NoYXBpbmc7
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBGb250Q2Fz
Y2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAog
ICAgIG1fZm9udHMgPSByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMobV9mb250RGVzY3JpcHRpb24s
IFdURjo6bW92ZShmb250U2VsZWN0b3IpKTsKICAgICBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9s
ID0gdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGZpcnN0RmFtaWx5KCkpOwogICAgIG1f
ZW5hYmxlS2VybmluZyA9IGNvbXB1dGVFbmFibGVLZXJuaW5nKCk7Ci0gICAgbV9lbmFibGVMaWdh
dHVyZXMgPSBjb21wdXRlRW5hYmxlTGlnYXR1cmVzKCk7CisgICAgbV9yZXF1aXJlc1NoYXBpbmcg
PSBjb21wdXRlUmVxdWlyZXNTaGFwaW5nKCk7CiB9CiAKIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFj
dGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CkBAIC0zMTcsNyArMzE3LDcgQEAg
ZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdAogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNv
ZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBp
dCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0
dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxl
eCAmJiAoZW5hYmxlS2VybmluZygpIHx8IGVuYWJsZUxpZ2F0dXJlcygpKSAmJiAoZnJvbSB8fCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odG8pICE9IHJ1bi5sZW5ndGgoKSkgJiYgIWlzRHJhd25XaXRo
U1ZHRm9udChydW4pKQorICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJs
ZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFpc0RyYXduV2l0aFNWR0ZvbnQocnVu
KSkKICAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CiAKICAgICBpZiAoY29kZVBhdGhU
b1VzZSAhPSBDb21wbGV4KQpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRy
YXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuCiAKICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAv
LyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBy
dW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8x
MDAwNTAKLSAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4ICYmIChlbmFibGVLZXJuaW5n
KCkgfHwgZW5hYmxlTGlnYXR1cmVzKCkpICYmIChmcm9tIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0bykgIT0gcnVuLmxlbmd0aCgpKSAmJiAhaXNEcmF3bldpdGhTVkdGb250KHJ1bikpCisgICAg
aWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCAmJiAoZW5hYmxlS2VybmluZygpIHx8IHJlcXVp
cmVzU2hhcGluZygpKSAmJiAoZnJvbSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG8pICE9IHJ1
bi5sZW5ndGgoKSkgJiYgIWlzRHJhd25XaXRoU1ZHRm9udChydW4pKQogICAgICAgICBjb2RlUGF0
aFRvVXNlID0gQ29tcGxleDsKIAogICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXgpCkBA
IC0zNTcsOSArMzU3LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoKGNvbnN0IFRleHRSdW4m
IHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMKICAgICAgICAgICAgIGds
eXBoT3ZlcmZsb3cgPSAwOwogICAgIH0KIAotICAgIGJvb2wgaGFzS2VybmluZ09yTGlnYXR1cmVz
ID0gZW5hYmxlS2VybmluZygpIHx8IGVuYWJsZUxpZ2F0dXJlcygpOwogICAgIGJvb2wgaGFzV29y
ZFNwYWNpbmdPckxldHRlclNwYWNpbmcgPSB3b3JkU3BhY2luZygpIHx8IGxldHRlclNwYWNpbmco
KTsKLSAgICBmbG9hdCogY2FjaGVFbnRyeSA9IG1fZm9udHMtPndpZHRoQ2FjaGUoKS5hZGQocnVu
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCksIGhhc0tlcm5pbmdPckxp
Z2F0dXJlcywgaGFzV29yZFNwYWNpbmdPckxldHRlclNwYWNpbmcsIGdseXBoT3ZlcmZsb3cpOwor
ICAgIGZsb2F0KiBjYWNoZUVudHJ5ID0gbV9mb250cy0+d2lkdGhDYWNoZSgpLmFkZChydW4sIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKSwgZW5hYmxlS2VybmluZygpIHx8
IHJlcXVpcmVzU2hhcGluZygpLCBoYXNXb3JkU3BhY2luZ09yTGV0dGVyU3BhY2luZywgZ2x5cGhP
dmVyZmxvdyk7CiAgICAgaWYgKGNhY2hlRW50cnkgJiYgIXN0ZDo6aXNuYW4oKmNhY2hlRW50cnkp
KQogICAgICAgICByZXR1cm4gKmNhY2hlRW50cnk7CiAKQEAgLTUwOSw3ICs1MDgsNyBAQCB2b2lk
IEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBy
dW4sIExheW91dFJlY3QmIHNlbAogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQ
YXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBo
YW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCAm
JiAoZW5hYmxlS2VybmluZygpIHx8IGVuYWJsZUxpZ2F0dXJlcygpKSAmJiAoZnJvbSB8fCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odG8pICE9IHJ1bi5sZW5ndGgoKSkgJiYgIWlzRHJhd25XaXRoU1ZH
Rm9udChydW4pKQorICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtl
cm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFpc0RyYXduV2l0aFNWR0ZvbnQocnVuKSkK
ICAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CiAKICAgICBpZiAoY29kZVBhdGhUb1Vz
ZSAhPSBDb21wbGV4KQpAQCAtNTIxLDcgKzUyMCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmFkanVz
dFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2Vs
CiBpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9uKGNvbnN0IFRleHRSdW4mIHJ1biwg
ZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdp
dGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAK
LSAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBDb21wbGV4ICYmICghKGVuYWJsZUtlcm5pbmcoKSB8
fCBlbmFibGVMaWdhdHVyZXMoKSkgfHwgaXNEcmF3bldpdGhTVkdGb250KHJ1bikpKQorICAgIGlm
IChjb2RlUGF0aChydW4pICE9IENvbXBsZXggJiYgKCEoZW5hYmxlS2VybmluZygpIHx8IHJlcXVp
cmVzU2hhcGluZygpKSB8fCBpc0RyYXduV2l0aFNWR0ZvbnQocnVuKSkpCiAgICAgICAgIHJldHVy
biBvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQocnVuLCB4LCBpbmNsdWRlUGFydGlhbEds
eXBocyk7CiAKICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChydW4s
IHgsIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKQEAgLTU5NCwxMiArNTkzLDEyIEBAIEZvbnRDYXNj
YWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoY29uc3QgVGV4dFJ1biYgcnVuKSBj
b25zdAogICAgICAgICByZXR1cm4gU2ltcGxlOwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJlY2F1c2UgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKCkg
c2hvdWxkIHBlcmZvcm0gYWxsIG5lY2Vzc2FyeSBzaGFwaW5nLgorICAgIC8vIEZvbnQ6OmFwcGx5
VHJhbnNmb3JtcygpIGRvZXNuJ3Qga25vdyB3aGljaCBmZWF0dXJlcyB0byBlbmFibGUvZGlzYWJs
ZS4KICAgICBpZiAobV9mb250RGVzY3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCkuc2l6ZSgpID4g
MCB8fCAhbV9mb250RGVzY3JpcHRpb24udmFyaWFudFNldHRpbmdzKCkuaXNBbGxOb3JtYWwoKSkK
ICAgICAgICAgcmV0dXJuIENvbXBsZXg7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KHJ1bi5sZW5ndGgoKSA+IDEgJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCBlbmFibGVMaWdhdHVyZXMo
KSkpCisgICAgaWYgKHJ1bi5sZW5ndGgoKSA+IDEgJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1
aXJlc1NoYXBpbmcoKSkpCiAgICAgICAgIHJldHVybiBDb21wbGV4OwogI2VuZGlmCiAKQEAgLTE0
MjEsNyArMTQyMCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yU2ltcGxlVGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9uCiB7CiAgICAgV2lkdGhJdGVy
YXRvciBpdCh0aGlzLCBydW4sIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwogICAgIEds
eXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGl0LmFkdmFuY2UocnVuLmxlbmd0aCgpLCAoZW5h
YmxlS2VybmluZygpIHx8IGVuYWJsZUxpZ2F0dXJlcygpKSA/ICZnbHlwaEJ1ZmZlciA6IG51bGxw
dHIpOworICAgIGl0LmFkdmFuY2UocnVuLmxlbmd0aCgpLCAoZW5hYmxlS2VybmluZygpIHx8IHJl
cXVpcmVzU2hhcGluZygpKSA/ICZnbHlwaEJ1ZmZlciA6IG51bGxwdHIpOwogCiAgICAgaWYgKGds
eXBoT3ZlcmZsb3cpIHsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptYXg8aW50
PihnbHlwaE92ZXJmbG93LT50b3AsIGNlaWxmKC1pdC5taW5HbHlwaEJvdW5kaW5nQm94WSgpKSAt
IChnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzID8gMCA6IGZvbnRNZXRyaWNzKCkuYXNjZW50
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5o
CmluZGV4IGM3MzE2NGJjNDJkNmNhMWQxNmFmNDEwZDBkNjk3NjlhZGU2ZDM5ZDQuLmFmZWFkNWE2
ODY4M2Y4ZjVlMDU5MGM4Mjk1MDY0YzRjN2EzMDY4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1Ymxp
YzoKICAgICBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9mb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgpOyB9CiAKICAgICBib29sIGVuYWJsZUtl
cm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZUtlcm5pbmc7IH0KLSAgICBib29sIGVuYWJs
ZUxpZ2F0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlTGlnYXR1cmVzOyB9CisgICAgYm9v
bCByZXF1aXJlc1NoYXBpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzU2hhcGluZzsgfQog
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmaXJzdEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7IH0KICAgICB1bnNpZ25lZCBmYW1pbHlDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7IH0KQEAg
LTMyMSwxMyArMzIxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBhZHZhbmNlZFRleHRS
ZW5kZXJpbmdNb2RlKCk7CiAgICAgfQogCi0gICAgYm9vbCBjb21wdXRlRW5hYmxlTGlnYXR1cmVz
KCkgY29uc3QKKyAgICAvLyBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgdGhlIHNpbXBsZSB0ZXh0IGNv
ZGVwYXRoLgorICAgIGJvb2wgY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpIGNvbnN0CiAgICAgewot
ICAgICAgICBhdXRvIGxpZ2F0dXJlcyA9IG1fZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDb21tb25M
aWdhdHVyZXMoKTsKLSAgICAgICAgaWYgKGxpZ2F0dXJlcyA9PSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzKQorICAgICAgICBpZiAoIW1fZm9udERlc2NyaXB0aW9uLnZhcmlhbnRTZXR0aW5ncygp
LmlzQWxsTm9ybWFsKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1f
Zm9udERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBpZiAobGlnYXR1cmVzID09IEZvbnRWYXJpYW50TGlnYXR1cmVz
OjpObykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGFkdmFuY2Vk
VGV4dFJlbmRlcmluZ01vZGUoKTsKICAgICB9CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBwcml2YXRl
OgogICAgIGZsb2F0IG1fd29yZFNwYWNpbmc7CiAgICAgbXV0YWJsZSBib29sIG1fdXNlQmFja3Ns
YXNoQXNZZW5TeW1ib2w7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2VuYWJsZUtlcm5pbmcgOiAx
OyAvLyBDb21wdXRlZCBmcm9tIG1fZm9udERlc2NyaXB0aW9uLgotICAgIG11dGFibGUgdW5zaWdu
ZWQgbV9lbmFibGVMaWdhdHVyZXMgOiAxOyAvLyBDb21wdXRlZCBmcm9tIG1fZm9udERlc2NyaXB0
aW9uLgorICAgIG11dGFibGUgdW5zaWduZWQgbV9yZXF1aXJlc1NoYXBpbmcgOiAxOyAvLyBDb21w
dXRlZCBmcm9tIG1fZm9udERlc2NyaXB0aW9uLgogfTsKIAogdm9pZCBpbnZhbGlkYXRlRm9udENh
c2NhZGVDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcAppbmRleCBiMGE1ZjU4ZjQwNmI0NzJmMjAzODBmNzMxOWJlMjliYjhl
ZWQyMWY3Li44M2Q3ZDEyMDJlMzlkNDlkOGEwMTI5MWU5NjMzOWM3MzkwZjA3ODkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApA
QCAtNDQsNyArNDQsNyBAQCBXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKGNvbnN0IEZvbnRD
YXNjYWRlKiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZQogICAgICwgbV9mYWxsYmFj
a0ZvbnRzKGZhbGxiYWNrRm9udHMpCiAgICAgLCBtX2FjY291bnRGb3JHbHlwaEJvdW5kcyhhY2Nv
dW50Rm9yR2x5cGhCb3VuZHMpCiAgICAgLCBtX2VuYWJsZUtlcm5pbmcoZm9udC0+ZW5hYmxlS2Vy
bmluZygpKQotICAgICwgbV9lbmFibGVMaWdhdHVyZXMoZm9udC0+ZW5hYmxlTGlnYXR1cmVzKCkp
CisgICAgLCBtX3JlcXVpcmVzU2hhcGluZyhmb250LT5yZXF1aXJlc1NoYXBpbmcoKSkKICAgICAs
IG1fZm9yVGV4dEVtcGhhc2lzKGZvclRleHRFbXBoYXNpcykKIHsKICAgICAvLyBJZiB0aGUgcGFk
ZGluZyBpcyBub24temVybywgY291bnQgdGhlIG51bWJlciBvZiBzcGFjZXMgaW4gdGhlIHJ1bgpA
QCAtMTAxLDcgKzEwMSw3IEBAIGlubGluZSBhdXRvIFdpZHRoSXRlcmF0b3I6OnNob3VsZEFwcGx5
Rm9udFRyYW5zZm9ybXMoY29uc3QgR2x5cGhCdWZmZXIqIGdseXBoQnVmCiB7CiAgICAgaWYgKGds
eXBoQnVmZmVyICYmIGdseXBoQnVmZmVyLT5zaXplKCkgPT0gKGxhc3RHbHlwaENvdW50ICsgMSkg
JiYgaXNTb2Z0QmFua0Vtb2ppKHByZXZpb3VzQ2hhcmFjdGVyKSkKICAgICAgICAgcmV0dXJuIFRy
YW5zZm9ybXNUeXBlOjpGb3JjZWQ7Ci0gICAgaWYgKG1fcnVuLmxlbmd0aCgpIDw9IDEgfHwgISht
X2VuYWJsZUtlcm5pbmcgfHwgbV9lbmFibGVMaWdhdHVyZXMpKQorICAgIGlmIChtX3J1bi5sZW5n
dGgoKSA8PSAxIHx8ICEobV9lbmFibGVLZXJuaW5nIHx8IG1fcmVxdWlyZXNTaGFwaW5nKSkKICAg
ICAgICAgcmV0dXJuIFRyYW5zZm9ybXNUeXBlOjpOb25lOwogICAgIHJldHVybiBUcmFuc2Zvcm1z
VHlwZTo6Tm90Rm9yY2VkOwogfQpAQCAtMTM4LDcgKzEzOCw3IEBAIGlubGluZSBmbG9hdCBXaWR0
aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwg
Ym9vbCBsCiAgICAgICAgIH0KICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBmb250LT5hcHBs
eVRyYW5zZm9ybXMoZ2x5cGhCdWZmZXItPmdseXBocyhsYXN0R2x5cGhDb3VudCksIGFkdmFuY2Vz
ICsgbGFzdEdseXBoQ291bnQsIGdseXBoQnVmZmVyU2l6ZSAtIGxhc3RHbHlwaENvdW50LCBtX2Vu
YWJsZUtlcm5pbmcsIG1fZW5hYmxlTGlnYXR1cmVzKTsKKyAgICAgICAgZm9udC0+YXBwbHlUcmFu
c2Zvcm1zKGdseXBoQnVmZmVyLT5nbHlwaHMobGFzdEdseXBoQ291bnQpLCBhZHZhbmNlcyArIGxh
c3RHbHlwaENvdW50LCBnbHlwaEJ1ZmZlclNpemUgLSBsYXN0R2x5cGhDb3VudCwgbV9lbmFibGVL
ZXJuaW5nLCBtX3JlcXVpcmVzU2hhcGluZyk7CiAKICAgICBpZiAoIWx0cikKICAgICAgICAgZ2x5
cGhCdWZmZXItPnJldmVyc2UobGFzdEdseXBoQ291bnQsIGdseXBoQnVmZmVyU2l6ZSAtIGxhc3RH
bHlwaENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuaAppbmRleCBiMzU2MzQxZjEyODdiYjdkNzJkZTYxZjAwNjYxYjM1ODVjYjFiNGJh
Li4xNzgyNjYzZGFlMTYyNjVjYWRmMWJhOTg2ZDdkNjdkNzIwZDYxZGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCkBAIC04OSw3ICs4
OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxjb25zdCBGb250Kj4qIG1fZmFsbGJhY2tGb250
cyB7IG51bGxwdHIgfTsKICAgICBib29sIG1fYWNjb3VudEZvckdseXBoQm91bmRzIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZW5hYmxlS2VybmluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2VuYWJs
ZUxpZ2F0dXJlcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3JlcXVpcmVzU2hhcGluZyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2ZvclRleHRFbXBoYXNpcyB7IGZhbHNlIH07CiAgICAgZmxvYXQgbV9t
YXhHbHlwaEJvdW5kaW5nQm94WSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSB9
OwogICAgIGZsb2F0IG1fbWluR2x5cGhCb3VuZGluZ0JveFkgeyBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bWF4KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBiN2NlY2Y0MjM2
N2I2MGE1N2YyMjAzOWFiMTRlMWY3M2NjMTcxNTVlLi43YjNmOGRhOTlhMzVjZTFmZmJhNzMyNWEw
NDQzZGE2Yjk5YzRhZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0zMjEsMTMgKzMy
MSwyOSBAQCBzdGF0aWMgRmVhdHVyZXNNYXAgY29tcHV0ZUZlYXR1cmVTZXR0aW5nc0Zyb21WYXJp
YW50cyhjb25zdCBGb250VmFyaWFudFNldHRpbmdzJgogCiBSZXRhaW5QdHI8Q1RGb250UmVmPiBw
cmVwYXJlUGxhdGZvcm1Gb250KENURm9udFJlZiBvcmlnaW5hbEZvbnQsIFRleHRSZW5kZXJpbmdN
b2RlIHRleHRSZW5kZXJpbmdNb2RlLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiBmZWF0dXJl
cywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgdmFyaWFudFNldHRpbmdzKQogewotICAgIGlm
ICghb3JpZ2luYWxGb250IHx8ICghZmVhdHVyZXMuc2l6ZSgpICYmICh0ZXh0UmVuZGVyaW5nTW9k
ZSAhPSBPcHRpbWl6ZUxlZ2liaWxpdHkpICYmIHZhcmlhbnRTZXR0aW5ncy5pc0FsbE5vcm1hbCgp
KSkKKyAgICBpZiAoIW9yaWdpbmFsRm9udCB8fCAoIWZlYXR1cmVzLnNpemUoKSAmJiAodGV4dFJl
bmRlcmluZ01vZGUgPT0gQXV0b1RleHRSZW5kZXJpbmcpICYmIHZhcmlhbnRTZXR0aW5ncy5pc0Fs
bE5vcm1hbCgpKSkKICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRm9udDsKIAotICAgIC8vIEZJWE1F
OiBXZSBkb24ndCBjb25zdWx0IHdpdGggdGhlIEBmb250LWZhY2UgZmlyc3QsIGxpa2UgdGhlIHNw
ZWMgc2F5cyB3ZSBzaG91bGQuCisgICAgLy8gVGhpcyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGF0
IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZm9udHMvI2ZlYXR1cmUtcHJlY2VkZW5jZQogCi0g
ICAgLy8gU3BlYyBzYXlzIHRoYXQgZm9udC1mZWF0dXJlLXNldHRpbmdzIHNob3VsZCBvdmVycmlk
ZSBmb250LXZhcmlhbnQtKi4KKyAgICAvLyBTdGVwIDE6IENvcmVUZXh0IGhhbmRsZXMgb3VyIGRl
ZmF1bHRzCisKKyAgICAvLyBTdGVwcyAyLTM6IEZJWE1FOiBDb25zdWx0IHdpdGggQGZvbnQtZmFj
ZQorCisgICAgLy8gU3RlcCA0OiBGb250LXZhcmlhbnQKICAgICBhdXRvIGZvbnRGZWF0dXJlU2V0
dGluZ3NGcm9tVmFyaWFudHMgPSBjb21wdXRlRmVhdHVyZVNldHRpbmdzRnJvbVZhcmlhbnRzKHZh
cmlhbnRTZXR0aW5ncyk7CisKKyAgICAvLyBTdGVwIDU6IE90aGVyIHByb3BlcnRpZXMgKHRleHQt
cmVuZGVyaW5nKQorICAgIGlmICh0ZXh0UmVuZGVyaW5nTW9kZSA9PSBPcHRpbWl6ZVNwZWVkKSB7
CisgICAgICAgIGZvbnRGZWF0dXJlU2V0dGluZ3NGcm9tVmFyaWFudHMuc2V0KGZvbnRGZWF0dXJl
VGFnKCJsaWdhIiksIDApOworICAgICAgICBmb250RmVhdHVyZVNldHRpbmdzRnJvbVZhcmlhbnRz
LnNldChmb250RmVhdHVyZVRhZygiY2xpZyIpLCAwKTsKKyAgICAgICAgZm9udEZlYXR1cmVTZXR0
aW5nc0Zyb21WYXJpYW50cy5zZXQoZm9udEZlYXR1cmVUYWcoImRsaWciKSwgMCk7CisgICAgICAg
IGZvbnRGZWF0dXJlU2V0dGluZ3NGcm9tVmFyaWFudHMuc2V0KGZvbnRGZWF0dXJlVGFnKCJobGln
IiksIDApOworICAgICAgICBmb250RmVhdHVyZVNldHRpbmdzRnJvbVZhcmlhbnRzLnNldChmb250
RmVhdHVyZVRhZygiY2FsdCIpLCAwKTsKKyAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gdHVybiBv
ZmYgbW9yZSBzdHVmZiBoZXJlLgorICAgIH0KKworICAgIC8vIFN0ZXAgNjogRm9udC1mZWF0dXJl
LXNldHRpbmdzCiAgICAgZm9yIChhdXRvJiBuZXdGZWF0dXJlIDogZmVhdHVyZXMpCiAgICAgICAg
IGZvbnRGZWF0dXJlU2V0dGluZ3NGcm9tVmFyaWFudHMuc2V0KG5ld0ZlYXR1cmUudGFnKCksIG5l
d0ZlYXR1cmUudmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQppbmRleCAwNDUyNTZiNTc2NDZlYzQxYzkyOWI3MTEy
NmZkZTcyNTljNGExNzUwLi5kMzBiYjI2NjczYTIwY2NmNWVmNTk4YWFjZTJlZjljYzE2Y2MwOGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENvY29hLm1tCkBAIC00NzUsNyArNDc1LDcgQEAgYm9vbCBGb250OjpjYW5SZW5kZXJDb21iaW5p
bmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGwKIAog
ICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGZvbnRFcXVhbGl0eU9iamVjdCA9IHBsYXRmb3JtRGF0
YSgpLm9iamVjdEZvckVxdWFsaXR5Q2hlY2soKTsKIAotICAgIFByb3ZpZGVySW5mbyBpbmZvID0g
eyBjaGFyYWN0ZXJzLCBsZW5ndGgsIGdldENGU3RyaW5nQXR0cmlidXRlcyhmYWxzZSwgZmFsc2Us
IHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpIH07CisgICAgUHJvdmlkZXJJbmZvIGluZm8g
PSB7IGNoYXJhY3RlcnMsIGxlbmd0aCwgZ2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGZhbHNlLCBwbGF0
Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpKSB9OwogICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxp
bmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhVbmlDaGFyUHJvdmlkZXIoJnByb3ZpZGVTdHJp
bmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5mbykpOwogCiAgICAgQ0ZBcnJheVJlZiBydW5BcnJheSA9
IENUTGluZUdldEdseXBoUnVucyhsaW5lLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQppbmRleCAxYTE1NDgwN2M0Yzg4MmQ5ZDkxZDcxMmZjNWNkODNiZmVi
MDQxOWYzLi4yNDBjYmNjYTk3YmJlOWU2MzJmNWYyNmEwODJiM2YzYWFjMmM0ODJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yMTcsNyArMjE3LDcgQEAg
dm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFy
YWN0ZXJzKGNvbnN0IFVDaGFyKiBjcCwKIAogICAgICAgICBSZXRhaW5QdHI8V2ViQ2FzY2FkZUxp
c3Q+IGNhc2NhZGVMaXN0ID0gYWRvcHROUyhbW1dlYkNhc2NhZGVMaXN0IGFsbG9jXSBpbml0V2l0
aEZvbnQ6Jm1fZm9udCBjaGFyYWN0ZXI6YmFzZUNoYXJhY3Rlcl0pOwogCi0gICAgICAgIHN0cmlu
Z0F0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIGZvbnQtPmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQuZW5h
YmxlS2VybmluZygpLCBtX2ZvbnQuZW5hYmxlTGlnYXR1cmVzKCksIGZvbnQtPnBsYXRmb3JtRGF0
YSgpLm9yaWVudGF0aW9uKCkpKSk7CisgICAgICAgIHN0cmluZ0F0dHJpYnV0ZXMgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGZv
bnQtPmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQuZW5hYmxlS2VybmluZygpLCBmb250LT5w
bGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpKSkpOwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9p
ZCogYXR0cmlidXRlS2V5c1tdID0geyBrQ1RGb250Q2FzY2FkZUxpc3RBdHRyaWJ1dGUgfTsKICAg
ICAgICAgY29uc3Qgdm9pZCogdmFsdWVzW10gPSB7IGNhc2NhZGVMaXN0LmdldCgpIH07CiAgICAg
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdHRyaWJ1dGVLZXlzLCB2YWx1ZXMs
IHNpemVvZihhdHRyaWJ1dGVLZXlzKSAvIHNpemVvZigqYXR0cmlidXRlS2V5cyksICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVj
dENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBS
ZXRhaW5QdHI8Q1RGb250UmVmPiBmb250V2l0aENhc2NhZGVMaXN0ID0gYWRvcHRDRihDVEZvbnRD
cmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udC0+cGxhdGZvcm1EYXRhKCkuY3RGb250KCksIG1f
Zm9udC5waXhlbFNpemUoKSwgMCwgZm9udERlc2NyaXB0b3IuZ2V0KCkpKTsKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoY29uc3RfY2FzdDxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPihzdHJp
bmdBdHRyaWJ1dGVzLmdldCgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIGZvbnRXaXRoQ2FzY2Fk
ZUxpc3QuZ2V0KCkpOwogICAgIH0gZWxzZQotICAgICAgICBzdHJpbmdBdHRyaWJ1dGVzID0gZm9u
dC0+Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKG1fZm9udC5lbmFibGVLZXJuaW5nKCksIG1fZm9udC5l
bmFibGVMaWdhdHVyZXMoKSwgZm9udC0+cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSk7Cisg
ICAgICAgIHN0cmluZ0F0dHJpYnV0ZXMgPSBmb250LT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9m
b250LmVuYWJsZUtlcm5pbmcoKSwgZm9udC0+cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSk7
CiAKICAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAKaW5kZXggYWY3ZGFlMDc3YmU2YmRkNTdjYjFkNmY0MmMyMzZkZTU5MmFkYTk0Mi4u
MWYxODMyOWViNGQzNmNjMDliYmMyNmZjN2VmNzBjYmIwODhhZTkyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250
RGF0YUNvcmVUZXh0LmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNGRGljdGlvbmFyeVJlZiBGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFi
bGVLZXJuaW5nLCBib29sIGVuYWJsZUxpZ2F0dXJlcywgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKSBjb25zdAorQ0ZEaWN0aW9uYXJ5UmVmIEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRlcyhi
b29sIGVuYWJsZUtlcm5pbmcsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3QKIHsK
LSAgICB1bnNpZ25lZCBrZXkgPSAoZW5hYmxlS2VybmluZyA8PCAxIHwgZW5hYmxlTGlnYXR1cmVz
KSArIDE7CisgICAgdW5zaWduZWQga2V5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuYWJsZUtl
cm5pbmcpICsgMTsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX0NGU3RyaW5nQXR0cmlidXRlcy5hZGQoa2V5
LCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPigpKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiYgYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC01NCwxMiArNTQsNiBAQCBDRkRp
Y3Rpb25hcnlSZWYgRm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2Vybmlu
ZywgYm9vbCBlbmFibGVMaWdhdAogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShtdXRhYmxl
QXR0cmlidXRlcywga0NUS2VybkF0dHJpYnV0ZU5hbWUsIHplcm9LZXJuaW5nVmFsdWUpOwogICAg
IH0KIAotICAgIGlmICghZW5hYmxlTGlnYXR1cmVzKSB7Ci0gICAgICAgIGNvbnN0IGludCB6ZXJv
ID0gMDsKLSAgICAgICAgc3RhdGljIENGTnVtYmVyUmVmIGVzc2VudGlhbExpZ2F0dXJlc1ZhbHVl
ID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwg
Jnplcm8pOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShtdXRhYmxlQXR0cmlidXRlcywg
a0NUTGlnYXR1cmVBdHRyaWJ1dGVOYW1lLCBlc3NlbnRpYWxMaWdhdHVyZXNWYWx1ZSk7Ci0gICAg
fQotCiAgICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsKQogICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShtdXRhYmxlQXR0cmlidXRlcywga0NUVmVydGljYWxGb3Jtc0F0dHJpYnV0ZU5h
bWUsIGtDRkJvb2xlYW5UcnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaAppbmRleCBlYzAz
MWZlZTMxY2VhMDExN2FiZGNmYTE5MjVhMmM5YjdhZTFiNTM2Li4xOTU1MzhkMThkNzE2MzMxNWFk
MzlkNDcxNDM5NDVlNWQyNzRlMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaApAQCAtNTMs
NyArNTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZmlsbEJNUEdseXBocyhTVkdGb250RWxlbWVu
dCosIEdseXBoUGFnZSosIFVDaGFyKiBidWZmZXIpIGNvbnN0OwogICAgIGJvb2wgZmlsbE5vbkJN
UEdseXBocyhTVkdGb250RWxlbWVudCosIEdseXBoUGFnZSosIFVDaGFyKiBidWZmZXIpIGNvbnN0
OwogCi0gICAgYm9vbCBhcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXJHbHlwaCosIEdseXBoQnVm
ZmVyQWR2YW5jZSosIHNpemVfdCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIGVuYWJsZUxpZ2F0
dXJlcykgY29uc3QgPSBkZWxldGU7CisgICAgYm9vbCBhcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZm
ZXJHbHlwaCosIEdseXBoQnVmZmVyQWR2YW5jZSosIHNpemVfdCwgYm9vbCBlbmFibGVLZXJuaW5n
LCBib29sIHJlcXVpcmVzU2hhcGluZykgY29uc3QgPSBkZWxldGU7CiAKICAgICAvLyBUaHMgU1ZH
Rm9udEZhY2VFbGVtZW50IGlzIGtlcHQgYWxpdmUgLS0KICAgICAvLyAxKSBpbiB0aGUgZXh0ZXJu
YWwgZm9udCBjYXNlOiBieSB0aGUgQ1NTRm9udEZhY2VTb3VyY2UsIHdoaWNoIGhvbGRzIGEgcmVm
ZXJlbmNlIHRvIHRoZSBleHRlcm5hbCBTVkcgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTEyN2FlNjQwNzMx
MzBjNTc5YzY1ZTlmNDBiMGI4MTYxNzNkNTFjLi44NGQxMWRlMjlkMDFjOTAyOWJiYTZiZDc0Y2Rl
OTY0YWQwZWVhZDJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTAtMTggIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBGb250Q2FzY2FkZTo6
dHlwZXNldHRpbmdGZWF0dXJlcygpIGlzIG5vdCBwcml2eSB0byBmb250LXZhcmlhbnQtKiBub3Ig
Zm9udC1mZWF0dXJlLXNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDk3NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvdGV4dC9tdWx0aXBsZS1mZWF0dXJlLXByb3BlcnRpZXMtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUt
cHJvcGVydGllcy5odG1sOiBBZGRlZC4KKwogMjAxNS0xMC0xOCAgR3l1eW91bmcgS2ltICA8Z3l1
eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5n
LiBNYXJrIGNzcyB2YXJpYWJsZXMgdGVzdHMgdG8gcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGllcy1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGllcy1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk0YWViOTAxNzRiMTlhOGYwN2EyMmYxZGQ4MWUyODg0ZDk1YzQ3
N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbXVsdGlwbGUtZmVh
dHVyZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMg
c3VyZSB0aGF0IGZlYXR1cmUgcmVzb2x1dGlvbiBvcmRlciBpcyBob25vcmVkLiBGb3IgbW9yZSBp
bmZvcm1hdGlvbiwgY2xpY2sgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mb250
cy8jZmVhdHVyZS1wcmVjZWRlbmNlIj5oZXJlPC9hPi4gVGhlIHRlc3QgcGFzc2VzIGlmIHRoZXJl
IGlzIGEgcGFydGljdWxhciBzZXF1ZW5jZSBvZiBYcyBhbmQgY2hlY2sgbWFya3MgYmVsb3cuCis8
ZGl2IHN0eWxlPSJmb250LWZhbWlseTogRm9udFdpdGhGZWF0dXJlc09URjsiPgorPHNwYW4+Qjwv
c3Bhbj4KKzxzcGFuPkI8L3NwYW4+Cis8c3Bhbj5BPC9zcGFuPgorPHNwYW4+Qjwvc3Bhbj4KKzxz
cGFuPkE8L3NwYW4+Cis8c3Bhbj5CPC9zcGFuPgorPHNwYW4+QTwvc3Bhbj4KKzxzcGFuPkI8L3Nw
YW4+Cis8c3Bhbj5CPC9zcGFuPgorPHNwYW4+QTwvc3Bhbj4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUt
cHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUt
cHJvcGVydGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNGUyYzIwYWE4NTZjNDhhOWUzZjA5Y2ZmNmE2
Mjc4ZmUxYjFiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbXVs
dGlwbGUtZmVhdHVyZS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMg
c3VyZSB0aGF0IGZlYXR1cmUgcmVzb2x1dGlvbiBvcmRlciBpcyBob25vcmVkLiBGb3IgbW9yZSBp
bmZvcm1hdGlvbiwgY2xpY2sgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mb250
cy8jZmVhdHVyZS1wcmVjZWRlbmNlIj5oZXJlPC9hPi4gVGhlIHRlc3QgcGFzc2VzIGlmIHRoZXJl
IGlzIGEgcGFydGljdWxhciBzZXF1ZW5jZSBvZiBYcyBhbmQgY2hlY2sgbWFya3MgYmVsb3cuCis8
ZGl2IHN0eWxlPSJmb250LWZhbWlseTogRm9udFdpdGhGZWF0dXJlc09URjsiPgorPHNwYW4gc3R5
bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IGNvbW1vbi1saWdhdHVyZXM7IHRleHQtcmVuZGVy
aW5nOiBvcHRpbWl6ZVNwZWVkOyI+Qzwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQt
bGlnYXR1cmVzOiBuby1jb21tb24tbGlnYXR1cmVzOyB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVT
cGVlZDsiPkM8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29t
bW9uLWxpZ2F0dXJlczsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8L3Nw
YW4+Cis8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29tbW9uLWxpZ2F0
dXJlczsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8L3NwYW4+Cis8c3Bh
biBzdHlsZT0iZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMSwgJ2NsaWcnIDE7IHRleHQt
cmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkOyI+Qzwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZl
YXR1cmUtc2V0dGluZ3M6ICdsaWdhJyAwLCAnY2xpZycgMDsgdGV4dC1yZW5kZXJpbmc6IG9wdGlt
aXplU3BlZWQ7Ij5DPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczog
J2xpZ2EnIDEsICdjbGlnJyAxOyB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OyI+
Qzwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJyAwLCAn
Y2xpZycgMDsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8L3NwYW4+Cis8
c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29tbW9uLWxpZ2F0dXJlczsgZm9u
dC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMCwgJ2NsaWcnIDA7Ij5DPC9zcGFuPgorPHNwYW4g
c3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXM7IGZvbnQt
ZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnIDEsICdjbGlnJyAxOyI+Qzwvc3Bhbj4KKzwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="288580"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263547</attachid>
            <date>2015-10-19 20:02:38 -0700</date>
            <delta_ts>2015-10-19 21:56:07 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-149775-20151019200156.patch</filename>
            <type>text/plain</type>
            <size>29021</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE1ZjA0NDAzNTllOWNl
ZDgyYmJkN2M4YmVkZjU5ZTUyMWE3OGRhNC4uZWFlYmE2ZGVmNzY3MjVjZTBhMDYyOWM1Yzg1ODFh
MjA1NzhkNDYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE1LTEwLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udENhc2Nh
ZGU6OnR5cGVzZXR0aW5nRmVhdHVyZXMoKSBpcyBub3QgcHJpdnkgdG8gZm9udC12YXJpYW50LSog
bm9yIGZvbnQtZmVhdHVyZS1zZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5Nzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBoYXMgdHdvIHBpZWNlczoKKworICAgICAgICBXZSB1
c2VkIHRvIGhhdmUgYSBib29sZWFuLCBlbmFibGVMaWdhdHVyZXMsIHdoaWNoIGFmZmVjdGVkIGhv
dyB3ZSBwZXJmb3JtIHNoYXBpbmcgaW4gYm90aCBvdXIKKyAgICAgICAgc2ltcGxlIGFuZCBjb21w
bGV4IHRleHQgY29kZXBhdGhzLiBIb3dldmVyLCBpbiB0aGlzIGJyYXZlIG5ldyB3b3JsZCBvZiBm
b250LWZlYXR1cmUtc2V0dGluZ3MKKyAgICAgICAgYW5kIGZvbnQtdmFyaWFudC0qLCB0aGVyZSBh
cmUgbWFueSBwcm9wZXJ0aWVzIHdoaWNoIG1heSBhZmZlY3Qgc2hhcGluZyAoYW5kIG11bHRpcGxl
IGtpbmRzCisgICAgICAgIG9mIGxpZ2F0dXJlcykuIFRoaXMgcGF0Y2ggcmVuYW1lcyB0aGlzIGJv
b2xlYW4gdG8gcmVxdWlyZXNTaGFwaW5nLCBhbmQgdGVhY2hlcyBpdCBhYm91dCBhbGwKKyAgICAg
ICAgdGhlIHZhcmlvdXMgcHJvcGVydGllcyB3aGljaCBhZmZlY3QgdGV4dCBzaGFwaW5nLgorCisg
ICAgICAgIFNpbWlsYXJseSwgb25lIG9mIHRoZSBwbGFjZXMgd2hpY2ggdXNlZCB0aGlzIGVuYWJs
ZUxpZ2F0dXJlcyBib29sZWFuIHdhcyB0byB0ZWxsIENvcmVUZXh0CisgICAgICAgIGlmIGl0IHNo
b3VsZCBkaXNhYmxlIGxpZ2F0dXJlcy4gSG93ZXZlciwgd2Ugbm93IGhhdmUgbXVjaCBmaW5lci1n
cmFpbmVkIGNvbnRyb2wgb3ZlcgorICAgICAgICBsaWdhdHVyZXMgZHVyaW5nIGZvbnQgY3JlYXRp
b24uIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGRpY3RhdGluZyB3aGlj
aAorICAgICAgICBmb250IGZlYXR1cmVzIHNob3VsZCBiZSBlbmFibGVkIGVudGlyZWx5IHRvIHRo
ZSBGb250LiBUaGVyZWZvcmUsIGdldENGU3RyaW5nQXR0cmlidXRlcygpCisgICAgICAgIGRvZXNu
J3Qga25vdyBhbnl0aGluZyBhYm91dCBsaWdhdHVyZXMgYW55bW9yZTsgdGhlIGxvZ2ljIGluc2lk
ZSBmb250IGNyZWF0aW9uIGlzIHVzZWQKKyAgICAgICAgaW5zdGVhZC4KKworICAgICAgICBBbiBh
ZGRlZCBiZW5lZml0IG9mIG1vdmluZyBhbGwgdGhlIGZvbnQgZmVhdHVyZSBsb2dpYyB0byBvbmUg
cGxhY2UgaXMgdGhhdCB3ZSBjYW4gaW1wbGVtZW50CisgICAgICAgIHRoZSBmZWF0dXJlIHJlc29s
dXRpb24gYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUgQ1NTMyBmb250cyBzcGVjLiBUaGlzIHBh
dGNoIGFkZHMgYSB0ZXN0IHRvCisgICAgICAgIG1ha2VzIHN1cmUgdGhhdCB0ZXh0LXJlbmRlcmlu
ZywgZm9udC1mZWF0dXJlLXNldHRpbmdzLCBhbmQgZm9udC12YXJpYW50LSogcGxheSB0b2dldGhl
cgorICAgICAgICBuaWNlbHkuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L211bHRpcGxlLWZl
YXR1cmUtcHJvcGVydGllcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmFwcGx5VHJhbnNmb3Jtcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpGb250Q2Fz
Y2FkZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y29kZVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OnJlcXVpcmVzU2hhcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y29t
cHV0ZVJlcXVpcmVzU2hhcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZW5h
YmxlTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpj
b21wdXRlRW5hYmxlTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6
OldpZHRoSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlG
b250VHJhbnNmb3Jtcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVQbGF0Zm9ybUZvbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4
dFJ1bnNGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2lt
cGxlRm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpnZXRDRlN0
cmluZ0F0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdGb250RGF0YS5oOgorCiAyMDE1LTEw
LTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTkxMzI0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcAppbmRleCA4ZWNjZWU2N2M4ZTNiMWY2OGM4MzVhYzU4N2ViOWE4ZWI2
MzlhYmM2Li41MDY1NDRkNjgzMDg5ZGUwZWQ5YWUzMGE1ZmRmMDAwNGEwZjNiOThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtMzcxLDE5ICszNzEsMTkg
QEAgUGFzc1JlZlB0cjxGb250PiBGb250OjpjcmVhdGVTY2FsZWRGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLAogICAgIHJldHVybiBwbGF0Zm9ybUNyZWF0ZVNjYWxl
ZEZvbnQoZm9udERlc2NyaXB0aW9uLCBzY2FsZUZhY3Rvcik7CiB9CiAKLWJvb2wgRm9udDo6YXBw
bHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgR2x5cGhCdWZmZXJBZHZhbmNl
KiBhZHZhbmNlcywgc2l6ZV90IGdseXBoQ291bnQsIGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCBl
bmFibGVMaWdhdHVyZXMpIGNvbnN0Citib29sIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHNpemVfdCBn
bHlwaENvdW50LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgcmVxdWlyZXNTaGFwaW5nKSBjb25z
dAogewogICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIHRyYW5zZm9ybXMgb24gU1ZHIGZvbnRzIGlu
dGVybmFsbHksIHNpbmNlIHRoZXkgYXJlIHJlbmRlcmVkIGludGVybmFsbHkuCiAgICAgQVNTRVJU
KCFpc1NWR0ZvbnQoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ1RGb250VHJhbnNmb3Jt
T3B0aW9ucyBvcHRpb25zID0gKGVuYWJsZUtlcm5pbmcgPyBrQ1RGb250VHJhbnNmb3JtQXBwbHlQ
b3NpdGlvbmluZyA6IDApIHwgKGVuYWJsZUxpZ2F0dXJlcyA/IGtDVEZvbnRUcmFuc2Zvcm1BcHBs
eVNoYXBpbmcgOiAwKTsKKyAgICBDVEZvbnRUcmFuc2Zvcm1PcHRpb25zIG9wdGlvbnMgPSAoZW5h
YmxlS2VybmluZyA/IGtDVEZvbnRUcmFuc2Zvcm1BcHBseVBvc2l0aW9uaW5nIDogMCkgfCAocmVx
dWlyZXNTaGFwaW5nID8ga0NURm9udFRyYW5zZm9ybUFwcGx5U2hhcGluZyA6IDApOwogICAgIHJl
dHVybiBDVEZvbnRUcmFuc2Zvcm1HbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIGdseXBo
cywgcmVpbnRlcnByZXRfY2FzdDxDR1NpemUqPihhZHZhbmNlcyksIGdseXBoQ291bnQsIG9wdGlv
bnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZ2x5cGhzKTsKICAgICBVTlVTRURfUEFSQU0o
YWR2YW5jZXMpOwogICAgIFVOVVNFRF9QQVJBTShnbHlwaENvdW50KTsKICAgICBVTlVTRURfUEFS
QU0oZW5hYmxlS2VybmluZyk7Ci0gICAgVU5VU0VEX1BBUkFNKGVuYWJsZUxpZ2F0dXJlcyk7Cisg
ICAgVU5VU0VEX1BBUkFNKHJlcXVpcmVzU2hhcGluZyk7CiAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggYzQwOGE0
NThiNmMzOTAyMzk5NGI3YzBmMzNlMzUwNDY5NDE5ZDcxYy4uYmM3OGVmZjM0ZjU2Nzk3ZTBkMmFl
MTQ1YTA0ODMxMDYwZTY4ZjRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZE5vdEJlVXNl
ZEZvckFyYWJpYygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkTm90QmVVc2VkRm9yQXJhYmljOyB9
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGdldENG
U3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgZW5hYmxlTGlnYXR1cmVz
LCBGb250T3JpZW50YXRpb24pIGNvbnN0OworICAgIENGRGljdGlvbmFyeVJlZiBnZXRDRlN0cmlu
Z0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVLZXJuaW5nLCBGb250T3JpZW50YXRpb24pIGNvbnN0Owog
ICAgIGJvb2wgaGFzQ3VzdG9tVHJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBpc1N5c3RlbUZvbnQo
KTsgfQogI2VuZGlmCiAKQEAgLTIwMCw3ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5S
ZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciosIHNpemVfdCkgY29u
c3Q7CiAjZW5kaWYKIAotICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyR2x5cGgq
LCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCBzaXplX3QgZ2x5cGhDb3VudCwgYm9vbCBlbmFibGVLZXJu
aW5nLCBib29sIGVuYWJsZUxpZ2F0dXJlcykgY29uc3Q7CisgICAgYm9vbCBhcHBseVRyYW5zZm9y
bXMoR2x5cGhCdWZmZXJHbHlwaCosIEdseXBoQnVmZmVyQWR2YW5jZSosIHNpemVfdCBnbHlwaENv
dW50LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgcmVxdWlyZXNTaGFwaW5nKSBjb25zdDsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAgYm9vbCBpc1N5c3RlbUZv
bnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtRm9udDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDY5NzdkMGRlNGJmMjlh
YjkxNmZjYWU5YWExMGYyNDI2MmY3MDRhZmMuLmI2ZDk1YTA3MTZkYTEyMGUyZGMwNTVkZjM5NjA2
MGI1ZDIyMzc4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBGb250Q2FzY2FkZTo6Rm9udENhc2Nh
ZGUoKQogICAgICwgbV93b3JkU3BhY2luZygwKQogICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5
bWJvbChmYWxzZSkKICAgICAsIG1fZW5hYmxlS2VybmluZyhmYWxzZSkKLSAgICAsIG1fZW5hYmxl
TGlnYXR1cmVzKGZhbHNlKQorICAgICwgbV9yZXF1aXJlc1NoYXBpbmcoZmFsc2UpCiB7CiB9CiAK
QEAgLTExMyw3ICsxMTMsNyBAQCBGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUoY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgZmQsIGZsb2F0IGxldHRlclNwYWNpbmcsCiAgICAgLCBtX3dvcmRT
cGFjaW5nKHdvcmRTcGFjaW5nKQogICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCh1c2VC
YWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkoZmQuZmlyc3RGYW1pbHkoKSkpCiAgICAgLCBtX2Vu
YWJsZUtlcm5pbmcoY29tcHV0ZUVuYWJsZUtlcm5pbmcoKSkKLSAgICAsIG1fZW5hYmxlTGlnYXR1
cmVzKGNvbXB1dGVFbmFibGVLZXJuaW5nKCkpCisgICAgLCBtX3JlcXVpcmVzU2hhcGluZyhjb21w
dXRlUmVxdWlyZXNTaGFwaW5nKCkpCiB7CiB9CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBGb250Q2Fz
Y2FkZTo6Rm9udENhc2NhZGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udERhdGEsIEZvbnRT
bW9vdGhpbmdNb2RlIGZvbgogICAgICwgbV93b3JkU3BhY2luZygwKQogICAgICwgbV91c2VCYWNr
c2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fZW5hYmxlS2VybmluZyhjb21wdXRlRW5h
YmxlS2VybmluZygpKQotICAgICwgbV9lbmFibGVMaWdhdHVyZXMoY29tcHV0ZUVuYWJsZUtlcm5p
bmcoKSkKKyAgICAsIG1fcmVxdWlyZXNTaGFwaW5nKGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKSkK
IHsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKGZvbnRTbW9vdGhpbmdN
b2RlKTsKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNDQsNyArMTQ0LDcgQEAgRm9udENhc2NhZGU6
OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRlJiBvdGhlcikKICAgICAsIG1fd29yZFNwYWNp
bmcob3RoZXIubV93b3JkU3BhY2luZykKICAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wo
b3RoZXIubV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCkKICAgICAsIG1fZW5hYmxlS2VybmluZyhj
b21wdXRlRW5hYmxlS2VybmluZygpKQotICAgICwgbV9lbmFibGVMaWdhdHVyZXMoY29tcHV0ZUVu
YWJsZUtlcm5pbmcoKSkKKyAgICAsIG1fcmVxdWlyZXNTaGFwaW5nKGNvbXB1dGVSZXF1aXJlc1No
YXBpbmcoKSkKIHsKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIEZvbnRDYXNjYWRlJiBGb250Q2Fz
Y2FkZTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRDYXNjYWRlJiBvdGhlcikKICAgICBtX3dvcmRTcGFj
aW5nID0gb3RoZXIubV93b3JkU3BhY2luZzsKICAgICBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9s
ID0gb3RoZXIubV91c2VCYWNrc2xhc2hBc1llblN5bWJvbDsKICAgICBtX2VuYWJsZUtlcm5pbmcg
PSBvdGhlci5tX2VuYWJsZUtlcm5pbmc7Ci0gICAgbV9lbmFibGVMaWdhdHVyZXMgPSBvdGhlci5t
X2VuYWJsZUxpZ2F0dXJlczsKKyAgICBtX3JlcXVpcmVzU2hhcGluZyA9IG90aGVyLm1fcmVxdWly
ZXNTaGFwaW5nOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtMzAyLDcgKzMwMiw3IEBAIHZv
aWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3Rv
cikgY29uc3QKICAgICBtX2ZvbnRzID0gcmV0cmlldmVPckFkZENhY2hlZEZvbnRzKG1fZm9udERl
c2NyaXB0aW9uLCBXVEY6Om1vdmUoZm9udFNlbGVjdG9yKSk7CiAgICAgbV91c2VCYWNrc2xhc2hB
c1llblN5bWJvbCA9IHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseShmaXJzdEZhbWlseSgp
KTsKICAgICBtX2VuYWJsZUtlcm5pbmcgPSBjb21wdXRlRW5hYmxlS2VybmluZygpOwotICAgIG1f
ZW5hYmxlTGlnYXR1cmVzID0gY29tcHV0ZUVuYWJsZUxpZ2F0dXJlcygpOworICAgIG1fcmVxdWly
ZXNTaGFwaW5nID0gY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpOwogfQogCiBmbG9hdCBGb250Q2Fz
Y2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250
Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdApAQCAtMzE3LDcg
KzMxNyw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKIAogICAgIENvZGVQYXRoIGNvZGVQYXRo
VG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBw
YXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVy
ZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MAotICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCBlbmFibGVMaWdhdHVyZXMoKSkgJiYg
KGZyb20gfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFp
c0RyYXduV2l0aFNWR0ZvbnQocnVuKSkKKyAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4
ICYmIChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPih0bykgIT0gcnVuLmxlbmd0aCgpKSAmJiAhaXNEcmF3bldpdGhT
VkdGb250KHJ1bikpCiAgICAgICAgIGNvZGVQYXRoVG9Vc2UgPSBDb21wbGV4OwogCiAgICAgaWYg
KGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIEZvbnRD
YXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFRleHRSdW4mIHJ1bgogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1
bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVz
IHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCAmJiAoZW5h
YmxlS2VybmluZygpIHx8IGVuYWJsZUxpZ2F0dXJlcygpKSAmJiAoZnJvbSB8fCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odG8pICE9IHJ1bi5sZW5ndGgoKSkgJiYgIWlzRHJhd25XaXRoU1ZHRm9udChy
dW4pKQorICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmco
KSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFpc0RyYXduV2l0aFNWR0ZvbnQocnVuKSkKICAgICAg
ICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CiAKICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBD
b21wbGV4KQpAQCAtMzU3LDkgKzM1Nyw4IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aChjb25z
dCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzCiAgICAg
ICAgICAgICBnbHlwaE92ZXJmbG93ID0gMDsKICAgICB9CiAKLSAgICBib29sIGhhc0tlcm5pbmdP
ckxpZ2F0dXJlcyA9IGVuYWJsZUtlcm5pbmcoKSB8fCBlbmFibGVMaWdhdHVyZXMoKTsKICAgICBi
b29sIGhhc1dvcmRTcGFjaW5nT3JMZXR0ZXJTcGFjaW5nID0gd29yZFNwYWNpbmcoKSB8fCBsZXR0
ZXJTcGFjaW5nKCk7Ci0gICAgZmxvYXQqIGNhY2hlRW50cnkgPSBtX2ZvbnRzLT53aWR0aENhY2hl
KCkuYWRkKHJ1biwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpLCBoYXNL
ZXJuaW5nT3JMaWdhdHVyZXMsIGhhc1dvcmRTcGFjaW5nT3JMZXR0ZXJTcGFjaW5nLCBnbHlwaE92
ZXJmbG93KTsKKyAgICBmbG9hdCogY2FjaGVFbnRyeSA9IG1fZm9udHMtPndpZHRoQ2FjaGUoKS5h
ZGQocnVuLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCksIGVuYWJsZUtl
cm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSwgaGFzV29yZFNwYWNpbmdPckxldHRlclNwYWNp
bmcsIGdseXBoT3ZlcmZsb3cpOwogICAgIGlmIChjYWNoZUVudHJ5ICYmICFzdGQ6OmlzbmFuKCpj
YWNoZUVudHJ5KSkKICAgICAgICAgcmV0dXJuICpjYWNoZUVudHJ5OwogCkBAIC01MDksNyArNTA4
LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWwKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9V
c2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRo
IG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMu
IFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MAotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9
IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCBlbmFibGVMaWdhdHVyZXMoKSkgJiYgKGZy
b20gfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvKSAhPSBydW4ubGVuZ3RoKCkpICYmICFpc0Ry
YXduV2l0aFNWR0ZvbnQocnVuKSkKKyAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4ICYm
IChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tIHx8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih0bykgIT0gcnVuLmxlbmd0aCgpKSAmJiAhaXNEcmF3bldpdGhTVkdG
b250KHJ1bikpCiAgICAgICAgIGNvZGVQYXRoVG9Vc2UgPSBDb21wbGV4OwogCiAgICAgaWYgKGNv
ZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkKQEAgLTUyMSw3ICs1MjAsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91
dFJlY3QmIHNlbAogaW50IEZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBUZXh0
UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRp
YWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTAwMDUwCi0gICAgaWYgKGNvZGVQYXRoKHJ1bikgIT0gQ29tcGxleCAmJiAoIShlbmFibGVL
ZXJuaW5nKCkgfHwgZW5hYmxlTGlnYXR1cmVzKCkpIHx8IGlzRHJhd25XaXRoU1ZHRm9udChydW4p
KSkKKyAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBDb21wbGV4ICYmICghKGVuYWJsZUtlcm5pbmco
KSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgfHwgaXNEcmF3bldpdGhTVkdGb250KHJ1bikpKQogICAg
ICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KHJ1biwgeCwgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpOwogCiAgICAgcmV0dXJuIG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxl
eFRleHQocnVuLCB4LCBpbmNsdWRlUGFydGlhbEdseXBocyk7CkBAIC01OTQsMTIgKzU5MywxMiBA
QCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRS
dW4mIHJ1bikgY29uc3QKICAgICAgICAgcmV0dXJuIFNpbXBsZTsKICNlbmRpZgogCi0gICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBiZWNhdXNlIEZvbnQ6OmFwcGx5VHJh
bnNmb3JtcygpIHNob3VsZCBwZXJmb3JtIGFsbCBuZWNlc3Nhcnkgc2hhcGluZy4KKyAgICAvLyBC
ZWNhdXNlIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcygpIGRvZXNuJ3Qga25vdyB3aGljaCBmZWF0dXJl
cyB0byBlbmFibGUvZGlzYWJsZSBpdCB0aGUgc2ltcGxlIGNvZGUgcGF0aCBjYW7igJl0IHByb3Bl
cmx5IGhhbmRsZSBmZWF0dXJlIG9yIHZhcmlhbnQgc2V0dGluZ3MuCiAgICAgaWYgKG1fZm9udERl
c2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSA+IDAgfHwgIW1fZm9udERlc2NyaXB0
aW9uLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCiAgICAgICAgIHJldHVybiBDb21w
bGV4OwogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAgIGlmIChydW4ubGVuZ3RoKCkgPiAxICYm
IChlbmFibGVLZXJuaW5nKCkgfHwgZW5hYmxlTGlnYXR1cmVzKCkpKQorICAgIGlmIChydW4ubGVu
Z3RoKCkgPiAxICYmIChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpKQogICAg
ICAgICByZXR1cm4gQ29tcGxleDsKICNlbmRpZgogCkBAIC0xNDIxLDcgKzE0MjAsNyBAQCBmbG9h
dCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVu
LCBIYXNoU2V0PGNvbnN0IEZvbgogewogICAgIFdpZHRoSXRlcmF0b3IgaXQodGhpcywgcnVuLCBm
YWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBpdC5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgKGVuYWJsZUtlcm5pbmcoKSB8fCBlbmFi
bGVMaWdhdHVyZXMoKSkgPyAmZ2x5cGhCdWZmZXIgOiBudWxscHRyKTsKKyAgICBpdC5hZHZhbmNl
KHJ1bi5sZW5ndGgoKSwgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgPyAm
Z2x5cGhCdWZmZXIgOiBudWxscHRyKTsKIAogICAgIGlmIChnbHlwaE92ZXJmbG93KSB7CiAgICAg
ICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+dG9w
LCBjZWlsZigtaXQubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29t
cHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFzY2VudCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCBjNzMxNjRiYzQyZDZj
YTFkMTZhZjQxMGQwZDY5NzY5YWRlNmQzOWQ0Li4xMWViNWRhOWU2MjBhZGIzMmQ0M2YyNWU0OTEx
ZDgxNGE2MGQzNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgRm9udFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLnJl
bmRlcmluZ01vZGUoKTsgfQogCiAgICAgYm9vbCBlbmFibGVLZXJuaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9lbmFibGVLZXJuaW5nOyB9Ci0gICAgYm9vbCBlbmFibGVMaWdhdHVyZXMoKSBjb25zdCB7
IHJldHVybiBtX2VuYWJsZUxpZ2F0dXJlczsgfQorICAgIGJvb2wgcmVxdWlyZXNTaGFwaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc1NoYXBpbmc7IH0KIAogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZmlyc3RGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi5maXJz
dEZhbWlseSgpOyB9CiAgICAgdW5zaWduZWQgZmFtaWx5Q291bnQoKSBjb25zdCB7IHJldHVybiBt
X2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOyB9CkBAIC0zMjEsMTMgKzMyMSwxMiBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gYWR2YW5jZWRUZXh0UmVuZGVyaW5nTW9kZSgpOwogICAg
IH0KIAotICAgIGJvb2wgY29tcHV0ZUVuYWJsZUxpZ2F0dXJlcygpIGNvbnN0CisgICAgYm9vbCBj
b21wdXRlUmVxdWlyZXNTaGFwaW5nKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gbGlnYXR1
cmVzID0gbV9mb250RGVzY3JpcHRpb24udmFyaWFudENvbW1vbkxpZ2F0dXJlcygpOwotICAgICAg
ICBpZiAobGlnYXR1cmVzID09IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXMpCisgICAgICAgIGlm
ICghbV9mb250RGVzY3JpcHRpb24udmFyaWFudFNldHRpbmdzKCkuaXNBbGxOb3JtYWwoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobV9mb250RGVzY3JpcHRpb24uZmVh
dHVyZVNldHRpbmdzKCkuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IGlmIChsaWdhdHVyZXMgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gYWR2YW5jZWRUZXh0UmVuZGVyaW5nTW9kZSgp
OwogICAgIH0KIApAQCAtMzM4LDcgKzMzNyw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV93b3Jk
U3BhY2luZzsKICAgICBtdXRhYmxlIGJvb2wgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbDsKICAg
ICBtdXRhYmxlIHVuc2lnbmVkIG1fZW5hYmxlS2VybmluZyA6IDE7IC8vIENvbXB1dGVkIGZyb20g
bV9mb250RGVzY3JpcHRpb24uCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX2VuYWJsZUxpZ2F0dXJl
cyA6IDE7IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCisgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX3JlcXVpcmVzU2hhcGluZyA6IDE7IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVz
Y3JpcHRpb24uCiB9OwogCiB2b2lkIGludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmlu
ZGV4IGIwYTVmNThmNDA2YjQ3MmYyMDM4MGY3MzE5YmUyOWJiOGVlZDIxZjcuLjgzZDdkMTIwMmUz
OWQ0OWQ4YTAxMjkxZTk2MzM5YzczOTBmMDc4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFdp
ZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udENhc2NhZGUqIGZvbnQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgSGFzaFNlCiAgICAgLCBtX2ZhbGxiYWNrRm9udHMoZmFsbGJhY2tGb250
cykKICAgICAsIG1fYWNjb3VudEZvckdseXBoQm91bmRzKGFjY291bnRGb3JHbHlwaEJvdW5kcykK
ICAgICAsIG1fZW5hYmxlS2VybmluZyhmb250LT5lbmFibGVLZXJuaW5nKCkpCi0gICAgLCBtX2Vu
YWJsZUxpZ2F0dXJlcyhmb250LT5lbmFibGVMaWdhdHVyZXMoKSkKKyAgICAsIG1fcmVxdWlyZXNT
aGFwaW5nKGZvbnQtPnJlcXVpcmVzU2hhcGluZygpKQogICAgICwgbV9mb3JUZXh0RW1waGFzaXMo
Zm9yVGV4dEVtcGhhc2lzKQogewogICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIG5vbi16ZXJvLCBj
b3VudCB0aGUgbnVtYmVyIG9mIHNwYWNlcyBpbiB0aGUgcnVuCkBAIC0xMDEsNyArMTAxLDcgQEAg
aW5saW5lIGF1dG8gV2lkdGhJdGVyYXRvcjo6c2hvdWxkQXBwbHlGb250VHJhbnNmb3Jtcyhjb25z
dCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWYKIHsKICAgICBpZiAoZ2x5cGhCdWZmZXIgJiYgZ2x5cGhC
dWZmZXItPnNpemUoKSA9PSAobGFzdEdseXBoQ291bnQgKyAxKSAmJiBpc1NvZnRCYW5rRW1vamko
cHJldmlvdXNDaGFyYWN0ZXIpKQogICAgICAgICByZXR1cm4gVHJhbnNmb3Jtc1R5cGU6OkZvcmNl
ZDsKLSAgICBpZiAobV9ydW4ubGVuZ3RoKCkgPD0gMSB8fCAhKG1fZW5hYmxlS2VybmluZyB8fCBt
X2VuYWJsZUxpZ2F0dXJlcykpCisgICAgaWYgKG1fcnVuLmxlbmd0aCgpIDw9IDEgfHwgIShtX2Vu
YWJsZUtlcm5pbmcgfHwgbV9yZXF1aXJlc1NoYXBpbmcpKQogICAgICAgICByZXR1cm4gVHJhbnNm
b3Jtc1R5cGU6Ok5vbmU7CiAgICAgcmV0dXJuIFRyYW5zZm9ybXNUeXBlOjpOb3RGb3JjZWQ7CiB9
CkBAIC0xMzgsNyArMTM4LDcgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9u
dFRyYW5zZm9ybXMoR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBib29sIGwKICAgICAgICAgfQog
ICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGZvbnQtPmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1
ZmZlci0+Z2x5cGhzKGxhc3RHbHlwaENvdW50KSwgYWR2YW5jZXMgKyBsYXN0R2x5cGhDb3VudCwg
Z2x5cGhCdWZmZXJTaXplIC0gbGFzdEdseXBoQ291bnQsIG1fZW5hYmxlS2VybmluZywgbV9lbmFi
bGVMaWdhdHVyZXMpOworICAgICAgICBmb250LT5hcHBseVRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIt
PmdseXBocyhsYXN0R2x5cGhDb3VudCksIGFkdmFuY2VzICsgbGFzdEdseXBoQ291bnQsIGdseXBo
QnVmZmVyU2l6ZSAtIGxhc3RHbHlwaENvdW50LCBtX2VuYWJsZUtlcm5pbmcsIG1fcmVxdWlyZXNT
aGFwaW5nKTsKIAogICAgIGlmICghbHRyKQogICAgICAgICBnbHlwaEJ1ZmZlci0+cmV2ZXJzZShs
YXN0R2x5cGhDb3VudCwgZ2x5cGhCdWZmZXJTaXplIC0gbGFzdEdseXBoQ291bnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCmluZGV4IGIz
NTYzNDFmMTI4N2JiN2Q3MmRlNjFmMDA2NjFiMzU4NWNiMWI0YmEuLjE3ODI2NjNkYWUxNjI2NWNh
ZGYxYmE5ODZkN2Q2N2Q3MjBkNjFkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAg
ICBIYXNoU2V0PGNvbnN0IEZvbnQqPiogbV9mYWxsYmFja0ZvbnRzIHsgbnVsbHB0ciB9OwogICAg
IGJvb2wgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFi
bGVLZXJuaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZW5hYmxlTGlnYXR1cmVzIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fcmVxdWlyZXNTaGFwaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fZm9y
VGV4dEVtcGhhc2lzIHsgZmFsc2UgfTsKICAgICBmbG9hdCBtX21heEdseXBoQm91bmRpbmdCb3hZ
IHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpIH07CiAgICAgZmxvYXQgbV9taW5H
bHlwaEJvdW5kaW5nQm94WSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IGI3Y2VjZjQyMzY3YjYwYTU3ZjIyMDM5YWIxNGUx
ZjczY2MxNzE1NWUuLjIxYTY3NGQwOGE4NjNjMDc1MGM5MzBiNzJjNTE5YjU2Y2Y2Mzc3ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTMyMSwxMyArMzIxLDI5IEBAIHN0YXRpYyBGZWF0
dXJlc01hcCBjb21wdXRlRmVhdHVyZVNldHRpbmdzRnJvbVZhcmlhbnRzKGNvbnN0IEZvbnRWYXJp
YW50U2V0dGluZ3MmCiAKIFJldGFpblB0cjxDVEZvbnRSZWY+IHByZXBhcmVQbGF0Zm9ybUZvbnQo
Q1RGb250UmVmIG9yaWdpbmFsRm9udCwgVGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRlcmluZ01v
ZGUsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmIGZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFu
dFNldHRpbmdzJiB2YXJpYW50U2V0dGluZ3MpCiB7Ci0gICAgaWYgKCFvcmlnaW5hbEZvbnQgfHwg
KCFmZWF0dXJlcy5zaXplKCkgJiYgKHRleHRSZW5kZXJpbmdNb2RlICE9IE9wdGltaXplTGVnaWJp
bGl0eSkgJiYgdmFyaWFudFNldHRpbmdzLmlzQWxsTm9ybWFsKCkpKQorICAgIGlmICghb3JpZ2lu
YWxGb250IHx8ICghZmVhdHVyZXMuc2l6ZSgpICYmICh0ZXh0UmVuZGVyaW5nTW9kZSA9PSBBdXRv
VGV4dFJlbmRlcmluZykgJiYgdmFyaWFudFNldHRpbmdzLmlzQWxsTm9ybWFsKCkpKQogICAgICAg
ICByZXR1cm4gb3JpZ2luYWxGb250OwogCi0gICAgLy8gRklYTUU6IFdlIGRvbid0IGNvbnN1bHQg
d2l0aCB0aGUgQGZvbnQtZmFjZSBmaXJzdCwgbGlrZSB0aGUgc3BlYyBzYXlzIHdlIHNob3VsZC4K
KyAgICAvLyBUaGlzIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgYXQgaHR0cDovL3d3dy53My5vcmcv
VFIvY3NzMy1mb250cy8jZmVhdHVyZS1wcmVjZWRlbmNlCiAKLSAgICAvLyBTcGVjIHNheXMgdGhh
dCBmb250LWZlYXR1cmUtc2V0dGluZ3Mgc2hvdWxkIG92ZXJyaWRlIGZvbnQtdmFyaWFudC0qLgor
ICAgIC8vIFN0ZXAgMTogQ29yZVRleHQgaGFuZGxlcyBkZWZhdWx0IGZlYXR1cmVzIChzdWNoIGFz
IHJlcXVpcmVkIGxpZ2F0dXJlcykuCisKKyAgICAvLyBTdGVwcyAyLTM6IENvbnN1bHQgd2l0aCBA
Zm9udC1mYWNlCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKwor
ICAgIC8vIFN0ZXAgNDogRm9udC12YXJpYW50CiAgICAgYXV0byBmb250RmVhdHVyZVNldHRpbmdz
RnJvbVZhcmlhbnRzID0gY29tcHV0ZUZlYXR1cmVTZXR0aW5nc0Zyb21WYXJpYW50cyh2YXJpYW50
U2V0dGluZ3MpOworCisgICAgLy8gU3RlcCA1OiBPdGhlciBwcm9wZXJ0aWVzICh0ZXh0LXJlbmRl
cmluZykKKyAgICBpZiAodGV4dFJlbmRlcmluZ01vZGUgPT0gT3B0aW1pemVTcGVlZCkgeworICAg
ICAgICBmb250RmVhdHVyZVNldHRpbmdzRnJvbVZhcmlhbnRzLnNldChmb250RmVhdHVyZVRhZygi
bGlnYSIpLCAwKTsKKyAgICAgICAgZm9udEZlYXR1cmVTZXR0aW5nc0Zyb21WYXJpYW50cy5zZXQo
Zm9udEZlYXR1cmVUYWcoImNsaWciKSwgMCk7CisgICAgICAgIGZvbnRGZWF0dXJlU2V0dGluZ3NG
cm9tVmFyaWFudHMuc2V0KGZvbnRGZWF0dXJlVGFnKCJkbGlnIiksIDApOworICAgICAgICBmb250
RmVhdHVyZVNldHRpbmdzRnJvbVZhcmlhbnRzLnNldChmb250RmVhdHVyZVRhZygiaGxpZyIpLCAw
KTsKKyAgICAgICAgZm9udEZlYXR1cmVTZXR0aW5nc0Zyb21WYXJpYW50cy5zZXQoZm9udEZlYXR1
cmVUYWcoImNhbHQiKSwgMCk7CisgICAgfQorCisgICAgLy8gU3RlcCA2OiBGb250LWZlYXR1cmUt
c2V0dGluZ3MKICAgICBmb3IgKGF1dG8mIG5ld0ZlYXR1cmUgOiBmZWF0dXJlcykKICAgICAgICAg
Zm9udEZlYXR1cmVTZXR0aW5nc0Zyb21WYXJpYW50cy5zZXQobmV3RmVhdHVyZS50YWcoKSwgbmV3
RmVhdHVyZS52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENvY29hLm1tCmluZGV4IDA0NTI1NmI1NzY0NmVjNDFjOTI5YjcxMTI2
ZmRlNzI1OWM0YTE3NTAuLmQzMGJiMjY2NzNhMjBjY2Y1ZWY1OThhYWNlMmVmOWNjMTZjYzA4YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q29jb2EubW0KQEAgLTQ3NSw3ICs0NzUsNyBAQCBib29sIEZvbnQ6OmNhblJlbmRlckNvbWJpbmlu
Z0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbAogCiAg
ICAgUmV0YWluUHRyPENGVHlwZVJlZj4gZm9udEVxdWFsaXR5T2JqZWN0ID0gcGxhdGZvcm1EYXRh
KCkub2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpOwogCi0gICAgUHJvdmlkZXJJbmZvIGluZm8gPSB7
IGNoYXJhY3RlcnMsIGxlbmd0aCwgZ2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGZhbHNlLCBmYWxzZSwg
cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSkgfTsKKyAgICBQcm92aWRlckluZm8gaW5mbyA9
IHsgY2hhcmFjdGVycywgbGVuZ3RoLCBnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoZmFsc2UsIHBsYXRm
b3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpIH07CiAgICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGlu
ZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aFVuaUNoYXJQcm92aWRlcigmcHJvdmlkZVN0cmlu
Z0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvKSk7CiAKICAgICBDRkFycmF5UmVmIHJ1bkFycmF5ID0g
Q1RMaW5lR2V0R2x5cGhSdW5zKGxpbmUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlckNvcmVUZXh0Lm1tCmluZGV4IDFhMTU0ODA3YzRjODgyZDlkOTFkNzEyZmM1Y2Q4M2JmZWIw
NDE5ZjMuLjI0MGNiY2NhOTdiYmU5ZTYzMmY1ZjI2YTA4MmIzZjNhYWMyYzQ4MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTIxNyw3ICsyMTcsNyBAQCB2
b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJh
Y3RlcnMoY29uc3QgVUNoYXIqIGNwLAogCiAgICAgICAgIFJldGFpblB0cjxXZWJDYXNjYWRlTGlz
dD4gY2FzY2FkZUxpc3QgPSBhZG9wdE5TKFtbV2ViQ2FzY2FkZUxpc3QgYWxsb2NdIGluaXRXaXRo
Rm9udDombV9mb250IGNoYXJhY3RlcjpiYXNlQ2hhcmFjdGVyXSk7CiAKLSAgICAgICAgc3RyaW5n
QXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgZm9udC0+Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKG1fZm9udC5lbmFi
bGVLZXJuaW5nKCksIG1fZm9udC5lbmFibGVMaWdhdHVyZXMoKSwgZm9udC0+cGxhdGZvcm1EYXRh
KCkub3JpZW50YXRpb24oKSkpKTsKKyAgICAgICAgc3RyaW5nQXR0cmlidXRlcyA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZm9u
dC0+Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKG1fZm9udC5lbmFibGVLZXJuaW5nKCksIGZvbnQtPnBs
YXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpKSk7CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lk
KiBhdHRyaWJ1dGVLZXlzW10gPSB7IGtDVEZvbnRDYXNjYWRlTGlzdEF0dHJpYnV0ZSB9OwogICAg
ICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsgY2FzY2FkZUxpc3QuZ2V0KCkgfTsKICAgICAg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF0dHJpYnV0ZUtleXMsIHZhbHVlcywg
c2l6ZW9mKGF0dHJpYnV0ZUtleXMpIC8gc2l6ZW9mKCphdHRyaWJ1dGVLZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0
Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgIFJl
dGFpblB0cjxDVEZvbnRSZWY+IGZvbnRXaXRoQ2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENy
ZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250LT5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgbV9m
b250LnBpeGVsU2l6ZSgpLCAwLCBmb250RGVzY3JpcHRvci5nZXQoKSkpOwogICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShjb25zdF9jYXN0PENGTXV0YWJsZURpY3Rpb25hcnlSZWY+KHN0cmlu
Z0F0dHJpYnV0ZXMuZ2V0KCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgZm9udFdpdGhDYXNjYWRl
TGlzdC5nZXQoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHN0cmluZ0F0dHJpYnV0ZXMgPSBmb250
LT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9mb250LmVuYWJsZUtlcm5pbmcoKSwgbV9mb250LmVu
YWJsZUxpZ2F0dXJlcygpLCBmb250LT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpKTsKKyAg
ICAgICAgc3RyaW5nQXR0cmlidXRlcyA9IGZvbnQtPmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2Zv
bnQuZW5hYmxlS2VybmluZygpLCBmb250LT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpKTsK
IAogICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVU
ZXh0LmNwcAppbmRleCBhZjdkYWUwNzdiZTZiZGQ1N2NiMWQ2ZjQyYzIzNmRlNTkyYWRhOTQyLi4x
ZjE4MzI5ZWI0ZDM2Y2MwOWJiYzI2ZmM3ZWY3MGNiYjA4OGFlOTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ0ZEaWN0aW9uYXJ5UmVmIEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJs
ZUtlcm5pbmcsIGJvb2wgZW5hYmxlTGlnYXR1cmVzLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRp
b24pIGNvbnN0CitDRkRpY3Rpb25hcnlSZWYgRm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJv
b2wgZW5hYmxlS2VybmluZywgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdAogewot
ICAgIHVuc2lnbmVkIGtleSA9IChlbmFibGVLZXJuaW5nIDw8IDEgfCBlbmFibGVMaWdhdHVyZXMp
ICsgMTsKKyAgICB1bnNpZ25lZCBrZXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5hYmxlS2Vy
bmluZykgKyAxOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+Pjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzLmFkZChrZXks
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+KCkpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+JiBhdHRyaWJ1dGVzRGljdGlvbmFyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTU0LDEyICs1NCw2IEBAIENGRGlj
dGlvbmFyeVJlZiBGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVLZXJuaW5n
LCBib29sIGVuYWJsZUxpZ2F0CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG11dGFibGVB
dHRyaWJ1dGVzLCBrQ1RLZXJuQXR0cmlidXRlTmFtZSwgemVyb0tlcm5pbmdWYWx1ZSk7CiAgICAg
fQogCi0gICAgaWYgKCFlbmFibGVMaWdhdHVyZXMpIHsKLSAgICAgICAgY29uc3QgaW50IHplcm8g
PSAwOwotICAgICAgICBzdGF0aWMgQ0ZOdW1iZXJSZWYgZXNzZW50aWFsTGlnYXR1cmVzVmFsdWUg
PSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAm
emVybyk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG11dGFibGVBdHRyaWJ1dGVzLCBr
Q1RMaWdhdHVyZUF0dHJpYnV0ZU5hbWUsIGVzc2VudGlhbExpZ2F0dXJlc1ZhbHVlKTsKLSAgICB9
Ci0KICAgICBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWwpCiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKG11dGFibGVBdHRyaWJ1dGVzLCBrQ1RWZXJ0aWNhbEZvcm1zQXR0cmlidXRlTmFt
ZSwga0NGQm9vbGVhblRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oCmluZGV4IGVjMDMx
ZmVlMzFjZWEwMTE3YWJkY2ZhMTkyNWEyYzliN2FlMWI1MzYuLjE5NTUzOGQxOGQ3MTYzMzE1YWQz
OWQ0NzE0Mzk0NWU1ZDI3NGUwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oCkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBmaWxsQk1QR2x5cGhzKFNWR0ZvbnRFbGVtZW50
KiwgR2x5cGhQYWdlKiwgVUNoYXIqIGJ1ZmZlcikgY29uc3Q7CiAgICAgYm9vbCBmaWxsTm9uQk1Q
R2x5cGhzKFNWR0ZvbnRFbGVtZW50KiwgR2x5cGhQYWdlKiwgVUNoYXIqIGJ1ZmZlcikgY29uc3Q7
CiAKLSAgICBib29sIGFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlckdseXBoKiwgR2x5cGhCdWZm
ZXJBZHZhbmNlKiwgc2l6ZV90LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgZW5hYmxlTGlnYXR1
cmVzKSBjb25zdCA9IGRlbGV0ZTsKKyAgICBib29sIGFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZl
ckdseXBoKiwgR2x5cGhCdWZmZXJBZHZhbmNlKiwgc2l6ZV90LCBib29sIGVuYWJsZUtlcm5pbmcs
IGJvb2wgcmVxdWlyZXNTaGFwaW5nKSBjb25zdCA9IGRlbGV0ZTsKIAogICAgIC8vIFRocyBTVkdG
b250RmFjZUVsZW1lbnQgaXMga2VwdCBhbGl2ZSAtLQogICAgIC8vIDEpIGluIHRoZSBleHRlcm5h
bCBmb250IGNhc2U6IGJ5IHRoZSBDU1NGb250RmFjZVNvdXJjZSwgd2hpY2ggaG9sZHMgYSByZWZl
cmVuY2UgdG8gdGhlIGV4dGVybmFsIFNWRyBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU1ZjQ1ZThiMjQxMjE0
MDZkN2MwZjUxMTkxNjkxMjBiNTQ4NjYwZjAuLjI0ZmZlYjczYTZkYjY3YTI1MTgwZmUzN2IxMzZm
ODZhNGIxMTNlNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMC0xOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEZvbnRDYXNjYWRlOjp0
eXBlc2V0dGluZ0ZlYXR1cmVzKCkgaXMgbm90IHByaXZ5IHRvIGZvbnQtdmFyaWFudC0qIG5vciBm
b250LWZlYXR1cmUtc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTc3NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGllcy1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvbXVsdGlwbGUtZmVhdHVyZS1wcm9w
ZXJ0aWVzLmh0bWw6IEFkZGVkLgorCiAyMDE1LTEwLTE5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGR1bXAgR2VzdHVyZUV2ZW50IGNvbnN0
cnVjdG9yIGF0dHJpYnV0ZXMgZm9yIG5vdwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGllcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGllcy1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk0YWViOTAxNzRiMTlhOGYwN2EyMmYxZGQ4MWUyODg0ZDk1YzQ3N2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbXVsdGlwbGUtZmVhdHVyZS1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0
IGZlYXR1cmUgcmVzb2x1dGlvbiBvcmRlciBpcyBob25vcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biwgY2xpY2sgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mb250cy8jZmVhdHVy
ZS1wcmVjZWRlbmNlIj5oZXJlPC9hPi4gVGhlIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIGEgcGFy
dGljdWxhciBzZXF1ZW5jZSBvZiBYcyBhbmQgY2hlY2sgbWFya3MgYmVsb3cuCis8ZGl2IHN0eWxl
PSJmb250LWZhbWlseTogRm9udFdpdGhGZWF0dXJlc09URjsiPgorPHNwYW4+Qjwvc3Bhbj4KKzxz
cGFuPkI8L3NwYW4+Cis8c3Bhbj5BPC9zcGFuPgorPHNwYW4+Qjwvc3Bhbj4KKzxzcGFuPkE8L3Nw
YW4+Cis8c3Bhbj5CPC9zcGFuPgorPHNwYW4+QTwvc3Bhbj4KKzxzcGFuPkI8L3NwYW4+Cis8c3Bh
bj5CPC9zcGFuPgorPHNwYW4+QTwvc3Bhbj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGll
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L211bHRpcGxlLWZlYXR1cmUtcHJvcGVydGll
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVjNGUyYzIwYWE4NTZjNDhhOWUzZjA5Y2ZmNmE2Mjc4ZmUxYjFi
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbXVsdGlwbGUtZmVh
dHVyZS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0
IGZlYXR1cmUgcmVzb2x1dGlvbiBvcmRlciBpcyBob25vcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biwgY2xpY2sgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mb250cy8jZmVhdHVy
ZS1wcmVjZWRlbmNlIj5oZXJlPC9hPi4gVGhlIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIGEgcGFy
dGljdWxhciBzZXF1ZW5jZSBvZiBYcyBhbmQgY2hlY2sgbWFya3MgYmVsb3cuCis8ZGl2IHN0eWxl
PSJmb250LWZhbWlseTogRm9udFdpdGhGZWF0dXJlc09URjsiPgorPHNwYW4gc3R5bGU9ImZvbnQt
dmFyaWFudC1saWdhdHVyZXM6IGNvbW1vbi1saWdhdHVyZXM7IHRleHQtcmVuZGVyaW5nOiBvcHRp
bWl6ZVNwZWVkOyI+Qzwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVz
OiBuby1jb21tb24tbGlnYXR1cmVzOyB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVTcGVlZDsiPkM8
L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29tbW9uLWxpZ2F0
dXJlczsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8L3NwYW4+Cis8c3Bh
biBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29tbW9uLWxpZ2F0dXJlczsgdGV4
dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8L3NwYW4+Cis8c3BhbiBzdHlsZT0i
Zm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMSwgJ2NsaWcnIDE7IHRleHQtcmVuZGVyaW5n
OiBvcHRpbWl6ZVNwZWVkOyI+Qzwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0
dGluZ3M6ICdsaWdhJyAwLCAnY2xpZycgMDsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplU3BlZWQ7
Ij5DPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnIDEs
ICdjbGlnJyAxOyB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OyI+Qzwvc3Bhbj4K
KzxzcGFuIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJyAwLCAnY2xpZycgMDsg
dGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsiPkM8L3NwYW4+Cis8c3BhbiBzdHls
ZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29tbW9uLWxpZ2F0dXJlczsgZm9udC1mZWF0dXJl
LXNldHRpbmdzOiAnbGlnYScgMCwgJ2NsaWcnIDA7Ij5DPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZv
bnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXM7IGZvbnQtZmVhdHVyZS1z
ZXR0aW5nczogJ2xpZ2EnIDEsICdjbGlnJyAxOyI+Qzwvc3Bhbj4KKzwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>