<?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>157694</bug_id>
          
          <creation_ts>2016-05-13 16:47:41 -0700</creation_ts>
          <short_desc>Support ArrayBufferViews in the CSS Font Loading API</short_desc>
          <delta_ts>2016-06-20 14:37:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>153346</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1192967</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-13 16:47:41 -0700</bug_when>
    <thetext>Support ArrayBufferViews in the CSS Font Loading API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192968</commentid>
    <comment_count>1</comment_count>
      <attachid>278894</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-13 16:48:14 -0700</bug_when>
    <thetext>Created attachment 278894
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192988</commentid>
    <comment_count>2</comment_count>
      <attachid>278902</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-13 17:45:41 -0700</bug_when>
    <thetext>Created attachment 278902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192989</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-13 17:46:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/25554267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193012</commentid>
    <comment_count>4</comment_count>
      <attachid>278909</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-13 19:19:07 -0700</bug_when>
    <thetext>Created attachment 278909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193085</commentid>
    <comment_count>5</comment_count>
      <attachid>278909</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-14 09:03:40 -0700</bug_when>
    <thetext>Comment on attachment 278909
Patch

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

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:71
&gt; +CSSFontFaceSource::CSSFontFaceSource(CSSFontFace&amp; owner, const String&amp; familyNameOrURI, CachedFont* font, SVGFontFaceElement* fontFace, RefPtr&lt;JSC::ArrayBufferView&gt; arrayBufferView)

This should be RefPtr&amp;&amp;; that’s the correct idiom for something that a function takes ownership of with WTFMove.

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:144
&gt; +                RefPtr&lt;SharedBuffer&gt; buffer = SharedBuffer::create(static_cast&lt;const char*&gt;(m_immediateSource-&gt;baseAddress()), m_immediateSource-&gt;byteLength());
&gt; +                ASSERT(buffer);

This construction is wasteful. This SharedBuffer::create function returns a Ref, not a RefPtr, and we should use auto to accommodate that. And Ref explicitly states that the value is never null; it would obviate the need for an assertion.

&gt; Source/WebCore/css/FontFace.cpp:44
&gt; +    bool immediateData = false;

What does the term &quot;immediate data&quot; mean? I guess it means local data that does not require loading. Is there a more precise term for this? Maybe dataRequiresAsynchronousLoading, initialized to true?

&gt; Source/WebCore/css/FontFace.cpp:59
&gt; +        std::unique_ptr&lt;CSSFontFaceSource&gt; source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), String(), nullptr, nullptr, arrayBufferView);

This line is super-long and would be shorter and less repetitive with auto and { }:

    auto source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), { }, nullptr, nullptr, arrayBufferView);

&gt; Source/WebCore/css/FontFace.cpp:63
&gt; +    } else if (auto arrayBuffer = toArrayBuffer(source)) {
&gt; +        auto arrayBufferView = JSC::Uint8Array::create(arrayBuffer, 0, arrayBuffer-&gt;byteLength());

I suggest making a helper function that combines the toArrayBufferView and toArrayBuffer cases and returns a Ref&lt;ArrayBufferView&gt; so don’t need to repeat code.

Another possibility would be a helper function that makes the CSSFontFaceSource, which could help us avoid the local variable and the WTFMove.

&gt; Source/WebCore/css/FontFace.cpp:64
&gt; +        std::unique_ptr&lt;CSSFontFaceSource&gt; source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), String(), nullptr, nullptr, arrayBufferView);

This line is super-long and would be shorter and less repetitive with auto and { }:

    auto source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), { }, nullptr, nullptr, arrayBufferView);

&gt; Source/WebCore/loader/cache/CachedFont.cpp:118
&gt; +#if !PLATFORM(COCOA)
&gt; +    if (isWOFF(buffer.get())) {
&gt; +        Vector&lt;char&gt; convertedFont;
&gt; +        if (!convertWOFFToSfnt(buffer.get(), convertedFont))
&gt; +            buffer = nullptr;
&gt; +        else
&gt; +            buffer = SharedBuffer::adoptVector(convertedFont);
&gt; +        wrapping = false;
&gt; +    } else
&gt; +#endif
&gt; +        wrapping = true;

This construction with an else that goes across #endif is not great. I think we should just set wrapping to true before the #if, and then set it to false inside the if statement body and not worry about the dead store.

It’s strange that isWOFF takes a SharedBuffer* instead of SharedBuffer&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193086</commentid>
    <comment_count>6</comment_count>
      <attachid>278909</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-14 09:05:18 -0700</bug_when>
    <thetext>Comment on attachment 278909
Patch

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

&gt;&gt; Source/WebCore/css/FontFace.cpp:64
&gt;&gt; +        std::unique_ptr&lt;CSSFontFaceSource&gt; source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), String(), nullptr, nullptr, arrayBufferView);
&gt; 
&gt; This line is super-long and would be shorter and less repetitive with auto and { }:
&gt; 
&gt;     auto source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), { }, nullptr, nullptr, arrayBufferView);

I also think this should be WTFMove(arrayBufferView) to avoid one round of reference count churn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193106</commentid>
    <comment_count>7</comment_count>
      <attachid>278909</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-14 11:06:35 -0700</bug_when>
    <thetext>Comment on attachment 278909
Patch

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

&gt;&gt; Source/WebCore/css/CSSFontFaceSource.cpp:144
&gt;&gt; +                ASSERT(buffer);
&gt; 
&gt; This construction is wasteful. This SharedBuffer::create function returns a Ref, not a RefPtr, and we should use auto to accommodate that. And Ref explicitly states that the value is never null; it would obviate the need for an assertion.

Unfortunately, it currently returns a PassRefPtr :(

I&apos;d like to fix that, but think that&apos;s outside the scope of this patch.

&gt;&gt; Source/WebCore/css/FontFace.cpp:44
&gt;&gt; +    bool immediateData = false;
&gt; 
&gt; What does the term &quot;immediate data&quot; mean? I guess it means local data that does not require loading. Is there a more precise term for this? Maybe dataRequiresAsynchronousLoading, initialized to true?

I was going for the sense of &quot;immediate&quot; that is used in assembly instructions, meaning that the data is right here and you don&apos;t have to do anything to get to it. I&apos;m happy with dataRequiresAsynchronousLoading too.

&gt;&gt; Source/WebCore/css/FontFace.cpp:59
&gt;&gt; +        std::unique_ptr&lt;CSSFontFaceSource&gt; source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), String(), nullptr, nullptr, arrayBufferView);
&gt; 
&gt; This line is super-long and would be shorter and less repetitive with auto and { }:
&gt; 
&gt;     auto source = std::make_unique&lt;CSSFontFaceSource&gt;(result-&gt;backing(), { }, nullptr, nullptr, arrayBufferView);

It looks like the { } causes a compilation failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193107</commentid>
    <comment_count>8</comment_count>
      <attachid>278935</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-14 11:11:07 -0700</bug_when>
    <thetext>Created attachment 278935
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193108</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-14 11:12:09 -0700</bug_when>
    <thetext>Attachment 278935 did not pass style-queue:


ERROR: Source/WebCore/loader/cache/CachedFont.cpp:107:  &apos;buffer&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedBytes&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193125</commentid>
    <comment_count>10</comment_count>
      <attachid>278935</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-14 12:17:41 -0700</bug_when>
    <thetext>Comment on attachment 278935
Patch for committing

Clearing flags on attachment: 278935

Committed r200921: &lt;http://trac.webkit.org/changeset/200921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193385</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 08:40:01 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Attachment 278935 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/loader/cache/CachedFont.cpp:107:  &apos;buffer&apos; is
&gt; incorrectly named. It should be named &apos;protector&apos; or &apos;protectedBytes&apos;. 
&gt; [readability/naming/protected] [4]
&gt; Total errors found: 1 in 11 files


While the intention of this RefPtr was not to be a protector, and therefore the style checker incorrectly flagged it...  the RefPtr is actually a misuse of RefPtr because it is entirely unnecessary.

I&apos;m considering ways to detect RefPtr misuse, though as long as we style check line-by-line that may be difficult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203901</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-06-20 14:37:12 -0700</bug_when>
    <thetext>*** Bug 154624 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278894</attachid>
            <date>2016-05-13 16:48:14 -0700</date>
            <delta_ts>2016-05-13 17:45:39 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-157694-20160513164907.patch</filename>
            <type>text/plain</type>
            <size>10535</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EyOThmZGU1NDNjNGM1
NzFiNWY1NmMxNjI0NjI4NGRjOTJmNTYwNS4uYmI1MDQ2ODFmOTZlYzI4OWUwZmVkNGRkODg2YmNi
YzUzZmZlMDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA1LTEzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBB
cnJheUJ1ZmZlclZpZXdzIGluIHRoZSBDU1MgRm9udCBMb2FkaW5nIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Njk0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISku
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlRm9udCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKwogMjAxNi0wNS0xMyAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBDcm9zc1RocmVhZENvcGllciBhIGRlZmF1
bHQgc3BlY2lhbGl6YXRpb24gZm9yIFZlY3RvcnMgb2Ygb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDVjMGVmNDQzNmM1YjdmMDI2N2U4MGU4NzQ0
MjRhNjU5NTA2NWNiODEuLjU3MDMyYmJkNTU2YzNkODZiYmEzZGI4Njg2ZDQzNzc0YzI5MGY4OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMzQsOSArMzQs
OCBAQAogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNp
bmNsdWRlICJGb250Q2FjaGUuaCIKLSNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKLQogI2lu
Y2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb250RGVzY3JpcHRp
b24uaCIKICNpbmNsdWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAKICNpZiBFTkFCTEUo
U1ZHX0ZPTlRTKQpAQCAtNjksMTAgKzY4LDExIEBAIGlubGluZSB2b2lkIENTU0ZvbnRGYWNlU291
cmNlOjpzZXRTdGF0dXMoU3RhdHVzIG5ld1N0YXR1cykKICAgICBtX3N0YXR1cyA9IG5ld1N0YXR1
czsKIH0KIAotQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNl
JiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqIGZvbnQs
IFNWR0ZvbnRGYWNlRWxlbWVudCogZm9udEZhY2UpCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9u
dEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVP
clVSSSwgQ2FjaGVkRm9udCogZm9udCwgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZSwgUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgOiBtX2ZhbWls
eU5hbWVPclVSSShmYW1pbHlOYW1lT3JVUkkpCiAgICAgLCBtX2ZvbnQoZm9udCkKICAgICAsIG1f
ZmFjZShvd25lcikKKyAgICAsIG1faW1tZWRpYXRlU291cmNlKFdURk1vdmUoYXJyYXlCdWZmZXJW
aWV3KSkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICwgbV9zdmdGb250RmFjZUVsZW1lbnQo
Zm9udEZhY2UpCiAjZW5kaWYKQEAgLTEzNyw2ICsxMzcsMTcgQEAgUmVmUHRyPEZvbnQ+IENTU0Zv
bnRGYWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
LCBib28KICNlbmRpZgogCiAgICAgaWYgKCFtX2ZvbnQgJiYgIWZvbnRGYWNlRWxlbWVudCkgewor
ICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKKyAgICAgICAgICAgIGlmICghbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKSB7CisgICAgICAgICAgICAgICAgYm9vbCB3cmFw
cGluZzsKKyAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3Vy
Y2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBtX2ltbWVkaWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0
YSgqYnVmZmVyLCB3cmFwcGluZyk7CisgICAgICAgICAgICB9IGlmICghbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9t
Q3VzdG9tRGF0YSgqbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhLCBmb250RGVzY3Jp
cHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywg
Zm9udEZhY2VWYXJpYW50U2V0dGluZ3MpLCB0cnVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8v
IFdlJ3JlIGxvY2FsLiBKdXN0IHJldHVybiBhIEZvbnQgZnJvbSB0aGUgbm9ybWFsIGNhY2hlLgog
ICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNoZWNrIGFsdGVybmF0ZSBmb250IGZhbWlseSBu
YW1lcyBoZXJlLCBzbyBwYXNzIHRydWUgYXMgdGhlIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSBwYXJh
bWV0ZXIuCiAgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1p
bHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgJmZvbnRGYWNlRmVhdHVyZXMs
ICZmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5oCmluZGV4IGUyM2IyNjhmNmZlYWI4ODg3YWQ2OTNlMjQwZDBhMmEzMTA5OGVi
NzEuLjFmNDMyZGRjODQ0MzFlMTk3YWVkZGJlNTg4MGZiNTgwZjIwNzg3YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDYWNoZWRGb250Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIK
KyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0Niw3IEBA
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENTU0ZvbnRGYWNlU291cmNlIGZpbmFsIDogcHVi
bGljIENhY2hlZEZvbnRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3Ry
aW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0ciwgU1ZHRm9udEZhY2VF
bGVtZW50KiA9IG51bGxwdHIpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBv
d25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0
ciwgU1ZHRm9udEZhY2VFbGVtZW50KiA9IG51bGxwdHIsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gPSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwogCiAg
ICAgLy8gICAgICAgICAgICAgICAgICAgICAgPT4gU3VjY2VzcwpAQCAtODAsNiArODEsOCBAQCBw
cml2YXRlOgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNl
LgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBSZWZQdHI8U1ZHRm9u
dEZhY2VFbGVtZW50PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
CmluZGV4IGFlZjVhZDM5YTNiNDgzODViNDFmYWY3OTUyZTQ1NmIyNjhkYWUxM2QuLmVjMDI2OTIw
NDg1MTQyNjFhMDZkODdmMjA3ZDU2ZjFhN2E2Zjc4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRG
YWNlLmgiCiAKKyNpbmNsdWRlICJDU1NGb250RmFjZVNvdXJjZS5oIgogI2luY2x1ZGUgIkNTU0Zv
bnRGZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgpAQCAtNTIsNiArNTMsOSBAQCBSZWZQdHI8Rm9udEZhY2U+
IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAg
Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMocmVzdWx0LT5iYWNraW5nKCksIGRvd25jYXN0PENT
U1ZhbHVlTGlzdD4oKnZhbHVlKSwgJmRvY3VtZW50LCBmYWxzZSk7CisgICAgfSBlbHNlIGlmIChh
dXRvIGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHNvdXJjZSkpIHsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiBzb3VyY2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihyZXN1bHQtPmJhY2tpbmcoKSwgU3RyaW5nKCksIG51
bGxwdHIsIG51bGxwdHIsIGFycmF5QnVmZmVyVmlldyk7CisgICAgICAgIHJlc3VsdC0+YmFja2lu
ZygpLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgfQogCiAgICAgcmVzdWx0LT5z
ZXRTdHlsZShkZXNjcmlwdG9ycy5zdHlsZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGEzMDdmNjliY2JmMjczYjcxN2YzYjQ4OTc5YTdlNTg2
ZDFhOTBlYWUuLjZjZDdiOGJiMWRlNzRjZGFmNzdjOGExYmY4MjIyNTZkNmQ4NDMzYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTkyLDE5ICs5Miw5
IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3Vy
cmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyKGRhdGEpOwotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotICAgICAgICBpZiAo
aXNXT0ZGKGJ1ZmZlci5nZXQoKSkpIHsKLSAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBjb252ZXJ0
ZWRGb250OwotICAgICAgICAgICAgaWYgKCFjb252ZXJ0V09GRlRvU2ZudChidWZmZXIuZ2V0KCks
IGNvbnZlcnRlZEZvbnQpKQotICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3Rvcihjb252ZXJ0ZWRGb250KTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSgqYnVmZmVyKSA6IG51bGxwdHI7Ci0gICAgICAgIG1faGFzQ3JlYXRlZEZvbnREYXRhV3Jh
cHBpbmdSZXNvdXJjZSA9IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAoYnVmZmVyID09IG1f
ZGF0YSk7CisgICAgICAgIGJvb2wgd3JhcHBpbmc7CisgICAgICAgIG1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IGNyZWF0ZUN1c3RvbUZvbnREYXRhKCpidWZmZXIsIHdyYXBwaW5nKTsKKyAgICAg
ICAgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jlc291cmNlID0gbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhICYmIHdyYXBwaW5nOwogICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSkKICAgICAgICAgICAgIHNldFN0YXR1cyhEZWNvZGVFcnJvcik7CiAgICAgfQpAQCAtMTEy
LDIwICsxMDIsNDMgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5nZXQo
KTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGJvb2wmIHdyYXBw
aW5nKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9ICZieXRlczsKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGlzV09GRihidWZmZXIpKSB7CisgICAgICAgIFZlY3Rv
cjxjaGFyPiBjb252ZXJ0ZWRGb250OworICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1
ZmZlci5nZXQoKSwgY29udmVydGVkRm9udCkpCisgICAgICAgICAgICBidWZmZXIgPSBudWxscHRy
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0
VmVjdG9yKGNvbnZlcnRlZEZvbnQpOworICAgICAgICB3cmFwcGluZyA9IGZhbHNlOworICAgIH0g
ZWxzZQorI2VuZGlmCisgICAgICAgIHdyYXBwaW5nID0gdHJ1ZTsKKworICAgIHJldHVybiBidWZm
ZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIpIDogbnVsbHB0cjsKK30K
KwogUmVmUHRyPEZvbnQ+IENhY2hlZEZvbnQ6OmNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYsIGJvb2wgc3ludGhldGlj
Qm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmIGZv
bnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIGZvbnRGYWNlVmFyaWFu
dFNldHRpbmdzKQogewotICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoZm9udERlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMs
IGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKSwgdHJ1ZSwgZmFsc2Up
OworICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9u
dERlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVh
dHVyZXMsIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKSwgdHJ1ZSk7CiB9CiAKIEZvbnRQbGF0Zm9y
bURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0
IEZvbnRGZWF0dXJlU2V0dGluZ3MmIGZvbnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50
U2V0dGluZ3MmIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKQogewogICAgIEFTU0VSVChtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOworICAgIHJldHVybiBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0
YSgqbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLCBmb250RGVzY3JpcHRpb24sIGJvbGQsIGl0YWxp
YywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpOworfQorCitGb250
UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEmIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEsIGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBG
b250RmVhdHVyZVNldHRpbmdzJiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNl
dHRpbmdzJiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncykKK3sKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLT5mb250UGxhdGZvcm1EYXRhKGZv
bnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZVZh
cmlhbnRTZXR0aW5ncyk7CisgICAgcmV0dXJuIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZm9udFBs
YXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGJvbGQsIGl0YWxpYywgZm9udEZhY2VGZWF0dXJl
cywgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZm9u
dEZhY2VGZWF0dXJlcyk7CiAgICAgVU5VU0VEX1BBUkFNKGZvbnRGYWNlVmFyaWFudFNldHRpbmdz
KTsKLSAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLT5mb250UGxhdGZvcm1EYXRh
KGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGljKTsKKyAgICByZXR1cm4gZm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGlj
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApp
bmRleCBkMTE4OGU3ZDRhYzlhYzUzNDBhNTYwZDQzODMyY2U3MzVlNmVkZjgwLi5lNThjOWUwOTVj
NDlmZWZlMjE3YTNhNjdiMDA2ZjVmNTQ1MWFjMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgcmVtb3RlVVJJ
KTsKIAorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCYgd3JhcHBpbmcpOworICAg
IHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJv
b2wgaXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgY29uc3QgRm9udFZhcmlhbnRT
ZXR0aW5ncyYpOworCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5n
cyYsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmKTsKIAogcHJvdGVjdGVkOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278902</attachid>
            <date>2016-05-13 17:45:41 -0700</date>
            <delta_ts>2016-05-13 19:19:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157694-20160513174633.patch</filename>
            <type>text/plain</type>
            <size>15564</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EyOThmZGU1NDNjNGM1
NzFiNWY1NmMxNjI0NjI4NGRjOTJmNTYwNS4uMTg4YjBiNzMxZDM5OTQ3ZjZkNTJkNjk1NTg3ZWIz
N2Q1MzM1ZTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA1LTEzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBB
cnJheUJ1ZmZlclZpZXdzIGluIHRoZSBDU1MgRm9udCBMb2FkaW5nIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Njk0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNTU1NDI2Nz4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgbW9k
ZSB0byBDU1NGb250RmFjZVNvdXJjZSBmb3IgaW1tZWRpYXRlIChBcnJheUJ1ZmZlcikgZGF0YS4K
KyAgICAgICAgVGhlbiwgRm9udEZhY2UgY2FuIHNpbXBseSBiZSBob29rZWQgdXAgdG8gdGhpcyBu
ZXcgbW9kZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBmYXN0L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1ZmZlci5odG1sCisKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlU291cmNlOjpmb250KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZh
Y2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaDoKKwogMjAxNi0wNS0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBDcm9zc1RocmVhZENvcGllciBhIGRlZmF1bHQgc3Bl
Y2lhbGl6YXRpb24gZm9yIFZlY3RvcnMgb2Ygb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDVjMGVmNDQzNmM1YjdmMDI2N2U4MGU4NzQ0MjRhNjU5
NTA2NWNiODEuLjU3MDMyYmJkNTU2YzNkODZiYmEzZGI4Njg2ZDQzNzc0YzI5MGY4OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMzQsOSArMzQsOCBAQAog
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKLSNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKLQogI2luY2x1ZGUg
IkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAKICNpZiBFTkFCTEUoU1ZHX0ZP
TlRTKQpAQCAtNjksMTAgKzY4LDExIEBAIGlubGluZSB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpz
ZXRTdGF0dXMoU3RhdHVzIG5ld1N0YXR1cykKICAgICBtX3N0YXR1cyA9IG5ld1N0YXR1czsKIH0K
IAotQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqIGZvbnQsIFNWR0Zv
bnRGYWNlRWxlbWVudCogZm9udEZhY2UpCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VT
b3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwg
Q2FjaGVkRm9udCogZm9udCwgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZSwgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgOiBtX2ZhbWlseU5hbWVP
clVSSShmYW1pbHlOYW1lT3JVUkkpCiAgICAgLCBtX2ZvbnQoZm9udCkKICAgICAsIG1fZmFjZShv
d25lcikKKyAgICAsIG1faW1tZWRpYXRlU291cmNlKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSkK
ICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICwgbV9zdmdGb250RmFjZUVsZW1lbnQoZm9udEZh
Y2UpCiAjZW5kaWYKQEAgLTEzNyw2ICsxMzcsMTcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNl
U291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28K
ICNlbmRpZgogCiAgICAgaWYgKCFtX2ZvbnQgJiYgIWZvbnRGYWNlRWxlbWVudCkgeworICAgICAg
ICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKKyAgICAgICAgICAgIGlmICghbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKSB7CisgICAgICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJh
c2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSgqYnVm
ZmVyLCB3cmFwcGluZyk7CisgICAgICAgICAgICB9IGlmICghbV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9t
RGF0YSgqbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhLCBmb250RGVzY3JpcHRpb24s
IHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZh
Y2VWYXJpYW50U2V0dGluZ3MpLCB0cnVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFdlJ3Jl
IGxvY2FsLiBKdXN0IHJldHVybiBhIEZvbnQgZnJvbSB0aGUgbm9ybWFsIGNhY2hlLgogICAgICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIGNoZWNrIGFsdGVybmF0ZSBmb250IGZhbWlseSBuYW1lcyBo
ZXJlLCBzbyBwYXNzIHRydWUgYXMgdGhlIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSBwYXJhbWV0ZXIu
CiAgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9u
dERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgJmZvbnRGYWNlRmVhdHVyZXMsICZmb250
RmFjZVZhcmlhbnRTZXR0aW5ncywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCmluZGV4IGUyM2IyNjhmNmZlYWI4ODg3YWQ2OTNlMjQwZDBhMmEzMTA5OGViNzEuLjFm
NDMyZGRjODQ0MzFlMTk3YWVkZGJlNTg4MGZiNTgwZjIwNzg3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRGb250Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENTU0ZvbnRGYWNlU291cmNlIGZpbmFsIDogcHVibGljIENh
Y2hlZEZvbnRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBm
YW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0ciwgU1ZHRm9udEZhY2VFbGVtZW50
KiA9IG51bGxwdHIpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwg
Y29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0ciwgU1ZH
Rm9udEZhY2VFbGVtZW50KiA9IG51bGxwdHIsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4g
PSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwogCiAgICAgLy8g
ICAgICAgICAgICAgICAgICAgICAgPT4gU3VjY2VzcwpAQCAtODAsNiArODEsOCBAQCBwcml2YXRl
OgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNlLgogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBSZWZQdHI8U1ZHRm9udEZhY2VF
bGVtZW50PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4
IGFlZjVhZDM5YTNiNDgzODViNDFmYWY3OTUyZTQ1NmIyNjhkYWUxM2QuLjc0YzNmZjA4NTM4MDMz
Nzk3MTkwZDUzYzllNDg5YjhjODc0YjZjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRGYWNlLmgi
CiAKKyNpbmNsdWRlICJDU1NGb250RmFjZVNvdXJjZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0
dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlUG9vbC5oIgpAQCAtNDAsNiArNDEsOCBAQCBSZWZQdHI8Rm9udEZhY2U+IEZvbnRG
YWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bgogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBGb250RmFjZShkb2N1bWVudC5m
b250U2VsZWN0b3IoKSkpOwogCisgICAgYm9vbCBpbW1lZGlhdGVEYXRhID0gZmFsc2U7CisKICAg
ICBlYyA9IDA7CiAgICAgcmVzdWx0LT5zZXRGYW1pbHkoZmFtaWx5LCBlYyk7CiAgICAgaWYgKGVj
KQpAQCAtNTIsNiArNTUsMTUgQEAgUmVmUHRyPEZvbnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb24KICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIENTU0ZvbnRGYWNlOjphcHBlbmRT
b3VyY2VzKHJlc3VsdC0+YmFja2luZygpLCBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSks
ICZkb2N1bWVudCwgZmFsc2UpOworICAgIH0gZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlclZpZXcg
PSB0b0FycmF5QnVmZmVyVmlldyhzb3VyY2UpKSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
U1NGb250RmFjZVNvdXJjZT4gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4ocmVzdWx0LT5iYWNraW5nKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBhcnJh
eUJ1ZmZlclZpZXcpOworICAgICAgICByZXN1bHQtPmJhY2tpbmcoKS5hZG9wdFNvdXJjZShXVEZN
b3ZlKHNvdXJjZSkpOworICAgICAgICBpbW1lZGlhdGVEYXRhID0gdHJ1ZTsKKyAgICB9IGVsc2Ug
aWYgKGF1dG8gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKHNvdXJjZSkpIHsKKyAgICAgICAg
YXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZl
ciwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxDU1NGb250RmFjZVNvdXJjZT4gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFj
ZVNvdXJjZT4ocmVzdWx0LT5iYWNraW5nKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBh
cnJheUJ1ZmZlclZpZXcpOworICAgICAgICByZXN1bHQtPmJhY2tpbmcoKS5hZG9wdFNvdXJjZShX
VEZNb3ZlKHNvdXJjZSkpOworICAgICAgICBpbW1lZGlhdGVEYXRhID0gdHJ1ZTsKICAgICB9CiAK
ICAgICByZXN1bHQtPnNldFN0eWxlKGRlc2NyaXB0b3JzLnN0eWxlLCBlYyk7CkBAIC03Myw2ICs4
NSwxMSBAQCBSZWZQdHI8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbgogICAgIGlmIChlYykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKKyAgICBpZiAoaW1tZWRpYXRlRGF0YSkgeworICAgICAgICByZXN1bHQt
PmJhY2tpbmcoKS5sb2FkKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQtPmJhY2tpbmcoKS5zdGF0
dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNzKTsKKyAgICB9CisKICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggYTMwN2Y2OWJjYmYyNzNiNzE3ZjNiNDg5NzlhN2U1ODZkMWE5MGVh
ZS4uNmNkN2I4YmIxZGU3NGNkYWY3N2M4YTFiZjgyMjI1NmQ2ZDg0MzNhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtOTIsMTkgKzkyLDkgQEAgYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIoZGF0YSk7Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGlmIChpc1dPRkYo
YnVmZmVyLmdldCgpKSkgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnZlcnRlZEZvbnQ7
Ci0gICAgICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlci5nZXQoKSwgY29udmVy
dGVkRm9udCkpCi0gICAgICAgICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9y
KGNvbnZlcnRlZEZvbnQpOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpi
dWZmZXIpIDogbnVsbHB0cjsKLSAgICAgICAgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jl
c291cmNlID0gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmIChidWZmZXIgPT0gbV9kYXRhKTsK
KyAgICAgICAgYm9vbCB3cmFwcGluZzsKKyAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
ID0gY3JlYXRlQ3VzdG9tRm9udERhdGEoKmJ1ZmZlciwgd3JhcHBpbmcpOworICAgICAgICBtX2hh
c0NyZWF0ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2UgPSBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgJiYgd3JhcHBpbmc7CiAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQog
ICAgICAgICAgICAgc2V0U3RhdHVzKERlY29kZUVycm9yKTsKICAgICB9CkBAIC0xMTIsMjAgKzEw
Miw0MyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQog
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgYm9vbCYgd3JhcHBpbmcpCit7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gJmJ5dGVzOworI2lmICFQTEFURk9S
TShDT0NPQSkKKyAgICBpZiAoaXNXT0ZGKGJ1ZmZlcikpIHsKKyAgICAgICAgVmVjdG9yPGNoYXI+
IGNvbnZlcnRlZEZvbnQ7CisgICAgICAgIGlmICghY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLmdl
dCgpLCBjb252ZXJ0ZWRGb250KSkKKyAgICAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3Io
Y29udmVydGVkRm9udCk7CisgICAgICAgIHdyYXBwaW5nID0gZmFsc2U7CisgICAgfSBlbHNlCisj
ZW5kaWYKKyAgICAgICAgd3JhcHBpbmcgPSB0cnVlOworCisgICAgcmV0dXJuIGJ1ZmZlciA/IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlcikgOiBudWxscHRyOworfQorCiBSZWZQ
dHI8Rm9udD4gQ2FjaGVkRm9udDo6Y3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZm9udEZhY2VG
ZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgZm9udEZhY2VWYXJpYW50U2V0dGlu
Z3MpCiB7Ci0gICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0
YShmb250RGVzY3JpcHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZh
Y2VGZWF0dXJlcywgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpLCB0cnVlLCBmYWxzZSk7CisgICAg
cmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250RGVzY3Jp
cHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywg
Zm9udEZhY2VWYXJpYW50U2V0dGluZ3MpLCB0cnVlKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YSBD
YWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udEZl
YXR1cmVTZXR0aW5ncyYgZm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5n
cyYgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpCiB7CiAgICAgQVNTRVJUKG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk7CisgICAgcmV0dXJuIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKCptX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEsIGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGljLCBmb250
RmFjZUZlYXR1cmVzLCBmb250RmFjZVZhcmlhbnRTZXR0aW5ncyk7Cit9CisKK0ZvbnRQbGF0Zm9y
bURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSYgZm9udEN1c3RvbVBsYXRmb3JtRGF0YSwgY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpb24sIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRGZWF0
dXJlU2V0dGluZ3MmIGZvbnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3Mm
IGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKQorewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJl
dHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2Ny
aXB0aW9uLCBib2xkLCBpdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlVmFyaWFudFNl
dHRpbmdzKTsKKyAgICByZXR1cm4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5mb250UGxhdGZvcm1E
YXRhKGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250
RmFjZVZhcmlhbnRTZXR0aW5ncyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmb250RmFjZUZl
YXR1cmVzKTsKICAgICBVTlVTRURfUEFSQU0oZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpOwotICAg
IHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmZvbnRQbGF0Zm9ybURhdGEoZm9udERl
c2NyaXB0aW9uLCBib2xkLCBpdGFsaWMpOworICAgIHJldHVybiBmb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBib2xkLCBpdGFsaWMpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGQx
MTg4ZTdkNGFjOWFjNTM0MGE1NjBkNDM4MzJjZTczNWU2ZWRmODAuLmU1OGM5ZTA5NWM0OWZlZmUy
MTdhM2E2N2IwMDZmNWY1NDUxYWMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaApAQCAtNTEsNiArNTEsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkkpOwogCisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGlj
IEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdz
Jik7CisKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgY29u
c3QgRm9udFZhcmlhbnRTZXR0aW5ncyYpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2FjMmMxYjE3
N2E5NGViOTk5ZDY3ODdiZjUxMjFlNGIxZTJiM2NlZS4uZTU2OGU0OWU4NjFkOTUxNzJhMzkyYTJm
NjIyZWIxNGNjYWMzYWU5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA1LTEzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBB
cnJheUJ1ZmZlclZpZXdzIGluIHRoZSBDU1MgRm9udCBMb2FkaW5nIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Njk0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNTU1NDI2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvdGV4dC9jc3MtZm9udC1sb2FkaW5nLWFycmF5YnVmZmVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2Nzcy1mb250LWxvYWRpbmct
YXJyYXlidWZmZXIuaHRtbDogQWRkZWQuCisKIDIwMTYtMDUtMTMgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBmYXN0L3RleHQtYXV0b3Npemlu
Zy9pb3MvdGV4dC1hdXRvc2l6aW5nLWFmdGVyLWJhY2suaHRtbCBhcyBhIGZsYWt5IHRpbWVvdXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9jc3MtZm9udC1sb2FkaW5nLWFycmF5
YnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9jc3MtZm9udC1sb2Fk
aW5nLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjgxMzFjOGYwOThiYzkw
Yjg0Mzk5YmNlNjY4N2ZkM2JiNjI0ZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2Nzcy1mb250LWxvYWRpbmctYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYW4gQXJyYXlCdWZmZXJWaWV3
IGNhbiBiZSBzdWNjZXNzZnVsbHkgcGFzc2VkIHRvIHRoZSBGb250RmFjZSBjb25zdHJ1Y3Rvci4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm9udEZhY2UxLnN0YXR1cyBp
cyAibG9hZGVkIgorUEFTUyBmb250RmFjZTIuc3RhdHVzIGlzICJsb2FkZWQiCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdwcm9iZTEnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0
aCBpcyAxMDAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2JlMicpLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLndpZHRoIGlzIDEwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitsIGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC9jc3MtZm9udC1sb2FkaW5nLWFycmF5YnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhZjI0
MWY0YTJlYzQ0MmI3ODJiMmIxMmYwMGZhZjMwMDMwYzAyODQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1ZmZlci5odG1sCkBA
IC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c3BhbiBpZD0icHJvYmUxIiBzdHlsZT0iZm9udC1zaXplOiAxMDBweDsiPmw8L3Nw
YW4+Cis8c3BhbiBpZD0icHJvYmUyIiBzdHlsZT0iZm9udC1zaXplOiAxMDBweDsiPmw8L3NwYW4+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYW4gQXJy
YXlCdWZmZXJWaWV3IGNhbiBiZSBzdWNjZXNzZnVsbHkgcGFzc2VkIHRvIHRoZSBGb250RmFjZSBj
b25zdHJ1Y3Rvci4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGZvbnRS
ZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Citmb250UmVxdWVzdC5vcGVuKCJHRVQiLCAi
Li4vLi4vcmVzb3VyY2VzL0FoZW0udHRmIik7Citmb250UmVxdWVzdC5yZXNwb25zZVR5cGUgPSAi
YXJyYXlidWZmZXIiOwordmFyIGZvbnRGYWNlMTsKK3ZhciBmb250RmFjZTI7Citmb250UmVxdWVz
dC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisJdmFyIGFycmF5QnVmZmVy
ID0gZm9udFJlcXVlc3QucmVzcG9uc2U7CisJaWYgKGFycmF5QnVmZmVyKSB7CisJCXZhciBieXRl
QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7CisJCWZvbnRGYWNlMSA9IG5ldyBG
b250RmFjZSgiV2ViRm9udDEiLCBhcnJheUJ1ZmZlciwge30pOworCQlmb250RmFjZTIgPSBuZXcg
Rm9udEZhY2UoIldlYkZvbnQyIiwgYnl0ZUFycmF5LCB7fSk7CisJCXNob3VsZEJlRXF1YWxUb1N0
cmluZygiZm9udEZhY2UxLnN0YXR1cyIsICJsb2FkZWQiKTsKKwkJc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJmb250RmFjZTIuc3RhdHVzIiwgImxvYWRlZCIpOworCQlkb2N1bWVudC5mb250cy5hZGQo
Zm9udEZhY2UxKTsKKwkJZG9jdW1lbnQuZm9udHMuYWRkKGZvbnRGYWNlMik7CisJCWRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwcm9iZTEiKS5zdHlsZS5mb250RmFtaWx5ID0gIldlYkZvbnQxIjsK
KwkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2JlMiIpLnN0eWxlLmZvbnRGYW1pbHkgPSAi
V2ViRm9udDIiOworCQlzaG91bGRFdmFsdWF0ZVRvKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cHJvYmUxJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgiLCAxMDApOworCQlzaG91bGRF
dmFsdWF0ZVRvKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvYmUyJykuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkud2lkdGgiLCAxMDApOworCQlmb250RmFjZTEubG9hZGVkLnRoZW4oZnVuY3Rp
b24oKSB7CisJCQlyZXR1cm4gZm9udEZhY2UyLmxvYWRlZDsKKwkJfSwgZnVuY3Rpb24oKSB7CisJ
CQl0ZXN0RmFpbGVkKCJmb250RmFjZTEncyBwcm9taXNlIHNob3VsZCBiZSBzdWNjZXNzZnVsIik7
CisJCQlmaW5pc2hKU1Rlc3QoKTsKKwkJfSkudGhlbihmdW5jdGlvbigpIHsKKwkJCWZpbmlzaEpT
VGVzdCgpOworCQl9LCBmdW5jdGlvbigpIHsKKwkJCXRlc3RGYWlsZWQoImZvbnRGYWNlMidzIHBy
b21pc2Ugc2hvdWxkIGJlIHN1Y2Nlc3NmdWwiKTsKKwkJCWZpbmlzaEpTVGVzdCgpOworCQl9KTsK
Kwl9IGVsc2UgeworCQl0ZXN0RmFpbGVkKCJYSFInaW5nIHRoZSBmb250IHNob3VsZCBiZSBzdWNj
ZXNzZnVsLiIpOworCQlmaW5pc2hKU1Rlc3QoKTsKKwl9Cit9KTsKK2ZvbnRSZXF1ZXN0LnNlbmQo
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278909</attachid>
            <date>2016-05-13 19:19:07 -0700</date>
            <delta_ts>2016-05-14 09:03:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157694-20160513191959.patch</filename>
            <type>text/plain</type>
            <size>15570</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EyOThmZGU1NDNjNGM1
NzFiNWY1NmMxNjI0NjI4NGRjOTJmNTYwNS4uMTg4YjBiNzMxZDM5OTQ3ZjZkNTJkNjk1NTg3ZWIz
N2Q1MzM1ZTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA1LTEzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBB
cnJheUJ1ZmZlclZpZXdzIGluIHRoZSBDU1MgRm9udCBMb2FkaW5nIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Njk0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNTU1NDI2Nz4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgbW9k
ZSB0byBDU1NGb250RmFjZVNvdXJjZSBmb3IgaW1tZWRpYXRlIChBcnJheUJ1ZmZlcikgZGF0YS4K
KyAgICAgICAgVGhlbiwgRm9udEZhY2UgY2FuIHNpbXBseSBiZSBob29rZWQgdXAgdG8gdGhpcyBu
ZXcgbW9kZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBmYXN0L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1ZmZlci5odG1sCisKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlU291cmNlOjpmb250KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZh
Y2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaDoKKwogMjAxNi0wNS0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBDcm9zc1RocmVhZENvcGllciBhIGRlZmF1bHQgc3Bl
Y2lhbGl6YXRpb24gZm9yIFZlY3RvcnMgb2Ygb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDVjMGVmNDQzNmM1YjdmMDI2N2U4MGU4NzQ0MjRhNjU5
NTA2NWNiODEuLjU3MDMyYmJkNTU2YzNkODZiYmEzZGI4Njg2ZDQzNzc0YzI5MGY4OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMzQsOSArMzQsOCBAQAog
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKLSNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKLQogI2luY2x1ZGUg
IkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAKICNpZiBFTkFCTEUoU1ZHX0ZP
TlRTKQpAQCAtNjksMTAgKzY4LDExIEBAIGlubGluZSB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpz
ZXRTdGF0dXMoU3RhdHVzIG5ld1N0YXR1cykKICAgICBtX3N0YXR1cyA9IG5ld1N0YXR1czsKIH0K
IAotQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqIGZvbnQsIFNWR0Zv
bnRGYWNlRWxlbWVudCogZm9udEZhY2UpCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VT
b3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwg
Q2FjaGVkRm9udCogZm9udCwgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZSwgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgOiBtX2ZhbWlseU5hbWVP
clVSSShmYW1pbHlOYW1lT3JVUkkpCiAgICAgLCBtX2ZvbnQoZm9udCkKICAgICAsIG1fZmFjZShv
d25lcikKKyAgICAsIG1faW1tZWRpYXRlU291cmNlKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSkK
ICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICwgbV9zdmdGb250RmFjZUVsZW1lbnQoZm9udEZh
Y2UpCiAjZW5kaWYKQEAgLTEzNyw2ICsxMzcsMTcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNl
U291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28K
ICNlbmRpZgogCiAgICAgaWYgKCFtX2ZvbnQgJiYgIWZvbnRGYWNlRWxlbWVudCkgeworICAgICAg
ICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKKyAgICAgICAgICAgIGlmICghbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKSB7CisgICAgICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJh
c2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSgqYnVm
ZmVyLCB3cmFwcGluZyk7CisgICAgICAgICAgICB9IGlmICghbV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9t
RGF0YSgqbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhLCBmb250RGVzY3JpcHRpb24s
IHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZh
Y2VWYXJpYW50U2V0dGluZ3MpLCB0cnVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFdlJ3Jl
IGxvY2FsLiBKdXN0IHJldHVybiBhIEZvbnQgZnJvbSB0aGUgbm9ybWFsIGNhY2hlLgogICAgICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIGNoZWNrIGFsdGVybmF0ZSBmb250IGZhbWlseSBuYW1lcyBo
ZXJlLCBzbyBwYXNzIHRydWUgYXMgdGhlIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSBwYXJhbWV0ZXIu
CiAgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9u
dERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgJmZvbnRGYWNlRmVhdHVyZXMsICZmb250
RmFjZVZhcmlhbnRTZXR0aW5ncywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCmluZGV4IGUyM2IyNjhmNmZlYWI4ODg3YWQ2OTNlMjQwZDBhMmEzMTA5OGViNzEuLjFm
NDMyZGRjODQ0MzFlMTk3YWVkZGJlNTg4MGZiNTgwZjIwNzg3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRGb250Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENTU0ZvbnRGYWNlU291cmNlIGZpbmFsIDogcHVibGljIENh
Y2hlZEZvbnRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBm
YW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0ciwgU1ZHRm9udEZhY2VFbGVtZW50
KiA9IG51bGxwdHIpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwg
Y29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0ciwgU1ZH
Rm9udEZhY2VFbGVtZW50KiA9IG51bGxwdHIsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4g
PSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwogCiAgICAgLy8g
ICAgICAgICAgICAgICAgICAgICAgPT4gU3VjY2VzcwpAQCAtODAsNiArODEsOCBAQCBwcml2YXRl
OgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNlLgogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBSZWZQdHI8U1ZHRm9udEZhY2VF
bGVtZW50PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4
IGFlZjVhZDM5YTNiNDgzODViNDFmYWY3OTUyZTQ1NmIyNjhkYWUxM2QuLjc0YzNmZjA4NTM4MDMz
Nzk3MTkwZDUzYzllNDg5YjhjODc0YjZjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRGYWNlLmgi
CiAKKyNpbmNsdWRlICJDU1NGb250RmFjZVNvdXJjZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0
dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlUG9vbC5oIgpAQCAtNDAsNiArNDEsOCBAQCBSZWZQdHI8Rm9udEZhY2U+IEZvbnRG
YWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bgogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBGb250RmFjZShkb2N1bWVudC5m
b250U2VsZWN0b3IoKSkpOwogCisgICAgYm9vbCBpbW1lZGlhdGVEYXRhID0gZmFsc2U7CisKICAg
ICBlYyA9IDA7CiAgICAgcmVzdWx0LT5zZXRGYW1pbHkoZmFtaWx5LCBlYyk7CiAgICAgaWYgKGVj
KQpAQCAtNTIsNiArNTUsMTUgQEAgUmVmUHRyPEZvbnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb24KICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIENTU0ZvbnRGYWNlOjphcHBlbmRT
b3VyY2VzKHJlc3VsdC0+YmFja2luZygpLCBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSks
ICZkb2N1bWVudCwgZmFsc2UpOworICAgIH0gZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlclZpZXcg
PSB0b0FycmF5QnVmZmVyVmlldyhzb3VyY2UpKSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
U1NGb250RmFjZVNvdXJjZT4gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4ocmVzdWx0LT5iYWNraW5nKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBhcnJh
eUJ1ZmZlclZpZXcpOworICAgICAgICByZXN1bHQtPmJhY2tpbmcoKS5hZG9wdFNvdXJjZShXVEZN
b3ZlKHNvdXJjZSkpOworICAgICAgICBpbW1lZGlhdGVEYXRhID0gdHJ1ZTsKKyAgICB9IGVsc2Ug
aWYgKGF1dG8gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKHNvdXJjZSkpIHsKKyAgICAgICAg
YXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZl
ciwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxDU1NGb250RmFjZVNvdXJjZT4gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFj
ZVNvdXJjZT4ocmVzdWx0LT5iYWNraW5nKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBh
cnJheUJ1ZmZlclZpZXcpOworICAgICAgICByZXN1bHQtPmJhY2tpbmcoKS5hZG9wdFNvdXJjZShX
VEZNb3ZlKHNvdXJjZSkpOworICAgICAgICBpbW1lZGlhdGVEYXRhID0gdHJ1ZTsKICAgICB9CiAK
ICAgICByZXN1bHQtPnNldFN0eWxlKGRlc2NyaXB0b3JzLnN0eWxlLCBlYyk7CkBAIC03Myw2ICs4
NSwxMSBAQCBSZWZQdHI8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbgogICAgIGlmIChlYykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKKyAgICBpZiAoaW1tZWRpYXRlRGF0YSkgeworICAgICAgICByZXN1bHQt
PmJhY2tpbmcoKS5sb2FkKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQtPmJhY2tpbmcoKS5zdGF0
dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNzKTsKKyAgICB9CisKICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggYTMwN2Y2OWJjYmYyNzNiNzE3ZjNiNDg5NzlhN2U1ODZkMWE5MGVh
ZS4uZThhNGY4NTI5OTUzNTg0YWExYjYzODkxODMxMDcwNWFiODliZjk3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtOTIsMTkgKzkyLDkgQEAgYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIoZGF0YSk7Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGlmIChpc1dPRkYo
YnVmZmVyLmdldCgpKSkgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnZlcnRlZEZvbnQ7
Ci0gICAgICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlci5nZXQoKSwgY29udmVy
dGVkRm9udCkpCi0gICAgICAgICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9y
KGNvbnZlcnRlZEZvbnQpOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpi
dWZmZXIpIDogbnVsbHB0cjsKLSAgICAgICAgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jl
c291cmNlID0gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmIChidWZmZXIgPT0gbV9kYXRhKTsK
KyAgICAgICAgYm9vbCB3cmFwcGluZzsKKyAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
ID0gY3JlYXRlQ3VzdG9tRm9udERhdGEoKmJ1ZmZlciwgd3JhcHBpbmcpOworICAgICAgICBtX2hh
c0NyZWF0ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2UgPSBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgJiYgd3JhcHBpbmc7CiAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQog
ICAgICAgICAgICAgc2V0U3RhdHVzKERlY29kZUVycm9yKTsKICAgICB9CkBAIC0xMTIsMjAgKzEw
Miw0MyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQog
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgYm9vbCYgd3JhcHBpbmcpCit7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gJmJ5dGVzOworI2lmICFQTEFURk9S
TShDT0NPQSkKKyAgICBpZiAoaXNXT0ZGKGJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgVmVjdG9y
PGNoYXI+IGNvbnZlcnRlZEZvbnQ7CisgICAgICAgIGlmICghY29udmVydFdPRkZUb1NmbnQoYnVm
ZmVyLmdldCgpLCBjb252ZXJ0ZWRGb250KSkKKyAgICAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRW
ZWN0b3IoY29udmVydGVkRm9udCk7CisgICAgICAgIHdyYXBwaW5nID0gZmFsc2U7CisgICAgfSBl
bHNlCisjZW5kaWYKKyAgICAgICAgd3JhcHBpbmcgPSB0cnVlOworCisgICAgcmV0dXJuIGJ1ZmZl
ciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlcikgOiBudWxscHRyOworfQor
CiBSZWZQdHI8Rm9udD4gQ2FjaGVkRm9udDo6Y3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZm9u
dEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgZm9udEZhY2VWYXJpYW50
U2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGFGcm9tQ3Vz
dG9tRGF0YShmb250RGVzY3JpcHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywg
Zm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpLCB0cnVlLCBmYWxzZSk7
CisgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250
RGVzY3JpcHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpLCB0cnVlKTsKIH0KIAogRm9udFBsYXRmb3Jt
RGF0YSBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3Qg
Rm9udEZlYXR1cmVTZXR0aW5ncyYgZm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRT
ZXR0aW5ncyYgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpCiB7CiAgICAgQVNTRVJUKG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSk7CisgICAgcmV0dXJuIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRh
KCptX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEsIGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGlj
LCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZVZhcmlhbnRTZXR0aW5ncyk7Cit9CisKK0ZvbnRQ
bGF0Zm9ybURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSYgZm9udEN1c3RvbVBsYXRmb3JtRGF0YSwgY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZv
bnRGZWF0dXJlU2V0dGluZ3MmIGZvbnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0
dGluZ3MmIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKQorewogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmZvbnRQbGF0Zm9ybURhdGEoZm9u
dERlc2NyaXB0aW9uLCBib2xkLCBpdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlVmFy
aWFudFNldHRpbmdzKTsKKyAgICByZXR1cm4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5mb250UGxh
dGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGljLCBmb250RmFjZUZlYXR1cmVz
LCBmb250RmFjZVZhcmlhbnRTZXR0aW5ncyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmb250
RmFjZUZlYXR1cmVzKTsKICAgICBVTlVTRURfUEFSQU0oZm9udEZhY2VWYXJpYW50U2V0dGluZ3Mp
OwotICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmZvbnRQbGF0Zm9ybURhdGEo
Zm9udERlc2NyaXB0aW9uLCBib2xkLCBpdGFsaWMpOworICAgIHJldHVybiBmb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBib2xkLCBpdGFsaWMp
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmlu
ZGV4IGQxMTg4ZTdkNGFjOWFjNTM0MGE1NjBkNDM4MzJjZTczNWU2ZWRmODAuLmU1OGM5ZTA5NWM0
OWZlZmUyMTdhM2E2N2IwMDZmNWY1NDUxYWMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaApAQCAtNTEsNiArNTEsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkkp
OwogCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9v
bCBpdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBjb25zdCBGb250VmFyaWFudFNl
dHRpbmdzJik7CisKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdz
JiwgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Fj
MmMxYjE3N2E5NGViOTk5ZDY3ODdiZjUxMjFlNGIxZTJiM2NlZS4uZTU2OGU0OWU4NjFkOTUxNzJh
MzkyYTJmNjIyZWIxNGNjYWMzYWU5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA1LTEz
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3Vw
cG9ydCBBcnJheUJ1ZmZlclZpZXdzIGluIHRoZSBDU1MgRm9udCBMb2FkaW5nIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Njk0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yNTU1NDI2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvdGV4dC9jc3MtZm9udC1sb2FkaW5nLWFycmF5YnVm
ZmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2Nzcy1mb250LWxv
YWRpbmctYXJyYXlidWZmZXIuaHRtbDogQWRkZWQuCisKIDIwMTYtMDUtMTMgIFJ5YW4gSGFkZGFk
ICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBmYXN0L3RleHQtYXV0
b3NpemluZy9pb3MvdGV4dC1hdXRvc2l6aW5nLWFmdGVyLWJhY2suaHRtbCBhcyBhIGZsYWt5IHRp
bWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9jc3MtZm9udC1sb2FkaW5n
LWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9jc3MtZm9u
dC1sb2FkaW5nLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjgxMzFjOGYw
OThiYzkwYjg0Mzk5YmNlNjY4N2ZkM2JiNjI0ZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2Nzcy1mb250LWxvYWRpbmctYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYW4gQXJyYXlCdWZm
ZXJWaWV3IGNhbiBiZSBzdWNjZXNzZnVsbHkgcGFzc2VkIHRvIHRoZSBGb250RmFjZSBjb25zdHJ1
Y3Rvci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm9udEZhY2UxLnN0
YXR1cyBpcyAibG9hZGVkIgorUEFTUyBmb250RmFjZTIuc3RhdHVzIGlzICJsb2FkZWQiCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9iZTEnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS53aWR0aCBpcyAxMDAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2JlMicpLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIGlzIDEwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitsIGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC9jc3MtZm9udC1sb2FkaW5nLWFycmF5YnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNhZjI0MWY0YTJlYzQ0MmI3ODJiMmIxMmYwMGZhZjMwMDMwYzAyODQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1ZmZlci5o
dG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0icHJvYmUxIiBzdHlsZT0iZm9udC1zaXplOiAxMDBweDsi
Pmw8L3NwYW4+Cis8c3BhbiBpZD0icHJvYmUyIiBzdHlsZT0iZm9udC1zaXplOiAxMDBweDsiPmw8
L3NwYW4+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQg
YW4gQXJyYXlCdWZmZXJWaWV3IGNhbiBiZSBzdWNjZXNzZnVsbHkgcGFzc2VkIHRvIHRoZSBGb250
RmFjZSBjb25zdHJ1Y3Rvci4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFy
IGZvbnRSZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Citmb250UmVxdWVzdC5vcGVuKCJH
RVQiLCAiLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmIik7Citmb250UmVxdWVzdC5yZXNwb25zZVR5
cGUgPSAiYXJyYXlidWZmZXIiOwordmFyIGZvbnRGYWNlMTsKK3ZhciBmb250RmFjZTI7Citmb250
UmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisJdmFyIGFycmF5
QnVmZmVyID0gZm9udFJlcXVlc3QucmVzcG9uc2U7CisJaWYgKGFycmF5QnVmZmVyKSB7CisJCXZh
ciBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7CisJCWZvbnRGYWNlMSA9
IG5ldyBGb250RmFjZSgiV2ViRm9udDEiLCBhcnJheUJ1ZmZlciwge30pOworCQlmb250RmFjZTIg
PSBuZXcgRm9udEZhY2UoIldlYkZvbnQyIiwgYnl0ZUFycmF5LCB7fSk7CisJCXNob3VsZEJlRXF1
YWxUb1N0cmluZygiZm9udEZhY2UxLnN0YXR1cyIsICJsb2FkZWQiKTsKKwkJc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJmb250RmFjZTIuc3RhdHVzIiwgImxvYWRlZCIpOworCQlkb2N1bWVudC5mb250
cy5hZGQoZm9udEZhY2UxKTsKKwkJZG9jdW1lbnQuZm9udHMuYWRkKGZvbnRGYWNlMik7CisJCWRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9iZTEiKS5zdHlsZS5mb250RmFtaWx5ID0gIldlYkZv
bnQxIjsKKwkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2JlMiIpLnN0eWxlLmZvbnRGYW1p
bHkgPSAiV2ViRm9udDIiOworCQlzaG91bGRFdmFsdWF0ZVRvKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncHJvYmUxJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgiLCAxMDApOworCQlz
aG91bGRFdmFsdWF0ZVRvKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvYmUyJykuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkud2lkdGgiLCAxMDApOworCQlmb250RmFjZTEubG9hZGVkLnRoZW4o
ZnVuY3Rpb24oKSB7CisJCQlyZXR1cm4gZm9udEZhY2UyLmxvYWRlZDsKKwkJfSwgZnVuY3Rpb24o
KSB7CisJCQl0ZXN0RmFpbGVkKCJmb250RmFjZTEncyBwcm9taXNlIHNob3VsZCBiZSBzdWNjZXNz
ZnVsIik7CisJCQlmaW5pc2hKU1Rlc3QoKTsKKwkJfSkudGhlbihmdW5jdGlvbigpIHsKKwkJCWZp
bmlzaEpTVGVzdCgpOworCQl9LCBmdW5jdGlvbigpIHsKKwkJCXRlc3RGYWlsZWQoImZvbnRGYWNl
MidzIHByb21pc2Ugc2hvdWxkIGJlIHN1Y2Nlc3NmdWwiKTsKKwkJCWZpbmlzaEpTVGVzdCgpOwor
CQl9KTsKKwl9IGVsc2UgeworCQl0ZXN0RmFpbGVkKCJYSFInaW5nIHRoZSBmb250IHNob3VsZCBi
ZSBzdWNjZXNzZnVsLiIpOworCQlmaW5pc2hKU1Rlc3QoKTsKKwl9Cit9KTsKK2ZvbnRSZXF1ZXN0
LnNlbmQoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUK
</data>
<flag name="review"
          id="302973"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278935</attachid>
            <date>2016-05-14 11:11:07 -0700</date>
            <delta_ts>2016-05-14 12:17:41 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-157694-20160514111200.patch</filename>
            <type>text/plain</type>
            <size>21986</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYzY2UwMDY4NjBhOGVm
MGI0ZTA4NzczYzU3ZDk0MjdkMWJlZTYwYi4uY2M4OWU4MDIyMjljMGQ2NjQyMTRmY2M4NDg4NDQz
YmQ3NWE3OTZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA1LTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBB
cnJheUJ1ZmZlclZpZXdzIGluIHRoZSBDU1MgRm9udCBMb2FkaW5nIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Njk0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNTU1NDI2Nz4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgbW9k
ZSB0byBDU1NGb250RmFjZVNvdXJjZSBmb3IgaW1tZWRpYXRlIChBcnJheUJ1ZmZlcikgZGF0YS4K
KyAgICAgICAgVGhlbiwgRm9udEZhY2UgY2FuIHNpbXBseSBiZSBob29rZWQgdXAgdG8gdGhpcyBu
ZXcgbW9kZS4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBU
ZXN0OiBmYXN0L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1ZmZlci5odG1sCisKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlU291cmNlOjpmb250KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoK
KyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6
OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRG
b250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaDoKKwogMjAxNi0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFsbG9jYXRlIE1hY0dseXBoVG9QYXRoVHJhbnNsYXRvciAvIENhaXJv
R2x5cGhUb1BhdGhUcmFuc2xhdG9yIG9uIHRoZSBzdGFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAKaW5kZXggNWMwZWY0NDM2YzViN2YwMjY3ZTgwZTg3NDQyNGE2NTk1
MDY1Y2I4MS4uZTk1NjU2ZjMwZDJmMzU2ZmM3YThkZmNhOTQyMDM1YjQzNjZjMjlkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0zNCw5ICszNCw4IEBACiAj
aW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUg
IkZvbnRDYWNoZS5oIgotI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgotCiAjaW5jbHVkZSAi
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgog
I2luY2x1ZGUgIlNWR1RvT1RGRm9udENvbnZlcnNpb24uaCIKIAogI2lmIEVOQUJMRShTVkdfRk9O
VFMpCkBAIC02OSwxMCArNjgsMTEgQEAgaW5saW5lIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OnNl
dFN0YXR1cyhTdGF0dXMgbmV3U3RhdHVzKQogICAgIG1fc3RhdHVzID0gbmV3U3RhdHVzOwogfQog
Ci1DU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVy
LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ2FjaGVkRm9udCogZm9udCwgU1ZHRm9u
dEZhY2VFbGVtZW50KiBmb250RmFjZSkKK0NTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNv
dXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBD
YWNoZWRGb250KiBmb250LCBTVkdGb250RmFjZUVsZW1lbnQqIGZvbnRGYWNlLCBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQogICAgIDogbV9mYW1pbHlOYW1l
T3JVUkkoZmFtaWx5TmFtZU9yVVJJKQogICAgICwgbV9mb250KGZvbnQpCiAgICAgLCBtX2ZhY2Uo
b3duZXIpCisgICAgLCBtX2ltbWVkaWF0ZVNvdXJjZShXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykp
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICAsIG1fc3ZnRm9udEZhY2VFbGVtZW50KGZvbnRG
YWNlKQogI2VuZGlmCkBAIC0xMzcsNiArMTM3LDE3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFj
ZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9v
CiAjZW5kaWYKIAogICAgIGlmICghbV9mb250ICYmICFmb250RmFjZUVsZW1lbnQpIHsKKyAgICAg
ICAgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CisgICAgICAgICAgICBpZiAoIW1faW1tZWRpYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSkgeworICAgICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7
CisgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5i
YXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoKmJ1
ZmZlciwgd3JhcHBpbmcpOworICAgICAgICAgICAgfSBpZiAoIW1faW1tZWRpYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgIHJldHVybiBGb250OjpjcmVhdGUoQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3Rv
bURhdGEoKm1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSwgZm9udERlc2NyaXB0aW9u
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRG
YWNlVmFyaWFudFNldHRpbmdzKSwgdHJ1ZSk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBXZSdy
ZSBsb2NhbC4gSnVzdCByZXR1cm4gYSBGb250IGZyb20gdGhlIG5vcm1hbCBjYWNoZS4KICAgICAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjaGVjayBhbHRlcm5hdGUgZm9udCBmYW1pbHkgbmFtZXMg
aGVyZSwgc28gcGFzcyB0cnVlIGFzIHRoZSBjaGVja2luZ0FsdGVybmF0ZU5hbWUgcGFyYW1ldGVy
LgogICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZv
bnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksICZmb250RmFjZUZlYXR1cmVzLCAmZm9u
dEZhY2VWYXJpYW50U2V0dGluZ3MsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAppbmRleCBlMjNiMjY4ZjZmZWFiODg4N2FkNjkzZTI0MGQwYTJhMzEwOThlYjcxLi4w
OGQ0NWE4ZGM0OWZkZTUxODRjMTc1YjBkNzZlMTkxZmFkNWJkODBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2Fj
aGVkRm9udENsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNyArNDYsNyBAQCBjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDU1NGb250RmFjZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBD
YWNoZWRGb250Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZU9yVVJJLCBDYWNoZWRGb250KiA9IG51bGxwdHIsIFNWR0ZvbnRGYWNlRWxlbWVu
dCogPSBudWxscHRyKTsKKyAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIs
IGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDYWNoZWRGb250KiA9IG51bGxwdHIsIFNW
R0ZvbnRGYWNlRWxlbWVudCogPSBudWxscHRyLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+
JiYgPSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwogCiAgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgPT4gU3VjY2VzcwpAQCAtODAsNiArODEsOCBAQCBwcml2
YXRlOgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNlLgog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBSZWZQdHI8U1ZHRm9udEZh
Y2VFbGVtZW50PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmlu
ZGV4IGFlZjVhZDM5YTNiNDgzODViNDFmYWY3OTUyZTQ1NmIyNjhkYWUxM2QuLjc4MmU3ZDM1ZGEw
ZTgwZTJmYmJiYWMzNjNmMzg0MTM5NjYzODFlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRGYWNl
LmgiCiAKKyNpbmNsdWRlICJDU1NGb250RmFjZVNvdXJjZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRG
ZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1ZhbHVlUG9vbC5oIgpAQCAtMzYsMTAgKzM3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIGJvb2wgcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihDU1NG
b250RmFjZSYgZm9udEZhY2UsIFJlZjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJiBhcnJheUJ1ZmZl
clZpZXcpCit7CisgICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNl
U291cmNlPihmb250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoYXJy
YXlCdWZmZXJWaWV3KSk7CisgICAgZm9udEZhY2UuYWRvcHRTb3VyY2UoV1RGTW92ZShzb3VyY2Up
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFJlZlB0cjxGb250RmFjZT4gRm9udEZhY2U6OmNy
ZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIGNvbnN0IERlc2NyaXB0b3JzJiBkZXNj
cmlwdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IEZvbnRGYWNlKGRvY3VtZW50LmZvbnRTZWxlY3RvcigpKSk7CiAKKyAgICBib29sIGRh
dGFSZXF1aXJlc0FzeW5jaHJvbm91c0xvYWRpbmcgPSB0cnVlOworCiAgICAgZWMgPSAwOwogICAg
IHJlc3VsdC0+c2V0RmFtaWx5KGZhbWlseSwgZWMpOwogICAgIGlmIChlYykKQEAgLTUyLDYgKzYy
LDExIEBAIFJlZlB0cjxGb250RmFjZT4gRm9udEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfQogICAgICAgICBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhyZXN1bHQt
PmJhY2tpbmcoKSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdmFsdWUpLCAmZG9jdW1lbnQsIGZh
bHNlKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZl
clZpZXcoc291cmNlKSkKKyAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9
IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5nKCksIGFycmF5
QnVmZmVyVmlldy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBlbHNlIGlmIChhdXRvIGFycmF5QnVm
ZmVyID0gdG9BcnJheUJ1ZmZlcihzb3VyY2UpKSB7CisgICAgICAgIGF1dG8gYXJyYXlCdWZmZXJW
aWV3ID0gSlNDOjpVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIDAsIGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5n
ID0gcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJy
YXlCdWZmZXJWaWV3LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIHJlc3VsdC0+c2V0
U3R5bGUoZGVzY3JpcHRvcnMuc3R5bGUsIGVjKTsKQEAgLTczLDYgKzg4LDExIEBAIFJlZlB0cjxG
b250RmFjZT4gRm9udEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERvY3VtZW50
JiBkb2N1bWVudCwgY29uCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIGlmICghZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZykgeworICAgICAgICByZXN1
bHQtPmJhY2tpbmcoKS5sb2FkKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQtPmJhY2tpbmcoKS5z
dGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNzKTsKKyAgICB9CisKICAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKaW5kZXggYTMwN2Y2OWJjYmYyNzNiNzE3ZjNiNDg5NzlhN2U1ODZkMWE5
MGVhZS4uYmZhNDEwYTVkNjcwNmFmY2FiMWFiNjg4NzJiZDQ2YjgzZWQyNzc2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtOTIsMTkgKzkyLDkgQEAg
Ym9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQo
KSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIoZGF0YSk7Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGlmIChpc1dP
RkYoYnVmZmVyLmdldCgpKSkgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnZlcnRlZEZv
bnQ7Ci0gICAgICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlci5nZXQoKSwgY29u
dmVydGVkRm9udCkpCi0gICAgICAgICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVj
dG9yKGNvbnZlcnRlZEZvbnQpOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KCpidWZmZXIpIDogbnVsbHB0cjsKLSAgICAgICAgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGlu
Z1Jlc291cmNlID0gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmIChidWZmZXIgPT0gbV9kYXRh
KTsKKyAgICAgICAgYm9vbCB3cmFwcGluZzsKKyAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlQ3VzdG9tRm9udERhdGEoKmJ1ZmZlciwgd3JhcHBpbmcpOworICAgICAgICBt
X2hhc0NyZWF0ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2UgPSBtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEgJiYgd3JhcHBpbmc7CiAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
KQogICAgICAgICAgICAgc2V0U3RhdHVzKERlY29kZUVycm9yKTsKICAgICB9CkBAIC0xMTIsMjAg
KzEwMiw0NCBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1
ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwog
fQogCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6
Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgYm9vbCYgd3JhcHBpbmcp
Cit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gJmJ5dGVzOworICAgIHdyYXBw
aW5nID0gdHJ1ZTsKKworI2lmICFQTEFURk9STShDT0NPQSkKKyAgICBpZiAoaXNXT0ZGKCpidWZm
ZXIpKSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiBjb252ZXJ0ZWRGb250OworICAgICAgICBpZiAo
IWNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQorICAgICAgICAgICAg
YnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjphZG9wdFZlY3Rvcihjb252ZXJ0ZWRGb250KTsKKyAgICAgICAgd3JhcHBpbmcg
PSBmYWxzZTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIpIDogbnVsbHB0cjsKK30KKwogUmVmUHRyPEZvbnQ+
IENhY2hlZEZvbnQ6OmNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmIGZvbnRGYWNlRmVhdHVyZXMs
IGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKQogewot
ICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9udERl
c2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVy
ZXMsIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBG
b250OjpjcmVhdGUocGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9udERlc2NyaXB0aW9uLCBz
eW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNl
VmFyaWFudFNldHRpbmdzKSwgdHJ1ZSk7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGEgQ2FjaGVkRm9u
dDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0
dGluZ3MmIGZvbnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIGZvbnRG
YWNlVmFyaWFudFNldHRpbmdzKQogewogICAgIEFTU0VSVChtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOworICAgIHJldHVybiBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSgqbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhLCBmb250RGVzY3JpcHRpb24sIGJvbGQsIGl0YWxpYywgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MpOworfQorCitGb250UGxhdGZvcm1EYXRhIENh
Y2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEmIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERl
c2NyaXB0aW9uLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRp
bmdzJiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzJiBmb250RmFj
ZVZhcmlhbnRTZXR0aW5ncykKK3sKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhLT5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwg
Ym9sZCwgaXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZVZhcmlhbnRTZXR0aW5ncyk7
CisgICAgcmV0dXJuIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZm9udFBsYXRmb3JtRGF0YShmb250
RGVzY3JpcHRpb24sIGJvbGQsIGl0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VWYXJp
YW50U2V0dGluZ3MpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZm9udEZhY2VGZWF0dXJlcyk7
CiAgICAgVU5VU0VEX1BBUkFNKGZvbnRGYWNlVmFyaWFudFNldHRpbmdzKTsKLSAgICByZXR1cm4g
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLT5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlv
biwgYm9sZCwgaXRhbGljKTsKKyAgICByZXR1cm4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5mb250
UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGljKTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBkMTE4OGU3ZDRh
YzlhYzUzNDBhNTYwZDQzODMyY2U3MzVlNmVkZjgwLi5lNThjOWUwOTVjNDlmZWZlMjE3YTNhNjdi
MDA2ZjVmNTQ1MWFjMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgcmVtb3RlVVJJKTsKIAorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBGb250UGxh
dGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25z
dCBGb250RmVhdHVyZVNldHRpbmdzJiwgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYpOworCiAg
ICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
LCBjb25zdCBBdG9taWNTdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIGNvbnN0IEZvbnRW
YXJpYW50U2V0dGluZ3MmKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IDYxYTU4YjkwNDgzNWQy
NTllNWQ4NmVjNWQ5MjQwN2I1Mzk4NDA4M2IuLjQyMGZhNDhkZmNjMzQ4N2YyMjg1YjE0MDAyZDg5
MDlhNmY2YzEwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDI1ICszNywyNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIHNp
emVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewot
ICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLT5zaXplKCkpOwotICAgIGlm
IChidWZmZXItPnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCisgICAgQVNTRVJUX0FS
RyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAoYnVmZmVyLnNpemUo
KSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHZhbHVlID0gbnRvaGwoKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQzMl90Kj4oYnVm
ZmVyLT5kYXRhKCkgKyBvZmZzZXQpKTsKKyAgICB2YWx1ZSA9IG50b2hsKCpyZWludGVycHJldF9j
YXN0X3B0cjxjb25zdCB1aW50MzJfdCo+KGJ1ZmZlci5kYXRhKCkgKyBvZmZzZXQpKTsKICAgICBv
ZmZzZXQgKz0gc2l6ZW9mKHZhbHVlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
Ym9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWlu
dDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKLSAgICBBU1NFUlRfQVJHKG9m
ZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBpZiAoYnVmZmVyLT5zaXplKCkg
LSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQorICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXpl
b2YodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB2YWx1ZSA9IG50b2hzKCpy
ZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MTZfdCo+KGJ1ZmZlci0+ZGF0YSgpICsgb2Zm
c2V0KSk7CisgICAgdmFsdWUgPSBudG9ocygqcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWlu
dDE2X3QqPihidWZmZXIuZGF0YSgpICsgb2Zmc2V0KSk7CiAgICAgb2Zmc2V0ICs9IHNpemVvZih2
YWx1ZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wg
d3JpdGVVSW50MTYoVmVjdG9yPGNoYXI+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0
aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAq
LwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90
IHNpZ25hdHVyZTsKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiAjZW5kaWYKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIq
IHdvZmYsIFZlY3RvcjxjaGFyPiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50
LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTEwNSw4ICsxMDUsOCBAQCBib29sIGNvbnZlcnRXT0ZG
VG9TZm50KFNoYXJlZEJ1ZmZlciogd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogCiAjaWYgVVNF
KFdPRkYyKQogICAgIGlmIChzaWduYXR1cmUgPT0gd29mZjI6OmtXb2ZmMlNpZ25hdHVyZSkgewot
ICAgICAgICBjb25zdCB1aW50OF90KiB3b2ZmRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNv
bnN0IHVpbnQ4X3QqPih3b2ZmLT5kYXRhKCkpOwotICAgICAgICBjb25zdCBzaXplX3Qgd29mZlNp
emUgPSB3b2ZmLT5zaXplKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHdvZmZEYXRhID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDhfdCo+KHdvZmYuZGF0YSgpKTsKKyAgICAgICAg
Y29uc3Qgc2l6ZV90IHdvZmZTaXplID0gd29mZi5zaXplKCk7CiAgICAgICAgIGNvbnN0IHNpemVf
dCBzZm50U2l6ZSA9IHdvZmYyOjpDb21wdXRlV09GRjJGaW5hbFNpemUod29mZkRhdGEsIHdvZmZT
aXplKTsKIAogICAgICAgICBpZiAoIXNmbnQudHJ5UmVzZXJ2ZUNhcGFjaXR5KHNmbnRTaXplKSkK
QEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciog
d29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1
aW50MzJfdCBsZW5ndGg7Ci0gICAgaWYgKCFyZWFkVUludDMyKHdvZmYsIG9mZnNldCwgbGVuZ3Ro
KSB8fCBsZW5ndGggIT0gd29mZi0+c2l6ZSgpKQorICAgIGlmICghcmVhZFVJbnQzMih3b2ZmLCBv
ZmZzZXQsIGxlbmd0aCkgfHwgbGVuZ3RoICE9IHdvZmYuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICB1aW50MTZfdCBudW1UYWJsZXM7CkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9v
bCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIqIHdvZmYsIFZlY3RvcjxjaGFyPiYgc2Zu
dCkKICAgICBpZiAoIXJlYWRVSW50MzIod29mZiwgb2Zmc2V0LCB0b3RhbFNmbnRTaXplKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHdvZmYtPnNpemUoKSAtIG9mZnNldCA8IHNp
emVvZih1aW50MTZfdCkgKyBzaXplb2YodWludDE2X3QpICsgc2l6ZW9mKHVpbnQzMl90KSArIHNp
emVvZih1aW50MzJfdCkgKyBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVpbnQzMl90KSArIHNp
emVvZih1aW50MzJfdCkpCisgICAgaWYgKHdvZmYuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHVp
bnQxNl90KSArIHNpemVvZih1aW50MTZfdCkgKyBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVp
bnQzMl90KSArIHNpemVvZih1aW50MzJfdCkgKyBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVp
bnQzMl90KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgb2Zmc2V0ICs9IHNpemVvZih1
aW50MTZfdCk7IC8vIG1ham9yVmVyc2lvbgpAQCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgY29udmVy
dFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyKiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpCiAgICAg
b2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7IC8vIHByaXZMZW5ndGgKIAogICAgIC8vIENoZWNr
IGlmIHRoZSBXT0ZGIGNhbiBzdXBwbHkgYXMgbWFueSB0YWJsZXMgYXMgaXQgY2xhaW1zIGl0IGhh
cy4KLSAgICBpZiAod29mZi0+c2l6ZSgpIC0gb2Zmc2V0IDwgbnVtVGFibGVzICogNSAqIHNpemVv
Zih1aW50MzJfdCkpCisgICAgaWYgKHdvZmYuc2l6ZSgpIC0gb2Zmc2V0IDwgbnVtVGFibGVzICog
NSAqIHNpemVvZih1aW50MzJfdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFdy
aXRlIHRoZSBzZm50IG9mZnNldCBzdWJ0YWJsZS4KQEAgLTIwMSw3ICsyMDEsNyBAQCBib29sIGNv
bnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciogd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQog
ICAgICAgICBpZiAoIXJlYWRVSW50MzIod29mZiwgb2Zmc2V0LCB0YWJsZUNvbXBMZW5ndGgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0YWJsZU9mZnNldCA+IHdv
ZmYtPnNpemUoKSB8fCB0YWJsZUNvbXBMZW5ndGggPiB3b2ZmLT5zaXplKCkgLSB0YWJsZU9mZnNl
dCkKKyAgICAgICAgaWYgKHRhYmxlT2Zmc2V0ID4gd29mZi5zaXplKCkgfHwgdGFibGVDb21wTGVu
Z3RoID4gd29mZi5zaXplKCkgLSB0YWJsZU9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICB1aW50MzJfdCB0YWJsZU9yaWdMZW5ndGg7CkBAIC0yMjUsNyArMjI1LDcg
QEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIqIHdvZmYsIFZlY3RvcjxjaGFy
PiYgc2ZudCkKIAogICAgICAgICBpZiAodGFibGVDb21wTGVuZ3RoID09IHRhYmxlT3JpZ0xlbmd0
aCkgewogICAgICAgICAgICAgLy8gVGhlIHRhYmxlIGlzIG5vdCBjb21wcmVzc2VkLgotICAgICAg
ICAgICAgaWYgKCFzZm50LnRyeUFwcGVuZCh3b2ZmLT5kYXRhKCkgKyB0YWJsZU9mZnNldCwgdGFi
bGVDb21wTGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICghc2ZudC50cnlBcHBlbmQod29mZi5kYXRh
KCkgKyB0YWJsZU9mZnNldCwgdGFibGVDb21wTGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB1TG9uZ2YgZGVzdExlbiA9
IHRhYmxlT3JpZ0xlbmd0aDsKQEAgLTIzMyw3ICsyMzMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KFNoYXJlZEJ1ZmZlciogd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIEJ5dGVmKiBkZXN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxCeXRlZio+KHNmbnQuZW5kKCkpOwogICAgICAgICAgICAgc2ZudC5ncm93KHNmbnQuc2l6
ZSgpICsgdGFibGVPcmlnTGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICh1bmNvbXByZXNzKGRlc3Qs
ICZkZXN0TGVuLCByZWludGVycHJldF9jYXN0PGNvbnN0IEJ5dGVmKj4od29mZi0+ZGF0YSgpICsg
dGFibGVPZmZzZXQpLCB0YWJsZUNvbXBMZW5ndGgpICE9IFpfT0spCisgICAgICAgICAgICBpZiAo
dW5jb21wcmVzcyhkZXN0LCAmZGVzdExlbiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCeXRlZio+
KHdvZmYuZGF0YSgpICsgdGFibGVPZmZzZXQpLCB0YWJsZUNvbXBMZW5ndGgpICE9IFpfT0spCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGRlc3RMZW4gIT0g
dGFibGVPcmlnTGVuZ3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IGM2
ODkyZmRlMTg0ZTBlN2Q3MTNhZTc5ZmU2MzQ5N2Q4MGQ1ODVkNjUuLjQ0YzM4MjQ1ZDkxZWEwNjA1
ODViNDI4Y2FhNGU3OGNlYWUxY2RiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzMsMTEgKzMzLDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRo
ZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXIqIGJ1ZmZl
cik7Citib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0
aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRv
IHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSku
IE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8g
c2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyKiB3b2ZmLCBWZWN0b3I8
Y2hhcj4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3RvcjxjaGFyPiYgc2ZudCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDVjYTEwOTcyNTgzZGJmZmJhNjEzMGFlOTUyMDQxOWRkZTRmODAwODcuLjUxMTc5ZTk5YTM4M2My
YWJhNzc2MTE0N2Q2Nzc0Yjg0YmIyYmE4NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0w
NS0xNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgQXJyYXlCdWZmZXJWaWV3cyBpbiB0aGUgQ1NTIEZvbnQgTG9hZGluZyBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzY5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjU1NTQyNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBmYXN0L3RleHQvY3NzLWZvbnQtbG9hZGluZy1hcnJheWJ1
ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9jc3MtZm9udC1s
b2FkaW5nLWFycmF5YnVmZmVyLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA1LTEzICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsIHNjcm9sbGluZyBoZWlnaHQvd2lk
dGggdmFsdWVzIHNob3VsZCBiZSBpbnRlZ3JhbCByb3VuZGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2Nzcy1mb250LWxvYWRpbmctYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2Nzcy1mb250LWxvYWRpbmctYXJyYXlidWZmZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyODEzMWM4ZjA5OGJjOTBiODQzOTliY2U2Njg3ZmQzYmI2
MjRmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvY3NzLWZvbnQt
bG9hZGluZy1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0
ZXN0IG1ha2VzIHN1cmUgdGhhdCBhbiBBcnJheUJ1ZmZlclZpZXcgY2FuIGJlIHN1Y2Nlc3NmdWxs
eSBwYXNzZWQgdG8gdGhlIEZvbnRGYWNlIGNvbnN0cnVjdG9yLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBmb250RmFjZTEuc3RhdHVzIGlzICJsb2FkZWQiCitQQVNTIGZv
bnRGYWNlMi5zdGF0dXMgaXMgImxvYWRlZCIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Byb2JlMScpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIGlzIDEwMAorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncHJvYmUyJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lk
dGggaXMgMTAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK2wgbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2Nzcy1mb250LWxvYWRp
bmctYXJyYXlidWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9jc3MtZm9udC1sb2Fk
aW5nLWFycmF5YnVmZmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FmMjQxZjRhMmVjNDQyYjc4MmIyYjEy
ZjAwZmFmMzAwMzBjMDI4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC9jc3MtZm9udC1sb2FkaW5nLWFycmF5YnVmZmVyLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzcGFuIGlkPSJw
cm9iZTEiIHN0eWxlPSJmb250LXNpemU6IDEwMHB4OyI+bDwvc3Bhbj4KKzxzcGFuIGlkPSJwcm9i
ZTIiIHN0eWxlPSJmb250LXNpemU6IDEwMHB4OyI+bDwvc3Bhbj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhbiBBcnJheUJ1ZmZlclZpZXcgY2FuIGJl
IHN1Y2Nlc3NmdWxseSBwYXNzZWQgdG8gdGhlIEZvbnRGYWNlIGNvbnN0cnVjdG9yLiIpOword2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZm9udFJlcXVlc3QgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKK2ZvbnRSZXF1ZXN0Lm9wZW4oIkdFVCIsICIuLi8uLi9yZXNvdXJjZXMvQWhl
bS50dGYiKTsKK2ZvbnRSZXF1ZXN0LnJlc3BvbnNlVHlwZSA9ICJhcnJheWJ1ZmZlciI7Cit2YXIg
Zm9udEZhY2UxOwordmFyIGZvbnRGYWNlMjsKK2ZvbnRSZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBmdW5jdGlvbigpIHsKKwl2YXIgYXJyYXlCdWZmZXIgPSBmb250UmVxdWVzdC5yZXNw
b25zZTsKKwlpZiAoYXJyYXlCdWZmZXIpIHsKKwkJdmFyIGJ5dGVBcnJheSA9IG5ldyBVaW50OEFy
cmF5KGFycmF5QnVmZmVyKTsKKwkJZm9udEZhY2UxID0gbmV3IEZvbnRGYWNlKCJXZWJGb250MSIs
IGFycmF5QnVmZmVyLCB7fSk7CisJCWZvbnRGYWNlMiA9IG5ldyBGb250RmFjZSgiV2ViRm9udDIi
LCBieXRlQXJyYXksIHt9KTsKKwkJc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmb250RmFjZTEuc3Rh
dHVzIiwgImxvYWRlZCIpOworCQlzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZvbnRGYWNlMi5zdGF0
dXMiLCAibG9hZGVkIik7CisJCWRvY3VtZW50LmZvbnRzLmFkZChmb250RmFjZTEpOworCQlkb2N1
bWVudC5mb250cy5hZGQoZm9udEZhY2UyKTsKKwkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBy
b2JlMSIpLnN0eWxlLmZvbnRGYW1pbHkgPSAiV2ViRm9udDEiOworCQlkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicHJvYmUyIikuc3R5bGUuZm9udEZhbWlseSA9ICJXZWJGb250MiI7CisJCXNob3Vs
ZEV2YWx1YXRlVG8oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9iZTEnKS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS53aWR0aCIsIDEwMCk7CisJCXNob3VsZEV2YWx1YXRlVG8oImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwcm9iZTInKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCIs
IDEwMCk7CisJCWZvbnRGYWNlMS5sb2FkZWQudGhlbihmdW5jdGlvbigpIHsKKwkJCXJldHVybiBm
b250RmFjZTIubG9hZGVkOworCQl9LCBmdW5jdGlvbigpIHsKKwkJCXRlc3RGYWlsZWQoImZvbnRG
YWNlMSdzIHByb21pc2Ugc2hvdWxkIGJlIHN1Y2Nlc3NmdWwiKTsKKwkJCWZpbmlzaEpTVGVzdCgp
OworCQl9KS50aGVuKGZ1bmN0aW9uKCkgeworCQkJZmluaXNoSlNUZXN0KCk7CisJCX0sIGZ1bmN0
aW9uKCkgeworCQkJdGVzdEZhaWxlZCgiZm9udEZhY2UyJ3MgcHJvbWlzZSBzaG91bGQgYmUgc3Vj
Y2Vzc2Z1bCIpOworCQkJZmluaXNoSlNUZXN0KCk7CisJCX0pOworCX0gZWxzZSB7CisJCXRlc3RG
YWlsZWQoIlhIUidpbmcgdGhlIGZvbnQgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwuIik7CisJCWZpbmlz
aEpTVGVzdCgpOworCX0KK30pOworZm9udFJlcXVlc3Quc2VuZCgpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>