<?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>153348</bug_id>
          
          <creation_ts>2016-01-22 01:15:40 -0800</creation_ts>
          <short_desc>[Font Loading] Implement FontFaceSet</short_desc>
          <delta_ts>2016-06-18 02:07:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>153346</blocked>
    
    <blocked>153918</blocked>
    
    <blocked>158884</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1157615</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-01-22 01:15:40 -0800</bug_when>
    <thetext>Much of this implementation can perhaps be ported from the existing &quot;FontLoader&quot; class that&apos;s already in the tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160025</commentid>
    <comment_count>1</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-01-28 21:57:35 -0800</bug_when>
    <thetext>*** Bug 153642 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160026</commentid>
    <comment_count>2</comment_count>
      <attachid>270184</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-01-28 21:59:55 -0800</bug_when>
    <thetext>Created attachment 270184
Applied on top of attachment 270144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160408</commentid>
    <comment_count>3</comment_count>
      <attachid>270290</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-01-29 21:29:34 -0800</bug_when>
    <thetext>Created attachment 270290
Applied on top of attachment 270144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160415</commentid>
    <comment_count>4</comment_count>
      <attachid>270293</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-01-29 21:41:43 -0800</bug_when>
    <thetext>Created attachment 270293
Applied on top of attachment 270144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160984</commentid>
    <comment_count>5</comment_count>
      <attachid>270415</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-01 13:04:59 -0800</bug_when>
    <thetext>Created attachment 270415
Applied on top of attachment 270144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161073</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-01 15:43:05 -0800</bug_when>
    <thetext>We need to support iteration. Iteration must iterate in document-order, followed by non-CSS-connected fonts in insertion order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161075</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-01 15:44:00 -0800</bug_when>
    <thetext>Adding a font that is CSS-Connected needs to throw a InvalidModificationError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161077</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-01 15:46:04 -0800</bug_when>
    <thetext>We need our loading/loaded status to match our constituent FontFaces. add() and remove() need to be updated to maintain this invariant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161079</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-01 15:47:55 -0800</bug_when>
    <thetext>We need to implement event triggering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161142</commentid>
    <comment_count>10</comment_count>
      <attachid>270455</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-01 17:14:22 -0800</bug_when>
    <thetext>Created attachment 270455
Applied on top of attachment 270144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161224</commentid>
    <comment_count>11</comment_count>
      <attachid>270477</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-02 01:08:02 -0800</bug_when>
    <thetext>Created attachment 270477
Applied on top of attachment 270478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165421</commentid>
    <comment_count>12</comment_count>
      <attachid>271512</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-16 17:32:30 -0800</bug_when>
    <thetext>Created attachment 271512
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165478</commentid>
    <comment_count>13</comment_count>
      <attachid>271522</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-16 19:57:30 -0800</bug_when>
    <thetext>Created attachment 271522
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165491</commentid>
    <comment_count>14</comment_count>
      <attachid>271529</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-16 21:10:05 -0800</bug_when>
    <thetext>Created attachment 271529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165493</commentid>
    <comment_count>15</comment_count>
      <attachid>271529</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-16 21:13:26 -0800</bug_when>
    <thetext>Comment on attachment 271529
Patch

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

&gt; LayoutTests/fast/text/font-face-set-javascript.html:24
&gt; +var item = iterator.next();

I should test that fonts are iterated in insertion order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165612</commentid>
    <comment_count>16</comment_count>
      <attachid>271529</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-17 10:09:02 -0800</bug_when>
    <thetext>Comment on attachment 271529
Patch

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

&gt; Source/WebCore/css/FontFaceSet.cpp:135
&gt; +        if (face.get().status() == CSSFontFace::Status::Failure) {

This failure check should occur before we add anything to m_pendingPromises.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165779</commentid>
    <comment_count>17</comment_count>
      <attachid>271529</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-02-17 15:57:09 -0800</bug_when>
    <thetext>Comment on attachment 271529
Patch

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

&gt; Source/WebCore/css/CSSFontFace.h:2
&gt; - * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2016 Apple Inc. All rights reserved.

You should preserve the 2007,2008 dates.

&gt; Source/WebCore/css/CSSFontFace.h:52
&gt; +    static Ref&lt;CSSFontFace&gt; create(CSSFontSelector&amp; fontSelector, FontFace* wrapper = nullptr, bool isLocalFallback = false) { return adoptRef(*new CSSFontFace(fontSelector, wrapper, isLocalFallback)); }

Should not all be on one line.

&gt; Source/WebCore/css/CSSFontFace.h:96
&gt; +        virtual void kick(CSSFontFace&amp;) { };

Kick is not a very descriptive name. Please choose a new one.

&gt; Source/WebCore/css/CSSFontFaceSet.cpp:88
&gt; +    for (size_t i = 0; i &lt; m_faces.size(); ++i) {

Use a modern loop?

&gt; Source/WebCore/css/CSSFontFaceSet.cpp:97
&gt; +    ASSERT_NOT_REACHED();

Is it really impossible to hit this, even with bad JS?

&gt; Source/WebCore/css/CSSFontFaceSet.cpp:112
&gt; +static bool familiesIntersect(CSSFontFace&amp; face, const CSSValueList&amp; request)

const CSSFontFace&amp;

&gt; Source/WebCore/css/CSSFontFaceSet.h:49
&gt; +    bool has(const CSSFontFace&amp;) const;

I would prefer hasFace()

&gt; Source/WebCore/css/CSSFontFaceSet.h:50
&gt; +    size_t size() const { return m_faces.size(); }

Never really happy with size() as a count, since it&apos;s ambiguous with byte size.

&gt; Source/WebCore/css/CSSFontFaceSet.h:73
&gt; +    Status m_status { Status::Loaded };

Seems odd that the initial state is Loaded?

&gt; Source/WebCore/css/CSSSegmentedFontFace.cpp:58
&gt; +void CSSSegmentedFontFace::kick(CSSFontFace&amp;)

Donut know what &quot;kick&quot; means.

&gt; Source/WebCore/css/FontFaceSet.h:57
&gt; +    bool has(FontFace*) const;
&gt; +    size_t size() const;

Ditto.

&gt; Source/WebCore/css/FontFaceSet.h:88
&gt; +    using RefCounted&lt;FontFaceSet&gt;::ref;
&gt; +    using RefCounted&lt;FontFaceSet&gt;::deref;

Why do you need these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165786</commentid>
    <comment_count>18</comment_count>
      <attachid>271529</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-17 16:12:43 -0800</bug_when>
    <thetext>Comment on attachment 271529
Patch

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

&gt; Source/WebCore/css/CSSFontFaceSet.cpp:119
&gt; +    for (auto &amp;family1 : faceFamilies) {

auto&amp;

&gt; Source/WebCore/css/CSSFontFaceSet.cpp:165
&gt; +    for (auto face : matchingFaces)

auto&amp;?

&gt; Source/WebCore/css/CSSFontFaceSet.cpp:175
&gt; +    for (auto face : matchingFaces) {

auto&amp;?

&gt; Source/WebCore/css/CSSFontFaceSet.h:44
&gt; +class CSSFontFaceSet : public CSSFontFace::Client {

final?

&gt; Source/WebCore/css/FontFace.h:2
&gt; + * Copyright (C) 2016 Apple Inc. All rights reserved.

should keep the old dates.

&gt; Source/WebCore/css/FontFaceSet.cpp:123
&gt; +    if (!matchingFaces.size()) {

matchingFaces.isEmpty() is a tad more readable.

&gt; Source/WebCore/css/FontFaceSet.cpp:128
&gt; +    for (auto face : matchingFaces)

auto&amp;

&gt; Source/WebCore/css/FontFaceSet.cpp:133
&gt; +    for (auto face : matchingFaces) {

auto&amp;

&gt; Source/WebCore/css/FontFaceSet.cpp:142
&gt; +        auto&amp; vec = m_pendingPromises.add(RefPtr&lt;FontFace&gt;(face.get().wrapper()), Vector&lt;Ref&lt;PendingPromise&gt;&gt;()).iterator-&gt;value;

vector

&gt; Source/WebCore/css/FontFaceSet.h:46
&gt; +class FontFaceSet : public RefCounted&lt;FontFaceSet&gt;, public CSSFontFaceSetClient, public EventTargetWithInlineData, public ActiveDOMObject {

final?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165932</commentid>
    <comment_count>19</comment_count>
      <attachid>271529</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-17 22:28:06 -0800</bug_when>
    <thetext>Comment on attachment 271529
Patch

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

&gt;&gt; Source/WebCore/css/CSSFontFaceSet.cpp:88
&gt;&gt; +    for (size_t i = 0; i &lt; m_faces.size(); ++i) {
&gt; 
&gt; Use a modern loop?

I use &quot;i&quot; below. m_faces.remove(i);

&gt;&gt; Source/WebCore/css/CSSFontFaceSet.cpp:97
&gt;&gt; +    ASSERT_NOT_REACHED();
&gt; 
&gt; Is it really impossible to hit this, even with bad JS?

Yes, FontFaceSet is an intermediary between JavaScript and this function, and it will only call this function if CSSFontFaceSet::has().

Like Darin says: &quot;No aspirational ASSERT()s!&quot;

&gt;&gt; Source/WebCore/css/CSSFontFaceSet.cpp:165
&gt;&gt; +    for (auto face : matchingFaces)
&gt; 
&gt; auto&amp;?

Wow, my testing didn&apos;t catch this because &quot;face&quot; is a std::reference_wrapper :|

&gt;&gt; Source/WebCore/css/CSSFontFaceSet.h:50
&gt;&gt; +    size_t size() const { return m_faces.size(); }
&gt; 
&gt; Never really happy with size() as a count, since it&apos;s ambiguous with byte size.

I think it&apos;s more valuable to be consistent with C++ conventions rather than (weirdly) use Obj-C conventions.

&gt;&gt; Source/WebCore/css/CSSFontFaceSet.h:73
&gt;&gt; +    Status m_status { Status::Loaded };
&gt; 
&gt; Seems odd that the initial state is Loaded?

The state is &quot;loaded&quot; iff there are 0 loads active. Otherwise, the state is &quot;loading.&quot;

&gt;&gt; Source/WebCore/css/FontFaceSet.h:88
&gt;&gt; +    using RefCounted&lt;FontFaceSet&gt;::deref;
&gt; 
&gt; Why do you need these?

RefCounted has a ref() and deref() function, and EventTarget has a ref() and deref() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165935</commentid>
    <comment_count>20</comment_count>
      <attachid>271529</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-17 22:28:52 -0800</bug_when>
    <thetext>Comment on attachment 271529
Patch

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

&gt;&gt;&gt; Source/WebCore/css/CSSFontFaceSet.h:50
&gt;&gt;&gt; +    size_t size() const { return m_faces.size(); }
&gt;&gt; 
&gt;&gt; Never really happy with size() as a count, since it&apos;s ambiguous with byte size.
&gt; 
&gt; I think it&apos;s more valuable to be consistent with C++ conventions rather than (weirdly) use Obj-C conventions.

What do you think I should name it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165941</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-02-17 22:39:07 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 271529 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271529&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/css/CSSFontFaceSet.h:50
&gt; &gt;&gt;&gt; +    size_t size() const { return m_faces.size(); }
&gt; &gt;&gt; 
&gt; &gt;&gt; Never really happy with size() as a count, since it&apos;s ambiguous with byte size.
&gt; &gt; 
&gt; &gt; I think it&apos;s more valuable to be consistent with C++ conventions rather than (weirdly) use Obj-C conventions.
&gt; 
&gt; What do you think I should name it?

faceCount? numberOfFaces()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165946</commentid>
    <comment_count>22</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-17 23:26:01 -0800</bug_when>
    <thetext>Committed r196747: &lt;http://trac.webkit.org/changeset/196747&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270184</attachid>
            <date>2016-01-28 21:59:55 -0800</date>
            <delta_ts>2016-01-29 21:28:08 -0800</delta_ts>
            <desc>Applied on top of attachment 270144</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20941</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGY3NTAxZGQ5YjlhMWRjZjY1MTU4ZjMwYTE5Y2NlOTE1ZTc5MmU1OWYKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgSmFuIDI4
IDE4OjUzOjU0IDIwMTYgLTA4MDAKCiAgICBGb250RmFjZVNldAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggNTg3ZDcwZS4uNTgyZTE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTMzOCw2ICsz
MzgsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9Db3VudGVyLmlk
bAogICAgIGNzcy9ET01XaW5kb3dDU1MuaWRsCiAgICAgY3NzL0ZvbnRGYWNlLmlkbAorICAgIGNz
cy9Gb250RmFjZVNldC5pZGwKICAgICBjc3MvRm9udExvYWRlci5pZGwKICAgICBjc3MvTWVkaWFM
aXN0LmlkbAogICAgIGNzcy9NZWRpYVF1ZXJ5TGlzdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IGRhNTE0ZTcuLjM1Yzk2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjQwLDYgKzI0MCw3IEBAIE5PTl9TVkdfQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvY3NzL0NvdW50ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01XaW5kb3dD
U1MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAorICAgICQoV2ViQ29y
ZSkvY3NzL0ZvbnRGYWNlU2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRm9udExvYWRlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL01lZGlhTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL01lZGlhUXVlcnlMaXN0LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2FkNzliYS4uNGUxMDI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg5
Nyw2ICs1ODk3LDExIEBACiAJCUMyQzczQkVGMUM1NUIwMUQwMERGNkI2QiAvKiBJbW1lZGlhdGVG
b250RmFjZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJDNzNCRUQxQzU1QjAxQzAwREY2QjZCIC8qIEltbWVkaWF0ZUZvbnRGYWNlU291cmNl
LmggKi87IH07CiAJCUMyQzczQkYyMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9u
dEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJDNzNCRjAxQzU1QzM1QzAwREY2QjZCIC8qIEluRG9jdW1lbnRTVkdGb250RmFjZVNv
dXJjZS5jcHAgKi87IH07CiAJCUMyQzczQkYzMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50
U1ZHRm9udEZhY2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyQzczQkYxMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9udEZh
Y2VTb3VyY2UuaCAqLzsgfTsKKwkJQzJEMTVBREMxQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZh
Y2VTZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJEMTVBREExQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3Bw
ICovOyB9OworCQlDMkQxNUFFMjFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBRTAxQzVC
MEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJQzJEMTVBRTMxQzVCMEZC
MzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMkQxNUFFMTFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQu
aCAqLzsgfTsKKwkJQzJEMTVBRTQxQzVCMkEzMjAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBREUx
QzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovOyB9OworCQlDMkQxNUFFNTFD
NUIyQTNGMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBREYxQzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9u
dEZhY2VTZXQuaCAqLzsgfTsKIAkJQzJERTZDM0QxQzUxRDkxNzAwRDc3NEQzIC8qIEpTRm9udEZh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREU2
QzNDMUM1MUQ4RkEwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmggKi87IH07CiAJCUMyREU2QzNFMUM1
MUQ5MUIwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREU2QzNCMUM1MUQ4RkEwMEQ3NzREMyAvKiBKU0ZvbnRG
YWNlLmNwcCAqLzsgfTsKIAkJQzJERTZDNDAxQzUxREIyMDAwRDc3NEQzIC8qIEZvbnRGYWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRFNkMzRjFD
NTFEQjBEMDBENzc0RDMgLyogRm9udEZhY2UuaCAqLzsgfTsKQEAgLTEzNzc0LDYgKzEzNzc5LDEy
IEBACiAJCUMyQzczQkVEMUM1NUIwMUMwMERGNkI2QiAvKiBJbW1lZGlhdGVGb250RmFjZVNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbW1lZGlhdGVGb250RmFjZVNv
dXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM3M0JGMDFDNTVDMzVDMDBE
RjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluRG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzczQkYxMUM1NUMzNUMwMERGNkI2QiAvKiBJ
bkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyRDE1QUQ5MUM1QjA5QkUwMDExQTMwMCAvKiBGb250RmFjZVNldC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2VTZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMkQxNUFEQTFDNUIwQ0VFMDAxMUEzMDAgLyogSlNGb250RmFjZVNldEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNlU2V0
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJEMTVBREUxQzVCMEUy
MzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyRDE1QURGMUM1QjBFMjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzJEMTVBRTAxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYWNlU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJEMTVBRTExQzVCMEZCMzAwMTFBMzAwIC8q
IEZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYWNl
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyREU2QzNBMUM1MUQ1OTAwMEQ3
NzREMyAvKiBGb250RmFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2UuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRFNkMzQjFDNTFEOEZBMDBENzc0RDMg
LyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0ZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJERTZDM0MxQzUx
RDhGQTAwRDc3NEQzIC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc0NjAs
NiArMTc0NzEsOCBAQAogCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3Vy
Y2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMkQx
NUFERTFDNUIwRTIzMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgKi8sCisJCQkJQzJEMTVB
REYxQzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuaCAqLywKIAkJCQlDMkRFNkMzQjFD
NTFEOEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5jcHAgKi8sCiAJCQkJQzJERTZDM0MxQzUxRDhG
QTAwRDc3NEQzIC8qIEpTRm9udEZhY2UuaCAqLywKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBG
NjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKQEAgLTIyMzYw
LDYgKzIyMzczLDcgQEAKIAkJCQlBMUM3RkFBMTEzM0E1RDM1MDBENjczMkQgLyogSlNYUGF0aFJl
c3VsdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFRkUxRTQwRENBNUYzMzAwNzM5MjE5IC8qIEpTWFNM
VFByb2Nlc3NvckN1c3RvbS5jcHAgKi8sCiAJCQkJQzJERTZDNDMxQzUxRTRBNTAwRDc3NEQzIC8q
IEpTRm9udEZhY2VDdXN0b20uY3BwICovLAorCQkJCUMyRDE1QURBMUM1QjBDRUUwMDExQTMwMCAv
KiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ3VzdG9tOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzNjUyLDYgKzIzNjY2LDkgQEAKIAkJCQlD
MjQ5QTg1MjFDNTc1MzNBMDAzN0ZBOEYgLyogRGVwcmVjYXRlZFJlbW90ZVNWR0ZvbnRGYWNlU291
cmNlLmNwcCAqLywKIAkJCQlDMjQ5QTg1MzFDNTc1MzNBMDAzN0ZBOEYgLyogRGVwcmVjYXRlZFJl
bW90ZVNWR0ZvbnRGYWNlU291cmNlLmggKi8sCiAJCQkJMUMxOTI3NTIxQzU4OUNCMjAwNTE1QzA2
IC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8sCisJCQkJQzJEMTVBRDkxQzVCMDlCRTAwMTFB
MzAwIC8qIEZvbnRGYWNlU2V0LmlkbCAqLywKKwkJCQlDMkQxNUFFMDFDNUIwRkIzMDAxMUEzMDAg
LyogRm9udEZhY2VTZXQuY3BwICovLAorCQkJCUMyRDE1QUUxMUM1QjBGQjMwMDExQTMwMCAvKiBG
b250RmFjZVNldC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjYzNDAsNiArMjYzNTcsNyBAQAogCQkJCTVDNDMwNEI2MTkxQUVGNDYw
MDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3
Mjg2OTg0MTRGRDlBREEwMEY0ODREQyAvKiBKU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMEYwMTUwRTBBMTg5NTAwRkQwNEUzIC8qIEpTRmlsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzJEMTVBRTMxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNl
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNG
aWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5ODc4NUYxMTIyRTFFODcwMDNBQUJEQSAv
KiBKU0ZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDBGMDE3MEUwQTE4OTUw
MEZEMDRFMyAvKiBKU0ZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjI5LDYgKzI3NjQ3
LDcgQEAKIAkJCQk5M0YxOTk0RjA4MjQ1RTU5MDAxRTlBQkMgLyogU2V0dGluZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0Js
dXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRDE1QUU1MUM1QjJBM0YwMDExQTMwMCAvKiBKU0Zv
bnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUg
LyogU2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVC
NzcwIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTRGMTc1RDNGM0Uw
MEMyMUVDOCAvKiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDE2MSw2ICszMDE4MCw3IEBA
CiAJCQkJRkQyM0ExMjUxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDE4MENENjgyNjkwMEZBREE3NSAv
KiBKU01lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThEQTMxNjAxNDY0MTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkQxNUFF
NDFDNUIyQTMyMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAv
KiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTI5Myw2ICsz
MTMxMyw3IEBACiAJCQkJODEwMkM1ODgxMzI1QkIxMTAwRERFNjdBIC8qIFN0cmluZ0NhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMzU0MEYyMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJp
bmdUcnVuY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI2QTIwRTgxREM0RjAwQjI1
OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJEMTVB
RTIxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNUVCNjdEMEU4MUQ0MjAwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODM4NkE5NzAxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VGNDQ3QTBFNjc0N0QwMDAxQzEyODcgLyogU3R5bGVDYWNoZWRJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNjM4LDYgKzMxNjU5LDcgQEAKIAkJCQkwNzhF
MDkxMjE3RDE0Q0VFMDA0MjBBQTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwNzI5N0ZBNzFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTEzMTdEMTRDRUUwMDQyMEFBMSAv
KiBVc2VyTWVkaWFSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyRDE1QURDMUM1QjBD
RUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAw
N0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZjMyZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9t
LmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTRm9udEZhY2VTZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0M6
OkpTVmFsdWUgSlNGb250RmFjZVNldDo6cmVhZHkoSlNDOjpFeGVjU3RhdGUmKSBjb25zdAorewor
ICAgIGF1dG8mIHByb21pc2UgPSB3cmFwcGVkKCkucHJvbWlzZSgpOworICAgIEFTU0VSVChwcm9t
aXNlKTsKKyAgICByZXR1cm4gcHJvbWlzZS52YWx1ZSgpLmpzT2JqZWN0KCk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuaWRsCmluZGV4IDAwNzJjMzEuLjJjZTYyMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmlkbApAQCAtMzEsNiArMzEsOCBAQAogfTsKIAogWworICAgIEdsb2JhbENvbnRleHQ9
RE9NV2luZG93LAorICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDdXN0b21Db25zdHJ1Y3RvcihE
T01TdHJpbmcgZmFtaWx5LCBhbnkgc291cmNlLCBEaWN0aW9uYXJ5IGRlc2NyaXB0b3JzKQogXSBp
bnRlcmZhY2UgRm9udEZhY2UgewogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZmFtaWx5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzYzYWE0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJGb250RmFjZVNldC5oIgorCisjaW5jbHVkZSAiRm9udEZhY2UuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworRm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYpCisgICAg
OiBBY3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgc3VzcGVu
ZElmTmVlZGVkKCk7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6Okxv
YWRpbmc7Cit9CisKK0ZvbnRGYWNlU2V0JiBGb250RmFjZVNldDo6YWRkKEZvbnRGYWNlKikKK3sK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OnJlbW92ZShGb250RmFj
ZSopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZvbnRGYWNlU2V0OjpjbGVhcigp
Cit7Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgRGVmZXJyZWRXcmFwcGVyJiYpCit7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OmNoZWNr
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitTdHJpbmcgRm9udEZhY2VTZXQ6OnN0YXR1cygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3N0
YXR1cykgeworICAgIGNhc2UgU3RhdHVzOjpMb2FkaW5nOgorICAgICAgICByZXR1cm4gU3RyaW5n
KCJsb2FkaW5nIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBTdGF0
dXM6OkxvYWRlZDoKKyAgICAgICAgcmV0dXJuIFN0cmluZygibG9hZGVkIiwgU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBTdHJpbmcoImxvYWRpbmciLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zOTNlN2IyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRm9u
dEZhY2VTZXRfaAorI2RlZmluZSBGb250RmFjZVNldF9oCisKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIERlZmVycmVkV3JhcHBlcjsKK2NsYXNzIERPTUNvcmVFeGNlcHRpb247CitjbGFzcyBG
b250RmFjZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIEZvbnRGYWNl
U2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBET01Qcm9taXNlPEZvbnRGYWNlU2V0JiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFBy
b21pc2U7CisKKyAgICBzdGF0aWMgUmVmPEZvbnRGYWNlU2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxG
b250RmFjZT4+JiBpbml0aWFsRmFjZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGb250RmFjZVNldChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbml0aWFsRmFjZXMpKTsK
KyAgICB9CisKKyAgICBGb250RmFjZVNldCYgYWRkKEZvbnRGYWNlKik7CisgICAgYm9vbCByZW1v
dmUoRm9udEZhY2UqKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIGxvYWQoY29uc3Qg
U3RyaW5nJiBmb250LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IGxvYWQoZm9udCwgU3Ry
aW5nKCIgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocHJvbWlzZSkp
OyB9CisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKTsKKworICAgIGJvb2wgY2hlY2soY29uc3QgU3Ry
aW5nJiBmb250LCBjb25zdCBTdHJpbmcmID0gU3RyaW5nKCIgIiwgU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworCisgICAgU3RyaW5nIHN0YXR1cygpIGNvbnN0OworCisgICAgY29uc3Qg
T3B0aW9uYWw8UHJvbWlzZT4mIHByb21pc2UoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2U7IH0K
KworICAgIHVzaW5nIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+OjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDxGb250RmFjZVNldD46OmRlcmVmOworCitwcml2YXRlOgorICAgIGVudW0gY2xhc3Mg
U3RhdHVzIHsKKyAgICAgICAgTG9hZGluZywKKyAgICAgICAgTG9hZGVkCisgICAgfTsKKworICAg
IEZvbnRGYWNlU2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBWZWN0b3I8UmVmUHRy
PEZvbnRGYWNlPj4mKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJG
b250RmFjZVNldCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3Vz
cGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gRm9udEZhY2VTZXRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgZGVyZWYoKTsgfQorCisgICAgU3RhdHVzIG1fc3RhdHVzIHsgU3RhdHVzOjpMb2FkaW5nIH07
CisgICAgT3B0aW9uYWw8UHJvbWlzZT4gbV9wcm9taXNlOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmY5MjczMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuaWRsCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEZvbnRGYWNlU2V0
TG9hZFN0YXR1cyB7CisgICAgImxvYWRpbmciLAorICAgICJsb2FkZWQiCit9OworCitbCisgICAg
R2xvYmFsQ29udGV4dD1ET01XaW5kb3csCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbnN0
cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICBDb25zdHJ1Y3Rvcihz
ZXF1ZW5jZTxGb250RmFjZT4gaW5pdGlhbEZhY2VzKSwKKyAgICBFdmVudFRhcmdldAorXSBpbnRl
cmZhY2UgRm9udEZhY2VTZXQgeworICAgIEZvbnRGYWNlU2V0IGFkZChGb250RmFjZSBmb250KTsK
KyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVdIGJvb2xlYW4gZGVsZXRlKEZvbnRGYWNlIGZvbnQp
OworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2Fk
aW5nOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZG9uZTsKKyAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZ2Vycm9yOworCisgICAgUHJvbWlzZSBsb2FkKERP
TVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCk7CisKKyAgICBib29sZWFuIGNo
ZWNrKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCk7CisKKyAgICBbQ3Vz
dG9tXSByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSByZWFkeTsKKworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBGb250RmFjZVNldExvYWRTdGF0dXMgc3RhdHVzOworfTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0ZWUyMDk3Li4yZTJiMmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgbWFjcm8obG9hZGVuZCkgXAogICAgIG1hY3JvKGxvYWRpbmcpIFwKICAg
ICBtYWNybyhsb2FkaW5nZG9uZSkgXAorICAgIG1hY3JvKGxvYWRpbmdlcnJvcikgXAogICAgIG1h
Y3JvKGxvYWRzdGFydCkgXAogICAgIG1hY3JvKG1hcmspIFwKICAgICBtYWNybyhtZXNzYWdlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBhYjRmZWRiLi40
MzBiOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTks
NyArOSw3IEBAIERPTUFwcGxpY2F0aW9uQ2FjaGUKIERPTVdpbmRvdwogRXZlbnRTb3VyY2UKIEZp
bGVSZWFkZXIKLUZvbnRMb2FkZXIgY29uZGl0aW9uYWw9Rk9OVF9MT0FEX0VWRU5UUworRm9udEZh
Y2VTZXQKIElEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQk9wZW5E
QlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBjb25kaXRp
b25hbD1JTkRFWEVEX0RBVEFCQVNFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270290</attachid>
            <date>2016-01-29 21:29:34 -0800</date>
            <delta_ts>2016-01-29 21:41:11 -0800</delta_ts>
            <desc>Applied on top of attachment 270144</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>45032</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGIwMmJlNjQyZGY2ZTRkY2NjOTNiZjFlYTY1ZTNmZGYyYWFjYTU5ODkKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgSmFuIDI5
IDE2OjM3OjA5IDIwMTYgLTA4MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4
N2Q3MGUuLjU4MmUxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMzgsNiArMzM4LDcgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBjc3MvQ291bnRlci5pZGwKICAgICBj
c3MvRE9NV2luZG93Q1NTLmlkbAogICAgIGNzcy9Gb250RmFjZS5pZGwKKyAgICBjc3MvRm9udEZh
Y2VTZXQuaWRsCiAgICAgY3NzL0ZvbnRMb2FkZXIuaWRsCiAgICAgY3NzL01lZGlhTGlzdC5pZGwK
ICAgICBjc3MvTWVkaWFRdWVyeUxpc3QuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCBkYTUxNGU3Li4zNWM5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTI0MCw2ICsyNDAsNyBAQCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L2Nzcy9Db3VudGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRE9NV2luZG93Q1NTLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9jc3MvRm9udEZhY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9G
b250RmFjZVNldC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRMb2FkZXIuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2Nzcy9NZWRpYUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9NZWRp
YVF1ZXJ5TGlzdC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZDc5YmEuLjRlMTAyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4OTcsNiArNTg5
NywxMSBAQAogCQlDMkM3M0JFRjFDNTVCMDFEMDBERjZCNkIgLyogSW1tZWRpYXRlRm9udEZhY2VT
b3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzczQkVEMUM1NUIwMUMwMERGNkI2QiAvKiBJbW1lZGlhdGVGb250RmFjZVNvdXJjZS5oICovOyB9
OwogCQlDMkM3M0JGMjFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291
cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzczQkYwMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuY3Bw
ICovOyB9OwogCQlDMkM3M0JGMzFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRG
YWNlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMkM3M0JGMTFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNl
LmggKi87IH07CisJCUMyRDE1QURDMUM1QjBDRUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
RDE1QURBMUM1QjBDRUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCAqLzsgfTsK
KwkJQzJEMTVBRTIxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRDE1QUUwMUM1QjBGQjMwMDEx
QTMwMCAvKiBGb250RmFjZVNldC5jcHAgKi87IH07CisJCUMyRDE1QUUzMUM1QjBGQjMwMDExQTMw
MCAvKiBGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzJEMTVBRTExQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmggKi87IH07
CisJCUMyRDE1QUU0MUM1QjJBMzIwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRDE1QURFMUM1QjBFMjMw
MDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJQzJEMTVBRTUxQzVCMkEzRjAw
MTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyRDE1QURGMUM1QjBFMjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0
LmggKi87IH07CiAJCUMyREU2QzNEMUM1MUQ5MTcwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRFNkMzQzFDNTFE
OEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5oICovOyB9OwogCQlDMkRFNkMzRTFDNTFEOTFCMDBE
Nzc0RDMgLyogSlNGb250RmFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkRFNkMzQjFDNTFEOEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5jcHAg
Ki87IH07CiAJCUMyREU2QzQwMUM1MURCMjAwMEQ3NzREMyAvKiBGb250RmFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJERTZDM0YxQzUxREIwRDAw
RDc3NEQzIC8qIEZvbnRGYWNlLmggKi87IH07CkBAIC0xMzc3NCw2ICsxMzc3OSwxMiBAQAogCQlD
MkM3M0JFRDFDNTVCMDFDMDBERjZCNkIgLyogSW1tZWRpYXRlRm9udEZhY2VTb3VyY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1tZWRpYXRlRm9udEZhY2VTb3VyY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDNzNCRjAxQzU1QzM1QzAwREY2QjZCIC8q
IEluRG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkM3M0JGMTFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVu
dFNWR0ZvbnRGYWNlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
RG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMkQxNUFEOTFDNUIwOUJFMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZvbnRGYWNlU2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzJEMTVBREExQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFjZVNldEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRDE1QURFMUM1QjBFMjMwMDExQTMw
MCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRm9udEZhY2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkQx
NUFERjFDNUIwRTIzMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyRDE1QUUwMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFjZVNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRDE1QUUxMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFj
ZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RmFjZVNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRFNkMzQTFDNTFENTkwMDBENzc0RDMgLyog
Rm9udEZhY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZvbnRGYWNlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJERTZDM0IxQzUxRDhGQTAwRDc3NEQzIC8qIEpTRm9u
dEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyREU2QzNDMUM1MUQ4RkEwMEQ3
NzREMyAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Rm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NDYwLDYgKzE3NDcx
LDggQEAKIAkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJEMTVBREUxQzVC
MEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovLAorCQkJCUMyRDE1QURGMUM1QjBF
MjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmggKi8sCiAJCQkJQzJERTZDM0IxQzUxRDhGQTAw
RDc3NEQzIC8qIEpTRm9udEZhY2UuY3BwICovLAogCQkJCUMyREU2QzNDMUM1MUQ4RkEwMEQ3NzRE
MyAvKiBKU0ZvbnRGYWNlLmggKi8sCiAJCQkJOTkwOEIwRjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCkBAIC0yMjM2MCw2ICsyMjM3
Myw3IEBACiAJCQkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0
b20uY3BwICovLAogCQkJCUJDRUZFMUU0MERDQTVGMzMwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNz
b3JDdXN0b20uY3BwICovLAogCQkJCUMyREU2QzQzMUM1MUU0QTUwMEQ3NzREMyAvKiBKU0ZvbnRG
YWNlQ3VzdG9tLmNwcCAqLywKKwkJCQlDMkQxNUFEQTFDNUIwQ0VFMDAxMUEzMDAgLyogSlNGb250
RmFjZVNldEN1c3RvbS5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEN1c3RvbTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzY1Miw2ICsyMzY2Niw5IEBACiAJCQkJQzI0OUE4NTIx
QzU3NTMzQTAwMzdGQThGIC8qIERlcHJlY2F0ZWRSZW1vdGVTVkdGb250RmFjZVNvdXJjZS5jcHAg
Ki8sCiAJCQkJQzI0OUE4NTMxQzU3NTMzQTAwMzdGQThGIC8qIERlcHJlY2F0ZWRSZW1vdGVTVkdG
b250RmFjZVNvdXJjZS5oICovLAogCQkJCTFDMTkyNzUyMUM1ODlDQjIwMDUxNUMwNiAvKiBGb250
VmFyaWFudEJ1aWxkZXIuY3BwICovLAorCQkJCUMyRDE1QUQ5MUM1QjA5QkUwMDExQTMwMCAvKiBG
b250RmFjZVNldC5pZGwgKi8sCisJCQkJQzJEMTVBRTAxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRG
YWNlU2V0LmNwcCAqLywKKwkJCQlDMkQxNUFFMTFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VT
ZXQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTI2MzQwLDYgKzI2MzU3LDcgQEAKIAkJCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAg
LyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLywKIAkJCQk3NzI4Njk4NDE0
RkQ5QURBMDBGNDg0REMgLyogSlNFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDBGMDE1MEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMyRDE1QUUzMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkUzQkMwQ0IxMTdEM0UwODAwQjk0MDlBIC8qIEpTRmlsZUVycm9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTg3ODVGMTEyMkUxRTg3MDAzQUFCREEgLyogSlNGaWxl
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAwRjAxNzBFMEExODk1MDBGRDA0RTMg
LyogSlNGaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzYyOSw2ICsyNzY0Nyw3IEBACiAJ
CQkJOTNGMTk5NEYwODI0NUU1OTAwMUU5QUJDIC8qIFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDMkQxNUFFNTFDNUIyQTNGMDAxMUEzMDAgLyogSlNGb250RmFjZVNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRv
d0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBT
aGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk0RjE3NUQzRjNFMDBDMjFFQzgg
LyogU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzAxNjEsNiArMzAxODAsNyBAQAogCQkJCUZE
MjNBMTI1MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxODBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRp
YUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REEzMTYwMTQ2NDEwMEZFQTNCMSAv
KiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJEMTVBRTQxQzVCMkEz
MjAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCODU5
RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREE5OERERjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRp
YUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEyOTMsNiArMzEzMTMsNyBA
QAogCQkJCTgxMDJDNTg4MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjM1NDBGMjBEMDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCNkEyMEU4MURDNEYwMEIyNTk2NSAvKiBT
dHlsZUJhY2tncm91bmREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyRDE1QUUyMUM1QjBG
QjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjY3
RDBFODFENDIwMDBCMjU5NjUgLyogU3R5bGVCb3hEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgzODZBOTcwMTlGNjFFNEYwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFRjQ0N0EwRTY3NDdEMDAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTYzOCw2ICszMTY1OSw3IEBACiAJCQkJMDc4RTA5MTIxN0Qx
NENFRTAwNDIwQUExIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcyOTdGQTcxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkxMzE3RDE0Q0VFMDA0MjBBQTEgLyogVXNlck1l
ZGlhUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkQxNUFEQzFDNUIwQ0VFMDAxMUEz
MDAgLyogSlNGb250RmFjZVNldEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNCNzk3
MTE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDRTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAv
KiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWYzMmRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJKU0ZvbnRGYWNlU2V0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVl
IEpTRm9udEZhY2VTZXQ6OnJlYWR5KEpTQzo6RXhlY1N0YXRlJikgY29uc3QKK3sKKyAgICBhdXRv
JiBwcm9taXNlID0gd3JhcHBlZCgpLnByb21pc2UoKTsKKyAgICBBU1NFUlQocHJvbWlzZSk7Cisg
ICAgcmV0dXJuIHByb21pc2UudmFsdWUoKS5qc09iamVjdCgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDU2OTk2OGYuLjJkZTdhZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHN0YXRpYyB1
bnNpZ25lZCBmb250U2VsZWN0b3JJZDsKIAogQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0
b3IoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudCgmZG9jdW1lbnQpCisgICAg
LCBtX2ZvbnRGYWNlU2V0KEZvbnRGYWNlU2V0OjpjcmVhdGUoZG9jdW1lbnQsIFZlY3RvcjxSZWZQ
dHI8Rm9udEZhY2U+PigpKSkKICAgICAsIG1fYmVnaW5Mb2FkaW5nVGltZXIoKnRoaXMsICZDU1NG
b250U2VsZWN0b3I6OmJlZ2luTG9hZFRpbWVyRmlyZWQpCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9u
dFNlbGVjdG9ySWQpCiAgICAgLCBtX3ZlcnNpb24oMCkKQEAgLTg2LDExICs4Nyw2IEBAIENTU0Zv
bnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiAgICAgRm9udENhY2hlOjpzaW5nbGV0b24o
KS5yZW1vdmVDbGllbnQodGhpcyk7CiB9CiAKLWJvb2wgQ1NTRm9udFNlbGVjdG9yOjppc0VtcHR5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7Ci19Ci0KIHN0YXRpYyBP
cHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZVRyYWl0c01hc2soY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzJiBzdHlsZSkKIHsKICAgICB1bnNpZ25lZCB0cmFpdHNNYXNrID0gMDsKQEAgLTIxNywy
NCArMjEzLDYgQEAgU3RyaW5nIENTU0ZvbnRTZWxlY3Rvcjo6ZmFtaWx5TmFtZUZyb21QcmltaXRp
dmUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogICAgIH0KIH0KIAotc3RhdGljIHZv
aWQgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseShEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZh
Y2U+PiwgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcykKLXsKLSAg
ICBBU1NFUlQoIWxvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuY29udGFpbnMoZmFtaWx5TmFtZSkp
OwotCi0gICAgVmVjdG9yPEZvbnRUcmFpdHNNYXNrPiB0cmFpdHNNYXNrcyA9IEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5GYW1pbHkoZmFtaWx5TmFtZSk7Ci0gICAgaWYgKHRyYWl0
c01hc2tzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPFJlZjxGb250
RmFjZT4+IGZhY2VzID0geyB9OwotICAgIGZvciAoYXV0byBtYXNrIDogdHJhaXRzTWFza3MpIHsK
LSAgICAgICAgUmVmPEZvbnRGYWNlPiBmYWNlID0gRm9udEZhY2U6OmNyZWF0ZShkb2N1bWVudCwg
bWFzaywgdHJ1ZSk7Ci0gICAgICAgIGZhY2UtPmFkZFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPExv
Y2FsRm9udEZhY2VTb3VyY2U+KGZhY2UsIGZhbWlseU5hbWUpKTsKLSAgICAgICAgQVNTRVJUKCFm
YWNlLT5hbGxTb3VyY2VzSGF2ZUZhaWxlZCgpKTsKLSAgICAgICAgZmFjZXMuYXBwZW5kKFdURk1v
dmUoZmFjZSkpOwotICAgIH0KLSAgICBsb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmFkZChmYW1p
bHlOYW1lLCBXVEZNb3ZlKGZhY2VzKSk7Ci19Ci0KIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRG
b250RmFjZVJ1bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgYm9vbCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewogICAgIGlmICghZG9jdW1lbnQoKSkK
QEAgLTMzMCwxOCArMzA4LDExIEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1
bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgYm9vbCBpc0luaXRpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBmYW1pbHlOYW1lcy5hcHBlbmQoZmFtaWx5TmFtZSk7Ci0g
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIFZlY3Rv
cjxSZWY8Rm9udEZhY2U+PigpKTsKLSAgICAgICAgYXV0byYgZmFtaWx5Rm9udEZhY2VzID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5
KSB7Ci0gICAgICAgICAgICByZWdpc3RlckxvY2FsRm9udEZhY2VzRm9yRmFtaWx5KCpkb2N1bWVu
dCgpLCBmYW1pbHlOYW1lLCBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMpOwotICAgICAgICAg
ICAgZmFtaWx5Rm9udEZhY2VzID0geyB9OwotICAgICAgICB9Ci0KLSAgICAgICAgZmFtaWx5Rm9u
dEZhY2VzLmFwcGVuZChmb250RmFjZS5jb3B5UmVmKCkpOwogICAgICAgICAKICAgICAgICAgKytt
X3ZlcnNpb247CiAgICAgfQogICAgIGZvbnRGYWNlLT5zZXRGYW1pbGllcyhXVEZNb3ZlKGZhbWls
eU5hbWVzKSk7CisgICAgbV9mb250RmFjZVNldC0+YWRkKGZvbnRGYWNlLnB0cigpKTsKIH0KIAog
dm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRGYWNlV2lsbENoYW5nZShGb250RmFjZSYpCkBAIC0z
NzEsMTMgKzM0Miw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpkaXNwYXRjaEludmFsaWRhdGlv
bkNhbGxiYWNrcygpCiAKIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGVkKEZvbnRGYWNl
JiBmb250RmFjZSkKIHsKLSAgICBmb3IgKGNvbnN0IFN0cmluZyYgZmFtaWx5IDogZm9udEZhY2Uu
ZmFtaWxpZXMoKSkgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9mb250cy5maW5kKGZhbWls
eSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2ZvbnRzLmVuZCgpKSB7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8mIHNlZ21lbnRlZEZvbnQgOiBpdGVyYXRvci0+dmFsdWUpCi0gICAgICAgICAg
ICAgICAgc2VnbWVudGVkRm9udC52YWx1ZS0+Zm9udExvYWRlZChmb250RmFjZSk7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgbV9mb250RmFjZVNldC0+Zm9udExvYWRlZChmb250RmFjZSk7CiAKICAg
ICBkaXNwYXRjaEludmFsaWRhdGlvbkNhbGxiYWNrcygpOwogfQpAQCAtNDkwLDU2ICs0NTUsMTQg
QEAgRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3IKICAgICBib29sIHJlc29sdmVHZW5lcmljRmFtaWx5
Rmlyc3QgPSBmYW1pbHlOYW1lID09IHN0YW5kYXJkRmFtaWx5OwogCiAgICAgQXRvbWljU3RyaW5n
IGZhbWlseUZvckxvb2t1cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPyByZXNvbHZlR2Vu
ZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpIDogZmFt
aWx5TmFtZTsKLSAgICBDU1NTZWdtZW50ZWRGb250RmFjZSogZmFjZSA9IGdldEZvbnRGYWNlKGZv
bnREZXNjcmlwdGlvbiwgZmFtaWx5Rm9yTG9va3VwKTsKKyAgICBhdXRvIGZhY2UgPSBtX2ZvbnRG
YWNlU2V0LT5nZXRGb250RmFjZShmYW1pbHlGb3JMb29rdXAsIGZvbnREZXNjcmlwdGlvbi50cmFp
dHNNYXNrKCkpOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBpZiAoIXJlc29sdmVHZW5lcmlj
RmFtaWx5Rmlyc3QpCiAgICAgICAgICAgICBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJp
Y0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwogICAgICAg
ICByZXR1cm4gRm9udFJhbmdlcyhGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHko
Zm9udERlc2NyaXB0aW9uLCBmYW1pbHlGb3JMb29rdXApKTsKICAgICB9CiAKLSAgICByZXR1cm4g
ZmFjZS0+Zm9udFJhbmdlcyhmb250RGVzY3JpcHRpb24pOwotfQotCi1DU1NTZWdtZW50ZWRGb250
RmFjZSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCi17Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fZm9udEZhY2VzLmZpbmQoZmFtaWx5KTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9mb250RmFjZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8m
IGZhbWlseUZvbnRGYWNlcyA9IGl0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGF1dG8mIHNlZ21lbnRl
ZEZvbnRGYWNlQ2FjaGUgPSBtX2ZvbnRzLmFkZChmYW1pbHksIEhhc2hNYXA8dW5zaWduZWQsIHN0
ZDo6dW5pcXVlX3B0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4+KCkpLml0ZXJhdG9yLT52YWx1ZTsK
LQotICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRz
TWFzaygpOwotCi0gICAgYXV0byBhZGRSZXN1bHQgPSBzZWdtZW50ZWRGb250RmFjZUNhY2hlLmFk
ZCh0cmFpdHNNYXNrLCBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlZ21lbnRlZEZvbnRGYWNlPigqdGhp
cykpOwotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlJiBmYWNlID0gKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJu
ICZmYWNlOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Rm9udEZhY2U+LCAz
Mj4gY2FuZGlkYXRlRm9udEZhY2VzOwotICAgIGZvciAoaW50IGkgPSBmYW1pbHlGb250RmFjZXMu
c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgRm9udEZhY2UmIGNhbmRpZGF0ZSA9
IGZhbWlseUZvbnRGYWNlc1tpXTsKLSAgICAgICAgdW5zaWduZWQgY2FuZGlkYXRlVHJhaXRzTWFz
ayA9IGNhbmRpZGF0ZS50cmFpdHNNYXNrKCk7Ci0gICAgICAgIGlmICgodHJhaXRzTWFzayAmIEZv
bnRTdHlsZU5vcm1hbE1hc2spICYmICEoY2FuZGlkYXRlVHJhaXRzTWFzayAmIEZvbnRTdHlsZU5v
cm1hbE1hc2spKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhbmRpZGF0ZUZvbnRG
YWNlcy5hcHBlbmQoY2FuZGlkYXRlKTsKLSAgICB9Ci0KLSAgICBhdXRvIGxvY2FsSXRlcmF0b3Ig
PSBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuZmluZChmYW1pbHkpOwotICAgIGlmIChsb2Nh
bEl0ZXJhdG9yICE9IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5lbmQoKSkgewotICAgICAg
ICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGxvY2FsSXRlcmF0b3ItPnZhbHVlKSB7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBjYW5kaWRhdGVUcmFpdHNNYXNrID0gY2FuZGlkYXRlLT50cmFpdHNNYXNr
KCk7Ci0gICAgICAgICAgICBpZiAoKHRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSAm
JiAhKGNhbmRpZGF0ZVRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNhbmRpZGF0ZUZvbnRGYWNlcy5hcHBlbmQo
Y2FuZGlkYXRlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0ZDo6c3RhYmxlX3NvcnQoY2Fu
ZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZvbnRGYWNlcy5lbmQoKSwgRm9udEZh
Y2VDb21wYXJhdG9yKHRyYWl0c01hc2spKTsKLSAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGNh
bmRpZGF0ZUZvbnRGYWNlcykKLSAgICAgICAgZmFjZS5hcHBlbmRGb250RmFjZShjYW5kaWRhdGUu
Z2V0KCkpOwotCi0gICAgcmV0dXJuICZmYWNlOworICAgIHJldHVybiBmYWNlLnZhbHVlKCkuZm9u
dFJhbmdlcyhmb250RGVzY3JpcHRpb24pOwogfQogCiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Y2xl
YXJEb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggNjY2NjNh
Ny4uN2I1N2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkNTU1NlZ21lbnRlZEZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udEZh
Y2VTZXQuaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KQEAgLTYyLDcgKzYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Rm9udFJhbmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgc2l6ZV90IGZhbGxiYWNr
Rm9udENvdW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gZmFsbGJhY2tG
b250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICBDU1NT
ZWdtZW50ZWRGb250RmFjZSogZ2V0Rm9udEZhY2UoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOwogCiAgICAgdm9pZCBjbGVhckRvY3VtZW50KCk7CiAK
QEAgLTcxLDggKzcxLDYgQEAgcHVibGljOgogICAgIHZvaWQgZm9udExvYWRlZChGb250RmFjZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBmb250Q2FjaGVJbnZhbGlkYXRlZCgpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJ
bnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVjdG9yQ2xpZW50Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVj
dG9yQ2xpZW50Jikgb3ZlcnJpZGU7CiAKQEAgLTk0LDkgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGJlZ2luTG9hZFRpbWVyRmlyZWQoKTsKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50Owot
ICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4sIENhc2VGb2xkaW5nSGFz
aD4gbV9mb250RmFjZXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZhY2U+
PiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXM7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxDU1NTZWdtZW50
ZWRGb250RmFjZT4+LCBDYXNlRm9sZGluZ0hhc2g+IG1fZm9udHM7CisgICAgUmVmPEZvbnRGYWNl
U2V0PiBtX2ZvbnRGYWNlU2V0OwogICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gbV9j
bGllbnRzOwogCiAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBt
X2ZvbnRzVG9CZWdpbkxvYWRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VnbWVudGVkRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZv
bnRGYWNlLmNwcAppbmRleCA0NGVkYzczLi5jN2VhYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKQEAgLTM2LDggKzM2LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DU1NTZWdtZW50ZWRGb250RmFjZTo6Q1NTU2VnbWVudGVkRm9udEZhY2Uo
Q1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IpCi0gICAgOiBtX2ZvbnRTZWxlY3Rvcihmb250
U2VsZWN0b3IpCitDU1NTZWdtZW50ZWRGb250RmFjZTo6Q1NTU2VnbWVudGVkRm9udEZhY2UoKQog
ewogfQogCkBAIC05Niw0ICs5NSwxOSBAQCBGb250UmFuZ2VzIENTU1NlZ21lbnRlZEZvbnRGYWNl
Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aQogICAgIHJl
dHVybiBmb250UmFuZ2VzOwogfQogCit2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpsb2FkKCkK
K3sKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBtX2ZvbnRGYWNlcykKKyAgICAgICAgZmFjZS0+bG9h
ZCgpOworfQorCitib29sIENTU1NlZ21lbnRlZEZvbnRGYWNlOjphbGxGb250RmFjZXNBcmVMb2Fk
ZWQoKSBjb25zdAoreworICAgIGZvciAoYXV0byYgZmFjZSA6IG1fZm9udEZhY2VzKSB7CisgICAg
ICAgIGlmIChmYWNlLT5zdGF0dXNFbnVtKCkgIT0gRm9udEZhY2U6OlN0YXR1czo6TG9hZGVkKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaAppbmRleCBjMGFhMmY5
Li44YjZkN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaApA
QCAtNDEsOSArNDEsNyBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiAKIGNsYXNzIENTU1NlZ21l
bnRlZEZvbnRGYWNlIHsKIHB1YmxpYzoKLSAgICBDU1NTZWdtZW50ZWRGb250RmFjZShDU1NGb250
U2VsZWN0b3ImKTsKLQotICAgIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9mb250U2VsZWN0b3I7IH0KKyAgICBDU1NTZWdtZW50ZWRGb250RmFjZSgpOwog
CiAgICAgdm9pZCBmb250TG9hZGVkKEZvbnRGYWNlJik7CiAKQEAgLTUxLDEwICs0OSwxMiBAQCBw
dWJsaWM6CiAKICAgICBGb250UmFuZ2VzIGZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9u
Jik7CiAKKyAgICB2b2lkIGxvYWQoKTsKKyAgICBib29sIGFsbEZvbnRGYWNlc0FyZUxvYWRlZCgp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgcHJ1bmVUYWJsZSgpOwogCi0gICAgQ1NTRm9u
dFNlbGVjdG9yJiBtX2ZvbnRTZWxlY3RvcjsKICAgICBIYXNoTWFwPEZvbnREZXNjcmlwdGlvbktl
eSwgRm9udFJhbmdlcywgRm9udERlc2NyaXB0aW9uS2V5SGFzaCwgV1RGOjpTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8Rm9udERlc2NyaXB0aW9uS2V5Pj4gbV9kZXNjcmlwdGlvblRvUmFuZ2VzTWFwOwog
ICAgIFZlY3RvcjxSZWY8Rm9udEZhY2U+LCAxPiBtX2ZvbnRGYWNlczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAppbmRleCBkMjY2MmMwLi4wYmY0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKQEAgLTI0Miw2ICsyNDIsNyBAQCB2b2lkIEZvbnRGYWNlOjpzZXRTdHlsZShjb25zdCBTdHJp
bmcmIG5ld1N0eWxlKQogICAgICAgICBuZXdUcmFpdHNNYXNrIHw9IEZvbnRTdHlsZUl0YWxpY01h
c2s7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fdHJhaXRzTWFzayA9IHN0YXRp
Y19jYXN0PEZvbnRUcmFpdHNNYXNrPihuZXdUcmFpdHNNYXNrKTsKQEAgLTI4MywxMCArMjg0LDcg
QEAgdm9pZCBGb250RmFjZTo6c2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYgd2VpZ2h0KQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGZvbnRXZWlnaHQgPSBzdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwotICAgIGlmICghZm9udFdl
aWdodCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4o
KmZvbnRXZWlnaHQpKQorICAgIGlmICghZm9udFdlaWdodCB8fCAhaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KCpmb250V2VpZ2h0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9udFNlbGVjdG9yKCku
Zm9udEZhY2VXaWxsQ2hhbmdlKCp0aGlzKTsKQEAgLTMyMyw2ICszMjEsNyBAQCB2b2lkIEZvbnRG
YWNlOjpzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiB3ZWlnaHQpCiAgICAgICAgIG5ld1RyYWl0c01h
c2sgfD0gRm9udFdlaWdodDEwME1hc2s7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IG1fdHJhaXRzTWFzayA9IHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPihuZXdUcmFpdHNNYXNr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggZTEwODFlYy4uMTc4MDNhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmgKQEAgLTExNiw2ICsxMTYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmVhdHVy
ZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzKTsKICAgICBTdHJpbmcgc3Rh
dHVzKCkgY29uc3Q7CiAKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIFVubG9hZGVk
LAorICAgICAgICBMb2FkaW5nLAorICAgICAgICBMb2FkZWQsCisgICAgICAgIEVycm9yCisgICAg
fTsKKyAgICBTdGF0dXMgc3RhdHVzRW51bSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisK
ICAgICBib29sIGFsbFNvdXJjZXNIYXZlRmFpbGVkKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Rm9u
dD4gZm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljKTsKQEAgLTE0MywxMiArMTUxLDYgQEAgcHVibGljOgogICAgIH07CiAK
IHByaXZhdGU6Ci0gICAgZW51bSBjbGFzcyBTdGF0dXMgewotICAgICAgICBVbmxvYWRlZCwKLSAg
ICAgICAgTG9hZGluZywKLSAgICAgICAgTG9hZGVkLAotICAgICAgICBFcnJvcgotICAgIH07CiAK
ICAgICBGb250RmFjZShEb2N1bWVudCYsIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIGJvb2wg
aXNMb2NhbEZhbGxiYWNrKTsKICAgICBGb250RmFjZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5LCBjb25zdCBEaWN0aW9uYXJ5JiBkZXNjcmlwdG9ycyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmlkbAppbmRleCAwMDcyYzMxLi4yY2U2MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwKQEAg
LTMxLDYgKzMxLDggQEAKIH07CiAKIFsKKyAgICBHbG9iYWxDb250ZXh0PURPTVdpbmRvdywKKyAg
ICBBY3RpdmVET01PYmplY3QsCiAgICAgQ3VzdG9tQ29uc3RydWN0b3IoRE9NU3RyaW5nIGZhbWls
eSwgYW55IHNvdXJjZSwgRGljdGlvbmFyeSBkZXNjcmlwdG9ycykKIF0gaW50ZXJmYWNlIEZvbnRG
YWNlIHsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZhbWlseTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDg4YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC0w
LDAgKzEsMzUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZvbnRGYWNlU2V0LmgiCisKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRl
ICJDU1NTZWdtZW50ZWRGb250RmFjZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udEZhY2UuaCIKKyNpbmNsdWRlICJMb2NhbEZv
bnRGYWNlU291cmNlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRGYWNlU2V0OjpGb250RmFjZVNldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBWZWN0b3I8UmVmUHRy
PEZvbnRGYWNlPj4mIGluaXRpYWxGYWNlcykKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBpbml0aWFsRmFjZXMp
CisgICAgICAgIGFkZChmYWNlLmdldCgpKTsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKK30KKwor
Ym9vbCBGb250RmFjZVNldDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6TG9hZGluZzsKK30KKworc3RhdGlj
IHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9u
dEZhY2U+PiwgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcykKK3sK
KyAgICBBU1NFUlQoIWxvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuY29udGFpbnMoZmFtaWx5TmFt
ZSkpOworCisgICAgVmVjdG9yPEZvbnRUcmFpdHNNYXNrPiB0cmFpdHNNYXNrcyA9IEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5GYW1pbHkoZmFtaWx5TmFtZSk7CisgICAgaWYgKHRy
YWl0c01hc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFJlZjxG
b250RmFjZT4+IGZhY2VzID0geyB9OworICAgIGZvciAoYXV0byBtYXNrIDogdHJhaXRzTWFza3Mp
IHsKKyAgICAgICAgUmVmPEZvbnRGYWNlPiBmYWNlID0gRm9udEZhY2U6OmNyZWF0ZShkb2N1bWVu
dCwgbWFzaywgdHJ1ZSk7CisgICAgICAgIGZhY2UtPmFkZFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsRm9udEZhY2VTb3VyY2U+KGZhY2UsIGZhbWlseU5hbWUpKTsKKyAgICAgICAgQVNTRVJU
KCFmYWNlLT5hbGxTb3VyY2VzSGF2ZUZhaWxlZCgpKTsKKyAgICAgICAgZmFjZXMuYXBwZW5kKFdU
Rk1vdmUoZmFjZSkpOworICAgIH0KKyAgICBsb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmFkZChm
YW1pbHlOYW1lLCBXVEZNb3ZlKGZhY2VzKSk7Cit9CisKK0ZvbnRGYWNlU2V0JiBGb250RmFjZVNl
dDo6YWRkKEZvbnRGYWNlKiBuZXdGYWNlKQoreworICAgIGlmICghbmV3RmFjZSkKKyAgICAgICAg
cmV0dXJuICp0aGlzOworCisgICAgYXV0byogZXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ29udGV4dCAmJiBleGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGF1dG8mIGRvY3VtZW50ID0gKmRvd25jYXN0PERv
Y3VtZW50PihleGVjdXRpb25Db250ZXh0KTsKKworICAgIGZvciAoYXV0byYgZmFtaWx5TmFtZSA6
IG5ld0ZhY2UtPmZhbWlsaWVzKCkpIHsKKyAgICAgICAgaWYgKGZhbWlseU5hbWUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Zv
bnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgVmVjdG9yPFJlZjxGb250RmFjZT4+KCkpOworICAgICAg
ICBhdXRvJiBmYW1pbHlGb250RmFjZXMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIHJlZ2lzdGVyTG9j
YWxGb250RmFjZXNGb3JGYW1pbHkoZG9jdW1lbnQsIGZhbWlseU5hbWUsIG1fbG9jYWxseUluc3Rh
bGxlZEZvbnRGYWNlcyk7CisgICAgICAgICAgICBmYW1pbHlGb250RmFjZXMgPSB7IH07CisgICAg
ICAgIH0KKworICAgICAgICBmYW1pbHlGb250RmFjZXMuYXBwZW5kKCpuZXdGYWNlKTsKKyAgICB9
CisgICAgcmV0dXJuICp0aGlzOworfQorCitib29sIEZvbnRGYWNlU2V0OjpyZW1vdmUoRm9udEZh
Y2UqIHJlbW92ZWRGYWNlKQoreworICAgIGlmICghcmVtb3ZlZEZhY2UpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgZm9yIChhdXRvJiBmYW1pbHlOYW1lIDogcmVtb3ZlZEZhY2UtPmZhbWls
aWVzKCkpIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9mb250RmFjZXMuZmluZChmYW1pbHlOYW1l
KTsKKyAgICAgICAgQVNTRVJUKGl0ZXIgIT0gbV9mb250RmFjZXMuZW5kKCkpOworICAgICAgICBp
dGVyLT52YWx1ZS5yZW1vdmVBbGxNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZvbnRGYWNlPiYgaXRl
bSkgeworICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucHRyKCkgPT0gcmVtb3ZlZEZhY2U7CisgICAg
ICAgIH0pOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGb250RmFjZVNldDo6
Y2xlYXIoKQoreworICAgIG1fZm9udEZhY2VzLmNsZWFyKCk7CisgICAgbV9sb2NhbGx5SW5zdGFs
bGVkRm9udEZhY2VzLmNsZWFyKCk7Cit9CisKK2NsYXNzIEZvbnRGYWNlQ29tcGFyYXRvciB7Citw
dWJsaWM6CisgICAgRm9udEZhY2VDb21wYXJhdG9yKEZvbnRUcmFpdHNNYXNrIGRlc2lyZWRUcmFp
dHNNYXNrRm9yQ29tcGFyaXNvbikKKyAgICAgICAgOiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29t
cGFyaXNvbihkZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24pCisgICAgeworICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29t
cGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yKCko
Y29uc3QgRm9udEZhY2UmIGZpcnN0LCBjb25zdCBGb250RmFjZSYgc2Vjb25kKQorICAgIHsKKyAg
ICAgICAgRm9udFRyYWl0c01hc2sgZmlyc3RUcmFpdHNNYXNrID0gZmlyc3QudHJhaXRzTWFzaygp
OworICAgICAgICBGb250VHJhaXRzTWFzayBzZWNvbmRUcmFpdHNNYXNrID0gc2Vjb25kLnRyYWl0
c01hc2soKTsKKworICAgICAgICBib29sIGZpcnN0SGFzRGVzaXJlZFN0eWxlID0gZmlyc3RUcmFp
dHNNYXNrICYgbV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250U3R5bGVNYXNr
OworICAgICAgICBib29sIHNlY29uZEhhc0Rlc2lyZWRTdHlsZSA9IHNlY29uZFRyYWl0c01hc2sg
JiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRTdHlsZU1hc2s7CisKKyAg
ICAgICAgaWYgKGZpcnN0SGFzRGVzaXJlZFN0eWxlICE9IHNlY29uZEhhc0Rlc2lyZWRTdHlsZSkK
KyAgICAgICAgICAgIHJldHVybiBmaXJzdEhhc0Rlc2lyZWRTdHlsZTsKKworICAgICAgICBpZiAo
KG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlSXRhbGljTWFzaykg
JiYgIWZpcnN0LmlzTG9jYWxGYWxsYmFjaygpICYmICFzZWNvbmQuaXNMb2NhbEZhbGxiYWNrKCkp
IHsKKyAgICAgICAgICAgIC8vIFByZWZlciBhIGZvbnQgdGhhdCBoYXMgaW5kaWNhdGVkIHRoYXQg
aXQgY2FuIG9ubHkgc3VwcG9ydCBpdGFsaWNzIHRvIGEgZm9udCB0aGF0IGNsYWltcyB0byBzdXBw
b3J0CisgICAgICAgICAgICAvLyBhbGwgc3R5bGVzLiBUaGUgc3BlY2lhbGl6ZWQgZm9udCBpcyBt
b3JlIGxpa2VseSB0byBiZSB0aGUgb25lIHRoZSBhdXRob3Igd2FudHMgdXNlZC4KKyAgICAgICAg
ICAgIGJvb2wgZmlyc3RSZXF1aXJlc0l0YWxpY3MgPSAoZmlyc3RUcmFpdHNNYXNrICYgRm9udFN0
eWxlSXRhbGljTWFzaykgJiYgIShmaXJzdFRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNr
KTsKKyAgICAgICAgICAgIGJvb2wgc2Vjb25kUmVxdWlyZXNJdGFsaWNzID0gKHNlY29uZFRyYWl0
c01hc2sgJiBGb250U3R5bGVJdGFsaWNNYXNrKSAmJiAhKHNlY29uZFRyYWl0c01hc2sgJiBGb250
U3R5bGVOb3JtYWxNYXNrKTsKKyAgICAgICAgICAgIGlmIChmaXJzdFJlcXVpcmVzSXRhbGljcyAh
PSBzZWNvbmRSZXF1aXJlc0l0YWxpY3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0UmVx
dWlyZXNJdGFsaWNzOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlY29uZFRyYWl0c01hc2sg
JiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoZmlyc3RUcmFpdHNNYXNrICYgbV9k
ZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250V2VpZ2h0TWFzaykKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEv
V0QtY3NzMy1mb250cy0yMDExMTAwNC8jZm9udC1tYXRjaGluZy1hbGdvcml0aG0gc2F5cyA6Cisg
ICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJlZCB3ZWlnaHQgaXMgbGVzcyB0aGFuIDQwMCwgd2Vp
Z2h0cyBiZWxvdyB0aGUgZGVzaXJlZCB3ZWlnaHQgYXJlIGNoZWNrZWQgaW4gZGVzY2VuZGluZyBv
cmRlciBmb2xsb3dlZCBieSB3ZWlnaHRzIGFib3ZlIHRoZSBkZXNpcmVkIHdlaWdodCBpbiBhc2Nl
bmRpbmcgb3JkZXIgdW50aWwgYSBtYXRjaCBpcyBmb3VuZC4KKyAgICAgICAgLy8gICAtIElmIHRo
ZSBkZXNpcmVkIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gNTAwLCB3ZWlnaHRzIGFib3ZlIHRoZSBk
ZXNpcmVkIHdlaWdodCBhcmUgY2hlY2tlZCBpbiBhc2NlbmRpbmcgb3JkZXIgZm9sbG93ZWQgYnkg
d2VpZ2h0cyBiZWxvdyB0aGUgZGVzaXJlZCB3ZWlnaHQgaW4gZGVzY2VuZGluZyBvcmRlciB1bnRp
bCBhIG1hdGNoIGlzIGZvdW5kLgorICAgICAgICAvLyAgIC0gSWYgdGhlIGRlc2lyZWQgd2VpZ2h0
IGlzIDQwMCwgNTAwIGlzIGNoZWNrZWQgZmlyc3QgYW5kIHRoZW4gdGhlIHJ1bGUgZm9yIGRlc2ly
ZWQgd2VpZ2h0cyBsZXNzIHRoYW4gNDAwIGlzIHVzZWQuCisgICAgICAgIC8vICAgLSBJZiB0aGUg
ZGVzaXJlZCB3ZWlnaHQgaXMgNTAwLCA0MDAgaXMgY2hlY2tlZCBmaXJzdCBhbmQgdGhlbiB0aGUg
cnVsZSBmb3IgZGVzaXJlZCB3ZWlnaHRzIGxlc3MgdGhhbiA0MDAgaXMgdXNlZC4KKworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmFsbGJhY2tSdWxlU2V0cyA9IDk7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBydWxlc1BlclNldCA9IDg7CisgICAgICAgIHN0YXRpYyBjb25z
dCBGb250VHJhaXRzTWFzayB3ZWlnaHRGYWxsYmFja1J1bGVTZXRzW2ZhbGxiYWNrUnVsZVNldHNd
W3J1bGVzUGVyU2V0XSA9IHsKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDIwME1hc2ssIEZvbnRX
ZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRX
ZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRX
ZWlnaHQ5MDBNYXNrIH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2Vp
Z2h0MzAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2Vp
Z2h0NjAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2Vp
Z2h0OTAwTWFzayB9LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdo
dDEwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdo
dDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdo
dDkwME1hc2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQz
MDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2ssIEZvbnRXZWlnaHQ2
MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5
MDBNYXNrIH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0MzAw
TWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NjAw
TWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAw
TWFzayB9LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1h
c2ssIEZvbnRXZWlnaHQ5MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1h
c2ssIEZvbnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1h
c2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNr
LCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNr
LCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNr
IH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQ5MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywg
Rm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywg
Rm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9
LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZv
bnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZv
bnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sgfQor
ICAgICAgICB9OworCisgICAgICAgIHVuc2lnbmVkIHJ1bGVTZXRJbmRleCA9IDA7CisgICAgICAg
IGZvciAoOyAhKG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgKDEgPDwgKEZvbnRX
ZWlnaHQxMDBCaXQgKyBydWxlU2V0SW5kZXgpKSk7IHJ1bGVTZXRJbmRleCsrKSB7IH0KKworICAg
ICAgICBjb25zdCBGb250VHJhaXRzTWFzayogd2VpZ2h0RmFsbGJhY2tSdWxlID0gd2VpZ2h0RmFs
bGJhY2tSdWxlU2V0c1tydWxlU2V0SW5kZXhdOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcnVsZXNQZXJTZXQ7ICsraSkgeworICAgICAgICAgICAgaWYgKHNlY29uZFRyYWl0c01h
c2sgJiB3ZWlnaHRGYWxsYmFja1J1bGVbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKGZpcnN0VHJhaXRzTWFzayAmIHdlaWdodEZhbGxiYWNrUnVsZVtp
XSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRm9udFRyYWl0c01hc2sgbV9kZXNp
cmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb247Cit9OworCitPcHRpb25hbDxDU1NTZWdtZW50ZWRG
b250RmFjZT4gRm9udEZhY2VTZXQ6OmdldEZvbnRGYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5LCBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2ZvbnRGYWNlcy5maW5kKGZhbWlseSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fZm9udEZhY2Vz
LmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBhdXRvJiBmYW1pbHlGb250RmFj
ZXMgPSBpdGVyYXRvci0+dmFsdWU7CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY2Fj
aGVkLgorICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlIGZhY2U7CisKKyAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxGb250RmFjZT4sIDMyPiBjYW5kaWRhdGVGb250RmFjZXM7CisgICAg
Zm9yIChpbnQgaSA9IGZhbWlseUZvbnRGYWNlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewor
ICAgICAgICBGb250RmFjZSYgY2FuZGlkYXRlID0gZmFtaWx5Rm9udEZhY2VzW2ldOworICAgICAg
ICB1bnNpZ25lZCBjYW5kaWRhdGVUcmFpdHNNYXNrID0gY2FuZGlkYXRlLnRyYWl0c01hc2soKTsK
KyAgICAgICAgaWYgKCh0cmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykgJiYgIShjYW5k
aWRhdGVUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgY2FuZGlkYXRlRm9udEZhY2VzLmFwcGVuZChjYW5kaWRhdGUpOworICAg
IH0KKworICAgIGF1dG8gbG9jYWxJdGVyYXRvciA9IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNl
cy5maW5kKGZhbWlseSk7CisgICAgaWYgKGxvY2FsSXRlcmF0b3IgIT0gbV9sb2NhbGx5SW5zdGFs
bGVkRm9udEZhY2VzLmVuZCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbG9j
YWxJdGVyYXRvci0+dmFsdWUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNhbmRpZGF0ZVRyYWl0
c01hc2sgPSBjYW5kaWRhdGUtPnRyYWl0c01hc2soKTsKKyAgICAgICAgICAgIGlmICgodHJhaXRz
TWFzayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spICYmICEoY2FuZGlkYXRlVHJhaXRzTWFzayAmIEZv
bnRTdHlsZU5vcm1hbE1hc2spKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgY2FuZGlkYXRlRm9udEZhY2VzLmFwcGVuZChjYW5kaWRhdGUpOworICAgICAgICB9CisgICAg
fQorCisgICAgc3RkOjpzdGFibGVfc29ydChjYW5kaWRhdGVGb250RmFjZXMuYmVnaW4oKSwgY2Fu
ZGlkYXRlRm9udEZhY2VzLmVuZCgpLCBGb250RmFjZUNvbXBhcmF0b3IodHJhaXRzTWFzaykpOwor
ICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlRm9udEZhY2VzKQorICAgICAgICBm
YWNlLmFwcGVuZEZvbnRGYWNlKGNhbmRpZGF0ZS5nZXQoKSk7CisKKyAgICByZXR1cm4gV1RGTW92
ZShmYWNlKTsKK30KKworc3RhdGljIHVuc2lnbmVkIHN0eWxlVHJhaXRzTWFza0Zyb21TdHlsZVBy
b3BlcnRpZXMoU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZVByb3BlcnRpZXMpCit7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiBmb250U3R5bGUgPSBzdHlsZVByb3BlcnRpZXMuZ2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSk7CisgICAgaWYgKCFmb250U3R5bGUgfHwgIWlzPENTU1By
aW1pdGl2ZVZhbHVlPigqZm9udFN0eWxlKSkKKyAgICAgICAgcmV0dXJuIEZvbnRTdHlsZU5vcm1h
bE1hc2s7CisKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFN0
eWxlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBy
ZXR1cm4gRm9udFN0eWxlTm9ybWFsTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZUl0YWxpYzoKKyAgICBjYXNlIENTU1ZhbHVlT2JsaXF1ZToKKyAgICAgICAgcmV0dXJuIEZv
bnRTdHlsZUl0YWxpY01hc2s7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRm9udFN0eWxlTm9ybWFsTWFz
azsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZvbnRTdHls
ZU5vcm1hbE1hc2s7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCB3ZWlnaHRUcmFpdHNNYXNrRnJvbVN0
eWxlUHJvcGVydGllcyhTdHlsZVByb3BlcnRpZXMmIHN0eWxlUHJvcGVydGllcykKK3sKKyAgICBS
ZWZQdHI8Q1NTVmFsdWU+IGZvbnRXZWlnaHQgPSBzdHlsZVByb3BlcnRpZXMuZ2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOworICAgIGlmICghZm9udFdlaWdodCB8fCAh
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkKKyAgICAgICAgcmV0dXJuIEZvbnRX
ZWlnaHQ0MDBNYXNrOworCisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KmZvbnRXZWlnaHQpLmdldFZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgorICAg
IGNhc2UgQ1NTVmFsdWU3MDA6CisgICAgICAgIHJldHVybiBGb250V2VpZ2h0NzAwTWFzazsKKyAg
ICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgIGNhc2UgQ1NTVmFsdWU0MDA6CisgICAgICAgIHJl
dHVybiBGb250V2VpZ2h0NDAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlOTAwOgorICAgICAgICBy
ZXR1cm4gRm9udFdlaWdodDkwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTgwMDoKKyAgICAgICAg
cmV0dXJuIEZvbnRXZWlnaHQ4MDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWU2MDA6CisgICAgICAg
IHJldHVybiBGb250V2VpZ2h0NjAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlNTAwOgorICAgICAg
ICByZXR1cm4gRm9udFdlaWdodDUwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTMwMDoKKyAgICAg
ICAgcmV0dXJuIEZvbnRXZWlnaHQzMDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWUyMDA6CisgICAg
ICAgIHJldHVybiBGb250V2VpZ2h0MjAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlMTAwOgorICAg
ICAgICByZXR1cm4gRm9udFdlaWdodDEwME1hc2s7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBGb250V2VpZ2h0NDAwTWFzazsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZvbnRXZWlnaHQ0MDBN
YXNrOworfQorCitzdGF0aWMgaW5saW5lIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2tGcm9tU3R5
bGVQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydGllcyYgc3R5bGVQcm9wZXJ0aWVzKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxGb250VHJhaXRzTWFzaz4oc3R5bGVUcmFpdHNNYXNrRnJvbVN0eWxl
UHJvcGVydGllcyhzdHlsZVByb3BlcnRpZXMpIHwgd2VpZ2h0VHJhaXRzTWFza0Zyb21TdHlsZVBy
b3BlcnRpZXMoc3R5bGVQcm9wZXJ0aWVzKSk7Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OnNlZ21l
bnRlZEZvbnRGYWNlcyhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZChDU1NTZWdtZW50ZWRGb250RmFjZSYpPiBjYWxsYmFjaykKK3sKKyAgICAvLyBG
SVhNRTogV2UgaWdub3JlIHRoZSB0ZXh0IHN0cmluZy4KKworICAgIFJlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGlmIChDU1NQYXJzZXI6OnBhcnNlVmFsdWUoc3R5bGUucHRyKCksIENTU1Byb3BlcnR5Rm9udCwg
Zm9udCwgdHJ1ZSwgQ1NTU3RyaWN0TW9kZSwgbnVsbHB0cikgPT0gQ1NTUGFyc2VyOjpQYXJzZVJl
c3VsdDo6RXJyb3IpCisgICAgICAgIHJldHVybjsKKworICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0
c01hc2sgPSB0cmFpdHNNYXNrRnJvbVN0eWxlUHJvcGVydGllcyhzdHlsZS5nZXQoKSk7CisKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlGb250RmFtaWx5KTsKKyAgICBpZiAoIXZhbHVlIHx8ICFpczxDU1NWYWx1ZUxpc3Q+
KHZhbHVlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTVmFsdWVMaXN0JiBmYW1p
bHlMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdmFsdWUpOworICAgIGlmICghZmFtaWx5
TGlzdC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBpdGVtIDog
ZmFtaWx5TGlzdCkgeworICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZSA9IENTU0ZvbnRTZWxlY3Rv
cjo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0
ZW0uZ2V0KCkpKTsKKyAgICAgICAgaWYgKGZhbWlseU5hbWUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmIChhdXRvIHNlZ21lbnRlZEZvbnRGYWNlID0gZ2V0Rm9u
dEZhY2UoZmFtaWx5TmFtZSwgdHJhaXRzTWFzaykpCisgICAgICAgICAgICBjYWxsYmFjayhzZWdt
ZW50ZWRGb250RmFjZS52YWx1ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6Omxv
YWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBl
ciYmKQoreworICAgIC8vIEZJWE1FOiBNYXAgdGhlIGNvbGxlY3Rpb24gb2YgTG9hZGluZyBGb250
RmFjZSBvYmplY3RzIHRvIHRoZSBQcm9taXNlLCBzbyB0aGF0IHdlIGNhbiByZXNvbHZlIHRoZSBw
cm9taXNlIHdoZW4gdGhleSBhcmUgYWxsIGZpbmlzaGVkLgorICAgIHNlZ21lbnRlZEZvbnRGYWNl
cyhmb250LCB0ZXh0LCBbJl0oQ1NTU2VnbWVudGVkRm9udEZhY2UmIHNlZ21lbnRlZEZvbnRGYWNl
KSB7CisgICAgICAgIHNlZ21lbnRlZEZvbnRGYWNlLmxvYWQoKTsKKyAgICB9KTsKK30KKworYm9v
bCBGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRl
eHQpCit7CisgICAgYm9vbCBsb2FkZWQgPSB0cnVlOworICAgIHNlZ21lbnRlZEZvbnRGYWNlcyhm
b250LCB0ZXh0LCBbJl0oY29uc3QgQ1NTU2VnbWVudGVkRm9udEZhY2UmIHNlZ21lbnRlZEZvbnRG
YWNlKSB7CisgICAgICAgIGxvYWRlZCAmPSBzZWdtZW50ZWRGb250RmFjZS5hbGxGb250RmFjZXNB
cmVMb2FkZWQoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gbG9hZGVkOworfQorCitTdHJpbmcgRm9u
dEZhY2VTZXQ6OnN0YXR1cygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3N0YXR1cykgeworICAg
IGNhc2UgU3RhdHVzOjpMb2FkaW5nOgorICAgICAgICByZXR1cm4gU3RyaW5nKCJsb2FkaW5nIiwg
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBTdGF0dXM6OkxvYWRlZDoK
KyAgICAgICAgcmV0dXJuIFN0cmluZygibG9hZGVkIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJp
bmcoImxvYWRpbmciLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKwordm9pZCBG
b250RmFjZVNldDo6Zm9udExvYWRlZChGb250RmFjZSYpCit7CisgICAgLypmb3IgKGNvbnN0IFN0
cmluZyYgZmFtaWx5IDogZm9udEZhY2UuZmFtaWxpZXMoKSkgeworICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9mb250cy5maW5kKGZhbWlseSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2Zv
bnRzLmVuZCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnRlZEZvbnQgOiBpdGVy
YXRvci0+dmFsdWUpCisgICAgICAgICAgICAgICAgc2VnbWVudGVkRm9udC52YWx1ZS0+Zm9udExv
YWRlZChmb250RmFjZSk7CisgICAgICAgIH0KKyAgICB9Ki8KK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWNlNTkxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKQEAgLTAs
MCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZvbnRGYWNlU2V0X2gKKyNkZWZpbmUg
Rm9udEZhY2VTZXRfaAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlOwor
Y2xhc3MgRGVmZXJyZWRXcmFwcGVyOworY2xhc3MgRE9NQ29yZUV4Y2VwdGlvbjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIEZvbnRGYWNlU2V0IGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Qcm9t
aXNlPEZvbnRGYWNlU2V0JiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7CisKKyAgICBzdGF0
aWMgUmVmPEZvbnRGYWNlU2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0aWFs
RmFjZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250RmFjZVNldChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbml0aWFsRmFjZXMpKTsKKyAgICB9CisKKyAgICBGb250
RmFjZVNldCYgYWRkKEZvbnRGYWNlKik7CisgICAgYm9vbCByZW1vdmUoRm9udEZhY2UqKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBEZWZl
cnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IGxvYWQoZm9udCwgU3RyaW5nKCIgIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocHJvbWlzZSkpOyB9CisgICAgdm9pZCBsb2Fk
KGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXIm
JiBwcm9taXNlKTsKKworICAgIGJvb2wgY2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmID0gU3RyaW5nKCIgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisg
ICAgU3RyaW5nIHN0YXR1cygpIGNvbnN0OworCisgICAgY29uc3QgT3B0aW9uYWw8UHJvbWlzZT4m
IHByb21pc2UoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2U7IH0KKworICAgIHVzaW5nIFJlZkNv
dW50ZWQ8Rm9udEZhY2VTZXQ+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxGb250RmFjZVNl
dD46OmRlcmVmOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDU1NGb250U2VsZWN0b3I7
CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIExvYWRpbmcsCisgICAgICAgIExv
YWRlZAorICAgIH07CisKKyAgICBGb250RmFjZVNldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+Jik7CisKKyAgICAvLyBBY3RpdmVET01PYmpl
Y3QKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiRm9udEZhY2VTZXQiOyB9CisgICAgdmlydHVhbCBib29sIGNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIEV2
ZW50VGFyZ2V0CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZvbnRGYWNlU2V0RXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKworICAgIE9wdGlvbmFsPENTU1NlZ21l
bnRlZEZvbnRGYWNlPiBnZXRGb250RmFjZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgRm9u
dFRyYWl0c01hc2spOworICAgIHZvaWQgc2VnbWVudGVkRm9udEZhY2VzKGNvbnN0IFN0cmluZyYg
Zm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ1NTU2VnbWVudGVk
Rm9udEZhY2UmKT4pOworCisgICAgdm9pZCBmb250TG9hZGVkKEZvbnRGYWNlJiBmb250RmFjZSk7
CisKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGb250RmFjZT4+LCBDYXNlRm9sZGlu
Z0hhc2g+IG1fZm9udEZhY2VzOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRG
YWNlPj4sIENhc2VGb2xkaW5nSGFzaD4gbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzOworICAg
IFN0YXR1cyBtX3N0YXR1cyB7IFN0YXR1czo6TG9hZGluZyB9OworICAgIE9wdGlvbmFsPFByb21p
c2U+IG1fcHJvbWlzZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2VTZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTI3MzExCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBGb250RmFjZVNldExvYWRTdGF0dXMgeworICAgICJs
b2FkaW5nIiwKKyAgICAibG9hZGVkIgorfTsKKworWworICAgIEdsb2JhbENvbnRleHQ9RE9NV2lu
ZG93LAorICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsCisgICAgQ29uc3RydWN0b3Ioc2VxdWVuY2U8Rm9udEZhY2U+IGlu
aXRpYWxGYWNlcyksCisgICAgRXZlbnRUYXJnZXQKK10gaW50ZXJmYWNlIEZvbnRGYWNlU2V0IHsK
KyAgICBGb250RmFjZVNldCBhZGQoRm9udEZhY2UgZm9udCk7CisgICAgW0ltcGxlbWVudGVkQXM9
cmVtb3ZlXSBib29sZWFuIGRlbGV0ZShGb250RmFjZSBmb250KTsKKyAgICB2b2lkIGNsZWFyKCk7
CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZzsKKyAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9ubG9hZGluZ2RvbmU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmxvYWRpbmdlcnJvcjsKKworICAgIFByb21pc2UgbG9hZChET01TdHJpbmcgZm9udCwgb3B0aW9u
YWwgRE9NU3RyaW5nIHRleHQpOworCisgICAgYm9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9udCwg
b3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOworCisgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmli
dXRlIFByb21pc2UgcmVhZHk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXRM
b2FkU3RhdHVzIHN0YXR1czsKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgKaW5kZXggNGVlMjA5Ny4uMmUyYjJhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCkBAIC0xNDEsNiArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KGxvYWRlbmQpIFwKICAgICBtYWNybyhsb2FkaW5nKSBcCiAgICAgbWFjcm8obG9hZGluZ2RvbmUp
IFwKKyAgICBtYWNybyhsb2FkaW5nZXJyb3IpIFwKICAgICBtYWNybyhsb2Fkc3RhcnQpIFwKICAg
ICBtYWNybyhtYXJrKSBcCiAgICAgbWFjcm8obWVzc2FnZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggYWI0ZmVkYi4uNDMwYjhiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC05LDcgKzksNyBAQCBET01BcHBsaWNh
dGlvbkNhY2hlCiBET01XaW5kb3cKIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyCi1Gb250TG9hZGVy
IGNvbmRpdGlvbmFsPUZPTlRfTE9BRF9FVkVOVFMKK0ZvbnRGYWNlU2V0CiBJREJEYXRhYmFzZSBj
b25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJPcGVuREJSZXF1ZXN0IGNvbmRpdGlvbmFs
PUlOREVYRURfREFUQUJBU0UKIElEQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270293</attachid>
            <date>2016-01-29 21:41:43 -0800</date>
            <delta_ts>2016-02-01 13:04:15 -0800</delta_ts>
            <desc>Applied on top of attachment 270144</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>52157</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDY0NzY1ZDVmODFjNDliYTI2M2VlNzdhZTI3NzQ4YmU2MjhkZjYwZDEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgSmFuIDI5
IDE2OjM3OjA5IDIwMTYgLTA4MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4
N2Q3MGUuLjU4MmUxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMzgsNiArMzM4LDcgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBjc3MvQ291bnRlci5pZGwKICAgICBj
c3MvRE9NV2luZG93Q1NTLmlkbAogICAgIGNzcy9Gb250RmFjZS5pZGwKKyAgICBjc3MvRm9udEZh
Y2VTZXQuaWRsCiAgICAgY3NzL0ZvbnRMb2FkZXIuaWRsCiAgICAgY3NzL01lZGlhTGlzdC5pZGwK
ICAgICBjc3MvTWVkaWFRdWVyeUxpc3QuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCBkYTUxNGU3Li4zNWM5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTI0MCw2ICsyNDAsNyBAQCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L2Nzcy9Db3VudGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRE9NV2luZG93Q1NTLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9jc3MvRm9udEZhY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9G
b250RmFjZVNldC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRMb2FkZXIuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2Nzcy9NZWRpYUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9NZWRp
YVF1ZXJ5TGlzdC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZDc5YmEuLjRlMTAyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4OTcsNiArNTg5
NywxMSBAQAogCQlDMkM3M0JFRjFDNTVCMDFEMDBERjZCNkIgLyogSW1tZWRpYXRlRm9udEZhY2VT
b3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzczQkVEMUM1NUIwMUMwMERGNkI2QiAvKiBJbW1lZGlhdGVGb250RmFjZVNvdXJjZS5oICovOyB9
OwogCQlDMkM3M0JGMjFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291
cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzczQkYwMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuY3Bw
ICovOyB9OwogCQlDMkM3M0JGMzFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRG
YWNlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMkM3M0JGMTFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNl
LmggKi87IH07CisJCUMyRDE1QURDMUM1QjBDRUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
RDE1QURBMUM1QjBDRUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCAqLzsgfTsK
KwkJQzJEMTVBRTIxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRDE1QUUwMUM1QjBGQjMwMDEx
QTMwMCAvKiBGb250RmFjZVNldC5jcHAgKi87IH07CisJCUMyRDE1QUUzMUM1QjBGQjMwMDExQTMw
MCAvKiBGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzJEMTVBRTExQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmggKi87IH07
CisJCUMyRDE1QUU0MUM1QjJBMzIwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRDE1QURFMUM1QjBFMjMw
MDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJQzJEMTVBRTUxQzVCMkEzRjAw
MTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyRDE1QURGMUM1QjBFMjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0
LmggKi87IH07CiAJCUMyREU2QzNEMUM1MUQ5MTcwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRFNkMzQzFDNTFE
OEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5oICovOyB9OwogCQlDMkRFNkMzRTFDNTFEOTFCMDBE
Nzc0RDMgLyogSlNGb250RmFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkRFNkMzQjFDNTFEOEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5jcHAg
Ki87IH07CiAJCUMyREU2QzQwMUM1MURCMjAwMEQ3NzREMyAvKiBGb250RmFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJERTZDM0YxQzUxREIwRDAw
RDc3NEQzIC8qIEZvbnRGYWNlLmggKi87IH07CkBAIC0xMzc3NCw2ICsxMzc3OSwxMiBAQAogCQlD
MkM3M0JFRDFDNTVCMDFDMDBERjZCNkIgLyogSW1tZWRpYXRlRm9udEZhY2VTb3VyY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1tZWRpYXRlRm9udEZhY2VTb3VyY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDNzNCRjAxQzU1QzM1QzAwREY2QjZCIC8q
IEluRG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkM3M0JGMTFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVu
dFNWR0ZvbnRGYWNlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
RG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMkQxNUFEOTFDNUIwOUJFMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZvbnRGYWNlU2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzJEMTVBREExQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFjZVNldEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRDE1QURFMUM1QjBFMjMwMDExQTMw
MCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRm9udEZhY2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkQx
NUFERjFDNUIwRTIzMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyRDE1QUUwMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFjZVNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRDE1QUUxMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFj
ZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RmFjZVNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRFNkMzQTFDNTFENTkwMDBENzc0RDMgLyog
Rm9udEZhY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZvbnRGYWNlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJERTZDM0IxQzUxRDhGQTAwRDc3NEQzIC8qIEpTRm9u
dEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyREU2QzNDMUM1MUQ4RkEwMEQ3
NzREMyAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Rm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NDYwLDYgKzE3NDcx
LDggQEAKIAkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJEMTVBREUxQzVC
MEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovLAorCQkJCUMyRDE1QURGMUM1QjBF
MjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmggKi8sCiAJCQkJQzJERTZDM0IxQzUxRDhGQTAw
RDc3NEQzIC8qIEpTRm9udEZhY2UuY3BwICovLAogCQkJCUMyREU2QzNDMUM1MUQ4RkEwMEQ3NzRE
MyAvKiBKU0ZvbnRGYWNlLmggKi8sCiAJCQkJOTkwOEIwRjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCkBAIC0yMjM2MCw2ICsyMjM3
Myw3IEBACiAJCQkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0
b20uY3BwICovLAogCQkJCUJDRUZFMUU0MERDQTVGMzMwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNz
b3JDdXN0b20uY3BwICovLAogCQkJCUMyREU2QzQzMUM1MUU0QTUwMEQ3NzREMyAvKiBKU0ZvbnRG
YWNlQ3VzdG9tLmNwcCAqLywKKwkJCQlDMkQxNUFEQTFDNUIwQ0VFMDAxMUEzMDAgLyogSlNGb250
RmFjZVNldEN1c3RvbS5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEN1c3RvbTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzY1Miw2ICsyMzY2Niw5IEBACiAJCQkJQzI0OUE4NTIx
QzU3NTMzQTAwMzdGQThGIC8qIERlcHJlY2F0ZWRSZW1vdGVTVkdGb250RmFjZVNvdXJjZS5jcHAg
Ki8sCiAJCQkJQzI0OUE4NTMxQzU3NTMzQTAwMzdGQThGIC8qIERlcHJlY2F0ZWRSZW1vdGVTVkdG
b250RmFjZVNvdXJjZS5oICovLAogCQkJCTFDMTkyNzUyMUM1ODlDQjIwMDUxNUMwNiAvKiBGb250
VmFyaWFudEJ1aWxkZXIuY3BwICovLAorCQkJCUMyRDE1QUQ5MUM1QjA5QkUwMDExQTMwMCAvKiBG
b250RmFjZVNldC5pZGwgKi8sCisJCQkJQzJEMTVBRTAxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRG
YWNlU2V0LmNwcCAqLywKKwkJCQlDMkQxNUFFMTFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VT
ZXQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTI2MzQwLDYgKzI2MzU3LDcgQEAKIAkJCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAg
LyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLywKIAkJCQk3NzI4Njk4NDE0
RkQ5QURBMDBGNDg0REMgLyogSlNFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDBGMDE1MEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMyRDE1QUUzMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkUzQkMwQ0IxMTdEM0UwODAwQjk0MDlBIC8qIEpTRmlsZUVycm9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTg3ODVGMTEyMkUxRTg3MDAzQUFCREEgLyogSlNGaWxl
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAwRjAxNzBFMEExODk1MDBGRDA0RTMg
LyogSlNGaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzYyOSw2ICsyNzY0Nyw3IEBACiAJ
CQkJOTNGMTk5NEYwODI0NUU1OTAwMUU5QUJDIC8qIFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDMkQxNUFFNTFDNUIyQTNGMDAxMUEzMDAgLyogSlNGb250RmFjZVNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRv
d0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBT
aGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk0RjE3NUQzRjNFMDBDMjFFQzgg
LyogU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzAxNjEsNiArMzAxODAsNyBAQAogCQkJCUZE
MjNBMTI1MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxODBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRp
YUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REEzMTYwMTQ2NDEwMEZFQTNCMSAv
KiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJEMTVBRTQxQzVCMkEz
MjAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCODU5
RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREE5OERERjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRp
YUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEyOTMsNiArMzEzMTMsNyBA
QAogCQkJCTgxMDJDNTg4MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjM1NDBGMjBEMDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCNkEyMEU4MURDNEYwMEIyNTk2NSAvKiBT
dHlsZUJhY2tncm91bmREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyRDE1QUUyMUM1QjBG
QjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjY3
RDBFODFENDIwMDBCMjU5NjUgLyogU3R5bGVCb3hEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgzODZBOTcwMTlGNjFFNEYwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFRjQ0N0EwRTY3NDdEMDAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTYzOCw2ICszMTY1OSw3IEBACiAJCQkJMDc4RTA5MTIxN0Qx
NENFRTAwNDIwQUExIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcyOTdGQTcxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkxMzE3RDE0Q0VFMDA0MjBBQTEgLyogVXNlck1l
ZGlhUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkQxNUFEQzFDNUIwQ0VFMDAxMUEz
MDAgLyogSlNGb250RmFjZVNldEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNCNzk3
MTE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDRTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAv
KiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWYzMmRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJKU0ZvbnRGYWNlU2V0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVl
IEpTRm9udEZhY2VTZXQ6OnJlYWR5KEpTQzo6RXhlY1N0YXRlJikgY29uc3QKK3sKKyAgICBhdXRv
JiBwcm9taXNlID0gd3JhcHBlZCgpLnByb21pc2UoKTsKKyAgICBBU1NFUlQocHJvbWlzZSk7Cisg
ICAgcmV0dXJuIHByb21pc2UudmFsdWUoKS5qc09iamVjdCgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDU2OTk2OGYuLjRhZjA3NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHN0YXRpYyB1
bnNpZ25lZCBmb250U2VsZWN0b3JJZDsKIAogQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0
b3IoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudCgmZG9jdW1lbnQpCisgICAg
LCBtX2ZvbnRGYWNlU2V0KEZvbnRGYWNlU2V0OjpjcmVhdGUoZG9jdW1lbnQsIFZlY3RvcjxSZWZQ
dHI8Rm9udEZhY2U+PigpKSkKICAgICAsIG1fYmVnaW5Mb2FkaW5nVGltZXIoKnRoaXMsICZDU1NG
b250U2VsZWN0b3I6OmJlZ2luTG9hZFRpbWVyRmlyZWQpCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9u
dFNlbGVjdG9ySWQpCiAgICAgLCBtX3ZlcnNpb24oMCkKQEAgLTg2LDE4ICs4NywxMiBAQCBDU1NG
b250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IoKQogICAgIEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkucmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1ib29sIENTU0ZvbnRTZWxlY3Rvcjo6aXNFbXB0
eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZm9udHMuaXNFbXB0eSgpOwotfQotCi1zdGF0aWMg
T3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNvbXB1dGVUcmFpdHNNYXNrKGNvbnN0IFN0eWxlUHJv
cGVydGllcyYgc3R5bGUpCitzdGF0aWMgRm9udFRyYWl0c01hc2sgY29tcHV0ZVRyYWl0c01hc2so
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICB1bnNpZ25lZCB0cmFpdHNNYXNr
ID0gMDsKIAogICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGZvbnRTdHlsZSA9IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUpKSB7Ci0gICAgICAgIGlmICghaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250U3R5bGUpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIEFTU0VSVChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkpOwog
CiAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250U3R5bGUp
LmdldFZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgpAQCAtMTE0LDgg
KzEwOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZVRyYWl0c01h
c2soY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKICAgICAgICAgdHJhaXRzTWFzayB8PSBG
b250U3R5bGVOb3JtYWxNYXNrOwogCiAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFdlaWdo
dCA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250V2VpZ2h0KSkgewot
ICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkpCi0gICAgICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVl
PigqZm9udFdlaWdodCkpOwogCiAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCpmb250V2VpZ2h0KS5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1
ZUJvbGQ6CkBAIC0yMTcsMjQgKzIxMSw2IEBAIFN0cmluZyBDU1NGb250U2VsZWN0b3I6OmZhbWls
eU5hbWVGcm9tUHJpbWl0aXZlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKICAgICB9
CiB9CiAKLXN0YXRpYyB2b2lkIHJlZ2lzdGVyTG9jYWxGb250RmFjZXNGb3JGYW1pbHkoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUsIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8UmVmPEZvbnRGYWNlPj4sIENhc2VGb2xkaW5nSGFzaD4mIGxvY2FsbHlJbnN0YWxsZWRG
b250RmFjZXMpCi17Ci0gICAgQVNTRVJUKCFsb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmNvbnRh
aW5zKGZhbWlseU5hbWUpKTsKLQotICAgIFZlY3RvcjxGb250VHJhaXRzTWFzaz4gdHJhaXRzTWFz
a3MgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdldFRyYWl0c0luRmFtaWx5KGZhbWlseU5hbWUp
OwotICAgIGlmICh0cmFpdHNNYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFZlY3RvcjxSZWY8Rm9udEZhY2U+PiBmYWNlcyA9IHsgfTsKLSAgICBmb3IgKGF1dG8gbWFzayA6
IHRyYWl0c01hc2tzKSB7Ci0gICAgICAgIFJlZjxGb250RmFjZT4gZmFjZSA9IEZvbnRGYWNlOjpj
cmVhdGUoZG9jdW1lbnQsIG1hc2ssIHRydWUpOwotICAgICAgICBmYWNlLT5hZGRTb3VyY2Uoc3Rk
OjptYWtlX3VuaXF1ZTxMb2NhbEZvbnRGYWNlU291cmNlPihmYWNlLCBmYW1pbHlOYW1lKSk7Ci0g
ICAgICAgIEFTU0VSVCghZmFjZS0+YWxsU291cmNlc0hhdmVGYWlsZWQoKSk7Ci0gICAgICAgIGZh
Y2VzLmFwcGVuZChXVEZNb3ZlKGZhY2UpKTsKLSAgICB9Ci0gICAgbG9jYWxseUluc3RhbGxlZEZv
bnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgV1RGTW92ZShmYWNlcykpOwotfQotCiB2b2lkIENTU0Zv
bnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUs
IGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKIHsKICAgICBp
ZiAoIWRvY3VtZW50KCkpCkBAIC0yNjMsMTIgKzIzOSwxOCBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rv
cjo6YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGJvb2wgaXNJ
bml0aQogCiAgICAgQ1NTVmFsdWVMaXN0KiByYW5nZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KHVuaWNvZGVSYW5nZS5nZXQoKSk7CiAKLSAgICBhdXRvIGNvbXB1dGVkVHJhaXRzTWFzayA9
IGNvbXB1dGVUcmFpdHNNYXNrKHN0eWxlKTsKLSAgICBpZiAoIWNvbXB1dGVkVHJhaXRzTWFzaykK
LSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gdHJhaXRzTWFzayA9IGNvbXB1dGVkVHJhaXRzTWFz
ay52YWx1ZSgpOworICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGZvbnRTdHlsZSA9IHN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUpKSB7CisgICAgICAgIGlmICgh
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250U3R5bGUpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGZvbnRXZWlnaHQgPSBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdlaWdodCkpIHsKKyAgICAgICAgaWYgKCFp
czxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAotICAgIFJlZjxGb250RmFjZT4gZm9udEZhY2UgPSBGb250RmFjZTo6Y3JlYXRlKCpk
b2N1bWVudCgpLCB0cmFpdHNNYXNrKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8ganVzdCBwYXNzIHRoZSBDU1NWYWx1ZXMgaW50byB0aGUgRm9udEZhY2UgaW5zdGVhZCBvZiBk
dXBsaWNhdGluZyB0aGlzIGNvZGUuCisgICAgUmVmPEZvbnRGYWNlPiBmb250RmFjZSA9IEZvbnRG
YWNlOjpjcmVhdGUoKmRvY3VtZW50KCksIGNvbXB1dGVUcmFpdHNNYXNrKHN0eWxlKSk7CiAgICAg
YWRkU291cmNlc1RvRm9udEZhY2UoZm9udEZhY2UuZ2V0KCksIHNyY0xpc3QsIGlzSW5pdGlhdGlu
Z0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogICAgIGlmIChmb250RmFjZS0+YWxsU291
cmNlc0hhdmVGYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzMwLDE4ICszMTIsMTEgQEAg
dm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVByb3BlcnRp
ZXMmIHN0eWxlLCBib29sIGlzSW5pdGkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IGZhbWlseU5hbWVzLmFwcGVuZChmYW1pbHlOYW1lKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgVmVjdG9yPFJlZjxGb250RmFjZT4+KCkpOwot
ICAgICAgICBhdXRvJiBmYW1pbHlGb250RmFjZXMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OwotICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgICAgIHJlZ2lz
dGVyTG9jYWxGb250RmFjZXNGb3JGYW1pbHkoKmRvY3VtZW50KCksIGZhbWlseU5hbWUsIG1fbG9j
YWxseUluc3RhbGxlZEZvbnRGYWNlcyk7Ci0gICAgICAgICAgICBmYW1pbHlGb250RmFjZXMgPSB7
IH07Ci0gICAgICAgIH0KLQotICAgICAgICBmYW1pbHlGb250RmFjZXMuYXBwZW5kKGZvbnRGYWNl
LmNvcHlSZWYoKSk7CiAgICAgICAgIAogICAgICAgICArK21fdmVyc2lvbjsKICAgICB9CiAgICAg
Zm9udEZhY2UtPnNldEZhbWlsaWVzKFdURk1vdmUoZmFtaWx5TmFtZXMpKTsKKyAgICBtX2ZvbnRG
YWNlU2V0LT5hZGQoZm9udEZhY2UucHRyKCkpOwogfQogCiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udEZhY2VXaWxsQ2hhbmdlKEZvbnRGYWNlJikKQEAgLTM3MSwxMyArMzQ2LDcgQEAgdm9pZCBD
U1NGb250U2VsZWN0b3I6OmRpc3BhdGNoSW52YWxpZGF0aW9uQ2FsbGJhY2tzKCkKIAogdm9pZCBD
U1NGb250U2VsZWN0b3I6OmZvbnRMb2FkZWQoRm9udEZhY2UmIGZvbnRGYWNlKQogewotICAgIGZv
ciAoY29uc3QgU3RyaW5nJiBmYW1pbHkgOiBmb250RmFjZS5mYW1pbGllcygpKSB7Ci0gICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2ZvbnRzLmZpbmQoZmFtaWx5KTsKLSAgICAgICAgaWYgKGl0ZXJh
dG9yICE9IG1fZm9udHMuZW5kKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc2VnbWVudGVk
Rm9udCA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgICAgICBzZWdtZW50ZWRGb250LnZh
bHVlLT5mb250TG9hZGVkKGZvbnRGYWNlKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBtX2ZvbnRG
YWNlU2V0LT5mb250TG9hZGVkKGZvbnRGYWNlKTsKIAogICAgIGRpc3BhdGNoSW52YWxpZGF0aW9u
Q2FsbGJhY2tzKCk7CiB9CkBAIC00MTMsMTMzICszODIsMjAgQEAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgcmVzb2x2ZUdlbmVyaWNGYW1pbHkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBG
b250RGUKICAgICByZXR1cm4gZmFtaWx5TmFtZTsKIH0KIAotY2xhc3MgRm9udEZhY2VDb21wYXJh
dG9yIHsKLXB1YmxpYzoKLSAgICBGb250RmFjZUNvbXBhcmF0b3IoRm9udFRyYWl0c01hc2sgZGVz
aXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uKQotICAgICAgICA6IG1fZGVzaXJlZFRyYWl0c01h
c2tGb3JDb21wYXJpc29uKGRlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbikKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fZGVzaXJlZFRyYWl0c01h
c2tGb3JDb21wYXJpc29uICYgRm9udFdlaWdodE1hc2spOwotICAgIH0KLQotICAgIGJvb2wgb3Bl
cmF0b3IoKShjb25zdCBGb250RmFjZSYgZmlyc3QsIGNvbnN0IEZvbnRGYWNlJiBzZWNvbmQpCi0g
ICAgewotICAgICAgICBGb250VHJhaXRzTWFzayBmaXJzdFRyYWl0c01hc2sgPSBmaXJzdC50cmFp
dHNNYXNrKCk7Ci0gICAgICAgIEZvbnRUcmFpdHNNYXNrIHNlY29uZFRyYWl0c01hc2sgPSBzZWNv
bmQudHJhaXRzTWFzaygpOwotCi0gICAgICAgIGJvb2wgZmlyc3RIYXNEZXNpcmVkU3R5bGUgPSBm
aXJzdFRyYWl0c01hc2sgJiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRT
dHlsZU1hc2s7Ci0gICAgICAgIGJvb2wgc2Vjb25kSGFzRGVzaXJlZFN0eWxlID0gc2Vjb25kVHJh
aXRzTWFzayAmIG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlTWFz
azsKLQotICAgICAgICBpZiAoZmlyc3RIYXNEZXNpcmVkU3R5bGUgIT0gc2Vjb25kSGFzRGVzaXJl
ZFN0eWxlKQotICAgICAgICAgICAgcmV0dXJuIGZpcnN0SGFzRGVzaXJlZFN0eWxlOwotCi0gICAg
ICAgIGlmICgobV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250U3R5bGVJdGFs
aWNNYXNrKSAmJiAhZmlyc3QuaXNMb2NhbEZhbGxiYWNrKCkgJiYgIXNlY29uZC5pc0xvY2FsRmFs
bGJhY2soKSkgewotICAgICAgICAgICAgLy8gUHJlZmVyIGEgZm9udCB0aGF0IGhhcyBpbmRpY2F0
ZWQgdGhhdCBpdCBjYW4gb25seSBzdXBwb3J0IGl0YWxpY3MgdG8gYSBmb250IHRoYXQgY2xhaW1z
IHRvIHN1cHBvcnQKLSAgICAgICAgICAgIC8vIGFsbCBzdHlsZXMuIFRoZSBzcGVjaWFsaXplZCBm
b250IGlzIG1vcmUgbGlrZWx5IHRvIGJlIHRoZSBvbmUgdGhlIGF1dGhvciB3YW50cyB1c2VkLgot
ICAgICAgICAgICAgYm9vbCBmaXJzdFJlcXVpcmVzSXRhbGljcyA9IChmaXJzdFRyYWl0c01hc2sg
JiBGb250U3R5bGVJdGFsaWNNYXNrKSAmJiAhKGZpcnN0VHJhaXRzTWFzayAmIEZvbnRTdHlsZU5v
cm1hbE1hc2spOwotICAgICAgICAgICAgYm9vbCBzZWNvbmRSZXF1aXJlc0l0YWxpY3MgPSAoc2Vj
b25kVHJhaXRzTWFzayAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICEoc2Vjb25kVHJhaXRzTWFz
ayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spOwotICAgICAgICAgICAgaWYgKGZpcnN0UmVxdWlyZXNJ
dGFsaWNzICE9IHNlY29uZFJlcXVpcmVzSXRhbGljcykKLSAgICAgICAgICAgICAgICByZXR1cm4g
Zmlyc3RSZXF1aXJlc0l0YWxpY3M7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2Vjb25kVHJh
aXRzTWFzayAmIG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFdlaWdodE1h
c2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChmaXJzdFRyYWl0c01h
c2sgJiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcv
VFIvMjAxMS9XRC1jc3MzLWZvbnRzLTIwMTExMDA0LyNmb250LW1hdGNoaW5nLWFsZ29yaXRobSBz
YXlzIDoKLSAgICAgICAgLy8gICAtIElmIHRoZSBkZXNpcmVkIHdlaWdodCBpcyBsZXNzIHRoYW4g
NDAwLCB3ZWlnaHRzIGJlbG93IHRoZSBkZXNpcmVkIHdlaWdodCBhcmUgY2hlY2tlZCBpbiBkZXNj
ZW5kaW5nIG9yZGVyIGZvbGxvd2VkIGJ5IHdlaWdodHMgYWJvdmUgdGhlIGRlc2lyZWQgd2VpZ2h0
IGluIGFzY2VuZGluZyBvcmRlciB1bnRpbCBhIG1hdGNoIGlzIGZvdW5kLgotICAgICAgICAvLyAg
IC0gSWYgdGhlIGRlc2lyZWQgd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiA1MDAsIHdlaWdodHMgYWJv
dmUgdGhlIGRlc2lyZWQgd2VpZ2h0IGFyZSBjaGVja2VkIGluIGFzY2VuZGluZyBvcmRlciBmb2xs
b3dlZCBieSB3ZWlnaHRzIGJlbG93IHRoZSBkZXNpcmVkIHdlaWdodCBpbiBkZXNjZW5kaW5nIG9y
ZGVyIHVudGlsIGEgbWF0Y2ggaXMgZm91bmQuCi0gICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJl
ZCB3ZWlnaHQgaXMgNDAwLCA1MDAgaXMgY2hlY2tlZCBmaXJzdCBhbmQgdGhlbiB0aGUgcnVsZSBm
b3IgZGVzaXJlZCB3ZWlnaHRzIGxlc3MgdGhhbiA0MDAgaXMgdXNlZC4KLSAgICAgICAgLy8gICAt
IElmIHRoZSBkZXNpcmVkIHdlaWdodCBpcyA1MDAsIDQwMCBpcyBjaGVja2VkIGZpcnN0IGFuZCB0
aGVuIHRoZSBydWxlIGZvciBkZXNpcmVkIHdlaWdodHMgbGVzcyB0aGFuIDQwMCBpcyB1c2VkLgot
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmYWxsYmFja1J1bGVTZXRzID0gOTsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJ1bGVzUGVyU2V0ID0gODsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IEZvbnRUcmFpdHNNYXNrIHdlaWdodEZhbGxiYWNrUnVsZVNldHNbZmFsbGJhY2tS
dWxlU2V0c11bcnVsZXNQZXJTZXRdID0gewotICAgICAgICAgICAgeyBGb250V2VpZ2h0MjAwTWFz
aywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFz
aywgRm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFz
aywgRm9udFdlaWdodDkwME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDEwME1hc2ss
IEZvbnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDUwME1hc2ss
IEZvbnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ss
IEZvbnRXZWlnaHQ5MDBNYXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQyMDBNYXNrLCBG
b250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBG
b250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBG
b250V2VpZ2h0OTAwTWFzayB9LAotICAgICAgICAgICAgeyBGb250V2VpZ2h0NTAwTWFzaywgRm9u
dFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzaywgRm9u
dFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9u
dFdlaWdodDkwME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDQwME1hc2ssIEZvbnRX
ZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2ssIEZvbnRX
ZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRX
ZWlnaHQ5MDBNYXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2Vp
Z2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2Vp
Z2h0NDAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2Vp
Z2h0MTAwTWFzayB9LAotICAgICAgICAgICAgeyBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdo
dDkwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdo
dDQwME1hc2ssIEZvbnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdo
dDEwME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDkwME1hc2ssIEZvbnRXZWlnaHQ3
MDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0
MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQx
MDBNYXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0NzAw
TWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAw
TWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAw
TWFzayB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdW5zaWduZWQgcnVsZVNldEluZGV4ID0gMDsK
LSAgICAgICAgZm9yICg7ICEobV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiAoMSA8
PCAoRm9udFdlaWdodDEwMEJpdCArIHJ1bGVTZXRJbmRleCkpKTsgcnVsZVNldEluZGV4KyspIHsg
fQotCi0gICAgICAgIGNvbnN0IEZvbnRUcmFpdHNNYXNrKiB3ZWlnaHRGYWxsYmFja1J1bGUgPSB3
ZWlnaHRGYWxsYmFja1J1bGVTZXRzW3J1bGVTZXRJbmRleF07Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBydWxlc1BlclNldDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc2Vjb25k
VHJhaXRzTWFzayAmIHdlaWdodEZhbGxiYWNrUnVsZVtpXSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZmlyc3RUcmFpdHNNYXNrICYgd2VpZ2h0RmFsbGJh
Y2tSdWxlW2ldKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGb250VHJhaXRzTWFz
ayBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbjsKLX07Ci0KIEZvbnRSYW5nZXMgQ1NT
Rm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAg
Ly8gRklYTUU6IFRoZSBzcGVjIChhbmQgRmlyZWZveCkgc2F5cyB1c2VyIHNwZWNpZmllZCBnZW5l
cmljIGZhbWlsaWVzIChzYW5zLXNlcmlmIGV0Yy4pIHNob3VsZCBiZSByZXNvbHZlZCBiZWZvcmUg
dGhlIEBmb250LWZhY2UgbG9va3VwIHRvby4KICAgICBib29sIHJlc29sdmVHZW5lcmljRmFtaWx5
Rmlyc3QgPSBmYW1pbHlOYW1lID09IHN0YW5kYXJkRmFtaWx5OwogCiAgICAgQXRvbWljU3RyaW5n
IGZhbWlseUZvckxvb2t1cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPyByZXNvbHZlR2Vu
ZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpIDogZmFt
aWx5TmFtZTsKLSAgICBDU1NTZWdtZW50ZWRGb250RmFjZSogZmFjZSA9IGdldEZvbnRGYWNlKGZv
bnREZXNjcmlwdGlvbiwgZmFtaWx5Rm9yTG9va3VwKTsKKyAgICBhdXRvIGZhY2UgPSBtX2ZvbnRG
YWNlU2V0LT5nZXRGb250RmFjZShmYW1pbHlGb3JMb29rdXAsIGZvbnREZXNjcmlwdGlvbi50cmFp
dHNNYXNrKCkpOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBpZiAoIXJlc29sdmVHZW5lcmlj
RmFtaWx5Rmlyc3QpCiAgICAgICAgICAgICBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJp
Y0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwogICAgICAg
ICByZXR1cm4gRm9udFJhbmdlcyhGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHko
Zm9udERlc2NyaXB0aW9uLCBmYW1pbHlGb3JMb29rdXApKTsKICAgICB9CiAKLSAgICByZXR1cm4g
ZmFjZS0+Zm9udFJhbmdlcyhmb250RGVzY3JpcHRpb24pOwotfQotCi1DU1NTZWdtZW50ZWRGb250
RmFjZSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCi17Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fZm9udEZhY2VzLmZpbmQoZmFtaWx5KTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9mb250RmFjZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8m
IGZhbWlseUZvbnRGYWNlcyA9IGl0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGF1dG8mIHNlZ21lbnRl
ZEZvbnRGYWNlQ2FjaGUgPSBtX2ZvbnRzLmFkZChmYW1pbHksIEhhc2hNYXA8dW5zaWduZWQsIHN0
ZDo6dW5pcXVlX3B0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4+KCkpLml0ZXJhdG9yLT52YWx1ZTsK
LQotICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRz
TWFzaygpOwotCi0gICAgYXV0byBhZGRSZXN1bHQgPSBzZWdtZW50ZWRGb250RmFjZUNhY2hlLmFk
ZCh0cmFpdHNNYXNrLCBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlZ21lbnRlZEZvbnRGYWNlPigqdGhp
cykpOwotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlJiBmYWNlID0gKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJu
ICZmYWNlOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Rm9udEZhY2U+LCAz
Mj4gY2FuZGlkYXRlRm9udEZhY2VzOwotICAgIGZvciAoaW50IGkgPSBmYW1pbHlGb250RmFjZXMu
c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgRm9udEZhY2UmIGNhbmRpZGF0ZSA9
IGZhbWlseUZvbnRGYWNlc1tpXTsKLSAgICAgICAgdW5zaWduZWQgY2FuZGlkYXRlVHJhaXRzTWFz
ayA9IGNhbmRpZGF0ZS50cmFpdHNNYXNrKCk7Ci0gICAgICAgIGlmICgodHJhaXRzTWFzayAmIEZv
bnRTdHlsZU5vcm1hbE1hc2spICYmICEoY2FuZGlkYXRlVHJhaXRzTWFzayAmIEZvbnRTdHlsZU5v
cm1hbE1hc2spKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhbmRpZGF0ZUZvbnRG
YWNlcy5hcHBlbmQoY2FuZGlkYXRlKTsKLSAgICB9Ci0KLSAgICBhdXRvIGxvY2FsSXRlcmF0b3Ig
PSBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuZmluZChmYW1pbHkpOwotICAgIGlmIChsb2Nh
bEl0ZXJhdG9yICE9IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5lbmQoKSkgewotICAgICAg
ICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGxvY2FsSXRlcmF0b3ItPnZhbHVlKSB7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBjYW5kaWRhdGVUcmFpdHNNYXNrID0gY2FuZGlkYXRlLT50cmFpdHNNYXNr
KCk7Ci0gICAgICAgICAgICBpZiAoKHRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSAm
JiAhKGNhbmRpZGF0ZVRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNhbmRpZGF0ZUZvbnRGYWNlcy5hcHBlbmQo
Y2FuZGlkYXRlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0ZDo6c3RhYmxlX3NvcnQoY2Fu
ZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZvbnRGYWNlcy5lbmQoKSwgRm9udEZh
Y2VDb21wYXJhdG9yKHRyYWl0c01hc2spKTsKLSAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGNh
bmRpZGF0ZUZvbnRGYWNlcykKLSAgICAgICAgZmFjZS5hcHBlbmRGb250RmFjZShjYW5kaWRhdGUu
Z2V0KCkpOwotCi0gICAgcmV0dXJuICZmYWNlOworICAgIHJldHVybiBmYWNlLnZhbHVlKCkuZm9u
dFJhbmdlcyhmb250RGVzY3JpcHRpb24pOwogfQogCiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Y2xl
YXJEb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggNjY2NjNh
Ny4uN2I1N2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkNTU1NlZ21lbnRlZEZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udEZh
Y2VTZXQuaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KQEAgLTYyLDcgKzYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Rm9udFJhbmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgc2l6ZV90IGZhbGxiYWNr
Rm9udENvdW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gZmFsbGJhY2tG
b250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICBDU1NT
ZWdtZW50ZWRGb250RmFjZSogZ2V0Rm9udEZhY2UoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOwogCiAgICAgdm9pZCBjbGVhckRvY3VtZW50KCk7CiAK
QEAgLTcxLDggKzcxLDYgQEAgcHVibGljOgogICAgIHZvaWQgZm9udExvYWRlZChGb250RmFjZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBmb250Q2FjaGVJbnZhbGlkYXRlZCgpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJ
bnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVjdG9yQ2xpZW50Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVj
dG9yQ2xpZW50Jikgb3ZlcnJpZGU7CiAKQEAgLTk0LDkgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGJlZ2luTG9hZFRpbWVyRmlyZWQoKTsKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50Owot
ICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4sIENhc2VGb2xkaW5nSGFz
aD4gbV9mb250RmFjZXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZhY2U+
PiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXM7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxDU1NTZWdtZW50
ZWRGb250RmFjZT4+LCBDYXNlRm9sZGluZ0hhc2g+IG1fZm9udHM7CisgICAgUmVmPEZvbnRGYWNl
U2V0PiBtX2ZvbnRGYWNlU2V0OwogICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gbV9j
bGllbnRzOwogCiAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBt
X2ZvbnRzVG9CZWdpbkxvYWRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VnbWVudGVkRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZv
bnRGYWNlLmNwcAppbmRleCA0NGVkYzczLi5jN2VhYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKQEAgLTM2LDggKzM2LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DU1NTZWdtZW50ZWRGb250RmFjZTo6Q1NTU2VnbWVudGVkRm9udEZhY2Uo
Q1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IpCi0gICAgOiBtX2ZvbnRTZWxlY3Rvcihmb250
U2VsZWN0b3IpCitDU1NTZWdtZW50ZWRGb250RmFjZTo6Q1NTU2VnbWVudGVkRm9udEZhY2UoKQog
ewogfQogCkBAIC05Niw0ICs5NSwxOSBAQCBGb250UmFuZ2VzIENTU1NlZ21lbnRlZEZvbnRGYWNl
Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aQogICAgIHJl
dHVybiBmb250UmFuZ2VzOwogfQogCit2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpsb2FkKCkK
K3sKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBtX2ZvbnRGYWNlcykKKyAgICAgICAgZmFjZS0+bG9h
ZCgpOworfQorCitib29sIENTU1NlZ21lbnRlZEZvbnRGYWNlOjphbGxGb250RmFjZXNBcmVMb2Fk
ZWQoKSBjb25zdAoreworICAgIGZvciAoYXV0byYgZmFjZSA6IG1fZm9udEZhY2VzKSB7CisgICAg
ICAgIGlmIChmYWNlLT5zdGF0dXNFbnVtKCkgIT0gRm9udEZhY2U6OlN0YXR1czo6TG9hZGVkKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaAppbmRleCBjMGFhMmY5
Li44YjZkN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaApA
QCAtNDEsOSArNDEsNyBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiAKIGNsYXNzIENTU1NlZ21l
bnRlZEZvbnRGYWNlIHsKIHB1YmxpYzoKLSAgICBDU1NTZWdtZW50ZWRGb250RmFjZShDU1NGb250
U2VsZWN0b3ImKTsKLQotICAgIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9mb250U2VsZWN0b3I7IH0KKyAgICBDU1NTZWdtZW50ZWRGb250RmFjZSgpOwog
CiAgICAgdm9pZCBmb250TG9hZGVkKEZvbnRGYWNlJik7CiAKQEAgLTUxLDEwICs0OSwxMiBAQCBw
dWJsaWM6CiAKICAgICBGb250UmFuZ2VzIGZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9u
Jik7CiAKKyAgICB2b2lkIGxvYWQoKTsKKyAgICBib29sIGFsbEZvbnRGYWNlc0FyZUxvYWRlZCgp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgcHJ1bmVUYWJsZSgpOwogCi0gICAgQ1NTRm9u
dFNlbGVjdG9yJiBtX2ZvbnRTZWxlY3RvcjsKICAgICBIYXNoTWFwPEZvbnREZXNjcmlwdGlvbktl
eSwgRm9udFJhbmdlcywgRm9udERlc2NyaXB0aW9uS2V5SGFzaCwgV1RGOjpTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8Rm9udERlc2NyaXB0aW9uS2V5Pj4gbV9kZXNjcmlwdGlvblRvUmFuZ2VzTWFwOwog
ICAgIFZlY3RvcjxSZWY8Rm9udEZhY2U+LCAxPiBtX2ZvbnRGYWNlczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAppbmRleCBkMjY2MmMwLi4wYmY0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKQEAgLTI0Miw2ICsyNDIsNyBAQCB2b2lkIEZvbnRGYWNlOjpzZXRTdHlsZShjb25zdCBTdHJp
bmcmIG5ld1N0eWxlKQogICAgICAgICBuZXdUcmFpdHNNYXNrIHw9IEZvbnRTdHlsZUl0YWxpY01h
c2s7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fdHJhaXRzTWFzayA9IHN0YXRp
Y19jYXN0PEZvbnRUcmFpdHNNYXNrPihuZXdUcmFpdHNNYXNrKTsKQEAgLTI4MywxMCArMjg0LDcg
QEAgdm9pZCBGb250RmFjZTo6c2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYgd2VpZ2h0KQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGZvbnRXZWlnaHQgPSBzdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwotICAgIGlmICghZm9udFdl
aWdodCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4o
KmZvbnRXZWlnaHQpKQorICAgIGlmICghZm9udFdlaWdodCB8fCAhaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KCpmb250V2VpZ2h0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9udFNlbGVjdG9yKCku
Zm9udEZhY2VXaWxsQ2hhbmdlKCp0aGlzKTsKQEAgLTMyMyw2ICszMjEsNyBAQCB2b2lkIEZvbnRG
YWNlOjpzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiB3ZWlnaHQpCiAgICAgICAgIG5ld1RyYWl0c01h
c2sgfD0gRm9udFdlaWdodDEwME1hc2s7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IG1fdHJhaXRzTWFzayA9IHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPihuZXdUcmFpdHNNYXNr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggZTEwODFlYy4uMTc4MDNhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmgKQEAgLTExNiw2ICsxMTYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmVhdHVy
ZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzKTsKICAgICBTdHJpbmcgc3Rh
dHVzKCkgY29uc3Q7CiAKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIFVubG9hZGVk
LAorICAgICAgICBMb2FkaW5nLAorICAgICAgICBMb2FkZWQsCisgICAgICAgIEVycm9yCisgICAg
fTsKKyAgICBTdGF0dXMgc3RhdHVzRW51bSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisK
ICAgICBib29sIGFsbFNvdXJjZXNIYXZlRmFpbGVkKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Rm9u
dD4gZm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljKTsKQEAgLTE0MywxMiArMTUxLDYgQEAgcHVibGljOgogICAgIH07CiAK
IHByaXZhdGU6Ci0gICAgZW51bSBjbGFzcyBTdGF0dXMgewotICAgICAgICBVbmxvYWRlZCwKLSAg
ICAgICAgTG9hZGluZywKLSAgICAgICAgTG9hZGVkLAotICAgICAgICBFcnJvcgotICAgIH07CiAK
ICAgICBGb250RmFjZShEb2N1bWVudCYsIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIGJvb2wg
aXNMb2NhbEZhbGxiYWNrKTsKICAgICBGb250RmFjZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5LCBjb25zdCBEaWN0aW9uYXJ5JiBkZXNjcmlwdG9ycyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmlkbAppbmRleCAwMDcyYzMxLi4yY2U2MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwKQEAg
LTMxLDYgKzMxLDggQEAKIH07CiAKIFsKKyAgICBHbG9iYWxDb250ZXh0PURPTVdpbmRvdywKKyAg
ICBBY3RpdmVET01PYmplY3QsCiAgICAgQ3VzdG9tQ29uc3RydWN0b3IoRE9NU3RyaW5nIGZhbWls
eSwgYW55IHNvdXJjZSwgRGljdGlvbmFyeSBkZXNjcmlwdG9ycykKIF0gaW50ZXJmYWNlIEZvbnRG
YWNlIHsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZhbWlseTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDg4YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC0w
LDAgKzEsMzUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZvbnRGYWNlU2V0LmgiCisKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRl
ICJDU1NTZWdtZW50ZWRGb250RmFjZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udEZhY2UuaCIKKyNpbmNsdWRlICJMb2NhbEZv
bnRGYWNlU291cmNlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRGYWNlU2V0OjpGb250RmFjZVNldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBWZWN0b3I8UmVmUHRy
PEZvbnRGYWNlPj4mIGluaXRpYWxGYWNlcykKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBpbml0aWFsRmFjZXMp
CisgICAgICAgIGFkZChmYWNlLmdldCgpKTsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKK30KKwor
Ym9vbCBGb250RmFjZVNldDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6TG9hZGluZzsKK30KKworc3RhdGlj
IHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9u
dEZhY2U+PiwgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcykKK3sK
KyAgICBBU1NFUlQoIWxvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuY29udGFpbnMoZmFtaWx5TmFt
ZSkpOworCisgICAgVmVjdG9yPEZvbnRUcmFpdHNNYXNrPiB0cmFpdHNNYXNrcyA9IEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5GYW1pbHkoZmFtaWx5TmFtZSk7CisgICAgaWYgKHRy
YWl0c01hc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFJlZjxG
b250RmFjZT4+IGZhY2VzID0geyB9OworICAgIGZvciAoYXV0byBtYXNrIDogdHJhaXRzTWFza3Mp
IHsKKyAgICAgICAgUmVmPEZvbnRGYWNlPiBmYWNlID0gRm9udEZhY2U6OmNyZWF0ZShkb2N1bWVu
dCwgbWFzaywgdHJ1ZSk7CisgICAgICAgIGZhY2UtPmFkZFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsRm9udEZhY2VTb3VyY2U+KGZhY2UsIGZhbWlseU5hbWUpKTsKKyAgICAgICAgQVNTRVJU
KCFmYWNlLT5hbGxTb3VyY2VzSGF2ZUZhaWxlZCgpKTsKKyAgICAgICAgZmFjZXMuYXBwZW5kKFdU
Rk1vdmUoZmFjZSkpOworICAgIH0KKyAgICBsb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmFkZChm
YW1pbHlOYW1lLCBXVEZNb3ZlKGZhY2VzKSk7Cit9CisKK0ZvbnRGYWNlU2V0JiBGb250RmFjZVNl
dDo6YWRkKEZvbnRGYWNlKiBuZXdGYWNlKQoreworICAgIGlmICghbmV3RmFjZSkKKyAgICAgICAg
cmV0dXJuICp0aGlzOworCisgICAgYXV0byogZXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ29udGV4dCAmJiBleGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGF1dG8mIGRvY3VtZW50ID0gKmRvd25jYXN0PERv
Y3VtZW50PihleGVjdXRpb25Db250ZXh0KTsKKworICAgIGZvciAoYXV0byYgZmFtaWx5TmFtZSA6
IG5ld0ZhY2UtPmZhbWlsaWVzKCkpIHsKKyAgICAgICAgaWYgKGZhbWlseU5hbWUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Zv
bnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgVmVjdG9yPFJlZjxGb250RmFjZT4+KCkpOworICAgICAg
ICBhdXRvJiBmYW1pbHlGb250RmFjZXMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIHJlZ2lzdGVyTG9j
YWxGb250RmFjZXNGb3JGYW1pbHkoZG9jdW1lbnQsIGZhbWlseU5hbWUsIG1fbG9jYWxseUluc3Rh
bGxlZEZvbnRGYWNlcyk7CisgICAgICAgICAgICBmYW1pbHlGb250RmFjZXMgPSB7IH07CisgICAg
ICAgIH0KKworICAgICAgICBmYW1pbHlGb250RmFjZXMuYXBwZW5kKCpuZXdGYWNlKTsKKyAgICB9
CisgICAgcmV0dXJuICp0aGlzOworfQorCitib29sIEZvbnRGYWNlU2V0OjpyZW1vdmUoRm9udEZh
Y2UqIHJlbW92ZWRGYWNlKQoreworICAgIGlmICghcmVtb3ZlZEZhY2UpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgZm9yIChhdXRvJiBmYW1pbHlOYW1lIDogcmVtb3ZlZEZhY2UtPmZhbWls
aWVzKCkpIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9mb250RmFjZXMuZmluZChmYW1pbHlOYW1l
KTsKKyAgICAgICAgQVNTRVJUKGl0ZXIgIT0gbV9mb250RmFjZXMuZW5kKCkpOworICAgICAgICBp
dGVyLT52YWx1ZS5yZW1vdmVBbGxNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZvbnRGYWNlPiYgaXRl
bSkgeworICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucHRyKCkgPT0gcmVtb3ZlZEZhY2U7CisgICAg
ICAgIH0pOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGb250RmFjZVNldDo6
Y2xlYXIoKQoreworICAgIG1fZm9udEZhY2VzLmNsZWFyKCk7CisgICAgbV9sb2NhbGx5SW5zdGFs
bGVkRm9udEZhY2VzLmNsZWFyKCk7Cit9CisKK2NsYXNzIEZvbnRGYWNlQ29tcGFyYXRvciB7Citw
dWJsaWM6CisgICAgRm9udEZhY2VDb21wYXJhdG9yKEZvbnRUcmFpdHNNYXNrIGRlc2lyZWRUcmFp
dHNNYXNrRm9yQ29tcGFyaXNvbikKKyAgICAgICAgOiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29t
cGFyaXNvbihkZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24pCisgICAgeworICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29t
cGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yKCko
Y29uc3QgRm9udEZhY2UmIGZpcnN0LCBjb25zdCBGb250RmFjZSYgc2Vjb25kKQorICAgIHsKKyAg
ICAgICAgRm9udFRyYWl0c01hc2sgZmlyc3RUcmFpdHNNYXNrID0gZmlyc3QudHJhaXRzTWFzaygp
OworICAgICAgICBGb250VHJhaXRzTWFzayBzZWNvbmRUcmFpdHNNYXNrID0gc2Vjb25kLnRyYWl0
c01hc2soKTsKKworICAgICAgICBib29sIGZpcnN0SGFzRGVzaXJlZFN0eWxlID0gZmlyc3RUcmFp
dHNNYXNrICYgbV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250U3R5bGVNYXNr
OworICAgICAgICBib29sIHNlY29uZEhhc0Rlc2lyZWRTdHlsZSA9IHNlY29uZFRyYWl0c01hc2sg
JiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRTdHlsZU1hc2s7CisKKyAg
ICAgICAgaWYgKGZpcnN0SGFzRGVzaXJlZFN0eWxlICE9IHNlY29uZEhhc0Rlc2lyZWRTdHlsZSkK
KyAgICAgICAgICAgIHJldHVybiBmaXJzdEhhc0Rlc2lyZWRTdHlsZTsKKworICAgICAgICBpZiAo
KG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlSXRhbGljTWFzaykg
JiYgIWZpcnN0LmlzTG9jYWxGYWxsYmFjaygpICYmICFzZWNvbmQuaXNMb2NhbEZhbGxiYWNrKCkp
IHsKKyAgICAgICAgICAgIC8vIFByZWZlciBhIGZvbnQgdGhhdCBoYXMgaW5kaWNhdGVkIHRoYXQg
aXQgY2FuIG9ubHkgc3VwcG9ydCBpdGFsaWNzIHRvIGEgZm9udCB0aGF0IGNsYWltcyB0byBzdXBw
b3J0CisgICAgICAgICAgICAvLyBhbGwgc3R5bGVzLiBUaGUgc3BlY2lhbGl6ZWQgZm9udCBpcyBt
b3JlIGxpa2VseSB0byBiZSB0aGUgb25lIHRoZSBhdXRob3Igd2FudHMgdXNlZC4KKyAgICAgICAg
ICAgIGJvb2wgZmlyc3RSZXF1aXJlc0l0YWxpY3MgPSAoZmlyc3RUcmFpdHNNYXNrICYgRm9udFN0
eWxlSXRhbGljTWFzaykgJiYgIShmaXJzdFRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNr
KTsKKyAgICAgICAgICAgIGJvb2wgc2Vjb25kUmVxdWlyZXNJdGFsaWNzID0gKHNlY29uZFRyYWl0
c01hc2sgJiBGb250U3R5bGVJdGFsaWNNYXNrKSAmJiAhKHNlY29uZFRyYWl0c01hc2sgJiBGb250
U3R5bGVOb3JtYWxNYXNrKTsKKyAgICAgICAgICAgIGlmIChmaXJzdFJlcXVpcmVzSXRhbGljcyAh
PSBzZWNvbmRSZXF1aXJlc0l0YWxpY3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0UmVx
dWlyZXNJdGFsaWNzOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlY29uZFRyYWl0c01hc2sg
JiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoZmlyc3RUcmFpdHNNYXNrICYgbV9k
ZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250V2VpZ2h0TWFzaykKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEv
V0QtY3NzMy1mb250cy0yMDExMTAwNC8jZm9udC1tYXRjaGluZy1hbGdvcml0aG0gc2F5cyA6Cisg
ICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJlZCB3ZWlnaHQgaXMgbGVzcyB0aGFuIDQwMCwgd2Vp
Z2h0cyBiZWxvdyB0aGUgZGVzaXJlZCB3ZWlnaHQgYXJlIGNoZWNrZWQgaW4gZGVzY2VuZGluZyBv
cmRlciBmb2xsb3dlZCBieSB3ZWlnaHRzIGFib3ZlIHRoZSBkZXNpcmVkIHdlaWdodCBpbiBhc2Nl
bmRpbmcgb3JkZXIgdW50aWwgYSBtYXRjaCBpcyBmb3VuZC4KKyAgICAgICAgLy8gICAtIElmIHRo
ZSBkZXNpcmVkIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gNTAwLCB3ZWlnaHRzIGFib3ZlIHRoZSBk
ZXNpcmVkIHdlaWdodCBhcmUgY2hlY2tlZCBpbiBhc2NlbmRpbmcgb3JkZXIgZm9sbG93ZWQgYnkg
d2VpZ2h0cyBiZWxvdyB0aGUgZGVzaXJlZCB3ZWlnaHQgaW4gZGVzY2VuZGluZyBvcmRlciB1bnRp
bCBhIG1hdGNoIGlzIGZvdW5kLgorICAgICAgICAvLyAgIC0gSWYgdGhlIGRlc2lyZWQgd2VpZ2h0
IGlzIDQwMCwgNTAwIGlzIGNoZWNrZWQgZmlyc3QgYW5kIHRoZW4gdGhlIHJ1bGUgZm9yIGRlc2ly
ZWQgd2VpZ2h0cyBsZXNzIHRoYW4gNDAwIGlzIHVzZWQuCisgICAgICAgIC8vICAgLSBJZiB0aGUg
ZGVzaXJlZCB3ZWlnaHQgaXMgNTAwLCA0MDAgaXMgY2hlY2tlZCBmaXJzdCBhbmQgdGhlbiB0aGUg
cnVsZSBmb3IgZGVzaXJlZCB3ZWlnaHRzIGxlc3MgdGhhbiA0MDAgaXMgdXNlZC4KKworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmFsbGJhY2tSdWxlU2V0cyA9IDk7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBydWxlc1BlclNldCA9IDg7CisgICAgICAgIHN0YXRpYyBjb25z
dCBGb250VHJhaXRzTWFzayB3ZWlnaHRGYWxsYmFja1J1bGVTZXRzW2ZhbGxiYWNrUnVsZVNldHNd
W3J1bGVzUGVyU2V0XSA9IHsKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDIwME1hc2ssIEZvbnRX
ZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRX
ZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRX
ZWlnaHQ5MDBNYXNrIH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2Vp
Z2h0MzAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2Vp
Z2h0NjAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2Vp
Z2h0OTAwTWFzayB9LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdo
dDEwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdo
dDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdo
dDkwME1hc2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQz
MDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2ssIEZvbnRXZWlnaHQ2
MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5
MDBNYXNrIH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0MzAw
TWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NjAw
TWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAw
TWFzayB9LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1h
c2ssIEZvbnRXZWlnaHQ5MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1h
c2ssIEZvbnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1h
c2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNr
LCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNr
LCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNr
IH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQ5MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywg
Rm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywg
Rm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9
LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZv
bnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZv
bnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sgfQor
ICAgICAgICB9OworCisgICAgICAgIHVuc2lnbmVkIHJ1bGVTZXRJbmRleCA9IDA7CisgICAgICAg
IGZvciAoOyAhKG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgKDEgPDwgKEZvbnRX
ZWlnaHQxMDBCaXQgKyBydWxlU2V0SW5kZXgpKSk7IHJ1bGVTZXRJbmRleCsrKSB7IH0KKworICAg
ICAgICBjb25zdCBGb250VHJhaXRzTWFzayogd2VpZ2h0RmFsbGJhY2tSdWxlID0gd2VpZ2h0RmFs
bGJhY2tSdWxlU2V0c1tydWxlU2V0SW5kZXhdOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcnVsZXNQZXJTZXQ7ICsraSkgeworICAgICAgICAgICAgaWYgKHNlY29uZFRyYWl0c01h
c2sgJiB3ZWlnaHRGYWxsYmFja1J1bGVbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKGZpcnN0VHJhaXRzTWFzayAmIHdlaWdodEZhbGxiYWNrUnVsZVtp
XSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRm9udFRyYWl0c01hc2sgbV9kZXNp
cmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb247Cit9OworCitPcHRpb25hbDxDU1NTZWdtZW50ZWRG
b250RmFjZT4gRm9udEZhY2VTZXQ6OmdldEZvbnRGYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5LCBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2ZvbnRGYWNlcy5maW5kKGZhbWlseSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fZm9udEZhY2Vz
LmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBhdXRvJiBmYW1pbHlGb250RmFj
ZXMgPSBpdGVyYXRvci0+dmFsdWU7CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY2Fj
aGVkLgorICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlIGZhY2U7CisKKyAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxGb250RmFjZT4sIDMyPiBjYW5kaWRhdGVGb250RmFjZXM7CisgICAg
Zm9yIChpbnQgaSA9IGZhbWlseUZvbnRGYWNlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewor
ICAgICAgICBGb250RmFjZSYgY2FuZGlkYXRlID0gZmFtaWx5Rm9udEZhY2VzW2ldOworICAgICAg
ICB1bnNpZ25lZCBjYW5kaWRhdGVUcmFpdHNNYXNrID0gY2FuZGlkYXRlLnRyYWl0c01hc2soKTsK
KyAgICAgICAgaWYgKCh0cmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykgJiYgIShjYW5k
aWRhdGVUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgY2FuZGlkYXRlRm9udEZhY2VzLmFwcGVuZChjYW5kaWRhdGUpOworICAg
IH0KKworICAgIGF1dG8gbG9jYWxJdGVyYXRvciA9IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNl
cy5maW5kKGZhbWlseSk7CisgICAgaWYgKGxvY2FsSXRlcmF0b3IgIT0gbV9sb2NhbGx5SW5zdGFs
bGVkRm9udEZhY2VzLmVuZCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbG9j
YWxJdGVyYXRvci0+dmFsdWUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNhbmRpZGF0ZVRyYWl0
c01hc2sgPSBjYW5kaWRhdGUtPnRyYWl0c01hc2soKTsKKyAgICAgICAgICAgIGlmICgodHJhaXRz
TWFzayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spICYmICEoY2FuZGlkYXRlVHJhaXRzTWFzayAmIEZv
bnRTdHlsZU5vcm1hbE1hc2spKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgY2FuZGlkYXRlRm9udEZhY2VzLmFwcGVuZChjYW5kaWRhdGUpOworICAgICAgICB9CisgICAg
fQorCisgICAgc3RkOjpzdGFibGVfc29ydChjYW5kaWRhdGVGb250RmFjZXMuYmVnaW4oKSwgY2Fu
ZGlkYXRlRm9udEZhY2VzLmVuZCgpLCBGb250RmFjZUNvbXBhcmF0b3IodHJhaXRzTWFzaykpOwor
ICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlRm9udEZhY2VzKQorICAgICAgICBm
YWNlLmFwcGVuZEZvbnRGYWNlKGNhbmRpZGF0ZS5nZXQoKSk7CisKKyAgICByZXR1cm4gV1RGTW92
ZShmYWNlKTsKK30KKworc3RhdGljIHVuc2lnbmVkIHN0eWxlVHJhaXRzTWFza0Zyb21TdHlsZVBy
b3BlcnRpZXMoU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZVByb3BlcnRpZXMpCit7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiBmb250U3R5bGUgPSBzdHlsZVByb3BlcnRpZXMuZ2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSk7CisgICAgaWYgKCFmb250U3R5bGUgfHwgIWlzPENTU1By
aW1pdGl2ZVZhbHVlPigqZm9udFN0eWxlKSkKKyAgICAgICAgcmV0dXJuIEZvbnRTdHlsZU5vcm1h
bE1hc2s7CisKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFN0
eWxlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBy
ZXR1cm4gRm9udFN0eWxlTm9ybWFsTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZUl0YWxpYzoKKyAgICBjYXNlIENTU1ZhbHVlT2JsaXF1ZToKKyAgICAgICAgcmV0dXJuIEZv
bnRTdHlsZUl0YWxpY01hc2s7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRm9udFN0eWxlTm9ybWFsTWFz
azsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZvbnRTdHls
ZU5vcm1hbE1hc2s7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCB3ZWlnaHRUcmFpdHNNYXNrRnJvbVN0
eWxlUHJvcGVydGllcyhTdHlsZVByb3BlcnRpZXMmIHN0eWxlUHJvcGVydGllcykKK3sKKyAgICBS
ZWZQdHI8Q1NTVmFsdWU+IGZvbnRXZWlnaHQgPSBzdHlsZVByb3BlcnRpZXMuZ2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOworICAgIGlmICghZm9udFdlaWdodCB8fCAh
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkKKyAgICAgICAgcmV0dXJuIEZvbnRX
ZWlnaHQ0MDBNYXNrOworCisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KmZvbnRXZWlnaHQpLmdldFZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgorICAg
IGNhc2UgQ1NTVmFsdWU3MDA6CisgICAgICAgIHJldHVybiBGb250V2VpZ2h0NzAwTWFzazsKKyAg
ICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgIGNhc2UgQ1NTVmFsdWU0MDA6CisgICAgICAgIHJl
dHVybiBGb250V2VpZ2h0NDAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlOTAwOgorICAgICAgICBy
ZXR1cm4gRm9udFdlaWdodDkwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTgwMDoKKyAgICAgICAg
cmV0dXJuIEZvbnRXZWlnaHQ4MDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWU2MDA6CisgICAgICAg
IHJldHVybiBGb250V2VpZ2h0NjAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlNTAwOgorICAgICAg
ICByZXR1cm4gRm9udFdlaWdodDUwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTMwMDoKKyAgICAg
ICAgcmV0dXJuIEZvbnRXZWlnaHQzMDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWUyMDA6CisgICAg
ICAgIHJldHVybiBGb250V2VpZ2h0MjAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlMTAwOgorICAg
ICAgICByZXR1cm4gRm9udFdlaWdodDEwME1hc2s7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBGb250V2VpZ2h0NDAwTWFzazsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZvbnRXZWlnaHQ0MDBN
YXNrOworfQorCitzdGF0aWMgaW5saW5lIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2tGcm9tU3R5
bGVQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydGllcyYgc3R5bGVQcm9wZXJ0aWVzKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxGb250VHJhaXRzTWFzaz4oc3R5bGVUcmFpdHNNYXNrRnJvbVN0eWxl
UHJvcGVydGllcyhzdHlsZVByb3BlcnRpZXMpIHwgd2VpZ2h0VHJhaXRzTWFza0Zyb21TdHlsZVBy
b3BlcnRpZXMoc3R5bGVQcm9wZXJ0aWVzKSk7Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OnNlZ21l
bnRlZEZvbnRGYWNlcyhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZChDU1NTZWdtZW50ZWRGb250RmFjZSYpPiBjYWxsYmFjaykKK3sKKyAgICAvLyBG
SVhNRTogV2UgaWdub3JlIHRoZSB0ZXh0IHN0cmluZy4KKworICAgIFJlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGlmIChDU1NQYXJzZXI6OnBhcnNlVmFsdWUoc3R5bGUucHRyKCksIENTU1Byb3BlcnR5Rm9udCwg
Zm9udCwgdHJ1ZSwgQ1NTU3RyaWN0TW9kZSwgbnVsbHB0cikgPT0gQ1NTUGFyc2VyOjpQYXJzZVJl
c3VsdDo6RXJyb3IpCisgICAgICAgIHJldHVybjsKKworICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0
c01hc2sgPSB0cmFpdHNNYXNrRnJvbVN0eWxlUHJvcGVydGllcyhzdHlsZS5nZXQoKSk7CisKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlGb250RmFtaWx5KTsKKyAgICBpZiAoIXZhbHVlIHx8ICFpczxDU1NWYWx1ZUxpc3Q+
KHZhbHVlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTVmFsdWVMaXN0JiBmYW1p
bHlMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdmFsdWUpOworICAgIGlmICghZmFtaWx5
TGlzdC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBpdGVtIDog
ZmFtaWx5TGlzdCkgeworICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZSA9IENTU0ZvbnRTZWxlY3Rv
cjo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0
ZW0uZ2V0KCkpKTsKKyAgICAgICAgaWYgKGZhbWlseU5hbWUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmIChhdXRvIHNlZ21lbnRlZEZvbnRGYWNlID0gZ2V0Rm9u
dEZhY2UoZmFtaWx5TmFtZSwgdHJhaXRzTWFzaykpCisgICAgICAgICAgICBjYWxsYmFjayhzZWdt
ZW50ZWRGb250RmFjZS52YWx1ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6Omxv
YWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBl
ciYmKQoreworICAgIC8vIEZJWE1FOiBNYXAgdGhlIGNvbGxlY3Rpb24gb2YgTG9hZGluZyBGb250
RmFjZSBvYmplY3RzIHRvIHRoZSBQcm9taXNlLCBzbyB0aGF0IHdlIGNhbiByZXNvbHZlIHRoZSBw
cm9taXNlIHdoZW4gdGhleSBhcmUgYWxsIGZpbmlzaGVkLgorICAgIHNlZ21lbnRlZEZvbnRGYWNl
cyhmb250LCB0ZXh0LCBbJl0oQ1NTU2VnbWVudGVkRm9udEZhY2UmIHNlZ21lbnRlZEZvbnRGYWNl
KSB7CisgICAgICAgIHNlZ21lbnRlZEZvbnRGYWNlLmxvYWQoKTsKKyAgICB9KTsKK30KKworYm9v
bCBGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRl
eHQpCit7CisgICAgYm9vbCBsb2FkZWQgPSB0cnVlOworICAgIHNlZ21lbnRlZEZvbnRGYWNlcyhm
b250LCB0ZXh0LCBbJl0oY29uc3QgQ1NTU2VnbWVudGVkRm9udEZhY2UmIHNlZ21lbnRlZEZvbnRG
YWNlKSB7CisgICAgICAgIGxvYWRlZCAmPSBzZWdtZW50ZWRGb250RmFjZS5hbGxGb250RmFjZXNB
cmVMb2FkZWQoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gbG9hZGVkOworfQorCitTdHJpbmcgRm9u
dEZhY2VTZXQ6OnN0YXR1cygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3N0YXR1cykgeworICAg
IGNhc2UgU3RhdHVzOjpMb2FkaW5nOgorICAgICAgICByZXR1cm4gU3RyaW5nKCJsb2FkaW5nIiwg
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBTdGF0dXM6OkxvYWRlZDoK
KyAgICAgICAgcmV0dXJuIFN0cmluZygibG9hZGVkIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJp
bmcoImxvYWRpbmciLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKwordm9pZCBG
b250RmFjZVNldDo6Zm9udExvYWRlZChGb250RmFjZSYpCit7CisgICAgLypmb3IgKGNvbnN0IFN0
cmluZyYgZmFtaWx5IDogZm9udEZhY2UuZmFtaWxpZXMoKSkgeworICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9mb250cy5maW5kKGZhbWlseSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2Zv
bnRzLmVuZCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnRlZEZvbnQgOiBpdGVy
YXRvci0+dmFsdWUpCisgICAgICAgICAgICAgICAgc2VnbWVudGVkRm9udC52YWx1ZS0+Zm9udExv
YWRlZChmb250RmFjZSk7CisgICAgICAgIH0KKyAgICB9Ki8KK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWNlNTkxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKQEAgLTAs
MCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZvbnRGYWNlU2V0X2gKKyNkZWZpbmUg
Rm9udEZhY2VTZXRfaAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlOwor
Y2xhc3MgRGVmZXJyZWRXcmFwcGVyOworY2xhc3MgRE9NQ29yZUV4Y2VwdGlvbjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIEZvbnRGYWNlU2V0IGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Qcm9t
aXNlPEZvbnRGYWNlU2V0JiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7CisKKyAgICBzdGF0
aWMgUmVmPEZvbnRGYWNlU2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0aWFs
RmFjZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250RmFjZVNldChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbml0aWFsRmFjZXMpKTsKKyAgICB9CisKKyAgICBGb250
RmFjZVNldCYgYWRkKEZvbnRGYWNlKik7CisgICAgYm9vbCByZW1vdmUoRm9udEZhY2UqKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBEZWZl
cnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IGxvYWQoZm9udCwgU3RyaW5nKCIgIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocHJvbWlzZSkpOyB9CisgICAgdm9pZCBsb2Fk
KGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXIm
JiBwcm9taXNlKTsKKworICAgIGJvb2wgY2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmID0gU3RyaW5nKCIgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisg
ICAgU3RyaW5nIHN0YXR1cygpIGNvbnN0OworCisgICAgY29uc3QgT3B0aW9uYWw8UHJvbWlzZT4m
IHByb21pc2UoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2U7IH0KKworICAgIHVzaW5nIFJlZkNv
dW50ZWQ8Rm9udEZhY2VTZXQ+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxGb250RmFjZVNl
dD46OmRlcmVmOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDU1NGb250U2VsZWN0b3I7
CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIExvYWRpbmcsCisgICAgICAgIExv
YWRlZAorICAgIH07CisKKyAgICBGb250RmFjZVNldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+Jik7CisKKyAgICAvLyBBY3RpdmVET01PYmpl
Y3QKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiRm9udEZhY2VTZXQiOyB9CisgICAgdmlydHVhbCBib29sIGNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIEV2
ZW50VGFyZ2V0CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZvbnRGYWNlU2V0RXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKworICAgIE9wdGlvbmFsPENTU1NlZ21l
bnRlZEZvbnRGYWNlPiBnZXRGb250RmFjZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgRm9u
dFRyYWl0c01hc2spOworICAgIHZvaWQgc2VnbWVudGVkRm9udEZhY2VzKGNvbnN0IFN0cmluZyYg
Zm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ1NTU2VnbWVudGVk
Rm9udEZhY2UmKT4pOworCisgICAgdm9pZCBmb250TG9hZGVkKEZvbnRGYWNlJiBmb250RmFjZSk7
CisKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGb250RmFjZT4+LCBDYXNlRm9sZGlu
Z0hhc2g+IG1fZm9udEZhY2VzOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRG
YWNlPj4sIENhc2VGb2xkaW5nSGFzaD4gbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzOworICAg
IFN0YXR1cyBtX3N0YXR1cyB7IFN0YXR1czo6TG9hZGluZyB9OworICAgIE9wdGlvbmFsPFByb21p
c2U+IG1fcHJvbWlzZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2VTZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTI3MzExCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBGb250RmFjZVNldExvYWRTdGF0dXMgeworICAgICJs
b2FkaW5nIiwKKyAgICAibG9hZGVkIgorfTsKKworWworICAgIEdsb2JhbENvbnRleHQ9RE9NV2lu
ZG93LAorICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsCisgICAgQ29uc3RydWN0b3Ioc2VxdWVuY2U8Rm9udEZhY2U+IGlu
aXRpYWxGYWNlcyksCisgICAgRXZlbnRUYXJnZXQKK10gaW50ZXJmYWNlIEZvbnRGYWNlU2V0IHsK
KyAgICBGb250RmFjZVNldCBhZGQoRm9udEZhY2UgZm9udCk7CisgICAgW0ltcGxlbWVudGVkQXM9
cmVtb3ZlXSBib29sZWFuIGRlbGV0ZShGb250RmFjZSBmb250KTsKKyAgICB2b2lkIGNsZWFyKCk7
CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZzsKKyAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9ubG9hZGluZ2RvbmU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmxvYWRpbmdlcnJvcjsKKworICAgIFByb21pc2UgbG9hZChET01TdHJpbmcgZm9udCwgb3B0aW9u
YWwgRE9NU3RyaW5nIHRleHQpOworCisgICAgYm9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9udCwg
b3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOworCisgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmli
dXRlIFByb21pc2UgcmVhZHk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXRM
b2FkU3RhdHVzIHN0YXR1czsKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgKaW5kZXggNGVlMjA5Ny4uMmUyYjJhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCkBAIC0xNDEsNiArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KGxvYWRlbmQpIFwKICAgICBtYWNybyhsb2FkaW5nKSBcCiAgICAgbWFjcm8obG9hZGluZ2RvbmUp
IFwKKyAgICBtYWNybyhsb2FkaW5nZXJyb3IpIFwKICAgICBtYWNybyhsb2Fkc3RhcnQpIFwKICAg
ICBtYWNybyhtYXJrKSBcCiAgICAgbWFjcm8obWVzc2FnZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggYWI0ZmVkYi4uNDMwYjhiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC05LDcgKzksNyBAQCBET01BcHBsaWNh
dGlvbkNhY2hlCiBET01XaW5kb3cKIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyCi1Gb250TG9hZGVy
IGNvbmRpdGlvbmFsPUZPTlRfTE9BRF9FVkVOVFMKK0ZvbnRGYWNlU2V0CiBJREJEYXRhYmFzZSBj
b25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJPcGVuREJSZXF1ZXN0IGNvbmRpdGlvbmFs
PUlOREVYRURfREFUQUJBU0UKIElEQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270415</attachid>
            <date>2016-02-01 13:04:59 -0800</date>
            <delta_ts>2016-02-01 17:13:58 -0800</delta_ts>
            <desc>Applied on top of attachment 270144</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>52228</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDMzZDY5NTdjNGYzMThhYzVkN2FhOGNmYTkzNjI3YWNmMDY5M2UyNzkKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBNb24gRmViIDEg
MTI6MjM6MzQgMjAxNiAtMDgwMAoKICAgIEZvbnRGYWNlU2V0CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhNDAzMzU5Li4xMDkyYmI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM0MCw2ICsz
NDAsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9Db3VudGVyLmlk
bAogICAgIGNzcy9ET01XaW5kb3dDU1MuaWRsCiAgICAgY3NzL0ZvbnRGYWNlLmlkbAorICAgIGNz
cy9Gb250RmFjZVNldC5pZGwKICAgICBjc3MvRm9udExvYWRlci5pZGwKICAgICBjc3MvTWVkaWFM
aXN0LmlkbAogICAgIGNzcy9NZWRpYVF1ZXJ5TGlzdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDdjNGIzYzcuLjUzNzQzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjQyLDYgKzI0Miw3IEBAIE5PTl9TVkdfQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvY3NzL0NvdW50ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01XaW5kb3dD
U1MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAorICAgICQoV2ViQ29y
ZSkvY3NzL0ZvbnRGYWNlU2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRm9udExvYWRlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL01lZGlhTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL01lZGlhUXVlcnlMaXN0LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2QyZDY1ZS4uOGUyOGIwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTkw
Myw2ICs1OTAzLDExIEBACiAJCUMyQzczQkVGMUM1NUIwMUQwMERGNkI2QiAvKiBJbW1lZGlhdGVG
b250RmFjZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJDNzNCRUQxQzU1QjAxQzAwREY2QjZCIC8qIEltbWVkaWF0ZUZvbnRGYWNlU291cmNl
LmggKi87IH07CiAJCUMyQzczQkYyMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9u
dEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJDNzNCRjAxQzU1QzM1QzAwREY2QjZCIC8qIEluRG9jdW1lbnRTVkdGb250RmFjZVNv
dXJjZS5jcHAgKi87IH07CiAJCUMyQzczQkYzMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50
U1ZHRm9udEZhY2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyQzczQkYxMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9udEZh
Y2VTb3VyY2UuaCAqLzsgfTsKKwkJQzJEMTVBREMxQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZh
Y2VTZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJEMTVBREExQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3Bw
ICovOyB9OworCQlDMkQxNUFFMjFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBRTAxQzVC
MEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJQzJEMTVBRTMxQzVCMEZC
MzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMkQxNUFFMTFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQu
aCAqLzsgfTsKKwkJQzJEMTVBRTQxQzVCMkEzMjAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBREUx
QzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovOyB9OworCQlDMkQxNUFFNTFD
NUIyQTNGMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBREYxQzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9u
dEZhY2VTZXQuaCAqLzsgfTsKIAkJQzJERTZDM0QxQzUxRDkxNzAwRDc3NEQzIC8qIEpTRm9udEZh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREU2
QzNDMUM1MUQ4RkEwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmggKi87IH07CiAJCUMyREU2QzNFMUM1
MUQ5MUIwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREU2QzNCMUM1MUQ4RkEwMEQ3NzREMyAvKiBKU0ZvbnRG
YWNlLmNwcCAqLzsgfTsKIAkJQzJERTZDNDAxQzUxREIyMDAwRDc3NEQzIC8qIEZvbnRGYWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRFNkMzRjFD
NTFEQjBEMDBENzc0RDMgLyogRm9udEZhY2UuaCAqLzsgfTsKQEAgLTEzNzkzLDYgKzEzNzk4LDEy
IEBACiAJCUMyQzczQkVEMUM1NUIwMUMwMERGNkI2QiAvKiBJbW1lZGlhdGVGb250RmFjZVNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbW1lZGlhdGVGb250RmFjZVNv
dXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM3M0JGMDFDNTVDMzVDMDBE
RjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluRG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzczQkYxMUM1NUMzNUMwMERGNkI2QiAvKiBJ
bkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyRDE1QUQ5MUM1QjA5QkUwMDExQTMwMCAvKiBGb250RmFjZVNldC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2VTZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMkQxNUFEQTFDNUIwQ0VFMDAxMUEzMDAgLyogSlNGb250RmFjZVNldEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNlU2V0
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJEMTVBREUxQzVCMEUy
MzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyRDE1QURGMUM1QjBFMjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzJEMTVBRTAxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYWNlU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJEMTVBRTExQzVCMEZCMzAwMTFBMzAwIC8q
IEZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYWNl
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyREU2QzNBMUM1MUQ1OTAwMEQ3
NzREMyAvKiBGb250RmFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2UuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRFNkMzQjFDNTFEOEZBMDBENzc0RDMg
LyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0ZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJERTZDM0MxQzUx
RDhGQTAwRDc3NEQzIC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc0OTIs
NiArMTc1MDMsOCBAQAogCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3Vy
Y2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMkQx
NUFERTFDNUIwRTIzMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgKi8sCisJCQkJQzJEMTVB
REYxQzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuaCAqLywKIAkJCQlDMkRFNkMzQjFD
NTFEOEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5jcHAgKi8sCiAJCQkJQzJERTZDM0MxQzUxRDhG
QTAwRDc3NEQzIC8qIEpTRm9udEZhY2UuaCAqLywKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBG
NjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKQEAgLTIyMzky
LDYgKzIyNDA1LDcgQEAKIAkJCQlBMUM3RkFBMTEzM0E1RDM1MDBENjczMkQgLyogSlNYUGF0aFJl
c3VsdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFRkUxRTQwRENBNUYzMzAwNzM5MjE5IC8qIEpTWFNM
VFByb2Nlc3NvckN1c3RvbS5jcHAgKi8sCiAJCQkJQzJERTZDNDMxQzUxRTRBNTAwRDc3NEQzIC8q
IEpTRm9udEZhY2VDdXN0b20uY3BwICovLAorCQkJCUMyRDE1QURBMUM1QjBDRUUwMDExQTMwMCAv
KiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ3VzdG9tOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzNjg2LDYgKzIzNzAwLDkgQEAKIAkJCQlD
MjQ5QTg1MjFDNTc1MzNBMDAzN0ZBOEYgLyogRGVwcmVjYXRlZFJlbW90ZVNWR0ZvbnRGYWNlU291
cmNlLmNwcCAqLywKIAkJCQlDMjQ5QTg1MzFDNTc1MzNBMDAzN0ZBOEYgLyogRGVwcmVjYXRlZFJl
bW90ZVNWR0ZvbnRGYWNlU291cmNlLmggKi8sCiAJCQkJMUMxOTI3NTIxQzU4OUNCMjAwNTE1QzA2
IC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8sCisJCQkJQzJEMTVBRDkxQzVCMDlCRTAwMTFB
MzAwIC8qIEZvbnRGYWNlU2V0LmlkbCAqLywKKwkJCQlDMkQxNUFFMDFDNUIwRkIzMDAxMUEzMDAg
LyogRm9udEZhY2VTZXQuY3BwICovLAorCQkJCUMyRDE1QUUxMUM1QjBGQjMwMDExQTMwMCAvKiBG
b250RmFjZVNldC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjYzNzUsNiArMjYzOTIsNyBAQAogCQkJCTVDNDMwNEI2MTkxQUVGNDYw
MDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3
Mjg2OTg0MTRGRDlBREEwMEY0ODREQyAvKiBKU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMEYwMTUwRTBBMTg5NTAwRkQwNEUzIC8qIEpTRmlsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzJEMTVBRTMxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNl
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNG
aWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5ODc4NUYxMTIyRTFFODcwMDNBQUJEQSAv
KiBKU0ZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDBGMDE3MEUwQTE4OTUw
MEZEMDRFMyAvKiBKU0ZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjY2LDYgKzI3Njg0
LDcgQEAKIAkJCQk5M0YxOTk0RjA4MjQ1RTU5MDAxRTlBQkMgLyogU2V0dGluZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0Js
dXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRDE1QUU1MUM1QjJBM0YwMDExQTMwMCAvKiBKU0Zv
bnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUg
LyogU2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVC
NzcwIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTRGMTc1RDNGM0Uw
MEMyMUVDOCAvKiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDIwMCw2ICszMDIxOSw3IEBA
CiAJCQkJRkQyM0ExMjUxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDE4MENENjgyNjkwMEZBREE3NSAv
KiBKU01lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThEQTMxNjAxNDY0MTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkQxNUFF
NDFDNUIyQTMyMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAv
KiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTMzNCw2ICsz
MTM1NCw3IEBACiAJCQkJODEwMkM1ODgxMzI1QkIxMTAwRERFNjdBIC8qIFN0cmluZ0NhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMzU0MEYyMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJp
bmdUcnVuY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI2QTIwRTgxREM0RjAwQjI1
OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJEMTVB
RTIxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNUVCNjdEMEU4MUQ0MjAwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODM4NkE5NzAxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VGNDQ3QTBFNjc0N0QwMDAxQzEyODcgLyogU3R5bGVDYWNoZWRJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNjc5LDYgKzMxNzAwLDcgQEAKIAkJCQkwNzhF
MDkxMjE3RDE0Q0VFMDA0MjBBQTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwNzI5N0ZBNzFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTEzMTdEMTRDRUUwMDQyMEFBMSAv
KiBVc2VyTWVkaWFSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyRDE1QURDMUM1QjBD
RUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAw
N0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZjMyZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9t
LmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTRm9udEZhY2VTZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0M6
OkpTVmFsdWUgSlNGb250RmFjZVNldDo6cmVhZHkoSlNDOjpFeGVjU3RhdGUmKSBjb25zdAorewor
ICAgIGF1dG8mIHByb21pc2UgPSB3cmFwcGVkKCkucHJvbWlzZSgpOworICAgIEFTU0VSVChwcm9t
aXNlKTsKKyAgICByZXR1cm4gcHJvbWlzZS52YWx1ZSgpLmpzT2JqZWN0KCk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggZDdkMmZhZi4uNGFmMDc3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTY4LDYgKzY4LDcgQEAg
c3RhdGljIHVuc2lnbmVkIGZvbnRTZWxlY3RvcklkOwogCiBDU1NGb250U2VsZWN0b3I6OkNTU0Zv
bnRTZWxlY3RvcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KCZkb2N1bWVu
dCkKKyAgICAsIG1fZm9udEZhY2VTZXQoRm9udEZhY2VTZXQ6OmNyZWF0ZShkb2N1bWVudCwgVmVj
dG9yPFJlZlB0cjxGb250RmFjZT4+KCkpKQogICAgICwgbV9iZWdpbkxvYWRpbmdUaW1lcigqdGhp
cywgJkNTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2FkVGltZXJGaXJlZCkKICAgICAsIG1fdW5pcXVl
SWQoKytmb250U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigwKQpAQCAtODYsMTggKzg3LDEy
IEBAIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiAgICAgRm9udENhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmVDbGllbnQodGhpcyk7CiB9CiAKLWJvb2wgQ1NTRm9udFNlbGVjdG9y
Ojppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZVRyYWl0c01hc2soY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3N0YXRpYyBGb250VHJhaXRzTWFzayBjb21wdXRlVHJh
aXRzTWFzayhjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIHVuc2lnbmVkIHRy
YWl0c01hc2sgPSAwOwogCiAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFN0eWxlID0gc3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpIHsKLSAgICAgICAg
aWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkpCi0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFN0
eWxlKSk7CiAKICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZv
bnRTdHlsZSkuZ2V0VmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CkBA
IC0xMTQsOCArMTA5LDcgQEAgc3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjb21wdXRl
VHJhaXRzTWFzayhjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogICAgICAgICB0cmFpdHNN
YXNrIHw9IEZvbnRTdHlsZU5vcm1hbE1hc2s7CiAKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBm
b250V2VpZ2h0ID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWln
aHQpKSB7Ci0gICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KCpmb250V2VpZ2h0KSk7CiAKICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQpLmdldFZhbHVlSUQoKSkgewogICAgICAgICBjYXNl
IENTU1ZhbHVlQm9sZDoKQEAgLTIxNywyNCArMjExLDYgQEAgU3RyaW5nIENTU0ZvbnRTZWxlY3Rv
cjo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVl
KQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWls
eShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
bG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcykKLXsKLSAgICBBU1NFUlQoIWxvY2FsbHlJbnN0YWxs
ZWRGb250RmFjZXMuY29udGFpbnMoZmFtaWx5TmFtZSkpOwotCi0gICAgVmVjdG9yPEZvbnRUcmFp
dHNNYXNrPiB0cmFpdHNNYXNrcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5G
YW1pbHkoZmFtaWx5TmFtZSk7Ci0gICAgaWYgKHRyYWl0c01hc2tzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPFJlZjxGb250RmFjZT4+IGZhY2VzID0geyB9OwotICAg
IGZvciAoYXV0byBtYXNrIDogdHJhaXRzTWFza3MpIHsKLSAgICAgICAgUmVmPEZvbnRGYWNlPiBm
YWNlID0gRm9udEZhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFzaywgdHJ1ZSk7Ci0gICAgICAgIGZh
Y2UtPmFkZFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPExvY2FsRm9udEZhY2VTb3VyY2U+KGZhY2Us
IGZhbWlseU5hbWUpKTsKLSAgICAgICAgQVNTRVJUKCFmYWNlLT5hbGxTb3VyY2VzSGF2ZUZhaWxl
ZCgpKTsKLSAgICAgICAgZmFjZXMuYXBwZW5kKFdURk1vdmUoZmFjZSkpOwotICAgIH0KLSAgICBs
b2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBXVEZNb3ZlKGZhY2VzKSk7
Ci19Ci0KIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFk
b3dUcmVlKQogewogICAgIGlmICghZG9jdW1lbnQoKSkKQEAgLTI2MywxMiArMjM5LDE4IEBAIHZv
aWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVz
JiBzdHlsZSwgYm9vbCBpc0luaXRpCiAKICAgICBDU1NWYWx1ZUxpc3QqIHJhbmdlTGlzdCA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odW5pY29kZVJhbmdlLmdldCgpKTsKIAotICAgIGF1dG8gY29t
cHV0ZWRUcmFpdHNNYXNrID0gY29tcHV0ZVRyYWl0c01hc2soc3R5bGUpOwotICAgIGlmICghY29t
cHV0ZWRUcmFpdHNNYXNrKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byB0cmFpdHNNYXNrID0g
Y29tcHV0ZWRUcmFpdHNNYXNrLnZhbHVlKCk7CisgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9u
dFN0eWxlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkp
IHsKKyAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFdl
aWdodCA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250V2VpZ2h0KSkg
eworICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUmVmPEZvbnRGYWNlPiBmb250RmFjZSA9IEZv
bnRGYWNlOjpjcmVhdGUoKmRvY3VtZW50KCksIHRyYWl0c01hc2spOworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgYWJsZSB0byBqdXN0IHBhc3MgdGhlIENTU1ZhbHVlcyBpbnRvIHRoZSBGb250
RmFjZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoaXMgY29kZS4KKyAgICBSZWY8Rm9udEZhY2U+
IGZvbnRGYWNlID0gRm9udEZhY2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY29tcHV0ZVRyYWl0c01h
c2soc3R5bGUpKTsKICAgICBhZGRTb3VyY2VzVG9Gb250RmFjZShmb250RmFjZS5nZXQoKSwgc3Jj
TGlzdCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7CiAgICAgaWYg
KGZvbnRGYWNlLT5hbGxTb3VyY2VzSGF2ZUZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0z
MzAsMTggKzMxMiwxMSBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNv
bnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGJvb2wgaXNJbml0aQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgZmFtaWx5TmFtZXMuYXBwZW5kKGZhbWlseU5hbWUpOwotICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBWZWN0b3I8UmVm
PEZvbnRGYWNlPj4oKSk7Ci0gICAgICAgIGF1dG8mIGZhbWlseUZvbnRGYWNlcyA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewot
ICAgICAgICAgICAgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseSgqZG9jdW1lbnQoKSwg
ZmFtaWx5TmFtZSwgbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzKTsKLSAgICAgICAgICAgIGZh
bWlseUZvbnRGYWNlcyA9IHsgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGZhbWlseUZvbnRGYWNl
cy5hcHBlbmQoZm9udEZhY2UuY29weVJlZigpKTsKICAgICAgICAgCiAgICAgICAgICsrbV92ZXJz
aW9uOwogICAgIH0KICAgICBmb250RmFjZS0+c2V0RmFtaWxpZXMoV1RGTW92ZShmYW1pbHlOYW1l
cykpOworICAgIG1fZm9udEZhY2VTZXQtPmFkZChmb250RmFjZS5wdHIoKSk7CiB9CiAKIHZvaWQg
Q1NTRm9udFNlbGVjdG9yOjpmb250RmFjZVdpbGxDaGFuZ2UoRm9udEZhY2UmKQpAQCAtMzcxLDEz
ICszNDYsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxs
YmFja3MoKQogCiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRlZChGb250RmFjZSYgZm9u
dEZhY2UpCiB7Ci0gICAgZm9yIChjb25zdCBTdHJpbmcmIGZhbWlseSA6IGZvbnRGYWNlLmZhbWls
aWVzKCkpIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fZm9udHMuZmluZChmYW1pbHkpOwot
ICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9mb250cy5lbmQoKSkgewotICAgICAgICAgICAgZm9y
IChhdXRvJiBzZWdtZW50ZWRGb250IDogaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAgICAgICAg
IHNlZ21lbnRlZEZvbnQudmFsdWUtPmZvbnRMb2FkZWQoZm9udEZhY2UpOwotICAgICAgICB9Ci0g
ICAgfQorICAgIG1fZm9udEZhY2VTZXQtPmZvbnRMb2FkZWQoZm9udEZhY2UpOwogCiAgICAgZGlz
cGF0Y2hJbnZhbGlkYXRpb25DYWxsYmFja3MoKTsKIH0KQEAgLTQxMywxMzMgKzM4MiwyMCBAQCBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByZXNvbHZlR2VuZXJpY0ZhbWlseShEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEZvbnREZQogICAgIHJldHVybiBmYW1pbHlOYW1lOwogfQogCi1jbGFz
cyBGb250RmFjZUNvbXBhcmF0b3IgewotcHVibGljOgotICAgIEZvbnRGYWNlQ29tcGFyYXRvcihG
b250VHJhaXRzTWFzayBkZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24pCi0gICAgICAgIDog
bV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24oZGVzaXJlZFRyYWl0c01hc2tGb3JDb21w
YXJpc29uKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
bV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250V2VpZ2h0TWFzayk7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEZvbnRGYWNlJiBmaXJzdCwgY29uc3QgRm9u
dEZhY2UmIHNlY29uZCkKLSAgICB7Ci0gICAgICAgIEZvbnRUcmFpdHNNYXNrIGZpcnN0VHJhaXRz
TWFzayA9IGZpcnN0LnRyYWl0c01hc2soKTsKLSAgICAgICAgRm9udFRyYWl0c01hc2sgc2Vjb25k
VHJhaXRzTWFzayA9IHNlY29uZC50cmFpdHNNYXNrKCk7Ci0KLSAgICAgICAgYm9vbCBmaXJzdEhh
c0Rlc2lyZWRTdHlsZSA9IGZpcnN0VHJhaXRzTWFzayAmIG1fZGVzaXJlZFRyYWl0c01hc2tGb3JD
b21wYXJpc29uICYgRm9udFN0eWxlTWFzazsKLSAgICAgICAgYm9vbCBzZWNvbmRIYXNEZXNpcmVk
U3R5bGUgPSBzZWNvbmRUcmFpdHNNYXNrICYgbV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlz
b24gJiBGb250U3R5bGVNYXNrOwotCi0gICAgICAgIGlmIChmaXJzdEhhc0Rlc2lyZWRTdHlsZSAh
PSBzZWNvbmRIYXNEZXNpcmVkU3R5bGUpCi0gICAgICAgICAgICByZXR1cm4gZmlyc3RIYXNEZXNp
cmVkU3R5bGU7Ci0KLSAgICAgICAgaWYgKChtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNv
biAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICFmaXJzdC5pc0xvY2FsRmFsbGJhY2soKSAmJiAh
c2Vjb25kLmlzTG9jYWxGYWxsYmFjaygpKSB7Ci0gICAgICAgICAgICAvLyBQcmVmZXIgYSBmb250
IHRoYXQgaGFzIGluZGljYXRlZCB0aGF0IGl0IGNhbiBvbmx5IHN1cHBvcnQgaXRhbGljcyB0byBh
IGZvbnQgdGhhdCBjbGFpbXMgdG8gc3VwcG9ydAotICAgICAgICAgICAgLy8gYWxsIHN0eWxlcy4g
VGhlIHNwZWNpYWxpemVkIGZvbnQgaXMgbW9yZSBsaWtlbHkgdG8gYmUgdGhlIG9uZSB0aGUgYXV0
aG9yIHdhbnRzIHVzZWQuCi0gICAgICAgICAgICBib29sIGZpcnN0UmVxdWlyZXNJdGFsaWNzID0g
KGZpcnN0VHJhaXRzTWFzayAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICEoZmlyc3RUcmFpdHNN
YXNrICYgRm9udFN0eWxlTm9ybWFsTWFzayk7Ci0gICAgICAgICAgICBib29sIHNlY29uZFJlcXVp
cmVzSXRhbGljcyA9IChzZWNvbmRUcmFpdHNNYXNrICYgRm9udFN0eWxlSXRhbGljTWFzaykgJiYg
IShzZWNvbmRUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzayk7Ci0gICAgICAgICAgICBp
ZiAoZmlyc3RSZXF1aXJlc0l0YWxpY3MgIT0gc2Vjb25kUmVxdWlyZXNJdGFsaWNzKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmaXJzdFJlcXVpcmVzSXRhbGljczsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChzZWNvbmRUcmFpdHNNYXNrICYgbV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlz
b24gJiBGb250V2VpZ2h0TWFzaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKGZpcnN0VHJhaXRzTWFzayAmIG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYg
Rm9udFdlaWdodE1hc2spCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWNzczMtZm9udHMtMjAxMTEwMDQvI2ZvbnQtbWF0
Y2hpbmctYWxnb3JpdGhtIHNheXMgOgotICAgICAgICAvLyAgIC0gSWYgdGhlIGRlc2lyZWQgd2Vp
Z2h0IGlzIGxlc3MgdGhhbiA0MDAsIHdlaWdodHMgYmVsb3cgdGhlIGRlc2lyZWQgd2VpZ2h0IGFy
ZSBjaGVja2VkIGluIGRlc2NlbmRpbmcgb3JkZXIgZm9sbG93ZWQgYnkgd2VpZ2h0cyBhYm92ZSB0
aGUgZGVzaXJlZCB3ZWlnaHQgaW4gYXNjZW5kaW5nIG9yZGVyIHVudGlsIGEgbWF0Y2ggaXMgZm91
bmQuCi0gICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJlZCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFu
IDUwMCwgd2VpZ2h0cyBhYm92ZSB0aGUgZGVzaXJlZCB3ZWlnaHQgYXJlIGNoZWNrZWQgaW4gYXNj
ZW5kaW5nIG9yZGVyIGZvbGxvd2VkIGJ5IHdlaWdodHMgYmVsb3cgdGhlIGRlc2lyZWQgd2VpZ2h0
IGluIGRlc2NlbmRpbmcgb3JkZXIgdW50aWwgYSBtYXRjaCBpcyBmb3VuZC4KLSAgICAgICAgLy8g
ICAtIElmIHRoZSBkZXNpcmVkIHdlaWdodCBpcyA0MDAsIDUwMCBpcyBjaGVja2VkIGZpcnN0IGFu
ZCB0aGVuIHRoZSBydWxlIGZvciBkZXNpcmVkIHdlaWdodHMgbGVzcyB0aGFuIDQwMCBpcyB1c2Vk
LgotICAgICAgICAvLyAgIC0gSWYgdGhlIGRlc2lyZWQgd2VpZ2h0IGlzIDUwMCwgNDAwIGlzIGNo
ZWNrZWQgZmlyc3QgYW5kIHRoZW4gdGhlIHJ1bGUgZm9yIGRlc2lyZWQgd2VpZ2h0cyBsZXNzIHRo
YW4gNDAwIGlzIHVzZWQuCi0KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZhbGxiYWNr
UnVsZVNldHMgPSA5OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcnVsZXNQZXJTZXQg
PSA4OwotICAgICAgICBzdGF0aWMgY29uc3QgRm9udFRyYWl0c01hc2sgd2VpZ2h0RmFsbGJhY2tS
dWxlU2V0c1tmYWxsYmFja1J1bGVTZXRzXVtydWxlc1BlclNldF0gPSB7Ci0gICAgICAgICAgICB7
IEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDQwME1hc2ss
IEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDcwME1hc2ss
IEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzayB9LAotICAgICAgICAgICAgeyBG
b250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBG
b250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBG
b250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9u
dFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9u
dFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9u
dFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRX
ZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRX
ZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRX
ZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzayB9LAotICAgICAgICAgICAgeyBGb250V2Vp
Z2h0NDAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2Vp
Z2h0MTAwTWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2Vp
Z2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdo
dDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzaywgRm9udFdlaWdo
dDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdo
dDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQ4
MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1
MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQy
MDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9LAotICAgICAgICAgICAgeyBGb250V2VpZ2h0OTAw
TWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAw
TWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAw
TWFzaywgRm9udFdlaWdodDEwME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDgwME1h
c2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDUwME1h
c2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1h
c2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0KLSAgICAgICAgfTsKLQotICAgICAgICB1bnNpZ25lZCBy
dWxlU2V0SW5kZXggPSAwOwotICAgICAgICBmb3IgKDsgIShtX2Rlc2lyZWRUcmFpdHNNYXNrRm9y
Q29tcGFyaXNvbiAmICgxIDw8IChGb250V2VpZ2h0MTAwQml0ICsgcnVsZVNldEluZGV4KSkpOyBy
dWxlU2V0SW5kZXgrKykgeyB9Ci0KLSAgICAgICAgY29uc3QgRm9udFRyYWl0c01hc2sqIHdlaWdo
dEZhbGxiYWNrUnVsZSA9IHdlaWdodEZhbGxiYWNrUnVsZVNldHNbcnVsZVNldEluZGV4XTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzUGVyU2V0OyArK2kpIHsKLSAgICAg
ICAgICAgIGlmIChzZWNvbmRUcmFpdHNNYXNrICYgd2VpZ2h0RmFsbGJhY2tSdWxlW2ldKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmIChmaXJzdFRyYWl0c01h
c2sgJiB3ZWlnaHRGYWxsYmFja1J1bGVbaV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEZvbnRUcmFpdHNNYXNrIG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uOwotfTsK
LQogRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5TmFtZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIHNwZWMgKGFuZCBGaXJlZm94KSBzYXlzIHVz
ZXIgc3BlY2lmaWVkIGdlbmVyaWMgZmFtaWxpZXMgKHNhbnMtc2VyaWYgZXRjLikgc2hvdWxkIGJl
IHJlc29sdmVkIGJlZm9yZSB0aGUgQGZvbnQtZmFjZSBsb29rdXAgdG9vLgogICAgIGJvb2wgcmVz
b2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA9IGZhbWlseU5hbWUgPT0gc3RhbmRhcmRGYW1pbHk7CiAK
ICAgICBBdG9taWNTdHJpbmcgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHlG
aXJzdCA/IHJlc29sdmVHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwg
ZmFtaWx5TmFtZSkgOiBmYW1pbHlOYW1lOwotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKiBmYWNl
ID0gZ2V0Rm9udEZhY2UoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlGb3JMb29rdXApOworICAgIGF1
dG8gZmFjZSA9IG1fZm9udEZhY2VTZXQtPmdldEZvbnRGYWNlKGZhbWlseUZvckxvb2t1cCwgZm9u
dERlc2NyaXB0aW9uLnRyYWl0c01hc2soKSk7CiAgICAgaWYgKCFmYWNlKSB7CiAgICAgICAgIGlm
ICghcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCkKICAgICAgICAgICAgIGZhbWlseUZvckxvb2t1
cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFt
aWx5TmFtZSk7CiAgICAgICAgIHJldHVybiBGb250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseUZvckxvb2t1cCkpOwogICAg
IH0KIAotICAgIHJldHVybiBmYWNlLT5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7Ci19Ci0K
LUNTU1NlZ21lbnRlZEZvbnRGYWNlKiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnRGYWNlKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSkKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9mb250RmFjZXMuZmluZChmYW1pbHkpOwot
ICAgIGlmIChpdGVyYXRvciA9PSBtX2ZvbnRGYWNlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byYgZmFtaWx5Rm9udEZhY2VzID0gaXRlcmF0b3ItPnZhbHVlOwotCi0g
ICAgYXV0byYgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9IG1fZm9udHMuYWRkKGZhbWlseSwgSGFz
aE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPj4oKSku
aXRlcmF0b3ItPnZhbHVlOwotCi0gICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzayA9IGZvbnRE
ZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdCA9IHNlZ21lbnRl
ZEZvbnRGYWNlQ2FjaGUuYWRkKHRyYWl0c01hc2ssIHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VnbWVu
dGVkRm9udEZhY2U+KCp0aGlzKSk7Ci0gICAgQ1NTU2VnbWVudGVkRm9udEZhY2UmIGZhY2UgPSAq
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICByZXR1cm4gJmZhY2U7Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxGb250RmFjZT4sIDMyPiBjYW5kaWRhdGVGb250RmFjZXM7Ci0gICAgZm9yIChpbnQgaSA9
IGZhbWlseUZvbnRGYWNlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBGb250
RmFjZSYgY2FuZGlkYXRlID0gZmFtaWx5Rm9udEZhY2VzW2ldOwotICAgICAgICB1bnNpZ25lZCBj
YW5kaWRhdGVUcmFpdHNNYXNrID0gY2FuZGlkYXRlLnRyYWl0c01hc2soKTsKLSAgICAgICAgaWYg
KCh0cmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykgJiYgIShjYW5kaWRhdGVUcmFpdHNN
YXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgY2FuZGlkYXRlRm9udEZhY2VzLmFwcGVuZChjYW5kaWRhdGUpOwotICAgIH0KLQotICAgIGF1
dG8gbG9jYWxJdGVyYXRvciA9IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5maW5kKGZhbWls
eSk7Ci0gICAgaWYgKGxvY2FsSXRlcmF0b3IgIT0gbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2Vz
LmVuZCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbG9jYWxJdGVyYXRvci0+
dmFsdWUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNhbmRpZGF0ZVRyYWl0c01hc2sgPSBjYW5k
aWRhdGUtPnRyYWl0c01hc2soKTsKLSAgICAgICAgICAgIGlmICgodHJhaXRzTWFzayAmIEZvbnRT
dHlsZU5vcm1hbE1hc2spICYmICEoY2FuZGlkYXRlVHJhaXRzTWFzayAmIEZvbnRTdHlsZU5vcm1h
bE1hc2spKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgY2FuZGlkYXRl
Rm9udEZhY2VzLmFwcGVuZChjYW5kaWRhdGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3Rk
OjpzdGFibGVfc29ydChjYW5kaWRhdGVGb250RmFjZXMuYmVnaW4oKSwgY2FuZGlkYXRlRm9udEZh
Y2VzLmVuZCgpLCBGb250RmFjZUNvbXBhcmF0b3IodHJhaXRzTWFzaykpOwotICAgIGZvciAoYXV0
byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlRm9udEZhY2VzKQotICAgICAgICBmYWNlLmFwcGVuZEZv
bnRGYWNlKGNhbmRpZGF0ZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gJmZhY2U7CisgICAgcmV0dXJu
IGZhY2UudmFsdWUoKS5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKIHZvaWQgQ1NT
Rm9udFNlbGVjdG9yOjpjbGVhckRvY3VtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuaAppbmRleCBmODdhYjU5Li43YjU3ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTU2VnbWVudGVkRm9udEZhY2Uu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
KyNpbmNsdWRlICJGb250RmFjZVNldC5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNjIsNyArNjMsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBGb250UmFuZ2VzIGZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBzaXplX3QgZmFsbGJhY2tGb250Q291bnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0
cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpIG92
ZXJyaWRlOwotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKiBnZXRGb250RmFjZShjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAKICAgICB2b2lkIGNs
ZWFyRG9jdW1lbnQoKTsKIApAQCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb250
TG9hZGVkKEZvbnRGYWNlJik7CiAgICAgdmlydHVhbCB2b2lkIGZvbnRDYWNoZUludmFsaWRhdGVk
KCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLQogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcyhGb250U2VsZWN0b3JDbGllbnQm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvckludmFsaWRhdGlvbkNh
bGxiYWNrcyhGb250U2VsZWN0b3JDbGllbnQmKSBvdmVycmlkZTsKIApAQCAtOTQsOSArOTIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5Mb2FkVGltZXJGaXJlZCgpOwogCiAgICAgRG9jdW1l
bnQqIG1fZG9jdW1lbnQ7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZhY2U+
PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2ZvbnRGYWNlczsKLSAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxGb250RmFjZT4+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1f
bG9jYWxseUluc3RhbGxlZEZvbnRGYWNlczsKLSAgICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDx1
bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPj4sIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4gbV9mb250czsKKyAgICBSZWY8Rm9udEZhY2VTZXQ+IG1fZm9udEZh
Y2VTZXQ7CiAgICAgSGFzaFNldDxGb250U2VsZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKICAg
ICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1fZm9udHNUb0JlZ2lu
TG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250
RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmlu
ZGV4IDQ0ZWRjNzMuLmM3ZWFjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRl
ZEZvbnRGYWNlLmNwcApAQCAtMzYsOCArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNTU1NlZ21lbnRlZEZvbnRGYWNlOjpDU1NTZWdtZW50ZWRGb250RmFjZShDU1NGb250U2VsZWN0
b3ImIGZvbnRTZWxlY3RvcikKLSAgICA6IG1fZm9udFNlbGVjdG9yKGZvbnRTZWxlY3RvcikKK0NT
U1NlZ21lbnRlZEZvbnRGYWNlOjpDU1NTZWdtZW50ZWRGb250RmFjZSgpCiB7CiB9CiAKQEAgLTk2
LDQgKzk1LDE5IEBAIEZvbnRSYW5nZXMgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRSYW5nZXMo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpCiAgICAgcmV0dXJuIGZvbnRSYW5n
ZXM7CiB9CiAKK3ZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmxvYWQoKQoreworICAgIGZvciAo
YXV0byYgZmFjZSA6IG1fZm9udEZhY2VzKQorICAgICAgICBmYWNlLT5sb2FkKCk7Cit9CisKK2Jv
b2wgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmFsbEZvbnRGYWNlc0FyZUxvYWRlZCgpIGNvbnN0Cit7
CisgICAgZm9yIChhdXRvJiBmYWNlIDogbV9mb250RmFjZXMpIHsKKyAgICAgICAgaWYgKGZhY2Ut
PnN0YXR1c0VudW0oKSAhPSBGb250RmFjZTo6U3RhdHVzOjpMb2FkZWQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCmluZGV4IGMwYWEyZjkuLjhiNmQ3ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCkBAIC00MSw5ICs0MSw3
IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIAogY2xhc3MgQ1NTU2VnbWVudGVkRm9udEZhY2Ug
ewogcHVibGljOgotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYpOwot
Ci0gICAgQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Zv
bnRTZWxlY3RvcjsgfQorICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKCk7CiAKICAgICB2b2lkIGZv
bnRMb2FkZWQoRm9udEZhY2UmKTsKIApAQCAtNTEsMTAgKzQ5LDEyIEBAIHB1YmxpYzoKIAogICAg
IEZvbnRSYW5nZXMgZm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mKTsKIAorICAgIHZv
aWQgbG9hZCgpOworICAgIGJvb2wgYWxsRm9udEZhY2VzQXJlTG9hZGVkKCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgdm9pZCBwcnVuZVRhYmxlKCk7CiAKLSAgICBDU1NGb250U2VsZWN0b3ImIG1f
Zm9udFNlbGVjdG9yOwogICAgIEhhc2hNYXA8Rm9udERlc2NyaXB0aW9uS2V5LCBGb250UmFuZ2Vz
LCBGb250RGVzY3JpcHRpb25LZXlIYXNoLCBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxGb250
RGVzY3JpcHRpb25LZXk+PiBtX2Rlc2NyaXB0aW9uVG9SYW5nZXNNYXA7CiAgICAgVmVjdG9yPFJl
ZjxGb250RmFjZT4sIDE+IG1fZm9udEZhY2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmlu
ZGV4IGQyNjYyYzAuLjBiZjRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMjQyLDYg
KzI0Miw3IEBAIHZvaWQgRm9udEZhY2U6OnNldFN0eWxlKGNvbnN0IFN0cmluZyYgbmV3U3R5bGUp
CiAgICAgICAgIG5ld1RyYWl0c01hc2sgfD0gRm9udFN0eWxlSXRhbGljTWFzazsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgbV90cmFpdHNNYXNrID0gc3RhdGljX2Nhc3Q8Rm9udFRy
YWl0c01hc2s+KG5ld1RyYWl0c01hc2spOwpAQCAtMjgzLDEwICsyODQsNyBAQCB2b2lkIEZvbnRG
YWNlOjpzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiB3ZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gZm9udFdlaWdodCA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5Rm9udFdlaWdodCk7Ci0gICAgaWYgKCFmb250V2VpZ2h0KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkp
CisgICAgaWYgKCFmb250V2VpZ2h0IHx8ICFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRXZWln
aHQpKQogICAgICAgICByZXR1cm47CiAKICAgICBmb250U2VsZWN0b3IoKS5mb250RmFjZVdpbGxD
aGFuZ2UoKnRoaXMpOwpAQCAtMzIzLDYgKzMyMSw3IEBAIHZvaWQgRm9udEZhY2U6OnNldFdlaWdo
dChjb25zdCBTdHJpbmcmIHdlaWdodCkKICAgICAgICAgbmV3VHJhaXRzTWFzayB8PSBGb250V2Vp
Z2h0MTAwTWFzazsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV90cmFpdHNNYXNr
ID0gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KG5ld1RyYWl0c01hc2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaAppbmRleCBlMTA4MWVjLi4xNzgwM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAt
MTE2LDYgKzExNiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGZWF0dXJlU2V0dGluZ3MoY29u
c3QgU3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpOwogICAgIFN0cmluZyBzdGF0dXMoKSBjb25zdDsK
IAorICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAgICAgICAgVW5sb2FkZWQsCisgICAgICAgIExv
YWRpbmcsCisgICAgICAgIExvYWRlZCwKKyAgICAgICAgRXJyb3IKKyAgICB9OworICAgIFN0YXR1
cyBzdGF0dXNFbnVtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKwogICAgIGJvb2wgYWxs
U291cmNlc0hhdmVGYWlsZWQoKSBjb25zdDsKIAogICAgIFJlZlB0cjxGb250PiBmb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMpOwpAQCAtMTQzLDEyICsxNTEsNiBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAg
ICBlbnVtIGNsYXNzIFN0YXR1cyB7Ci0gICAgICAgIFVubG9hZGVkLAotICAgICAgICBMb2FkaW5n
LAotICAgICAgICBMb2FkZWQsCi0gICAgICAgIEVycm9yCi0gICAgfTsKIAogICAgIEZvbnRGYWNl
KERvY3VtZW50JiwgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzaywgYm9vbCBpc0xvY2FsRmFsbGJh
Y2spOwogICAgIEZvbnRGYWNlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0
IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsCmluZGV4IDAw
NzJjMzEuLjJjZTYyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbApAQCAtMzEsNiArMzEsOCBA
QAogfTsKIAogWworICAgIEdsb2JhbENvbnRleHQ9RE9NV2luZG93LAorICAgIEFjdGl2ZURPTU9i
amVjdCwKICAgICBDdXN0b21Db25zdHJ1Y3RvcihET01TdHJpbmcgZmFtaWx5LCBhbnkgc291cmNl
LCBEaWN0aW9uYXJ5IGRlc2NyaXB0b3JzKQogXSBpbnRlcmZhY2UgRm9udEZhY2UgewogICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgZmFtaWx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EyZTVkOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKQEAgLTAsMCArMSwzNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udEZhY2VTZXQu
aCIKKworI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlZ21lbnRl
ZEZvbnRGYWNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGb250Q2FjaGUu
aCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkxvY2FsRm9udEZhY2VTb3VyY2Uu
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYg
aW5pdGlhbEZhY2VzKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQoreworICAgIGZvciAoYXV0byYgZmFjZSA6IGluaXRpYWxGYWNlcykKKyAgICAgICAgYWRk
KGZhY2UuZ2V0KCkpOworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCitib29sIEZvbnRGYWNl
U2V0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpMb2FkaW5nOworfQorCitzdGF0aWMgdm9pZCByZWdpc3Rl
ckxvY2FsRm9udEZhY2VzRm9yRmFtaWx5KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiBmYW1pbHlOYW1lLCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGb250RmFjZT4+LCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBsb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzKQoreworICAg
IEFTU0VSVCghbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5jb250YWlucyhmYW1pbHlOYW1lKSk7
CisKKyAgICBWZWN0b3I8Rm9udFRyYWl0c01hc2s+IHRyYWl0c01hc2tzID0gRm9udENhY2hlOjpz
aW5nbGV0b24oKS5nZXRUcmFpdHNJbkZhbWlseShmYW1pbHlOYW1lKTsKKyAgICBpZiAodHJhaXRz
TWFza3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmPEZvbnRG
YWNlPj4gZmFjZXMgPSB7IH07CisgICAgZm9yIChhdXRvIG1hc2sgOiB0cmFpdHNNYXNrcykgewor
ICAgICAgICBSZWY8Rm9udEZhY2U+IGZhY2UgPSBGb250RmFjZTo6Y3JlYXRlKGRvY3VtZW50LCBt
YXNrLCB0cnVlKTsKKyAgICAgICAgZmFjZS0+YWRkU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8TG9j
YWxGb250RmFjZVNvdXJjZT4oZmFjZSwgZmFtaWx5TmFtZSkpOworICAgICAgICBBU1NFUlQoIWZh
Y2UtPmFsbFNvdXJjZXNIYXZlRmFpbGVkKCkpOworICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92
ZShmYWNlKSk7CisgICAgfQorICAgIGxvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuYWRkKGZhbWls
eU5hbWUsIFdURk1vdmUoZmFjZXMpKTsKK30KKworRm9udEZhY2VTZXQmIEZvbnRGYWNlU2V0Ojph
ZGQoRm9udEZhY2UqIG5ld0ZhY2UpCit7CisgICAgaWYgKCFuZXdGYWNlKQorICAgICAgICByZXR1
cm4gKnRoaXM7CisKKyAgICBhdXRvKiBleGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIEFTU0VSVChleGVjdXRpb25Db250ZXh0ICYmIGV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CisgICAgYXV0byYgZG9jdW1lbnQgPSAqZG93bmNhc3Q8RG9jdW1l
bnQ+KGV4ZWN1dGlvbkNvbnRleHQpOworCisgICAgZm9yIChhdXRvJiBmYW1pbHlOYW1lIDogbmV3
RmFjZS0+ZmFtaWxpZXMoKSkgeworICAgICAgICBpZiAoZmFtaWx5TmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udEZh
Y2VzLmFkZChmYW1pbHlOYW1lLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4oKSk7CisgICAgICAgIGF1
dG8mIGZhbWlseUZvbnRGYWNlcyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgcmVnaXN0ZXJMb2NhbEZv
bnRGYWNlc0ZvckZhbWlseShkb2N1bWVudCwgZmFtaWx5TmFtZSwgbV9sb2NhbGx5SW5zdGFsbGVk
Rm9udEZhY2VzKTsKKyAgICAgICAgICAgIGZhbWlseUZvbnRGYWNlcyA9IHsgfTsKKyAgICAgICAg
fQorCisgICAgICAgIGZhbWlseUZvbnRGYWNlcy5hcHBlbmQoKm5ld0ZhY2UpOworICAgIH0KKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OnJlbW92ZShGb250RmFjZSog
cmVtb3ZlZEZhY2UpCit7CisgICAgaWYgKCFyZW1vdmVkRmFjZSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBmb3IgKGF1dG8mIGZhbWlseU5hbWUgOiByZW1vdmVkRmFjZS0+ZmFtaWxpZXMo
KSkgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX2ZvbnRGYWNlcy5maW5kKGZhbWlseU5hbWUpOwor
ICAgICAgICBBU1NFUlQoaXRlciAhPSBtX2ZvbnRGYWNlcy5lbmQoKSk7CisgICAgICAgIGl0ZXIt
PnZhbHVlLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShjb25zdCBSZWY8Rm9udEZhY2U+JiBpdGVtKSB7
CisgICAgICAgICAgICByZXR1cm4gaXRlbS5wdHIoKSA9PSByZW1vdmVkRmFjZTsKKyAgICAgICAg
fSk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEZvbnRGYWNlU2V0OjpjbGVh
cigpCit7CisgICAgbV9mb250RmFjZXMuY2xlYXIoKTsKKyAgICBtX2xvY2FsbHlJbnN0YWxsZWRG
b250RmFjZXMuY2xlYXIoKTsKK30KKworY2xhc3MgRm9udEZhY2VDb21wYXJhdG9yIHsKK3B1Ymxp
YzoKKyAgICBGb250RmFjZUNvbXBhcmF0b3IoRm9udFRyYWl0c01hc2sgZGVzaXJlZFRyYWl0c01h
c2tGb3JDb21wYXJpc29uKQorICAgICAgICA6IG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJp
c29uKGRlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbikKKyAgICB7CisgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJp
c29uICYgRm9udFdlaWdodE1hc2spOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IoKShjb25z
dCBGb250RmFjZSYgZmlyc3QsIGNvbnN0IEZvbnRGYWNlJiBzZWNvbmQpCisgICAgeworICAgICAg
ICBGb250VHJhaXRzTWFzayBmaXJzdFRyYWl0c01hc2sgPSBmaXJzdC50cmFpdHNNYXNrKCk7Cisg
ICAgICAgIEZvbnRUcmFpdHNNYXNrIHNlY29uZFRyYWl0c01hc2sgPSBzZWNvbmQudHJhaXRzTWFz
aygpOworCisgICAgICAgIGJvb2wgZmlyc3RIYXNEZXNpcmVkU3R5bGUgPSBmaXJzdFRyYWl0c01h
c2sgJiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRTdHlsZU1hc2s7Cisg
ICAgICAgIGJvb2wgc2Vjb25kSGFzRGVzaXJlZFN0eWxlID0gc2Vjb25kVHJhaXRzTWFzayAmIG1f
ZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlTWFzazsKKworICAgICAg
ICBpZiAoZmlyc3RIYXNEZXNpcmVkU3R5bGUgIT0gc2Vjb25kSGFzRGVzaXJlZFN0eWxlKQorICAg
ICAgICAgICAgcmV0dXJuIGZpcnN0SGFzRGVzaXJlZFN0eWxlOworCisgICAgICAgIGlmICgobV9k
ZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250U3R5bGVJdGFsaWNNYXNrKSAmJiAh
Zmlyc3QuaXNMb2NhbEZhbGxiYWNrKCkgJiYgIXNlY29uZC5pc0xvY2FsRmFsbGJhY2soKSkgewor
ICAgICAgICAgICAgLy8gUHJlZmVyIGEgZm9udCB0aGF0IGhhcyBpbmRpY2F0ZWQgdGhhdCBpdCBj
YW4gb25seSBzdXBwb3J0IGl0YWxpY3MgdG8gYSBmb250IHRoYXQgY2xhaW1zIHRvIHN1cHBvcnQK
KyAgICAgICAgICAgIC8vIGFsbCBzdHlsZXMuIFRoZSBzcGVjaWFsaXplZCBmb250IGlzIG1vcmUg
bGlrZWx5IHRvIGJlIHRoZSBvbmUgdGhlIGF1dGhvciB3YW50cyB1c2VkLgorICAgICAgICAgICAg
Ym9vbCBmaXJzdFJlcXVpcmVzSXRhbGljcyA9IChmaXJzdFRyYWl0c01hc2sgJiBGb250U3R5bGVJ
dGFsaWNNYXNrKSAmJiAhKGZpcnN0VHJhaXRzTWFzayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spOwor
ICAgICAgICAgICAgYm9vbCBzZWNvbmRSZXF1aXJlc0l0YWxpY3MgPSAoc2Vjb25kVHJhaXRzTWFz
ayAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICEoc2Vjb25kVHJhaXRzTWFzayAmIEZvbnRTdHls
ZU5vcm1hbE1hc2spOworICAgICAgICAgICAgaWYgKGZpcnN0UmVxdWlyZXNJdGFsaWNzICE9IHNl
Y29uZFJlcXVpcmVzSXRhbGljcykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RSZXF1aXJl
c0l0YWxpY3M7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2Vjb25kVHJhaXRzTWFzayAmIG1f
ZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFdlaWdodE1hc2spCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChmaXJzdFRyYWl0c01hc2sgJiBtX2Rlc2ly
ZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9XRC1j
c3MzLWZvbnRzLTIwMTExMDA0LyNmb250LW1hdGNoaW5nLWFsZ29yaXRobSBzYXlzIDoKKyAgICAg
ICAgLy8gICAtIElmIHRoZSBkZXNpcmVkIHdlaWdodCBpcyBsZXNzIHRoYW4gNDAwLCB3ZWlnaHRz
IGJlbG93IHRoZSBkZXNpcmVkIHdlaWdodCBhcmUgY2hlY2tlZCBpbiBkZXNjZW5kaW5nIG9yZGVy
IGZvbGxvd2VkIGJ5IHdlaWdodHMgYWJvdmUgdGhlIGRlc2lyZWQgd2VpZ2h0IGluIGFzY2VuZGlu
ZyBvcmRlciB1bnRpbCBhIG1hdGNoIGlzIGZvdW5kLgorICAgICAgICAvLyAgIC0gSWYgdGhlIGRl
c2lyZWQgd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiA1MDAsIHdlaWdodHMgYWJvdmUgdGhlIGRlc2ly
ZWQgd2VpZ2h0IGFyZSBjaGVja2VkIGluIGFzY2VuZGluZyBvcmRlciBmb2xsb3dlZCBieSB3ZWln
aHRzIGJlbG93IHRoZSBkZXNpcmVkIHdlaWdodCBpbiBkZXNjZW5kaW5nIG9yZGVyIHVudGlsIGEg
bWF0Y2ggaXMgZm91bmQuCisgICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJlZCB3ZWlnaHQgaXMg
NDAwLCA1MDAgaXMgY2hlY2tlZCBmaXJzdCBhbmQgdGhlbiB0aGUgcnVsZSBmb3IgZGVzaXJlZCB3
ZWlnaHRzIGxlc3MgdGhhbiA0MDAgaXMgdXNlZC4KKyAgICAgICAgLy8gICAtIElmIHRoZSBkZXNp
cmVkIHdlaWdodCBpcyA1MDAsIDQwMCBpcyBjaGVja2VkIGZpcnN0IGFuZCB0aGVuIHRoZSBydWxl
IGZvciBkZXNpcmVkIHdlaWdodHMgbGVzcyB0aGFuIDQwMCBpcyB1c2VkLgorCisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBmYWxsYmFja1J1bGVTZXRzID0gOTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHJ1bGVzUGVyU2V0ID0gODsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZv
bnRUcmFpdHNNYXNrIHdlaWdodEZhbGxiYWNrUnVsZVNldHNbZmFsbGJhY2tSdWxlU2V0c11bcnVs
ZXNQZXJTZXRdID0geworICAgICAgICAgICAgeyBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdo
dDMwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdo
dDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdo
dDkwME1hc2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDEwME1hc2ssIEZvbnRXZWlnaHQz
MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ2
MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5
MDBNYXNrIH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAw
TWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NjAw
TWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAw
TWFzayB9LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDMwME1h
c2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDYwME1h
c2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1h
c2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQzMDBNYXNr
LCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNr
LCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNr
IH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywg
Rm9udFdlaWdodDkwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywg
Rm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9
LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2ssIEZv
bnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZv
bnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sgfSwK
KyAgICAgICAgICAgIHsgRm9udFdlaWdodDkwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250
V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250
V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0sCisg
ICAgICAgICAgICB7IEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdl
aWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdl
aWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9CisgICAg
ICAgIH07CisKKyAgICAgICAgdW5zaWduZWQgcnVsZVNldEluZGV4ID0gMDsKKyAgICAgICAgZm9y
ICg7ICEobV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiAoMSA8PCAoRm9udFdlaWdo
dDEwMEJpdCArIHJ1bGVTZXRJbmRleCkpKTsgcnVsZVNldEluZGV4KyspIHsgfQorCisgICAgICAg
IGNvbnN0IEZvbnRUcmFpdHNNYXNrKiB3ZWlnaHRGYWxsYmFja1J1bGUgPSB3ZWlnaHRGYWxsYmFj
a1J1bGVTZXRzW3J1bGVTZXRJbmRleF07CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBydWxlc1BlclNldDsgKytpKSB7CisgICAgICAgICAgICBpZiAoc2Vjb25kVHJhaXRzTWFzayAm
IHdlaWdodEZhbGxiYWNrUnVsZVtpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBpZiAoZmlyc3RUcmFpdHNNYXNrICYgd2VpZ2h0RmFsbGJhY2tSdWxlW2ldKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGb250VHJhaXRzTWFzayBtX2Rlc2lyZWRU
cmFpdHNNYXNrRm9yQ29tcGFyaXNvbjsKK307CisKK09wdGlvbmFsPENTU1NlZ21lbnRlZEZvbnRG
YWNlPiBGb250RmFjZVNldDo6Z2V0Rm9udEZhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHks
IEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2spCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fZm9u
dEZhY2VzLmZpbmQoZmFtaWx5KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9mb250RmFjZXMuZW5k
KCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIGF1dG8mIGZhbWlseUZvbnRGYWNlcyA9
IGl0ZXJhdG9yLT52YWx1ZTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjYWNoZWQu
CisgICAgQ1NTU2VnbWVudGVkRm9udEZhY2UgZmFjZTsKKworICAgIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEZvbnRGYWNlPiwgMzI+IGNhbmRpZGF0ZUZvbnRGYWNlczsKKyAgICBmb3Ig
KGludCBpID0gZmFtaWx5Rm9udEZhY2VzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAg
ICAgIEZvbnRGYWNlJiBjYW5kaWRhdGUgPSBmYW1pbHlGb250RmFjZXNbaV07CisgICAgICAgIHVu
c2lnbmVkIGNhbmRpZGF0ZVRyYWl0c01hc2sgPSBjYW5kaWRhdGUudHJhaXRzTWFzaygpOworICAg
ICAgICBpZiAoKHRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSAmJiAhKGNhbmRpZGF0
ZVRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBjYW5kaWRhdGVGb250RmFjZXMuYXBwZW5kKGNhbmRpZGF0ZSk7CisgICAgfQor
CisgICAgYXV0byBsb2NhbEl0ZXJhdG9yID0gbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmZp
bmQoZmFtaWx5KTsKKyAgICBpZiAobG9jYWxJdGVyYXRvciAhPSBtX2xvY2FsbHlJbnN0YWxsZWRG
b250RmFjZXMuZW5kKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBsb2NhbEl0
ZXJhdG9yLT52YWx1ZSkgeworICAgICAgICAgICAgdW5zaWduZWQgY2FuZGlkYXRlVHJhaXRzTWFz
ayA9IGNhbmRpZGF0ZS0+dHJhaXRzTWFzaygpOworICAgICAgICAgICAgaWYgKCh0cmFpdHNNYXNr
ICYgRm9udFN0eWxlTm9ybWFsTWFzaykgJiYgIShjYW5kaWRhdGVUcmFpdHNNYXNrICYgRm9udFN0
eWxlTm9ybWFsTWFzaykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBj
YW5kaWRhdGVGb250RmFjZXMuYXBwZW5kKGNhbmRpZGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzdGQ6OnN0YWJsZV9zb3J0KGNhbmRpZGF0ZUZvbnRGYWNlcy5iZWdpbigpLCBjYW5kaWRh
dGVGb250RmFjZXMuZW5kKCksIEZvbnRGYWNlQ29tcGFyYXRvcih0cmFpdHNNYXNrKSk7CisgICAg
Zm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRhdGVGb250RmFjZXMpCisgICAgICAgIGZhY2Uu
YXBwZW5kRm9udEZhY2UoY2FuZGlkYXRlLmdldCgpKTsKKworICAgIHJldHVybiBXVEZNb3ZlKGZh
Y2UpOworfQorCitzdGF0aWMgdW5zaWduZWQgc3R5bGVUcmFpdHNNYXNrRnJvbVN0eWxlUHJvcGVy
dGllcyhTdHlsZVByb3BlcnRpZXMmIHN0eWxlUHJvcGVydGllcykKK3sKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IGZvbnRTdHlsZSA9IHN0eWxlUHJvcGVydGllcy5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnR5Rm9udFN0eWxlKTsKKyAgICBpZiAoIWZvbnRTdHlsZSB8fCAhaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KCpmb250U3R5bGUpKQorICAgICAgICByZXR1cm4gRm9udFN0eWxlTm9ybWFsTWFz
azsKKworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250U3R5bGUp
LmdldFZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgICAgIHJldHVy
biBGb250U3R5bGVOb3JtYWxNYXNrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVl
SXRhbGljOgorICAgIGNhc2UgQ1NTVmFsdWVPYmxpcXVlOgorICAgICAgICByZXR1cm4gRm9udFN0
eWxlSXRhbGljTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBGb250U3R5bGVOb3JtYWxNYXNrOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRm9udFN0eWxlTm9y
bWFsTWFzazsKK30KKworc3RhdGljIHVuc2lnbmVkIHdlaWdodFRyYWl0c01hc2tGcm9tU3R5bGVQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydGllcyYgc3R5bGVQcm9wZXJ0aWVzKQoreworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gZm9udFdlaWdodCA9IHN0eWxlUHJvcGVydGllcy5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5Rm9udFdlaWdodCk7CisgICAgaWYgKCFmb250V2VpZ2h0IHx8ICFpczxD
U1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQpKQorICAgICAgICByZXR1cm4gRm9udFdlaWdo
dDQwME1hc2s7CisKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9u
dFdlaWdodCkuZ2V0VmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CisgICAgY2Fz
ZSBDU1NWYWx1ZTcwMDoKKyAgICAgICAgcmV0dXJuIEZvbnRXZWlnaHQ3MDBNYXNrOworICAgIGNh
c2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgY2FzZSBDU1NWYWx1ZTQwMDoKKyAgICAgICAgcmV0dXJu
IEZvbnRXZWlnaHQ0MDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWU5MDA6CisgICAgICAgIHJldHVy
biBGb250V2VpZ2h0OTAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlODAwOgorICAgICAgICByZXR1
cm4gRm9udFdlaWdodDgwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTYwMDoKKyAgICAgICAgcmV0
dXJuIEZvbnRXZWlnaHQ2MDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWU1MDA6CisgICAgICAgIHJl
dHVybiBGb250V2VpZ2h0NTAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlMzAwOgorICAgICAgICBy
ZXR1cm4gRm9udFdlaWdodDMwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTIwMDoKKyAgICAgICAg
cmV0dXJuIEZvbnRXZWlnaHQyMDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWUxMDA6CisgICAgICAg
IHJldHVybiBGb250V2VpZ2h0MTAwTWFzazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEZvbnRXZWlnaHQ0MDBNYXNrOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRm9udFdlaWdodDQwME1hc2s7
Cit9CisKK3N0YXRpYyBpbmxpbmUgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFza0Zyb21TdHlsZVBy
b3BlcnRpZXMoU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZVByb3BlcnRpZXMpCit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPihzdHlsZVRyYWl0c01hc2tGcm9tU3R5bGVQcm9w
ZXJ0aWVzKHN0eWxlUHJvcGVydGllcykgfCB3ZWlnaHRUcmFpdHNNYXNrRnJvbVN0eWxlUHJvcGVy
dGllcyhzdHlsZVByb3BlcnRpZXMpKTsKK30KKwordm9pZCBGb250RmFjZVNldDo6c2VnbWVudGVk
Rm9udEZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiwgc3RkOjpmdW5jdGlv
bjx2b2lkKENTU1NlZ21lbnRlZEZvbnRGYWNlJik+IGNhbGxiYWNrKQoreworICAgIC8vIEZJWE1F
OiBXZSBpZ25vcmUgdGhlIHRleHQgc3RyaW5nLgorCisgICAgUmVmPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgaWYg
KENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZS5wdHIoKSwgQ1NTUHJvcGVydHlGb250LCBmb250
LCB0cnVlLCBDU1NTdHJpY3RNb2RlLCBudWxscHRyKSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0
OjpFcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFz
ayA9IHRyYWl0c01hc2tGcm9tU3R5bGVQcm9wZXJ0aWVzKHN0eWxlLmdldCgpKTsKKworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHkpOworICAgIGlmICghdmFsdWUgfHwgIWlzPENTU1ZhbHVlTGlzdD4odmFs
dWUuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NWYWx1ZUxpc3QmIGZhbWlseUxp
c3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSk7CisgICAgaWYgKCFmYW1pbHlMaXN0
Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBmYW1p
bHlMaXN0KSB7CisgICAgICAgIFN0cmluZyBmYW1pbHlOYW1lID0gQ1NTRm9udFNlbGVjdG9yOjpm
YW1pbHlOYW1lRnJvbVByaW1pdGl2ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5n
ZXQoKSkpOworICAgICAgICBpZiAoZmFtaWx5TmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgaWYgKGF1dG8gc2VnbWVudGVkRm9udEZhY2UgPSBnZXRGb250RmFj
ZShmYW1pbHlOYW1lLCB0cmFpdHNNYXNrKSkKKyAgICAgICAgICAgIGNhbGxiYWNrKHNlZ21lbnRl
ZEZvbnRGYWNlLnZhbHVlKCkpOworICAgIH0KK30KKwordm9pZCBGb250RmFjZVNldDo6bG9hZChj
b25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYp
Cit7CisgICAgLy8gRklYTUU6IE1hcCB0aGUgY29sbGVjdGlvbiBvZiBMb2FkaW5nIEZvbnRGYWNl
IG9iamVjdHMgdG8gdGhlIFByb21pc2UsIHNvIHRoYXQgd2UgY2FuIHJlc29sdmUgdGhlIHByb21p
c2Ugd2hlbiB0aGV5IGFyZSBhbGwgZmluaXNoZWQuCisgICAgc2VnbWVudGVkRm9udEZhY2VzKGZv
bnQsIHRleHQsIFsmXShDU1NTZWdtZW50ZWRGb250RmFjZSYgc2VnbWVudGVkRm9udEZhY2UpIHsK
KyAgICAgICAgc2VnbWVudGVkRm9udEZhY2UubG9hZCgpOworICAgIH0pOworfQorCitib29sIEZv
bnRGYWNlU2V0OjpjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
K3sKKyAgICBib29sIGxvYWRlZCA9IHRydWU7CisgICAgc2VnbWVudGVkRm9udEZhY2VzKGZvbnQs
IHRleHQsIFsmXShjb25zdCBDU1NTZWdtZW50ZWRGb250RmFjZSYgc2VnbWVudGVkRm9udEZhY2Up
IHsKKyAgICAgICAgbG9hZGVkICY9IHNlZ21lbnRlZEZvbnRGYWNlLmFsbEZvbnRGYWNlc0FyZUxv
YWRlZCgpOworICAgIH0pOworICAgIHJldHVybiBsb2FkZWQ7Cit9CisKK1N0cmluZyBGb250RmFj
ZVNldDo6c3RhdHVzKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fc3RhdHVzKSB7CisgICAgY2Fz
ZSBTdGF0dXM6OkxvYWRpbmc6CisgICAgICAgIHJldHVybiBTdHJpbmcoImxvYWRpbmciLCBTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjYXNlIFN0YXR1czo6TG9hZGVkOgorICAg
ICAgICByZXR1cm4gU3RyaW5nKCJsb2FkZWQiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygi
bG9hZGluZyIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworfQorCit2b2lkIEZvbnRG
YWNlU2V0Ojpmb250TG9hZGVkKEZvbnRGYWNlJikKK3sKKyAgICAvKmZvciAoY29uc3QgU3RyaW5n
JiBmYW1pbHkgOiBmb250RmFjZS5mYW1pbGllcygpKSB7CisgICAgICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2ZvbnRzLmZpbmQoZmFtaWx5KTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fZm9udHMu
ZW5kKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc2VnbWVudGVkRm9udCA6IGl0ZXJhdG9y
LT52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWdtZW50ZWRGb250LnZhbHVlLT5mb250TG9hZGVk
KGZvbnRGYWNlKTsKKyAgICAgICAgfQorICAgIH0qLworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYzhiMTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMCwwICsx
LDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRm9udEZhY2VTZXRfaAorI2RlZmluZSBGb250
RmFjZVNldF9oCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgorI2luY2x1ZGUgIkZvbnRGYWNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNl
LmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ1NTU2VnbWVudGVkRm9udEZhY2U7CitjbGFz
cyBEZWZlcnJlZFdyYXBwZXI7CitjbGFzcyBET01Db3JlRXhjZXB0aW9uOworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRm9udEZhY2VTZXQgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxGb250RmFjZVNldD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTVByb21pc2U8
Rm9udEZhY2VTZXQmLCBET01Db3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKKworICAgIHN0YXRpYyBS
ZWY8Rm9udEZhY2VTZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mIGluaXRpYWxGYWNl
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRGYWNlU2V0KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGluaXRpYWxGYWNlcykpOworICAgIH0KKworICAgIEZvbnRGYWNl
U2V0JiBhZGQoRm9udEZhY2UqKTsKKyAgICBib29sIHJlbW92ZShGb250RmFjZSopOworICAgIHZv
aWQgY2xlYXIoKTsKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIERlZmVycmVk
V3JhcHBlciYmIHByb21pc2UpIHsgbG9hZChmb250LCBTdHJpbmcoIiAiLCBTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSwgV1RGTW92ZShwcm9taXNlKSk7IH0KKyAgICB2b2lkIGxvYWQoY29u
c3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpOworCisgICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmlu
ZyYgPSBTdHJpbmcoIiAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBT
dHJpbmcgc3RhdHVzKCkgY29uc3Q7CisKKyAgICBjb25zdCBPcHRpb25hbDxQcm9taXNlPiYgcHJv
bWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZTsgfQorCisgICAgdXNpbmcgUmVmQ291bnRl
ZDxGb250RmFjZVNldD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0Pjo6
ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKKwor
ICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAgICAgICAgTG9hZGluZywKKyAgICAgICAgTG9hZGVk
CisgICAgfTsKKworICAgIEZvbnRGYWNlU2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAor
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJGb250RmFjZVNldCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gRXZlbnRU
YXJnZXQKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRm9udEZhY2VTZXRFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgT3B0aW9uYWw8Q1NTU2VnbWVudGVk
Rm9udEZhY2U+IGdldEZvbnRGYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBGb250VHJh
aXRzTWFzayk7CisgICAgdm9pZCBzZWdtZW50ZWRGb250RmFjZXMoY29uc3QgU3RyaW5nJiBmb250
LCBjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6ZnVuY3Rpb248dm9pZChDU1NTZWdtZW50ZWRGb250
RmFjZSYpPik7CisKKyAgICB2b2lkIGZvbnRMb2FkZWQoRm9udEZhY2UmIGZvbnRGYWNlKTsKKwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4sIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4gbV9mb250RmFjZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8
Rm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2xvY2FsbHlJbnN0YWxsZWRG
b250RmFjZXM7CisgICAgU3RhdHVzIG1fc3RhdHVzIHsgU3RhdHVzOjpMb2FkaW5nIH07CisgICAg
T3B0aW9uYWw8UHJvbWlzZT4gbV9wcm9taXNlOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2VTZXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5
MjczMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
aWRsCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEZvbnRGYWNlU2V0TG9hZFN0
YXR1cyB7CisgICAgImxvYWRpbmciLAorICAgICJsb2FkZWQiCit9OworCitbCisgICAgR2xvYmFs
Q29udGV4dD1ET01XaW5kb3csCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbnN0cnVjdG9y
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICBDb25zdHJ1Y3RvcihzZXF1ZW5j
ZTxGb250RmFjZT4gaW5pdGlhbEZhY2VzKSwKKyAgICBFdmVudFRhcmdldAorXSBpbnRlcmZhY2Ug
Rm9udEZhY2VTZXQgeworICAgIEZvbnRGYWNlU2V0IGFkZChGb250RmFjZSBmb250KTsKKyAgICBb
SW1wbGVtZW50ZWRBcz1yZW1vdmVdIGJvb2xlYW4gZGVsZXRlKEZvbnRGYWNlIGZvbnQpOworICAg
IHZvaWQgY2xlYXIoKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nOwor
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZG9uZTsKKyAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9ubG9hZGluZ2Vycm9yOworCisgICAgUHJvbWlzZSBsb2FkKERPTVN0cmlu
ZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCk7CisKKyAgICBib29sZWFuIGNoZWNrKERP
TVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCk7CisKKyAgICBbQ3VzdG9tXSBy
ZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSByZWFkeTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBGb250RmFjZVNldExvYWRTdGF0dXMgc3RhdHVzOworfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0NjkwMGVjLi44NWIxMGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8obG9hZGVuZCkgXAogICAgIG1hY3JvKGxvYWRpbmcpIFwKICAgICBtYWNy
byhsb2FkaW5nZG9uZSkgXAorICAgIG1hY3JvKGxvYWRpbmdlcnJvcikgXAogICAgIG1hY3JvKGxv
YWRzdGFydCkgXAogICAgIG1hY3JvKG1hcmspIFwKICAgICBtYWNybyhtZXNzYWdlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBhYjRmZWRiLi40MzBiOGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTksNyArOSw3
IEBAIERPTUFwcGxpY2F0aW9uQ2FjaGUKIERPTVdpbmRvdwogRXZlbnRTb3VyY2UKIEZpbGVSZWFk
ZXIKLUZvbnRMb2FkZXIgY29uZGl0aW9uYWw9Rk9OVF9MT0FEX0VWRU5UUworRm9udEZhY2VTZXQK
IElEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQk9wZW5EQlJlcXVl
c3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBjb25kaXRpb25hbD1J
TkRFWEVEX0RBVEFCQVNFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270455</attachid>
            <date>2016-02-01 17:14:22 -0800</date>
            <delta_ts>2016-02-02 01:07:42 -0800</delta_ts>
            <desc>Applied on top of attachment 270144</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>56438</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDQyZWQyOWY2YjVmN2MzZDcwMzU5ZTFmZWU1MTFkZGQ5NGM0Zjc1ZWQKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBNb24gRmViIDEg
MTI6MjM6MzQgMjAxNiAtMDgwMAoKICAgIEZvbnRGYWNlU2V0CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhNDAzMzU5Li4xMDkyYmI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM0MCw2ICsz
NDAsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9Db3VudGVyLmlk
bAogICAgIGNzcy9ET01XaW5kb3dDU1MuaWRsCiAgICAgY3NzL0ZvbnRGYWNlLmlkbAorICAgIGNz
cy9Gb250RmFjZVNldC5pZGwKICAgICBjc3MvRm9udExvYWRlci5pZGwKICAgICBjc3MvTWVkaWFM
aXN0LmlkbAogICAgIGNzcy9NZWRpYVF1ZXJ5TGlzdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDdjNGIzYzcuLjUzNzQzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjQyLDYgKzI0Miw3IEBAIE5PTl9TVkdfQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvY3NzL0NvdW50ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01XaW5kb3dD
U1MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAorICAgICQoV2ViQ29y
ZSkvY3NzL0ZvbnRGYWNlU2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRm9udExvYWRlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL01lZGlhTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL01lZGlhUXVlcnlMaXN0LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2QyZDY1ZS4uOGUyOGIwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTkw
Myw2ICs1OTAzLDExIEBACiAJCUMyQzczQkVGMUM1NUIwMUQwMERGNkI2QiAvKiBJbW1lZGlhdGVG
b250RmFjZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJDNzNCRUQxQzU1QjAxQzAwREY2QjZCIC8qIEltbWVkaWF0ZUZvbnRGYWNlU291cmNl
LmggKi87IH07CiAJCUMyQzczQkYyMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9u
dEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJDNzNCRjAxQzU1QzM1QzAwREY2QjZCIC8qIEluRG9jdW1lbnRTVkdGb250RmFjZVNv
dXJjZS5jcHAgKi87IH07CiAJCUMyQzczQkYzMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50
U1ZHRm9udEZhY2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyQzczQkYxMUM1NUMzNUMwMERGNkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9udEZh
Y2VTb3VyY2UuaCAqLzsgfTsKKwkJQzJEMTVBREMxQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZh
Y2VTZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJEMTVBREExQzVCMENFRTAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3Bw
ICovOyB9OworCQlDMkQxNUFFMjFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBRTAxQzVC
MEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJQzJEMTVBRTMxQzVCMEZC
MzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMkQxNUFFMTFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQu
aCAqLzsgfTsKKwkJQzJEMTVBRTQxQzVCMkEzMjAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBREUx
QzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovOyB9OworCQlDMkQxNUFFNTFD
NUIyQTNGMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJEMTVBREYxQzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9u
dEZhY2VTZXQuaCAqLzsgfTsKIAkJQzJERTZDM0QxQzUxRDkxNzAwRDc3NEQzIC8qIEpTRm9udEZh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREU2
QzNDMUM1MUQ4RkEwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmggKi87IH07CiAJCUMyREU2QzNFMUM1
MUQ5MUIwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREU2QzNCMUM1MUQ4RkEwMEQ3NzREMyAvKiBKU0ZvbnRG
YWNlLmNwcCAqLzsgfTsKIAkJQzJERTZDNDAxQzUxREIyMDAwRDc3NEQzIC8qIEZvbnRGYWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRFNkMzRjFD
NTFEQjBEMDBENzc0RDMgLyogRm9udEZhY2UuaCAqLzsgfTsKQEAgLTEzNzkzLDYgKzEzNzk4LDEy
IEBACiAJCUMyQzczQkVEMUM1NUIwMUMwMERGNkI2QiAvKiBJbW1lZGlhdGVGb250RmFjZVNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbW1lZGlhdGVGb250RmFjZVNv
dXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM3M0JGMDFDNTVDMzVDMDBE
RjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluRG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzczQkYxMUM1NUMzNUMwMERGNkI2QiAvKiBJ
bkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyRDE1QUQ5MUM1QjA5QkUwMDExQTMwMCAvKiBGb250RmFjZVNldC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2VTZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMkQxNUFEQTFDNUIwQ0VFMDAxMUEzMDAgLyogSlNGb250RmFjZVNldEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNlU2V0
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJEMTVBREUxQzVCMEUy
MzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyRDE1QURGMUM1QjBFMjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzJEMTVBRTAxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYWNlU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJEMTVBRTExQzVCMEZCMzAwMTFBMzAwIC8q
IEZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYWNl
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyREU2QzNBMUM1MUQ1OTAwMEQ3
NzREMyAvKiBGb250RmFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2UuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRFNkMzQjFDNTFEOEZBMDBENzc0RDMg
LyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0ZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJERTZDM0MxQzUx
RDhGQTAwRDc3NEQzIC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc0OTIs
NiArMTc1MDMsOCBAQAogCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3Vy
Y2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMkQx
NUFERTFDNUIwRTIzMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgKi8sCisJCQkJQzJEMTVB
REYxQzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuaCAqLywKIAkJCQlDMkRFNkMzQjFD
NTFEOEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5jcHAgKi8sCiAJCQkJQzJERTZDM0MxQzUxRDhG
QTAwRDc3NEQzIC8qIEpTRm9udEZhY2UuaCAqLywKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBG
NjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKQEAgLTIyMzky
LDYgKzIyNDA1LDcgQEAKIAkJCQlBMUM3RkFBMTEzM0E1RDM1MDBENjczMkQgLyogSlNYUGF0aFJl
c3VsdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFRkUxRTQwRENBNUYzMzAwNzM5MjE5IC8qIEpTWFNM
VFByb2Nlc3NvckN1c3RvbS5jcHAgKi8sCiAJCQkJQzJERTZDNDMxQzUxRTRBNTAwRDc3NEQzIC8q
IEpTRm9udEZhY2VDdXN0b20uY3BwICovLAorCQkJCUMyRDE1QURBMUM1QjBDRUUwMDExQTMwMCAv
KiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ3VzdG9tOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzNjg2LDYgKzIzNzAwLDkgQEAKIAkJCQlD
MjQ5QTg1MjFDNTc1MzNBMDAzN0ZBOEYgLyogRGVwcmVjYXRlZFJlbW90ZVNWR0ZvbnRGYWNlU291
cmNlLmNwcCAqLywKIAkJCQlDMjQ5QTg1MzFDNTc1MzNBMDAzN0ZBOEYgLyogRGVwcmVjYXRlZFJl
bW90ZVNWR0ZvbnRGYWNlU291cmNlLmggKi8sCiAJCQkJMUMxOTI3NTIxQzU4OUNCMjAwNTE1QzA2
IC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8sCisJCQkJQzJEMTVBRDkxQzVCMDlCRTAwMTFB
MzAwIC8qIEZvbnRGYWNlU2V0LmlkbCAqLywKKwkJCQlDMkQxNUFFMDFDNUIwRkIzMDAxMUEzMDAg
LyogRm9udEZhY2VTZXQuY3BwICovLAorCQkJCUMyRDE1QUUxMUM1QjBGQjMwMDExQTMwMCAvKiBG
b250RmFjZVNldC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjYzNzUsNiArMjYzOTIsNyBAQAogCQkJCTVDNDMwNEI2MTkxQUVGNDYw
MDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3
Mjg2OTg0MTRGRDlBREEwMEY0ODREQyAvKiBKU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMEYwMTUwRTBBMTg5NTAwRkQwNEUzIC8qIEpTRmlsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzJEMTVBRTMxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNl
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNG
aWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5ODc4NUYxMTIyRTFFODcwMDNBQUJEQSAv
KiBKU0ZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDBGMDE3MEUwQTE4OTUw
MEZEMDRFMyAvKiBKU0ZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjY2LDYgKzI3Njg0
LDcgQEAKIAkJCQk5M0YxOTk0RjA4MjQ1RTU5MDAxRTlBQkMgLyogU2V0dGluZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0Js
dXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRDE1QUU1MUM1QjJBM0YwMDExQTMwMCAvKiBKU0Zv
bnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUg
LyogU2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVC
NzcwIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTRGMTc1RDNGM0Uw
MEMyMUVDOCAvKiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDIwMCw2ICszMDIxOSw3IEBA
CiAJCQkJRkQyM0ExMjUxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDE4MENENjgyNjkwMEZBREE3NSAv
KiBKU01lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThEQTMxNjAxNDY0MTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkQxNUFF
NDFDNUIyQTMyMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAv
KiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTMzNCw2ICsz
MTM1NCw3IEBACiAJCQkJODEwMkM1ODgxMzI1QkIxMTAwRERFNjdBIC8qIFN0cmluZ0NhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMzU0MEYyMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJp
bmdUcnVuY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI2QTIwRTgxREM0RjAwQjI1
OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJEMTVB
RTIxQzVCMEZCMzAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNUVCNjdEMEU4MUQ0MjAwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODM4NkE5NzAxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VGNDQ3QTBFNjc0N0QwMDAxQzEyODcgLyogU3R5bGVDYWNoZWRJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNjc5LDYgKzMxNzAwLDcgQEAKIAkJCQkwNzhF
MDkxMjE3RDE0Q0VFMDA0MjBBQTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwNzI5N0ZBNzFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTEzMTdEMTRDRUUwMDQyMEFBMSAv
KiBVc2VyTWVkaWFSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyRDE1QURDMUM1QjBD
RUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAw
N0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZjMyZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9t
LmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTRm9udEZhY2VTZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0M6
OkpTVmFsdWUgSlNGb250RmFjZVNldDo6cmVhZHkoSlNDOjpFeGVjU3RhdGUmKSBjb25zdAorewor
ICAgIGF1dG8mIHByb21pc2UgPSB3cmFwcGVkKCkucHJvbWlzZSgpOworICAgIEFTU0VSVChwcm9t
aXNlKTsKKyAgICByZXR1cm4gcHJvbWlzZS52YWx1ZSgpLmpzT2JqZWN0KCk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggZDdkMmZhZi4uZTM0NzdlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTY4LDYgKzY4LDcgQEAg
c3RhdGljIHVuc2lnbmVkIGZvbnRTZWxlY3RvcklkOwogCiBDU1NGb250U2VsZWN0b3I6OkNTU0Zv
bnRTZWxlY3RvcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KCZkb2N1bWVu
dCkKKyAgICAsIG1fZm9udEZhY2VTZXQoRm9udEZhY2VTZXQ6OmNyZWF0ZShkb2N1bWVudCwgVmVj
dG9yPFJlZlB0cjxGb250RmFjZT4+KCkpKQogICAgICwgbV9iZWdpbkxvYWRpbmdUaW1lcigqdGhp
cywgJkNTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2FkVGltZXJGaXJlZCkKICAgICAsIG1fdW5pcXVl
SWQoKytmb250U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigwKQpAQCAtODYsMTggKzg3LDEy
IEBAIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiAgICAgRm9udENhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmVDbGllbnQodGhpcyk7CiB9CiAKLWJvb2wgQ1NTRm9udFNlbGVjdG9y
Ojppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZVRyYWl0c01hc2soY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3N0YXRpYyBGb250VHJhaXRzTWFzayBjb21wdXRlVHJh
aXRzTWFzayhjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIHVuc2lnbmVkIHRy
YWl0c01hc2sgPSAwOwogCiAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFN0eWxlID0gc3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpIHsKLSAgICAgICAg
aWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkpCi0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFN0
eWxlKSk7CiAKICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZv
bnRTdHlsZSkuZ2V0VmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CkBA
IC0xMTQsOCArMTA5LDcgQEAgc3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjb21wdXRl
VHJhaXRzTWFzayhjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogICAgICAgICB0cmFpdHNN
YXNrIHw9IEZvbnRTdHlsZU5vcm1hbE1hc2s7CiAKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBm
b250V2VpZ2h0ID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWln
aHQpKSB7Ci0gICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KCpmb250V2VpZ2h0KSk7CiAKICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQpLmdldFZhbHVlSUQoKSkgewogICAgICAgICBjYXNl
IENTU1ZhbHVlQm9sZDoKQEAgLTIxNywyNCArMjExLDYgQEAgU3RyaW5nIENTU0ZvbnRTZWxlY3Rv
cjo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVl
KQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWls
eShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
bG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcykKLXsKLSAgICBBU1NFUlQoIWxvY2FsbHlJbnN0YWxs
ZWRGb250RmFjZXMuY29udGFpbnMoZmFtaWx5TmFtZSkpOwotCi0gICAgVmVjdG9yPEZvbnRUcmFp
dHNNYXNrPiB0cmFpdHNNYXNrcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5G
YW1pbHkoZmFtaWx5TmFtZSk7Ci0gICAgaWYgKHRyYWl0c01hc2tzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPFJlZjxGb250RmFjZT4+IGZhY2VzID0geyB9OwotICAg
IGZvciAoYXV0byBtYXNrIDogdHJhaXRzTWFza3MpIHsKLSAgICAgICAgUmVmPEZvbnRGYWNlPiBm
YWNlID0gRm9udEZhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFzaywgdHJ1ZSk7Ci0gICAgICAgIGZh
Y2UtPmFkZFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPExvY2FsRm9udEZhY2VTb3VyY2U+KGZhY2Us
IGZhbWlseU5hbWUpKTsKLSAgICAgICAgQVNTRVJUKCFmYWNlLT5hbGxTb3VyY2VzSGF2ZUZhaWxl
ZCgpKTsKLSAgICAgICAgZmFjZXMuYXBwZW5kKFdURk1vdmUoZmFjZSkpOwotICAgIH0KLSAgICBs
b2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBXVEZNb3ZlKGZhY2VzKSk7
Ci19Ci0KIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFk
b3dUcmVlKQogewogICAgIGlmICghZG9jdW1lbnQoKSkKQEAgLTI2MywxMiArMjM5LDE4IEBAIHZv
aWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVz
JiBzdHlsZSwgYm9vbCBpc0luaXRpCiAKICAgICBDU1NWYWx1ZUxpc3QqIHJhbmdlTGlzdCA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odW5pY29kZVJhbmdlLmdldCgpKTsKIAotICAgIGF1dG8gY29t
cHV0ZWRUcmFpdHNNYXNrID0gY29tcHV0ZVRyYWl0c01hc2soc3R5bGUpOwotICAgIGlmICghY29t
cHV0ZWRUcmFpdHNNYXNrKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byB0cmFpdHNNYXNrID0g
Y29tcHV0ZWRUcmFpdHNNYXNrLnZhbHVlKCk7CisgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9u
dFN0eWxlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkp
IHsKKyAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFdl
aWdodCA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250V2VpZ2h0KSkg
eworICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUmVmPEZvbnRGYWNlPiBmb250RmFjZSA9IEZv
bnRGYWNlOjpjcmVhdGUoKmRvY3VtZW50KCksIHRyYWl0c01hc2spOworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgYWJsZSB0byBqdXN0IHBhc3MgdGhlIENTU1ZhbHVlcyBpbnRvIHRoZSBGb250
RmFjZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoaXMgY29kZS4KKyAgICBSZWY8Rm9udEZhY2U+
IGZvbnRGYWNlID0gRm9udEZhY2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY29tcHV0ZVRyYWl0c01h
c2soc3R5bGUpKTsKICAgICBhZGRTb3VyY2VzVG9Gb250RmFjZShmb250RmFjZS5nZXQoKSwgc3Jj
TGlzdCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7CiAgICAgaWYg
KGZvbnRGYWNlLT5hbGxTb3VyY2VzSGF2ZUZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0z
MzAsMTggKzMxMiwxMSBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNv
bnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGJvb2wgaXNJbml0aQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgZmFtaWx5TmFtZXMuYXBwZW5kKGZhbWlseU5hbWUpOwotICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBWZWN0b3I8UmVm
PEZvbnRGYWNlPj4oKSk7Ci0gICAgICAgIGF1dG8mIGZhbWlseUZvbnRGYWNlcyA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewot
ICAgICAgICAgICAgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseSgqZG9jdW1lbnQoKSwg
ZmFtaWx5TmFtZSwgbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzKTsKLSAgICAgICAgICAgIGZh
bWlseUZvbnRGYWNlcyA9IHsgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGZhbWlseUZvbnRGYWNl
cy5hcHBlbmQoZm9udEZhY2UuY29weVJlZigpKTsKICAgICAgICAgCiAgICAgICAgICsrbV92ZXJz
aW9uOwogICAgIH0KICAgICBmb250RmFjZS0+c2V0RmFtaWxpZXMoV1RGTW92ZShmYW1pbHlOYW1l
cykpOworICAgIG1fZm9udEZhY2VTZXQtPmFkZChmb250RmFjZS5wdHIoKSk7CiB9CiAKIHZvaWQg
Q1NTRm9udFNlbGVjdG9yOjpmb250RmFjZVdpbGxDaGFuZ2UoRm9udEZhY2UmKQpAQCAtMzY5LDE1
ICszNDQsOSBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxs
YmFja3MoKQogICAgICAgICBjbGllbnQtPmZvbnRzTmVlZFVwZGF0ZSgqdGhpcyk7CiB9CiAKLXZv
aWQgQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGVkKEZvbnRGYWNlJiBmb250RmFjZSkKK3ZvaWQg
Q1NTRm9udFNlbGVjdG9yOjpraWNrKEZvbnRGYWNlJiBmb250RmFjZSkKIHsKLSAgICBmb3IgKGNv
bnN0IFN0cmluZyYgZmFtaWx5IDogZm9udEZhY2UuZmFtaWxpZXMoKSkgewotICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9mb250cy5maW5kKGZhbWlseSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAh
PSBtX2ZvbnRzLmVuZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnRlZEZvbnQg
OiBpdGVyYXRvci0+dmFsdWUpCi0gICAgICAgICAgICAgICAgc2VnbWVudGVkRm9udC52YWx1ZS0+
Zm9udExvYWRlZChmb250RmFjZSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgbV9mb250RmFjZVNl
dC0+a2ljayhmb250RmFjZSk7CiAKICAgICBkaXNwYXRjaEludmFsaWRhdGlvbkNhbGxiYWNrcygp
OwogfQpAQCAtNDEzLDEzMyArMzgyLDIwIEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJl
c29sdmVHZW5lcmljRmFtaWx5KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRm9udERlCiAgICAg
cmV0dXJuIGZhbWlseU5hbWU7CiB9CiAKLWNsYXNzIEZvbnRGYWNlQ29tcGFyYXRvciB7Ci1wdWJs
aWM6Ci0gICAgRm9udEZhY2VDb21wYXJhdG9yKEZvbnRUcmFpdHNNYXNrIGRlc2lyZWRUcmFpdHNN
YXNrRm9yQ29tcGFyaXNvbikKLSAgICAgICAgOiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFy
aXNvbihkZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24pCi0gICAgewotICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFy
aXNvbiAmIEZvbnRXZWlnaHRNYXNrKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yKCkoY29u
c3QgRm9udEZhY2UmIGZpcnN0LCBjb25zdCBGb250RmFjZSYgc2Vjb25kKQotICAgIHsKLSAgICAg
ICAgRm9udFRyYWl0c01hc2sgZmlyc3RUcmFpdHNNYXNrID0gZmlyc3QudHJhaXRzTWFzaygpOwot
ICAgICAgICBGb250VHJhaXRzTWFzayBzZWNvbmRUcmFpdHNNYXNrID0gc2Vjb25kLnRyYWl0c01h
c2soKTsKLQotICAgICAgICBib29sIGZpcnN0SGFzRGVzaXJlZFN0eWxlID0gZmlyc3RUcmFpdHNN
YXNrICYgbV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250U3R5bGVNYXNrOwot
ICAgICAgICBib29sIHNlY29uZEhhc0Rlc2lyZWRTdHlsZSA9IHNlY29uZFRyYWl0c01hc2sgJiBt
X2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRTdHlsZU1hc2s7Ci0KLSAgICAg
ICAgaWYgKGZpcnN0SGFzRGVzaXJlZFN0eWxlICE9IHNlY29uZEhhc0Rlc2lyZWRTdHlsZSkKLSAg
ICAgICAgICAgIHJldHVybiBmaXJzdEhhc0Rlc2lyZWRTdHlsZTsKLQotICAgICAgICBpZiAoKG1f
ZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlSXRhbGljTWFzaykgJiYg
IWZpcnN0LmlzTG9jYWxGYWxsYmFjaygpICYmICFzZWNvbmQuaXNMb2NhbEZhbGxiYWNrKCkpIHsK
LSAgICAgICAgICAgIC8vIFByZWZlciBhIGZvbnQgdGhhdCBoYXMgaW5kaWNhdGVkIHRoYXQgaXQg
Y2FuIG9ubHkgc3VwcG9ydCBpdGFsaWNzIHRvIGEgZm9udCB0aGF0IGNsYWltcyB0byBzdXBwb3J0
Ci0gICAgICAgICAgICAvLyBhbGwgc3R5bGVzLiBUaGUgc3BlY2lhbGl6ZWQgZm9udCBpcyBtb3Jl
IGxpa2VseSB0byBiZSB0aGUgb25lIHRoZSBhdXRob3Igd2FudHMgdXNlZC4KLSAgICAgICAgICAg
IGJvb2wgZmlyc3RSZXF1aXJlc0l0YWxpY3MgPSAoZmlyc3RUcmFpdHNNYXNrICYgRm9udFN0eWxl
SXRhbGljTWFzaykgJiYgIShmaXJzdFRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKTsK
LSAgICAgICAgICAgIGJvb2wgc2Vjb25kUmVxdWlyZXNJdGFsaWNzID0gKHNlY29uZFRyYWl0c01h
c2sgJiBGb250U3R5bGVJdGFsaWNNYXNrKSAmJiAhKHNlY29uZFRyYWl0c01hc2sgJiBGb250U3R5
bGVOb3JtYWxNYXNrKTsKLSAgICAgICAgICAgIGlmIChmaXJzdFJlcXVpcmVzSXRhbGljcyAhPSBz
ZWNvbmRSZXF1aXJlc0l0YWxpY3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0UmVxdWly
ZXNJdGFsaWNzOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNlY29uZFRyYWl0c01hc2sgJiBt
X2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoZmlyc3RUcmFpdHNNYXNrICYgbV9kZXNp
cmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250V2VpZ2h0TWFzaykKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvV0Qt
Y3NzMy1mb250cy0yMDExMTAwNC8jZm9udC1tYXRjaGluZy1hbGdvcml0aG0gc2F5cyA6Ci0gICAg
ICAgIC8vICAgLSBJZiB0aGUgZGVzaXJlZCB3ZWlnaHQgaXMgbGVzcyB0aGFuIDQwMCwgd2VpZ2h0
cyBiZWxvdyB0aGUgZGVzaXJlZCB3ZWlnaHQgYXJlIGNoZWNrZWQgaW4gZGVzY2VuZGluZyBvcmRl
ciBmb2xsb3dlZCBieSB3ZWlnaHRzIGFib3ZlIHRoZSBkZXNpcmVkIHdlaWdodCBpbiBhc2NlbmRp
bmcgb3JkZXIgdW50aWwgYSBtYXRjaCBpcyBmb3VuZC4KLSAgICAgICAgLy8gICAtIElmIHRoZSBk
ZXNpcmVkIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gNTAwLCB3ZWlnaHRzIGFib3ZlIHRoZSBkZXNp
cmVkIHdlaWdodCBhcmUgY2hlY2tlZCBpbiBhc2NlbmRpbmcgb3JkZXIgZm9sbG93ZWQgYnkgd2Vp
Z2h0cyBiZWxvdyB0aGUgZGVzaXJlZCB3ZWlnaHQgaW4gZGVzY2VuZGluZyBvcmRlciB1bnRpbCBh
IG1hdGNoIGlzIGZvdW5kLgotICAgICAgICAvLyAgIC0gSWYgdGhlIGRlc2lyZWQgd2VpZ2h0IGlz
IDQwMCwgNTAwIGlzIGNoZWNrZWQgZmlyc3QgYW5kIHRoZW4gdGhlIHJ1bGUgZm9yIGRlc2lyZWQg
d2VpZ2h0cyBsZXNzIHRoYW4gNDAwIGlzIHVzZWQuCi0gICAgICAgIC8vICAgLSBJZiB0aGUgZGVz
aXJlZCB3ZWlnaHQgaXMgNTAwLCA0MDAgaXMgY2hlY2tlZCBmaXJzdCBhbmQgdGhlbiB0aGUgcnVs
ZSBmb3IgZGVzaXJlZCB3ZWlnaHRzIGxlc3MgdGhhbiA0MDAgaXMgdXNlZC4KLQotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgZmFsbGJhY2tSdWxlU2V0cyA9IDk7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBydWxlc1BlclNldCA9IDg7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBG
b250VHJhaXRzTWFzayB3ZWlnaHRGYWxsYmFja1J1bGVTZXRzW2ZhbGxiYWNrUnVsZVNldHNdW3J1
bGVzUGVyU2V0XSA9IHsKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWln
aHQzMDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWln
aHQ2MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWln
aHQ5MDBNYXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0
MzAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0
NjAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0
OTAwTWFzayB9LAotICAgICAgICAgICAgeyBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEw
ME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDYw
ME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkw
ME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQzMDBN
YXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2ssIEZvbnRXZWlnaHQ2MDBN
YXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBN
YXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFz
aywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NjAwTWFz
aywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFz
ayB9LAotICAgICAgICAgICAgeyBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ss
IEZvbnRXZWlnaHQ5MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ss
IEZvbnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sg
fSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNrLCBG
b250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBG
b250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0s
Ci0gICAgICAgICAgICB7IEZvbnRXZWlnaHQ5MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9u
dFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9u
dFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9LAot
ICAgICAgICAgICAgeyBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRX
ZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRX
ZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sgfQotICAg
ICAgICB9OwotCi0gICAgICAgIHVuc2lnbmVkIHJ1bGVTZXRJbmRleCA9IDA7Ci0gICAgICAgIGZv
ciAoOyAhKG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgKDEgPDwgKEZvbnRXZWln
aHQxMDBCaXQgKyBydWxlU2V0SW5kZXgpKSk7IHJ1bGVTZXRJbmRleCsrKSB7IH0KLQotICAgICAg
ICBjb25zdCBGb250VHJhaXRzTWFzayogd2VpZ2h0RmFsbGJhY2tSdWxlID0gd2VpZ2h0RmFsbGJh
Y2tSdWxlU2V0c1tydWxlU2V0SW5kZXhdOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcnVsZXNQZXJTZXQ7ICsraSkgewotICAgICAgICAgICAgaWYgKHNlY29uZFRyYWl0c01hc2sg
JiB3ZWlnaHRGYWxsYmFja1J1bGVbaV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgaWYgKGZpcnN0VHJhaXRzTWFzayAmIHdlaWdodEZhbGxiYWNrUnVsZVtpXSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRm9udFRyYWl0c01hc2sgbV9kZXNpcmVk
VHJhaXRzTWFza0ZvckNvbXBhcmlzb247Ci19OwotCiBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rv
cjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIC8vIEZJWE1FOiBU
aGUgc3BlYyAoYW5kIEZpcmVmb3gpIHNheXMgdXNlciBzcGVjaWZpZWQgZ2VuZXJpYyBmYW1pbGll
cyAoc2Fucy1zZXJpZiBldGMuKSBzaG91bGQgYmUgcmVzb2x2ZWQgYmVmb3JlIHRoZSBAZm9udC1m
YWNlIGxvb2t1cCB0b28uCiAgICAgYm9vbCByZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0ID0gZmFt
aWx5TmFtZSA9PSBzdGFuZGFyZEZhbWlseTsKIAogICAgIEF0b21pY1N0cmluZyBmYW1pbHlGb3JM
b29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0ID8gcmVzb2x2ZUdlbmVyaWNGYW1pbHko
bV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKSA6IGZhbWlseU5hbWU7Ci0g
ICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGZhY2UgPSBnZXRGb250RmFjZShmb250RGVzY3JpcHRp
b24sIGZhbWlseUZvckxvb2t1cCk7CisgICAgYXV0byBmYWNlID0gbV9mb250RmFjZVNldC0+Z2V0
Rm9udEZhY2UoZmFtaWx5Rm9yTG9va3VwLCBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpKTsK
ICAgICBpZiAoIWZhY2UpIHsKICAgICAgICAgaWYgKCFyZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0
KQogICAgICAgICAgICAgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHkobV9k
b2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKICAgICAgICAgcmV0dXJuIEZv
bnRSYW5nZXMoRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlw
dGlvbiwgZmFtaWx5Rm9yTG9va3VwKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGZhY2UtPmZvbnRS
YW5nZXMoZm9udERlc2NyaXB0aW9uKTsKLX0KLQotQ1NTU2VnbWVudGVkRm9udEZhY2UqIENTU0Zv
bnRTZWxlY3Rvcjo6Z2V0Rm9udEZhY2UoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQotewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2ZvbnRGYWNlcy5maW5kKGZhbWlseSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fZm9udEZh
Y2VzLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiBmYW1pbHlGb250
RmFjZXMgPSBpdGVyYXRvci0+dmFsdWU7Ci0KLSAgICBhdXRvJiBzZWdtZW50ZWRGb250RmFjZUNh
Y2hlID0gbV9mb250cy5hZGQoZmFtaWx5LCBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9w
dHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+PigpKS5pdGVyYXRvci0+dmFsdWU7Ci0KLSAgICBGb250
VHJhaXRzTWFzayB0cmFpdHNNYXNrID0gZm9udERlc2NyaXB0aW9uLnRyYWl0c01hc2soKTsKLQot
ICAgIGF1dG8gYWRkUmVzdWx0ID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS5hZGQodHJhaXRzTWFz
aywgc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWdtZW50ZWRGb250RmFjZT4oKnRoaXMpKTsKLSAgICBD
U1NTZWdtZW50ZWRGb250RmFjZSYgZmFjZSA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwot
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiAmZmFjZTsKLQot
ICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZvbnRGYWNlPiwgMzI+IGNhbmRpZGF0
ZUZvbnRGYWNlczsKLSAgICBmb3IgKGludCBpID0gZmFtaWx5Rm9udEZhY2VzLnNpemUoKSAtIDE7
IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIEZvbnRGYWNlJiBjYW5kaWRhdGUgPSBmYW1pbHlGb250
RmFjZXNbaV07Ci0gICAgICAgIHVuc2lnbmVkIGNhbmRpZGF0ZVRyYWl0c01hc2sgPSBjYW5kaWRh
dGUudHJhaXRzTWFzaygpOwotICAgICAgICBpZiAoKHRyYWl0c01hc2sgJiBGb250U3R5bGVOb3Jt
YWxNYXNrKSAmJiAhKGNhbmRpZGF0ZVRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjYW5kaWRhdGVGb250RmFjZXMuYXBwZW5k
KGNhbmRpZGF0ZSk7Ci0gICAgfQotCi0gICAgYXV0byBsb2NhbEl0ZXJhdG9yID0gbV9sb2NhbGx5
SW5zdGFsbGVkRm9udEZhY2VzLmZpbmQoZmFtaWx5KTsKLSAgICBpZiAobG9jYWxJdGVyYXRvciAh
PSBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuZW5kKCkpIHsKLSAgICAgICAgZm9yIChhdXRv
JiBjYW5kaWRhdGUgOiBsb2NhbEl0ZXJhdG9yLT52YWx1ZSkgewotICAgICAgICAgICAgdW5zaWdu
ZWQgY2FuZGlkYXRlVHJhaXRzTWFzayA9IGNhbmRpZGF0ZS0+dHJhaXRzTWFzaygpOwotICAgICAg
ICAgICAgaWYgKCh0cmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykgJiYgIShjYW5kaWRh
dGVUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzaykpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBjYW5kaWRhdGVGb250RmFjZXMuYXBwZW5kKGNhbmRpZGF0ZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGQ6OnN0YWJsZV9zb3J0KGNhbmRpZGF0ZUZvbnRG
YWNlcy5iZWdpbigpLCBjYW5kaWRhdGVGb250RmFjZXMuZW5kKCksIEZvbnRGYWNlQ29tcGFyYXRv
cih0cmFpdHNNYXNrKSk7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRhdGVGb250
RmFjZXMpCi0gICAgICAgIGZhY2UuYXBwZW5kRm9udEZhY2UoY2FuZGlkYXRlLmdldCgpKTsKLQot
ICAgIHJldHVybiAmZmFjZTsKKyAgICByZXR1cm4gZmFjZS52YWx1ZSgpLmZvbnRSYW5nZXMoZm9u
dERlc2NyaXB0aW9uKTsKIH0KIAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmNsZWFyRG9jdW1lbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IGY4N2FiNTkuLmViOWNjMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJDU1NTZWdtZW50ZWRGb250RmFjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCiAj
aW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxt
ZW1vcnk+CkBAIC02MiwyMiArNjMsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRm9udFJhbmdl
cyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgc2l6ZV90IGZhbGxiYWNrRm9udENvdW50
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICBDU1NTZWdtZW50ZWRG
b250RmFjZSogZ2V0Rm9udEZhY2UoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpOwogCiAgICAgdm9pZCBjbGVhckRvY3VtZW50KCk7CiAKICAgICB2b2lk
IGFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmLCBib29sIGlzSW5pdGlhdGlu
Z0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCi0gICAgdm9pZCBmb250TG9hZGVkKEZv
bnRGYWNlJik7CisgICAgdm9pZCBraWNrKEZvbnRGYWNlJik7CiAgICAgdmlydHVhbCB2b2lkIGZv
bnRDYWNoZUludmFsaWRhdGVkKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKLQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcyhG
b250U2VsZWN0b3JDbGllbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckZvckludmFsaWRhdGlvbkNhbGxiYWNrcyhGb250U2VsZWN0b3JDbGllbnQmKSBvdmVycmlkZTsK
IAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0K
IAorICAgIEZvbnRGYWNlU2V0JiBmb250RmFjZVNldCgpIHsgcmV0dXJuIG1fZm9udEZhY2VTZXQu
Z2V0KCk7IH0KKwogICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCopOwog
CiAgICAgc3RhdGljIFN0cmluZyBmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYpOwpAQCAtOTQsOSArOTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5M
b2FkVGltZXJGaXJlZCgpOwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Ci0gICAgSGFzaE1h
cDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiBtX2ZvbnRGYWNlczsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGb250RmFjZT4+
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlczsK
LSAgICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPENT
U1NlZ21lbnRlZEZvbnRGYWNlPj4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9mb250czsK
KyAgICBSZWY8Rm9udEZhY2VTZXQ+IG1fZm9udEZhY2VTZXQ7CiAgICAgSGFzaFNldDxGb250U2Vs
ZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkRm9udD4+IG1fZm9udHNUb0JlZ2luTG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmluZGV4IDQ0ZWRjNzMuLmM3ZWFjNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApAQCAtMzYsOCArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1NlZ21lbnRlZEZvbnRGYWNlOjpDU1NT
ZWdtZW50ZWRGb250RmFjZShDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKLSAgICA6IG1f
Zm9udFNlbGVjdG9yKGZvbnRTZWxlY3RvcikKK0NTU1NlZ21lbnRlZEZvbnRGYWNlOjpDU1NTZWdt
ZW50ZWRGb250RmFjZSgpCiB7CiB9CiAKQEAgLTk2LDQgKzk1LDE5IEBAIEZvbnRSYW5nZXMgQ1NT
U2VnbWVudGVkRm9udEZhY2U6OmZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpCiAgICAgcmV0dXJuIGZvbnRSYW5nZXM7CiB9CiAKK3ZvaWQgQ1NTU2VnbWVudGVk
Rm9udEZhY2U6OmxvYWQoKQoreworICAgIGZvciAoYXV0byYgZmFjZSA6IG1fZm9udEZhY2VzKQor
ICAgICAgICBmYWNlLT5sb2FkKCk7Cit9CisKK2Jvb2wgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmFs
bEZvbnRGYWNlc0FyZUxvYWRlZCgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBmYWNlIDogbV9m
b250RmFjZXMpIHsKKyAgICAgICAgaWYgKGZhY2UtPnN0YXR1c0VudW0oKSAhPSBGb250RmFjZTo6
U3RhdHVzOjpMb2FkZWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vn
bWVudGVkRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFj
ZS5oCmluZGV4IGMwYWEyZjkuLjFlNzFlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5oCkBAIC00MSw5ICs0MSw3IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsK
IAogY2xhc3MgQ1NTU2VnbWVudGVkRm9udEZhY2UgewogcHVibGljOgotICAgIENTU1NlZ21lbnRl
ZEZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYpOwotCi0gICAgQ1NTRm9udFNlbGVjdG9yJiBmb250
U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRTZWxlY3RvcjsgfQorICAgIENTU1NlZ21l
bnRlZEZvbnRGYWNlKCk7CiAKICAgICB2b2lkIGZvbnRMb2FkZWQoRm9udEZhY2UmKTsKIApAQCAt
NTEsMTAgKzQ5LDE0IEBAIHB1YmxpYzoKIAogICAgIEZvbnRSYW5nZXMgZm9udFJhbmdlcyhjb25z
dCBGb250RGVzY3JpcHRpb24mKTsKIAorICAgIHZvaWQgbG9hZCgpOworICAgIGJvb2wgYWxsRm9u
dEZhY2VzQXJlTG9hZGVkKCkgY29uc3Q7CisKKyAgICBWZWN0b3I8UmVmPEZvbnRGYWNlPiwgMT4m
IGZhY2VzKCkgeyByZXR1cm4gbV9mb250RmFjZXM7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHBy
dW5lVGFibGUoKTsKIAotICAgIENTU0ZvbnRTZWxlY3RvciYgbV9mb250U2VsZWN0b3I7CiAgICAg
SGFzaE1hcDxGb250RGVzY3JpcHRpb25LZXksIEZvbnRSYW5nZXMsIEZvbnREZXNjcmlwdGlvbktl
eUhhc2gsIFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEZvbnREZXNjcmlwdGlvbktleT4+IG1f
ZGVzY3JpcHRpb25Ub1Jhbmdlc01hcDsKICAgICBWZWN0b3I8UmVmPEZvbnRGYWNlPiwgMT4gbV9m
b250RmFjZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggZDI2NjJjMC4uOTc3ZjM1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0yNDIsNiArMjQyLDcgQEAgdm9pZCBGb250
RmFjZTo6c2V0U3R5bGUoY29uc3QgU3RyaW5nJiBuZXdTdHlsZSkKICAgICAgICAgbmV3VHJhaXRz
TWFzayB8PSBGb250U3R5bGVJdGFsaWNNYXNrOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtX3RyYWl0c01hc2sgPSBzdGF0aWNfY2FzdDxGb250VHJhaXRzTWFzaz4obmV3VHJhaXRz
TWFzayk7CkBAIC0yODMsMTAgKzI4NCw3IEBAIHZvaWQgRm9udEZhY2U6OnNldFdlaWdodChjb25z
dCBTdHJpbmcmIHdlaWdodCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPENTU1ZhbHVl
PiBmb250V2VpZ2h0ID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250
V2VpZ2h0KTsKLSAgICBpZiAoIWZvbnRXZWlnaHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkKKyAgICBpZiAoIWZvbnRXZWln
aHQgfHwgIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGZvbnRTZWxlY3RvcigpLmZvbnRGYWNlV2lsbENoYW5nZSgqdGhpcyk7CkBAIC0z
MjMsNiArMzIxLDcgQEAgdm9pZCBGb250RmFjZTo6c2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYgd2Vp
Z2h0KQogICAgICAgICBuZXdUcmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQxMDBNYXNrOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3RyYWl0c01hc2sgPSBzdGF0aWNfY2FzdDxGb250
VHJhaXRzTWFzaz4obmV3VHJhaXRzTWFzayk7CkBAIC01MDcsNyArNTA2LDcgQEAgdm9pZCBGb250
RmFjZTo6bG9hZCgpCiAKIHZvaWQgRm9udEZhY2U6OmtpY2soRm9udEZhY2VTb3VyY2UmKQogewot
ICAgIGZvbnRTZWxlY3RvcigpLmZvbnRMb2FkZWQoKnRoaXMpOworICAgIGZvbnRTZWxlY3Rvcigp
LmtpY2soKnRoaXMpOwogCiAgICAgaWYgKG1fc3RhdHVzID09IFN0YXR1czo6TG9hZGluZykKICAg
ICAgICAgcHVtcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCBlMTA4MWVjLi4xNzgwM2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuaApAQCAtMTE2LDYgKzExNiwxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpOwogICAg
IFN0cmluZyBzdGF0dXMoKSBjb25zdDsKIAorICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAgICAg
ICAgVW5sb2FkZWQsCisgICAgICAgIExvYWRpbmcsCisgICAgICAgIExvYWRlZCwKKyAgICAgICAg
RXJyb3IKKyAgICB9OworICAgIFN0YXR1cyBzdGF0dXNFbnVtKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0dXM7IH0KKwogICAgIGJvb2wgYWxsU291cmNlc0hhdmVGYWlsZWQoKSBjb25zdDsKIAogICAg
IFJlZlB0cjxGb250PiBmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGlj
Qm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwpAQCAtMTQzLDEyICsxNTEsNiBAQCBwdWJsaWM6
CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBlbnVtIGNsYXNzIFN0YXR1cyB7Ci0gICAgICAgIFVu
bG9hZGVkLAotICAgICAgICBMb2FkaW5nLAotICAgICAgICBMb2FkZWQsCi0gICAgICAgIEVycm9y
Ci0gICAgfTsKIAogICAgIEZvbnRGYWNlKERvY3VtZW50JiwgRm9udFRyYWl0c01hc2sgdHJhaXRz
TWFzaywgYm9vbCBpc0xvY2FsRmFsbGJhY2spOwogICAgIEZvbnRGYWNlKERvY3VtZW50JiwgY29u
c3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaWRsCmluZGV4IDAwNzJjMzEuLjJjZTYyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmlkbApAQCAtMzEsNiArMzEsOCBAQAogfTsKIAogWworICAgIEdsb2JhbENvbnRleHQ9RE9N
V2luZG93LAorICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDdXN0b21Db25zdHJ1Y3RvcihET01T
dHJpbmcgZmFtaWx5LCBhbnkgc291cmNlLCBEaWN0aW9uYXJ5IGRlc2NyaXB0b3JzKQogXSBpbnRl
cmZhY2UgRm9udEZhY2UgewogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZmFtaWx5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZVNldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWY3OTU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNl
dC5jcHAKQEAgLTAsMCArMSwzODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRm9udEZhY2VTZXQuaCIKKworI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5o
IgorI2luY2x1ZGUgIkNTU1NlZ21lbnRlZEZvbnRGYWNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJET01Db3JlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udEZh
Y2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvcmVFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0ZvbnRG
YWNlLmgiCisjaW5jbHVkZSAiTG9jYWxGb250RmFjZVNvdXJjZS5oIgorI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGb250RmFjZVNl
dDo6Rm9udEZhY2VTZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0aWFsRmFjZXMpCisgICAg
OiBBY3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgZm9yIChh
dXRvJiBmYWNlIDogaW5pdGlhbEZhY2VzKQorICAgICAgICBhZGQoZmFjZS5nZXQoKSk7CisgICAg
c3VzcGVuZElmTmVlZGVkKCk7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OmNhblN1c3BlbmRGb3JE
b2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXR1cyA9PSBTdGF0
dXM6OkxvYWRpbmc7Cit9CisKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyTG9jYWxGb250RmFjZXNGb3JG
YW1pbHkoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUsIEhhc2hN
YXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIGxvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMpCit7CisgICAgQVNTRVJUKCFsb2NhbGx5SW5z
dGFsbGVkRm9udEZhY2VzLmNvbnRhaW5zKGZhbWlseU5hbWUpKTsKKworICAgIFZlY3RvcjxGb250
VHJhaXRzTWFzaz4gdHJhaXRzTWFza3MgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdldFRyYWl0
c0luRmFtaWx5KGZhbWlseU5hbWUpOworICAgIGlmICh0cmFpdHNNYXNrcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZWY8Rm9udEZhY2U+PiBmYWNlcyA9IHsgfTsK
KyAgICBmb3IgKGF1dG8gbWFzayA6IHRyYWl0c01hc2tzKSB7CisgICAgICAgIFJlZjxGb250RmFj
ZT4gZmFjZSA9IEZvbnRGYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1hc2ssIHRydWUpOworICAgICAg
ICBmYWNlLT5hZGRTb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxMb2NhbEZvbnRGYWNlU291cmNlPihm
YWNlLCBmYW1pbHlOYW1lKSk7CisgICAgICAgIEFTU0VSVCghZmFjZS0+YWxsU291cmNlc0hhdmVG
YWlsZWQoKSk7CisgICAgICAgIGZhY2VzLmFwcGVuZChXVEZNb3ZlKGZhY2UpKTsKKyAgICB9Cisg
ICAgbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgV1RGTW92ZShmYWNl
cykpOworfQorCitGb250RmFjZVNldCYgRm9udEZhY2VTZXQ6OmFkZChGb250RmFjZSogbmV3RmFj
ZSkKK3sKKyAgICBpZiAoIW5ld0ZhY2UpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGF1
dG8qIGV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNT
RVJUKGV4ZWN1dGlvbkNvbnRleHQgJiYgZXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsK
KyAgICBhdXRvJiBkb2N1bWVudCA9ICpkb3duY2FzdDxEb2N1bWVudD4oZXhlY3V0aW9uQ29udGV4
dCk7CisKKyAgICBmb3IgKGF1dG8mIGZhbWlseU5hbWUgOiBuZXdGYWNlLT5mYW1pbGllcygpKSB7
CisgICAgICAgIGlmIChmYW1pbHlOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUs
IFZlY3RvcjxSZWY8Rm9udEZhY2U+PigpKTsKKyAgICAgICAgYXV0byYgZmFtaWx5Rm9udEZhY2Vz
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgICAgICByZWdpc3RlckxvY2FsRm9udEZhY2VzRm9yRmFtaWx5KGRv
Y3VtZW50LCBmYW1pbHlOYW1lLCBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMpOworICAgICAg
ICAgICAgZmFtaWx5Rm9udEZhY2VzID0geyB9OworICAgICAgICB9CisKKyAgICAgICAgZmFtaWx5
Rm9udEZhY2VzLmFwcGVuZCgqbmV3RmFjZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30K
KworYm9vbCBGb250RmFjZVNldDo6cmVtb3ZlKEZvbnRGYWNlKiByZW1vdmVkRmFjZSkKK3sKKyAg
ICBpZiAoIXJlbW92ZWRGYWNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAoYXV0
byYgZmFtaWx5TmFtZSA6IHJlbW92ZWRGYWNlLT5mYW1pbGllcygpKSB7CisgICAgICAgIGF1dG8g
aXRlciA9IG1fZm9udEZhY2VzLmZpbmQoZmFtaWx5TmFtZSk7CisgICAgICAgIEFTU0VSVChpdGVy
ICE9IG1fZm9udEZhY2VzLmVuZCgpKTsKKyAgICAgICAgaXRlci0+dmFsdWUucmVtb3ZlQWxsTWF0
Y2hpbmcoWyZdKGNvbnN0IFJlZjxGb250RmFjZT4mIGl0ZW0pIHsKKyAgICAgICAgICAgIHJldHVy
biBpdGVtLnB0cigpID09IHJlbW92ZWRGYWNlOworICAgICAgICB9KTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OmNsZWFyKCkKK3sKKyAgICBtX2ZvbnRG
YWNlcy5jbGVhcigpOworICAgIG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5jbGVhcigpOwor
fQorCitjbGFzcyBGb250RmFjZUNvbXBhcmF0b3IgeworcHVibGljOgorICAgIEZvbnRGYWNlQ29t
cGFyYXRvcihGb250VHJhaXRzTWFzayBkZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24pCisg
ICAgICAgIDogbV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24oZGVzaXJlZFRyYWl0c01h
c2tGb3JDb21wYXJpc29uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04obV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250V2VpZ2h0TWFz
ayk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEZvbnRGYWNlJiBmaXJzdCwg
Y29uc3QgRm9udEZhY2UmIHNlY29uZCkKKyAgICB7CisgICAgICAgIEZvbnRUcmFpdHNNYXNrIGZp
cnN0VHJhaXRzTWFzayA9IGZpcnN0LnRyYWl0c01hc2soKTsKKyAgICAgICAgRm9udFRyYWl0c01h
c2sgc2Vjb25kVHJhaXRzTWFzayA9IHNlY29uZC50cmFpdHNNYXNrKCk7CisKKyAgICAgICAgYm9v
bCBmaXJzdEhhc0Rlc2lyZWRTdHlsZSA9IGZpcnN0VHJhaXRzTWFzayAmIG1fZGVzaXJlZFRyYWl0
c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlTWFzazsKKyAgICAgICAgYm9vbCBzZWNvbmRI
YXNEZXNpcmVkU3R5bGUgPSBzZWNvbmRUcmFpdHNNYXNrICYgbV9kZXNpcmVkVHJhaXRzTWFza0Zv
ckNvbXBhcmlzb24gJiBGb250U3R5bGVNYXNrOworCisgICAgICAgIGlmIChmaXJzdEhhc0Rlc2ly
ZWRTdHlsZSAhPSBzZWNvbmRIYXNEZXNpcmVkU3R5bGUpCisgICAgICAgICAgICByZXR1cm4gZmly
c3RIYXNEZXNpcmVkU3R5bGU7CisKKyAgICAgICAgaWYgKChtX2Rlc2lyZWRUcmFpdHNNYXNrRm9y
Q29tcGFyaXNvbiAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICFmaXJzdC5pc0xvY2FsRmFsbGJh
Y2soKSAmJiAhc2Vjb25kLmlzTG9jYWxGYWxsYmFjaygpKSB7CisgICAgICAgICAgICAvLyBQcmVm
ZXIgYSBmb250IHRoYXQgaGFzIGluZGljYXRlZCB0aGF0IGl0IGNhbiBvbmx5IHN1cHBvcnQgaXRh
bGljcyB0byBhIGZvbnQgdGhhdCBjbGFpbXMgdG8gc3VwcG9ydAorICAgICAgICAgICAgLy8gYWxs
IHN0eWxlcy4gVGhlIHNwZWNpYWxpemVkIGZvbnQgaXMgbW9yZSBsaWtlbHkgdG8gYmUgdGhlIG9u
ZSB0aGUgYXV0aG9yIHdhbnRzIHVzZWQuCisgICAgICAgICAgICBib29sIGZpcnN0UmVxdWlyZXNJ
dGFsaWNzID0gKGZpcnN0VHJhaXRzTWFzayAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICEoZmly
c3RUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzayk7CisgICAgICAgICAgICBib29sIHNl
Y29uZFJlcXVpcmVzSXRhbGljcyA9IChzZWNvbmRUcmFpdHNNYXNrICYgRm9udFN0eWxlSXRhbGlj
TWFzaykgJiYgIShzZWNvbmRUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzayk7CisgICAg
ICAgICAgICBpZiAoZmlyc3RSZXF1aXJlc0l0YWxpY3MgIT0gc2Vjb25kUmVxdWlyZXNJdGFsaWNz
KQorICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdFJlcXVpcmVzSXRhbGljczsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzZWNvbmRUcmFpdHNNYXNrICYgbV9kZXNpcmVkVHJhaXRzTWFza0Zv
ckNvbXBhcmlzb24gJiBGb250V2VpZ2h0TWFzaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKGZpcnN0VHJhaXRzTWFzayAmIG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21w
YXJpc29uICYgRm9udFdlaWdodE1hc2spCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
ICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWNzczMtZm9udHMtMjAxMTEwMDQv
I2ZvbnQtbWF0Y2hpbmctYWxnb3JpdGhtIHNheXMgOgorICAgICAgICAvLyAgIC0gSWYgdGhlIGRl
c2lyZWQgd2VpZ2h0IGlzIGxlc3MgdGhhbiA0MDAsIHdlaWdodHMgYmVsb3cgdGhlIGRlc2lyZWQg
d2VpZ2h0IGFyZSBjaGVja2VkIGluIGRlc2NlbmRpbmcgb3JkZXIgZm9sbG93ZWQgYnkgd2VpZ2h0
cyBhYm92ZSB0aGUgZGVzaXJlZCB3ZWlnaHQgaW4gYXNjZW5kaW5nIG9yZGVyIHVudGlsIGEgbWF0
Y2ggaXMgZm91bmQuCisgICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJlZCB3ZWlnaHQgaXMgZ3Jl
YXRlciB0aGFuIDUwMCwgd2VpZ2h0cyBhYm92ZSB0aGUgZGVzaXJlZCB3ZWlnaHQgYXJlIGNoZWNr
ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGZvbGxvd2VkIGJ5IHdlaWdodHMgYmVsb3cgdGhlIGRlc2ly
ZWQgd2VpZ2h0IGluIGRlc2NlbmRpbmcgb3JkZXIgdW50aWwgYSBtYXRjaCBpcyBmb3VuZC4KKyAg
ICAgICAgLy8gICAtIElmIHRoZSBkZXNpcmVkIHdlaWdodCBpcyA0MDAsIDUwMCBpcyBjaGVja2Vk
IGZpcnN0IGFuZCB0aGVuIHRoZSBydWxlIGZvciBkZXNpcmVkIHdlaWdodHMgbGVzcyB0aGFuIDQw
MCBpcyB1c2VkLgorICAgICAgICAvLyAgIC0gSWYgdGhlIGRlc2lyZWQgd2VpZ2h0IGlzIDUwMCwg
NDAwIGlzIGNoZWNrZWQgZmlyc3QgYW5kIHRoZW4gdGhlIHJ1bGUgZm9yIGRlc2lyZWQgd2VpZ2h0
cyBsZXNzIHRoYW4gNDAwIGlzIHVzZWQuCisKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGZhbGxiYWNrUnVsZVNldHMgPSA5OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcnVs
ZXNQZXJTZXQgPSA4OworICAgICAgICBzdGF0aWMgY29uc3QgRm9udFRyYWl0c01hc2sgd2VpZ2h0
RmFsbGJhY2tSdWxlU2V0c1tmYWxsYmFja1J1bGVTZXRzXVtydWxlc1BlclNldF0gPSB7CisgICAg
ICAgICAgICB7IEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdo
dDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdo
dDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzayB9LAorICAgICAg
ICAgICAgeyBGb250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQ0
MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ3
MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2sgfSwKKyAgICAgICAg
ICAgIHsgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NDAw
TWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NzAw
TWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNrIH0sCisgICAgICAgICAg
ICB7IEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1h
c2ssIEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDcwME1h
c2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzayB9LAorICAgICAgICAgICAg
eyBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNr
LCBGb250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNr
LCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2sgfSwKKyAgICAgICAgICAgIHsg
Rm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzaywg
Rm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywg
Rm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0sCisgICAgICAgICAgICB7IEZv
bnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZv
bnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZv
bnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9LAorICAgICAgICAgICAgeyBGb250
V2VpZ2h0OTAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNrLCBGb250
V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQzMDBNYXNrLCBGb250
V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdl
aWdodDgwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywgRm9udFdl
aWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywgRm9udFdl
aWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0KKyAgICAgICAgfTsKKworICAgICAgICB1
bnNpZ25lZCBydWxlU2V0SW5kZXggPSAwOworICAgICAgICBmb3IgKDsgIShtX2Rlc2lyZWRUcmFp
dHNNYXNrRm9yQ29tcGFyaXNvbiAmICgxIDw8IChGb250V2VpZ2h0MTAwQml0ICsgcnVsZVNldElu
ZGV4KSkpOyBydWxlU2V0SW5kZXgrKykgeyB9CisKKyAgICAgICAgY29uc3QgRm9udFRyYWl0c01h
c2sqIHdlaWdodEZhbGxiYWNrUnVsZSA9IHdlaWdodEZhbGxiYWNrUnVsZVNldHNbcnVsZVNldElu
ZGV4XTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzUGVyU2V0OyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChzZWNvbmRUcmFpdHNNYXNrICYgd2VpZ2h0RmFsbGJhY2tSdWxl
W2ldKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChmaXJz
dFRyYWl0c01hc2sgJiB3ZWlnaHRGYWxsYmFja1J1bGVbaV0pCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCitw
cml2YXRlOgorICAgIEZvbnRUcmFpdHNNYXNrIG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJp
c29uOworfTsKKworT3B0aW9uYWw8Q1NTU2VnbWVudGVkRm9udEZhY2U+IEZvbnRGYWNlU2V0Ojpn
ZXRGb250RmFjZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgRm9udFRyYWl0c01hc2sgdHJh
aXRzTWFzaykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9mb250RmFjZXMuZmluZChmYW1pbHkp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX2ZvbnRGYWNlcy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgYXV0byYgZmFtaWx5Rm9udEZhY2VzID0gaXRlcmF0b3ItPnZhbHVlOwor
CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGNhY2hlZC4KKyAgICBDU1NTZWdtZW50ZWRG
b250RmFjZSBmYWNlOworCisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Rm9udEZh
Y2U+LCAzMj4gY2FuZGlkYXRlRm9udEZhY2VzOworICAgIGZvciAoaW50IGkgPSBmYW1pbHlGb250
RmFjZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgRm9udEZhY2UmIGNhbmRp
ZGF0ZSA9IGZhbWlseUZvbnRGYWNlc1tpXTsKKyAgICAgICAgdW5zaWduZWQgY2FuZGlkYXRlVHJh
aXRzTWFzayA9IGNhbmRpZGF0ZS50cmFpdHNNYXNrKCk7CisgICAgICAgIGlmICgodHJhaXRzTWFz
ayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spICYmICEoY2FuZGlkYXRlVHJhaXRzTWFzayAmIEZvbnRT
dHlsZU5vcm1hbE1hc2spKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhbmRpZGF0
ZUZvbnRGYWNlcy5hcHBlbmQoY2FuZGlkYXRlKTsKKyAgICB9CisKKyAgICBhdXRvIGxvY2FsSXRl
cmF0b3IgPSBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuZmluZChmYW1pbHkpOworICAgIGlm
IChsb2NhbEl0ZXJhdG9yICE9IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5lbmQoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGxvY2FsSXRlcmF0b3ItPnZhbHVlKSB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjYW5kaWRhdGVUcmFpdHNNYXNrID0gY2FuZGlkYXRlLT50cmFp
dHNNYXNrKCk7CisgICAgICAgICAgICBpZiAoKHRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxN
YXNrKSAmJiAhKGNhbmRpZGF0ZVRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhbmRpZGF0ZUZvbnRGYWNlcy5h
cHBlbmQoY2FuZGlkYXRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6c3RhYmxlX3Nv
cnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZvbnRGYWNlcy5lbmQoKSwg
Rm9udEZhY2VDb21wYXJhdG9yKHRyYWl0c01hc2spKTsKKyAgICBmb3IgKGF1dG8mIGNhbmRpZGF0
ZSA6IGNhbmRpZGF0ZUZvbnRGYWNlcykKKyAgICAgICAgZmFjZS5hcHBlbmRGb250RmFjZShjYW5k
aWRhdGUuZ2V0KCkpOworCisgICAgcmV0dXJuIFdURk1vdmUoZmFjZSk7Cit9CisKK3N0YXRpYyB1
bnNpZ25lZCBzdHlsZVRyYWl0c01hc2tGcm9tU3R5bGVQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydGll
cyYgc3R5bGVQcm9wZXJ0aWVzKQoreworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZm9udFN0eWxlID0g
c3R5bGVQcm9wZXJ0aWVzLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUp
OworICAgIGlmICghZm9udFN0eWxlIHx8ICFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHls
ZSkpCisgICAgICAgIHJldHVybiBGb250U3R5bGVOb3JtYWxNYXNrOworCisgICAgc3dpdGNoIChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkuZ2V0VmFsdWVJRCgpKSB7Cisg
ICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICAgICAgcmV0dXJuIEZvbnRTdHlsZU5vcm1hbE1h
c2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6CisgICAgY2FzZSBD
U1NWYWx1ZU9ibGlxdWU6CisgICAgICAgIHJldHVybiBGb250U3R5bGVJdGFsaWNNYXNrOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIEZvbnRTdHlsZU5vcm1hbE1hc2s7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBGb250U3R5bGVOb3JtYWxNYXNrOworfQorCitzdGF0
aWMgdW5zaWduZWQgd2VpZ2h0VHJhaXRzTWFza0Zyb21TdHlsZVByb3BlcnRpZXMoU3R5bGVQcm9w
ZXJ0aWVzJiBzdHlsZVByb3BlcnRpZXMpCit7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBmb250V2Vp
Z2h0ID0gc3R5bGVQcm9wZXJ0aWVzLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250
V2VpZ2h0KTsKKyAgICBpZiAoIWZvbnRXZWlnaHQgfHwgIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigq
Zm9udFdlaWdodCkpCisgICAgICAgIHJldHVybiBGb250V2VpZ2h0NDAwTWFzazsKKworICAgIHN3
aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KS5nZXRWYWx1ZUlE
KCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlQm9sZDoKKyAgICBjYXNlIENTU1ZhbHVlNzAwOgorICAg
ICAgICByZXR1cm4gRm9udFdlaWdodDcwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoK
KyAgICBjYXNlIENTU1ZhbHVlNDAwOgorICAgICAgICByZXR1cm4gRm9udFdlaWdodDQwME1hc2s7
CisgICAgY2FzZSBDU1NWYWx1ZTkwMDoKKyAgICAgICAgcmV0dXJuIEZvbnRXZWlnaHQ5MDBNYXNr
OworICAgIGNhc2UgQ1NTVmFsdWU4MDA6CisgICAgICAgIHJldHVybiBGb250V2VpZ2h0ODAwTWFz
azsKKyAgICBjYXNlIENTU1ZhbHVlNjAwOgorICAgICAgICByZXR1cm4gRm9udFdlaWdodDYwME1h
c2s7CisgICAgY2FzZSBDU1NWYWx1ZTUwMDoKKyAgICAgICAgcmV0dXJuIEZvbnRXZWlnaHQ1MDBN
YXNrOworICAgIGNhc2UgQ1NTVmFsdWUzMDA6CisgICAgICAgIHJldHVybiBGb250V2VpZ2h0MzAw
TWFzazsKKyAgICBjYXNlIENTU1ZhbHVlMjAwOgorICAgICAgICByZXR1cm4gRm9udFdlaWdodDIw
ME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTEwMDoKKyAgICAgICAgcmV0dXJuIEZvbnRXZWlnaHQx
MDBNYXNrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gRm9udFdlaWdodDQwME1hc2s7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBGb250V2VpZ2h0NDAwTWFzazsKK30KKworc3RhdGljIGlubGlu
ZSBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrRnJvbVN0eWxlUHJvcGVydGllcyhTdHlsZVByb3Bl
cnRpZXMmIHN0eWxlUHJvcGVydGllcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFRy
YWl0c01hc2s+KHN0eWxlVHJhaXRzTWFza0Zyb21TdHlsZVByb3BlcnRpZXMoc3R5bGVQcm9wZXJ0
aWVzKSB8IHdlaWdodFRyYWl0c01hc2tGcm9tU3R5bGVQcm9wZXJ0aWVzKHN0eWxlUHJvcGVydGll
cykpOworfQorCit2b2lkIEZvbnRGYWNlU2V0OjpzZWdtZW50ZWRGb250RmFjZXMoY29uc3QgU3Ry
aW5nJiBmb250LCBjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ1NTU2VnbWVudGVk
Rm9udEZhY2UmKT4gY2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IFdlIGlnbm9yZSB0aGUgdGV4
dCBzdHJpbmcuCisKKyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKHN0eWxlLnB0cigpLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnQsIHRydWUsIENTU1N0cmljdE1v
ZGUsIG51bGxwdHIpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrID0gdHJhaXRzTWFza0Zyb21T
dHlsZVByb3BlcnRpZXMoc3R5bGUuZ2V0KCkpOworCisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSk7Cisg
ICAgaWYgKCF2YWx1ZSB8fCAhaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZS5nZXQoKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIENTU1ZhbHVlTGlzdCYgZmFtaWx5TGlzdCA9IGRvd25jYXN0PENTU1Zh
bHVlTGlzdD4oKnZhbHVlKTsKKyAgICBpZiAoIWZhbWlseUxpc3QubGVuZ3RoKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoYXV0byYgaXRlbSA6IGZhbWlseUxpc3QpIHsKKyAgICAgICAg
U3RyaW5nIGZhbWlseU5hbWUgPSBDU1NGb250U2VsZWN0b3I6OmZhbWlseU5hbWVGcm9tUHJpbWl0
aXZlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKSk7CisgICAgICAgIGlm
IChmYW1pbHlOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoYXV0byBzZWdtZW50ZWRGb250RmFjZSA9IGdldEZvbnRGYWNlKGZhbWlseU5hbWUsIHRyYWl0
c01hc2spKQorICAgICAgICAgICAgY2FsbGJhY2soc2VnbWVudGVkRm9udEZhY2UudmFsdWUoKSk7
CisgICAgfQorfQorCit2b2lkIEZvbnRGYWNlU2V0Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQoreworICAgIFZl
Y3RvcjxSZWZQdHI8Rm9udEZhY2U+PiBmYWNlczsKKyAgICBzZWdtZW50ZWRGb250RmFjZXMoZm9u
dCwgdGV4dCwgWyZdKENTU1NlZ21lbnRlZEZvbnRGYWNlJiBzZWdtZW50ZWRGb250RmFjZSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGZhY2UgOiBzZWdtZW50ZWRGb250RmFjZS5mYWNlcygpKQorICAg
ICAgICAgICAgZmFjZXMuYXBwZW5kKGZhY2UucHRyKCkpOworICAgICAgICBzZWdtZW50ZWRGb250
RmFjZS5sb2FkKCk7CisgICAgfSk7CisgICAgYXV0byBsb2FkaW5nSW5mbyA9IExvYWRpbmdJbmZv
OjpjcmVhdGUocHJvbWlzZSwgV1RGTW92ZShmYWNlcykpOworICAgIGZvciAoYXV0byYgZmFjZSA6
IGxvYWRpbmdJbmZvLT5yZXN1bHQpIHsKKyAgICAgICAgYXV0byYgdmVjdG9yID0gbV9sb2FkaW5n
SW5mby5hZGQoZmFjZS5nZXQoKSwgVmVjdG9yPFJlZlB0cjxMb2FkaW5nSW5mbz4+KCkpLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgdmVjdG9yLmFwcGVuZChsb2FkaW5nSW5mby5jb3B5UmVmKCkp
OworICAgIH0KK30KKworYm9vbCBGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmb250
LCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgYm9vbCBsb2FkZWQgPSB0cnVlOworICAgIHNl
Z21lbnRlZEZvbnRGYWNlcyhmb250LCB0ZXh0LCBbJl0oY29uc3QgQ1NTU2VnbWVudGVkRm9udEZh
Y2UmIHNlZ21lbnRlZEZvbnRGYWNlKSB7CisgICAgICAgIGxvYWRlZCAmPSBzZWdtZW50ZWRGb250
RmFjZS5hbGxGb250RmFjZXNBcmVMb2FkZWQoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gbG9hZGVk
OworfQorCitTdHJpbmcgRm9udEZhY2VTZXQ6OnN0YXR1cygpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtX3N0YXR1cykgeworICAgIGNhc2UgU3RhdHVzOjpMb2FkaW5nOgorICAgICAgICByZXR1cm4g
U3RyaW5nKCJsb2FkaW5nIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2Fz
ZSBTdGF0dXM6OkxvYWRlZDoKKyAgICAgICAgcmV0dXJuIFN0cmluZygibG9hZGVkIiwgU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBTdHJpbmcoImxvYWRpbmciLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKK30KKwordm9pZCBGb250RmFjZVNldDo6a2ljayhGb250RmFjZSYgZmFjZSkKK3sKKyAg
ICBhdXRvIGl0ZXIgPSBtX2xvYWRpbmdJbmZvLmZpbmQoJmZhY2UpOworCisgICAgQVNTRVJUKGZh
Y2Uuc3RhdHVzRW51bSgpICE9IEZvbnRGYWNlOjpTdGF0dXM6OlVubG9hZGVkKTsKKworICAgIGlm
IChpdGVyID09IG1fbG9hZGluZ0luZm8uZW5kKCkgfHwgZmFjZS5zdGF0dXNFbnVtKCkgPT0gRm9u
dEZhY2U6OlN0YXR1czo6TG9hZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgaW5m
b3MgPSBpdGVyLT52YWx1ZTsKKworICAgIHN3aXRjaCAoZmFjZS5zdGF0dXNFbnVtKCkpIHsKKyAg
ICBjYXNlIEZvbnRGYWNlOjpTdGF0dXM6OkxvYWRlZDoKKyAgICAgICAgZm9yIChhdXRvJiBpbmZv
IDogaW5mb3MpIHsKKyAgICAgICAgICAgIGlmICghaW5mby0+aGFzT25lUmVmKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpbmZvLT5wcm9taXNlLnJlc29sdmUoaW5m
by0+cmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRGYWNl
OjpTdGF0dXM6OkVycm9yOgorICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBpbmZvcykKKyAgICAg
ICAgICAgIGluZm8tPnByb21pc2UucmVqZWN0PERPTUNvcmVFeGNlcHRpb24mPihET01Db3JlRXhj
ZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKE5FVFdPUktfRVJSKSkuZ2V0
KCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisgICAgbV9sb2FkaW5nSW5mby5yZW1vdmUoaXRlcik7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWQxNDg1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5oCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGb250RmFjZVNl
dF9oCisjZGVmaW5lIEZvbnRGYWNlU2V0X2gKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRm9udEZhY2UuaCIKKyNpbmNs
dWRlICJKU0RPTVByb21pc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDU1NTZWdtZW50
ZWRGb250RmFjZTsKK2NsYXNzIERlZmVycmVkV3JhcHBlcjsKK2NsYXNzIERPTUNvcmVFeGNlcHRp
b247CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBGb250RmFjZVNldCBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIHR5
cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNvcmVFeGNlcHRpb24mPiBQcm9taXNl
OworCisgICAgc3RhdGljIFJlZjxGb250RmFjZVNldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZh
Y2U+PiYgaW5pdGlhbEZhY2VzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Rm9udEZhY2VTZXQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW5pdGlhbEZhY2VzKSk7CisgICAg
fQorCisgICAgRm9udEZhY2VTZXQmIGFkZChGb250RmFjZSopOworICAgIGJvb2wgcmVtb3ZlKEZv
bnRGYWNlKik7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmlu
ZyYgZm9udCwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBsb2FkKGZvbnQsIFN0cmluZygi
ICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsgfQor
ICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVm
ZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSk7CisKKyAgICBib29sIGNoZWNrKGNvbnN0IFN0cmluZyYg
Zm9udCwgY29uc3QgU3RyaW5nJiA9IFN0cmluZygiICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKworICAgIFN0cmluZyBzdGF0dXMoKSBjb25zdDsKKworICAgIGNvbnN0IE9wdGlv
bmFsPFByb21pc2U+JiBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlOyB9CisKKyAg
ICB1c2luZyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0Pjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8Rm9udEZhY2VTZXQ+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ1NT
Rm9udFNlbGVjdG9yOworCisgICAgZW51bSBjbGFzcyBTdGF0dXMgeworICAgICAgICBMb2FkaW5n
LAorICAgICAgICBMb2FkZWQKKyAgICB9OworCisgICAgc3RydWN0IExvYWRpbmdJbmZvIDogcHVi
bGljIFJlZkNvdW50ZWQ8TG9hZGluZ0luZm8+IHsKKyAgICAgICAgc3RhdGljIFJlZjxMb2FkaW5n
SW5mbz4gY3JlYXRlKERlZmVycmVkV3JhcHBlciBwcm9taXNlLCBWZWN0b3I8UmVmUHRyPEZvbnRG
YWNlPj4mJiByZXN1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IExvYWRpbmdJbmZvKHByb21pc2UsIFdURk1vdmUocmVzdWx0KSkpOworICAgICAgICB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBMb2FkaW5nSW5mbyhEZWZlcnJlZFdyYXBwZXIgcHJvbWlz
ZSwgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiYgcmVzdWx0KQorICAgICAgICAgICAgOiBwcm9t
aXNlKFdURk1vdmUocHJvbWlzZSkpCisgICAgICAgICAgICAsIHJlc3VsdChXVEZNb3ZlKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgcHVibGljOgorICAgICAgICBEZWZlcnJl
ZFdyYXBwZXIgcHJvbWlzZTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+IHJlc3Vs
dDsKKyAgICB9OworCisgICAgRm9udEZhY2VTZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIkZvbnRGYWNlU2V0IjsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNw
ZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBFdmVu
dFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGb250RmFjZVNldEV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICBPcHRpb25hbDxDU1NTZWdtZW50
ZWRGb250RmFjZT4gZ2V0Rm9udEZhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIEZvbnRU
cmFpdHNNYXNrKTsKKyAgICB2b2lkIHNlZ21lbnRlZEZvbnRGYWNlcyhjb25zdCBTdHJpbmcmIGZv
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgc3RkOjpmdW5jdGlvbjx2b2lkKENTU1NlZ21lbnRlZEZv
bnRGYWNlJik+KTsKKworICAgIHZvaWQga2ljayhGb250RmFjZSYgZm9udEZhY2UpOworCisgICAg
SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Rm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiBtX2ZvbnRGYWNlczsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGb250
RmFjZT4+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbG9jYWxseUluc3RhbGxlZEZvbnRG
YWNlczsKKyAgICBIYXNoTWFwPFJlZlB0cjxGb250RmFjZT4sIFZlY3RvcjxSZWZQdHI8TG9hZGlu
Z0luZm8+Pj4gbV9sb2FkaW5nSW5mbzsKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6Okxv
YWRpbmcgfTsKKyAgICBPcHRpb25hbDxQcm9taXNlPiBtX3Byb21pc2U7Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZjkyNzMxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZVNldC5pZGwKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2VudW0gRm9u
dEZhY2VTZXRMb2FkU3RhdHVzIHsKKyAgICAibG9hZGluZyIsCisgICAgImxvYWRlZCIKK307CisK
K1sKKyAgICBHbG9iYWxDb250ZXh0PURPTVdpbmRvdywKKyAgICBBY3RpdmVET01PYmplY3QsCisg
ICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgIENvbnN0
cnVjdG9yKHNlcXVlbmNlPEZvbnRGYWNlPiBpbml0aWFsRmFjZXMpLAorICAgIEV2ZW50VGFyZ2V0
CitdIGludGVyZmFjZSBGb250RmFjZVNldCB7CisgICAgRm9udEZhY2VTZXQgYWRkKEZvbnRGYWNl
IGZvbnQpOworICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZV0gYm9vbGVhbiBkZWxldGUoRm9udEZh
Y2UgZm9udCk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmxvYWRpbmc7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmxvYWRpbmdkb25lOwor
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZXJyb3I7CisKKyAgICBQcm9taXNl
IGxvYWQoRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0KTsKKworICAgIGJv
b2xlYW4gY2hlY2soRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0KTsKKwor
ICAgIFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIHJlYWR5OworCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyBzdGF0dXM7Cit9OwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDExNTkxZDcu
LjhhZjllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjY5NywxNCArNjY5NywxMCBA
QCBEb2N1bWVudCYgRG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKQogfQogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLVJlZlB0cjxGb250TG9hZGVyPiBEb2N1
bWVudDo6Zm9udHMoKQorRm9udEZhY2VTZXQmIERvY3VtZW50Ojpmb250cygpCiB7Ci0gICAgaWYg
KCFtX2ZvbnRsb2FkZXIpCi0gICAgICAgIG1fZm9udGxvYWRlciA9IEZvbnRMb2FkZXI6OmNyZWF0
ZSh0aGlzKTsKLSAgICByZXR1cm4gbV9mb250bG9hZGVyOworICAgIHJldHVybiBmb250U2VsZWN0
b3IoKS5mb250RmFjZVNldCgpOwogfQotI2VuZGlmCiAKIGZsb2F0IERvY3VtZW50OjpkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGNiNjJmZTguLmFj
ZGY0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yMDUsOSArMjA1LDcgQEAgY2xhc3MgVGV4
dEF1dG9zaXplcjsKIGNsYXNzIERPTVNlY3VyaXR5UG9saWN5OwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoRk9OVF9MT0FEX0VWRU5UUykKLWNsYXNzIEZvbnRMb2FkZXI7Ci0jZW5kaWYKK2NsYXNzIEZv
bnRGYWNlU2V0OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC0xMjc0LDkgKzEy
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFNlY3VyaXR5T3Jp
Z2luKiB0b3BPcmlnaW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAotI2lmIEVOQUJMRShGT05U
X0xPQURfRVZFTlRTKQotICAgIFJlZlB0cjxGb250TG9hZGVyPiBmb250cygpOwotI2VuZGlmCisg
ICAgRm9udEZhY2VTZXQmIGZvbnRzKCk7CiAKICAgICB2b2lkIGVuc3VyZVBsdWdJbnNJbmplY3Rl
ZFNjcmlwdChET01XcmFwcGVyV29ybGQmKTsKIApAQCAtMTc1NSwxMCArMTc1MSw2IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsKIAotI2lm
IEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIFJlZlB0cjxGb250TG9hZGVyPiBtX2ZvbnRs
b2FkZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIFJlZlB0cjxKU0M6
OklucHV0Q3Vyc29yPiBtX2lucHV0Q3Vyc29yOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bAppbmRleCA2MWM2N2M0Li5kYTZlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI2
NSw3ICsyNjUsNyBAQAogICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9OU10gRE9NTmFtZWRGbG93
Q29sbGVjdGlvbiB3ZWJraXRHZXROYW1lZEZsb3dzKCk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdF
X0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKLSAgICBbQ29uZGl0aW9uYWw9Rk9O
VF9MT0FEX0VWRU5UU10gcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRMb2FkZXIgZm9udHM7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0IGZvbnRzOwogI2VuZGlmCiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggNDY5MDBlYy4uODViMTBmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCkBAIC0xNDEsNiArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IG1hY3JvKGxvYWRlbmQpIFwKICAgICBtYWNybyhsb2FkaW5nKSBcCiAgICAgbWFjcm8obG9hZGlu
Z2RvbmUpIFwKKyAgICBtYWNybyhsb2FkaW5nZXJyb3IpIFwKICAgICBtYWNybyhsb2Fkc3RhcnQp
IFwKICAgICBtYWNybyhtYXJrKSBcCiAgICAgbWFjcm8obWVzc2FnZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggYWI0ZmVkYi4uNDMwYjhiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC05LDcgKzksNyBAQCBET01B
cHBsaWNhdGlvbkNhY2hlCiBET01XaW5kb3cKIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyCi1Gb250
TG9hZGVyIGNvbmRpdGlvbmFsPUZPTlRfTE9BRF9FVkVOVFMKK0ZvbnRGYWNlU2V0CiBJREJEYXRh
YmFzZSBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJPcGVuREJSZXF1ZXN0IGNvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9E
QVRBQkFTRQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270477</attachid>
            <date>2016-02-02 01:08:02 -0800</date>
            <delta_ts>2016-02-16 17:32:28 -0800</delta_ts>
            <desc>Applied on top of attachment 270478</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>56953</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDM1NmYxMGQ1OGVmNzY1OWNjZjg2NTI5NDE1ZGZlNTEzOTJlOTdlNGUKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBNb24gRmViIDEg
MjE6MjM6NTEgMjAxNiAtMDgwMAoKICAgIEZvbnRGYWNlU2V0CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAzNWVlODZlLi5jNTMyNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzQwLDYgKzM0
MCw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgY3NzL0NvdW50ZXIuaWRs
CiAgICAgY3NzL0RPTVdpbmRvd0NTUy5pZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCisgICAgY3Nz
L0ZvbnRGYWNlU2V0LmlkbAogICAgIGNzcy9Gb250TG9hZGVyLmlkbAogICAgIGNzcy9NZWRpYUxp
c3QuaWRsCiAgICAgY3NzL01lZGlhUXVlcnlMaXN0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggN2M0YjNjNy4uNTM3NDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yNDIsNiArMjQyLDcgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChX
ZWJDb3JlKS9jc3MvQ291bnRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0RPTVdpbmRvd0NT
Uy5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNlLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9jc3MvRm9udEZhY2VTZXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9Gb250TG9hZGVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9jc3MvTWVkaWFMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9j
c3MvTWVkaWFRdWVyeUxpc3QuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzOTljZDI3Li41OGY4NTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OTA3
LDYgKzU5MDcsMTEgQEAKIAkJQzJDNzNCRUYxQzU1QjAxRDAwREY2QjZCIC8qIEltbWVkaWF0ZUZv
bnRGYWNlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMkM3M0JFRDFDNTVCMDFDMDBERjZCNkIgLyogSW1tZWRpYXRlRm9udEZhY2VTb3VyY2Uu
aCAqLzsgfTsKIAkJQzJDNzNCRjIxQzU1QzM1QzAwREY2QjZCIC8qIEluRG9jdW1lbnRTVkdGb250
RmFjZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMkM3M0JGMDFDNTVDMzVDMDBERjZCNkIgLyogSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291
cmNlLmNwcCAqLzsgfTsKIAkJQzJDNzNCRjMxQzU1QzM1QzAwREY2QjZCIC8qIEluRG9jdW1lbnRT
VkdGb250RmFjZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzJDNzNCRjExQzU1QzM1QzAwREY2QjZCIC8qIEluRG9jdW1lbnRTVkdGb250RmFj
ZVNvdXJjZS5oICovOyB9OworCQlDMkQxNUFEQzFDNUIwQ0VFMDAxMUEzMDAgLyogSlNGb250RmFj
ZVNldEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMkQxNUFEQTFDNUIwQ0VFMDAxMUEzMDAgLyogSlNGb250RmFjZVNldEN1c3RvbS5jcHAg
Ki87IH07CisJCUMyRDE1QUUyMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQxNUFFMDFDNUIw
RkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuY3BwICovOyB9OworCQlDMkQxNUFFMzFDNUIwRkIz
MDAxMUEzMDAgLyogRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyRDE1QUUxMUM1QjBGQjMwMDExQTMwMCAvKiBGb250RmFjZVNldC5o
ICovOyB9OworCQlDMkQxNUFFNDFDNUIyQTMyMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQxNUFERTFD
NUIwRTIzMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgKi87IH07CisJCUMyRDE1QUU1MUM1
QjJBM0YwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQxNUFERjFDNUIwRTIzMDAxMUEzMDAgLyogSlNGb250
RmFjZVNldC5oICovOyB9OwogCQlDMkRFNkMzRDFDNTFEOTE3MDBENzc0RDMgLyogSlNGb250RmFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJERTZD
M0MxQzUxRDhGQTAwRDc3NEQzIC8qIEpTRm9udEZhY2UuaCAqLzsgfTsKIAkJQzJERTZDM0UxQzUx
RDkxQjAwRDc3NEQzIC8qIEpTRm9udEZhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzJERTZDM0IxQzUxRDhGQTAwRDc3NEQzIC8qIEpTRm9udEZh
Y2UuY3BwICovOyB9OwogCQlDMkRFNkM0MDFDNTFEQjIwMDBENzc0RDMgLyogRm9udEZhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREU2QzNGMUM1
MURCMEQwMEQ3NzREMyAvKiBGb250RmFjZS5oICovOyB9OwpAQCAtMTM4MDEsNiArMTM4MDYsMTIg
QEAKIAkJQzJDNzNCRUQxQzU1QjAxQzAwREY2QjZCIC8qIEltbWVkaWF0ZUZvbnRGYWNlU291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltbWVkaWF0ZUZvbnRGYWNlU291
cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzczQkYwMUM1NUMzNUMwMERG
NkI2QiAvKiBJbkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5Eb2N1bWVudFNWR0ZvbnRGYWNlU291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDNzNCRjExQzU1QzM1QzAwREY2QjZCIC8qIElu
RG9jdW1lbnRTVkdGb250RmFjZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbkRvY3VtZW50U1ZHRm9udEZhY2VTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzJEMTVBRDkxQzVCMDlCRTAwMTFBMzAwIC8qIEZvbnRGYWNlU2V0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBGb250RmFjZVNldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyRDE1QURBMUM1QjBDRUUwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRm9udEZhY2VTZXRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkQxNUFERTFDNUIwRTIz
MDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0ZvbnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzJEMTVBREYxQzVCMEUyMzAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkQxNUFFMDFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2VTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkQxNUFFMTFDNUIwRkIzMDAxMUEzMDAgLyog
Rm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZhY2VT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJERTZDM0ExQzUxRDU5MDAwRDc3
NEQzIC8qIEZvbnRGYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGb250RmFjZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyREU2QzNCMUM1MUQ4RkEwMEQ3NzREMyAv
KiBKU0ZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Rm9udEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRFNkMzQzFDNTFE
OEZBMDBENzc0RDMgLyogSlNGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0ZvbnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzUwMiw2
ICsxNzUxMyw4IEBACiAJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMyRDE1
QURFMUM1QjBFMjMwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLywKKwkJCQlDMkQxNUFE
RjFDNUIwRTIzMDAxMUEzMDAgLyogSlNGb250RmFjZVNldC5oICovLAogCQkJCUMyREU2QzNCMUM1
MUQ4RkEwMEQ3NzREMyAvKiBKU0ZvbnRGYWNlLmNwcCAqLywKIAkJCQlDMkRFNkMzQzFDNTFEOEZB
MDBENzc0RDMgLyogSlNGb250RmFjZS5oICovLAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2
NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLApAQCAtMjI0MDMs
NiArMjI0MTYsNyBAQAogCQkJCUExQzdGQUExMTMzQTVEMzUwMEQ2NzMyRCAvKiBKU1hQYXRoUmVz
dWx0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0VGRTFFNDBEQ0E1RjMzMDA3MzkyMTkgLyogSlNYU0xU
UHJvY2Vzc29yQ3VzdG9tLmNwcCAqLywKIAkJCQlDMkRFNkM0MzFDNTFFNEE1MDBENzc0RDMgLyog
SlNGb250RmFjZUN1c3RvbS5jcHAgKi8sCisJCQkJQzJEMTVBREExQzVCMENFRTAwMTFBMzAwIC8q
IEpTRm9udEZhY2VTZXRDdXN0b20uY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBDdXN0b207CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjM2OTgsNiArMjM3MTIsOSBAQAogCQkJCUMy
NDlBODUyMUM1NzUzM0EwMDM3RkE4RiAvKiBEZXByZWNhdGVkUmVtb3RlU1ZHRm9udEZhY2VTb3Vy
Y2UuY3BwICovLAogCQkJCUMyNDlBODUzMUM1NzUzM0EwMDM3RkE4RiAvKiBEZXByZWNhdGVkUmVt
b3RlU1ZHRm9udEZhY2VTb3VyY2UuaCAqLywKIAkJCQkxQzE5Mjc1MjFDNTg5Q0IyMDA1MTVDMDYg
LyogRm9udFZhcmlhbnRCdWlsZGVyLmNwcCAqLywKKwkJCQlDMkQxNUFEOTFDNUIwOUJFMDAxMUEz
MDAgLyogRm9udEZhY2VTZXQuaWRsICovLAorCQkJCUMyRDE1QUUwMUM1QjBGQjMwMDExQTMwMCAv
KiBGb250RmFjZVNldC5jcHAgKi8sCisJCQkJQzJEMTVBRTExQzVCMEZCMzAwMTFBMzAwIC8qIEZv
bnRGYWNlU2V0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNzczsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNjM4OCw2ICsyNjQwNSw3IEBACiAJCQkJNUM0MzA0QjYxOTFBRUY0NjAw
MEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzcy
ODY5ODQxNEZEOUFEQTAwRjQ4NERDIC8qIEpTRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzAwRjAxNTBFMEExODk1MDBGRDA0RTMgLyogSlNGaWxlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDMkQxNUFFMzFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VT
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFM0JDMENCMTE3RDNFMDgwMEI5NDA5QSAvKiBKU0Zp
bGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk4Nzg1RjExMjJFMUU4NzAwM0FBQkRBIC8q
IEpTRmlsZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMEYwMTcwRTBBMTg5NTAw
RkQwNEUzIC8qIEpTRmlsZUxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2NzksNiArMjc2OTcs
NyBAQAogCQkJCTkzRjE5OTRGMDgyNDVFNTkwMDFFOUFCQyAvKiBTZXR0aW5ncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTNFRjc2NkIxNjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJEMTVBRTUxQzVCMkEzRjAwMTFBMzAwIC8qIEpTRm9u
dEZhY2VTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAzMUIwMEIyNTk2NSAv
KiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQxNjk2NDEzNDZCNEMxMDAwRUI3
NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NEYxNzVEM0YzRTAw
QzIxRUM4IC8qIFNoYXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMjE0LDYgKzMwMjMzLDcgQEAK
IAkJCQlGRDIzQTEyNTEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjE0MTgwQ0Q2ODI2OTAwRkFEQTc1IC8q
IEpTTWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OERBMzE2MDE0NjQxMDBG
RUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyRDE1QUU0
MUM1QjJBMzIwMDExQTMwMCAvKiBKU0ZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQjg1OUZBMTYwRDQ5NDkwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBOThEREYxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdl
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8q
IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMzUwLDYgKzMx
MzcwLDcgQEAKIAkJCQk4MTAyQzU4ODEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIzNTQwRjIwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmlu
Z1RydW5jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjZBMjBFODFEQzRGMDBCMjU5
NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkQxNUFF
MjFDNUIwRkIzMDAxMUEzMDAgLyogRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1RUI2N0QwRTgxRDQyMDAwQjI1OTY1IC8qIFN0eWxlQm94RGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4Mzg2QTk3MDE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUY0NDdBMEU2NzQ3RDAwMDFDMTI4NyAvKiBTdHlsZUNhY2hlZElt
YWdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE2OTUsNiArMzE3MTYsNyBAQAogCQkJCTA3OEUw
OTEyMTdEMTRDRUUwMDQyMEFBMSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3Mjk3RkE3MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MTMxN0QxNENFRTAwNDIwQUExIC8q
IFVzZXJNZWRpYVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJEMTVBREMxQzVCMENF
RTAwMTFBMzAwIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzczRkIwNzE5MUVGNDE3MDA3
REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmMzJkZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20u
Y3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSlNGb250RmFjZVNldC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQzo6
SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0OjpyZWFkeShKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0Cit7Cisg
ICAgYXV0byYgcHJvbWlzZSA9IHdyYXBwZWQoKS5wcm9taXNlKCk7CisgICAgQVNTRVJUKHByb21p
c2UpOworICAgIHJldHVybiBwcm9taXNlLnZhbHVlKCkuanNPYmplY3QoKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBkN2QyZmFmLi5lMzQ3N2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNjgsNiArNjgsNyBAQCBz
dGF0aWMgdW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7CiAKIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9u
dFNlbGVjdG9yKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoJmRvY3VtZW50
KQorICAgICwgbV9mb250RmFjZVNldChGb250RmFjZVNldDo6Y3JlYXRlKGRvY3VtZW50LCBWZWN0
b3I8UmVmUHRyPEZvbnRGYWNlPj4oKSkpCiAgICAgLCBtX2JlZ2luTG9hZGluZ1RpbWVyKCp0aGlz
LCAmQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRUaW1lckZpcmVkKQogICAgICwgbV91bmlxdWVJ
ZCgrK2ZvbnRTZWxlY3RvcklkKQogICAgICwgbV92ZXJzaW9uKDApCkBAIC04NiwxOCArODcsMTIg
QEAgQ1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKICAgICBGb250Q2FjaGU6OnNp
bmdsZXRvbigpLnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotYm9vbCBDU1NGb250U2VsZWN0b3I6
OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZvbnRzLmlzRW1wdHkoKTsKLX0KLQot
c3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjb21wdXRlVHJhaXRzTWFzayhjb25zdCBT
dHlsZVByb3BlcnRpZXMmIHN0eWxlKQorc3RhdGljIEZvbnRUcmFpdHNNYXNrIGNvbXB1dGVUcmFp
dHNNYXNrKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgdW5zaWduZWQgdHJh
aXRzTWFzayA9IDA7CiAKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250U3R5bGUgPSBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKSkgewotICAgICAgICBp
ZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFN0eWxlKSkKLSAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250U3R5
bGUpKTsKIAogICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9u
dFN0eWxlKS5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKQEAg
LTExNCw4ICsxMDksNyBAQCBzdGF0aWMgT3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNvbXB1dGVU
cmFpdHNNYXNrKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiAgICAgICAgIHRyYWl0c01h
c2sgfD0gRm9udFN0eWxlTm9ybWFsTWFzazsKIAogICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGZv
bnRXZWlnaHQgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdlaWdo
dCkpIHsKLSAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQpKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIEFTU0VSVChpczxDU1NQcmltaXRp
dmVWYWx1ZT4oKmZvbnRXZWlnaHQpKTsKIAogICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkuZ2V0VmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVCb2xkOgpAQCAtMjE3LDI0ICsyMTEsNiBAQCBTdHJpbmcgQ1NTRm9udFNlbGVjdG9y
OjpmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUp
CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCByZWdpc3RlckxvY2FsRm9udEZhY2VzRm9yRmFtaWx5
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lLCBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxGb250RmFjZT4+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBs
b2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzKQotewotICAgIEFTU0VSVCghbG9jYWxseUluc3RhbGxl
ZEZvbnRGYWNlcy5jb250YWlucyhmYW1pbHlOYW1lKSk7Ci0KLSAgICBWZWN0b3I8Rm9udFRyYWl0
c01hc2s+IHRyYWl0c01hc2tzID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZXRUcmFpdHNJbkZh
bWlseShmYW1pbHlOYW1lKTsKLSAgICBpZiAodHJhaXRzTWFza3MuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBWZWN0b3I8UmVmPEZvbnRGYWNlPj4gZmFjZXMgPSB7IH07Ci0gICAg
Zm9yIChhdXRvIG1hc2sgOiB0cmFpdHNNYXNrcykgewotICAgICAgICBSZWY8Rm9udEZhY2U+IGZh
Y2UgPSBGb250RmFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYXNrLCB0cnVlKTsKLSAgICAgICAgZmFj
ZS0+YWRkU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxGb250RmFjZVNvdXJjZT4oZmFjZSwg
ZmFtaWx5TmFtZSkpOwotICAgICAgICBBU1NFUlQoIWZhY2UtPmFsbFNvdXJjZXNIYXZlRmFpbGVk
KCkpOwotICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92ZShmYWNlKSk7Ci0gICAgfQotICAgIGxv
Y2FsbHlJbnN0YWxsZWRGb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIFdURk1vdmUoZmFjZXMpKTsK
LX0KLQogdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVBy
b3BlcnRpZXMmIHN0eWxlLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpKQpAQCAtMjYzLDEyICsyMzksMTggQEAgdm9p
ZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVByb3BlcnRpZXMm
IHN0eWxlLCBib29sIGlzSW5pdGkKIAogICAgIENTU1ZhbHVlTGlzdCogcmFuZ2VMaXN0ID0gZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih1bmljb2RlUmFuZ2UuZ2V0KCkpOwogCi0gICAgYXV0byBjb21w
dXRlZFRyYWl0c01hc2sgPSBjb21wdXRlVHJhaXRzTWFzayhzdHlsZSk7Ci0gICAgaWYgKCFjb21w
dXRlZFRyYWl0c01hc2spCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHRyYWl0c01hc2sgPSBj
b21wdXRlZFRyYWl0c01hc2sudmFsdWUoKTsKKyAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250
U3R5bGUgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKSkg
eworICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFN0eWxlKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250V2Vp
Z2h0ID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpKSB7
CisgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSZWY8Rm9udEZhY2U+IGZvbnRGYWNlID0gRm9u
dEZhY2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgdHJhaXRzTWFzayk7CisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgcGFzcyB0aGUgQ1NTVmFsdWVzIGludG8gdGhlIEZvbnRG
YWNlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhpcyBjb2RlLgorICAgIFJlZjxGb250RmFjZT4g
Zm9udEZhY2UgPSBGb250RmFjZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBjb21wdXRlVHJhaXRzTWFz
ayhzdHlsZSkpOwogICAgIGFkZFNvdXJjZXNUb0ZvbnRGYWNlKGZvbnRGYWNlLmdldCgpLCBzcmNM
aXN0LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKICAgICBpZiAo
Zm9udEZhY2UtPmFsbFNvdXJjZXNIYXZlRmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMz
MCwxOCArMzEyLDExIEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29u
c3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgYm9vbCBpc0luaXRpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBmYW1pbHlOYW1lcy5hcHBlbmQoZmFtaWx5TmFtZSk7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIFZlY3RvcjxSZWY8
Rm9udEZhY2U+PigpKTsKLSAgICAgICAgYXV0byYgZmFtaWx5Rm9udEZhY2VzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0g
ICAgICAgICAgICByZWdpc3RlckxvY2FsRm9udEZhY2VzRm9yRmFtaWx5KCpkb2N1bWVudCgpLCBm
YW1pbHlOYW1lLCBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMpOwotICAgICAgICAgICAgZmFt
aWx5Rm9udEZhY2VzID0geyB9OwotICAgICAgICB9Ci0KLSAgICAgICAgZmFtaWx5Rm9udEZhY2Vz
LmFwcGVuZChmb250RmFjZS5jb3B5UmVmKCkpOwogICAgICAgICAKICAgICAgICAgKyttX3ZlcnNp
b247CiAgICAgfQogICAgIGZvbnRGYWNlLT5zZXRGYW1pbGllcyhXVEZNb3ZlKGZhbWlseU5hbWVz
KSk7CisgICAgbV9mb250RmFjZVNldC0+YWRkKGZvbnRGYWNlLnB0cigpKTsKIH0KIAogdm9pZCBD
U1NGb250U2VsZWN0b3I6OmZvbnRGYWNlV2lsbENoYW5nZShGb250RmFjZSYpCkBAIC0zNjksMTUg
KzM0NCw5IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpkaXNwYXRjaEludmFsaWRhdGlvbkNhbGxi
YWNrcygpCiAgICAgICAgIGNsaWVudC0+Zm9udHNOZWVkVXBkYXRlKCp0aGlzKTsKIH0KIAotdm9p
ZCBDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkZWQoRm9udEZhY2UmIGZvbnRGYWNlKQordm9pZCBD
U1NGb250U2VsZWN0b3I6OmtpY2soRm9udEZhY2UmIGZvbnRGYWNlKQogewotICAgIGZvciAoY29u
c3QgU3RyaW5nJiBmYW1pbHkgOiBmb250RmFjZS5mYW1pbGllcygpKSB7Ci0gICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBtX2ZvbnRzLmZpbmQoZmFtaWx5KTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9
IG1fZm9udHMuZW5kKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc2VnbWVudGVkRm9udCA6
IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgICAgICBzZWdtZW50ZWRGb250LnZhbHVlLT5m
b250TG9hZGVkKGZvbnRGYWNlKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBtX2ZvbnRGYWNlU2V0
LT5raWNrKGZvbnRGYWNlKTsKIAogICAgIGRpc3BhdGNoSW52YWxpZGF0aW9uQ2FsbGJhY2tzKCk7
CiB9CkBAIC00MTMsMTMzICszODIsMjAgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmVz
b2x2ZUdlbmVyaWNGYW1pbHkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGb250RGUKICAgICBy
ZXR1cm4gZmFtaWx5TmFtZTsKIH0KIAotY2xhc3MgRm9udEZhY2VDb21wYXJhdG9yIHsKLXB1Ymxp
YzoKLSAgICBGb250RmFjZUNvbXBhcmF0b3IoRm9udFRyYWl0c01hc2sgZGVzaXJlZFRyYWl0c01h
c2tGb3JDb21wYXJpc29uKQotICAgICAgICA6IG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJp
c29uKGRlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJp
c29uICYgRm9udFdlaWdodE1hc2spOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IoKShjb25z
dCBGb250RmFjZSYgZmlyc3QsIGNvbnN0IEZvbnRGYWNlJiBzZWNvbmQpCi0gICAgewotICAgICAg
ICBGb250VHJhaXRzTWFzayBmaXJzdFRyYWl0c01hc2sgPSBmaXJzdC50cmFpdHNNYXNrKCk7Ci0g
ICAgICAgIEZvbnRUcmFpdHNNYXNrIHNlY29uZFRyYWl0c01hc2sgPSBzZWNvbmQudHJhaXRzTWFz
aygpOwotCi0gICAgICAgIGJvb2wgZmlyc3RIYXNEZXNpcmVkU3R5bGUgPSBmaXJzdFRyYWl0c01h
c2sgJiBtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRTdHlsZU1hc2s7Ci0g
ICAgICAgIGJvb2wgc2Vjb25kSGFzRGVzaXJlZFN0eWxlID0gc2Vjb25kVHJhaXRzTWFzayAmIG1f
ZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlTWFzazsKLQotICAgICAg
ICBpZiAoZmlyc3RIYXNEZXNpcmVkU3R5bGUgIT0gc2Vjb25kSGFzRGVzaXJlZFN0eWxlKQotICAg
ICAgICAgICAgcmV0dXJuIGZpcnN0SGFzRGVzaXJlZFN0eWxlOwotCi0gICAgICAgIGlmICgobV9k
ZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250U3R5bGVJdGFsaWNNYXNrKSAmJiAh
Zmlyc3QuaXNMb2NhbEZhbGxiYWNrKCkgJiYgIXNlY29uZC5pc0xvY2FsRmFsbGJhY2soKSkgewot
ICAgICAgICAgICAgLy8gUHJlZmVyIGEgZm9udCB0aGF0IGhhcyBpbmRpY2F0ZWQgdGhhdCBpdCBj
YW4gb25seSBzdXBwb3J0IGl0YWxpY3MgdG8gYSBmb250IHRoYXQgY2xhaW1zIHRvIHN1cHBvcnQK
LSAgICAgICAgICAgIC8vIGFsbCBzdHlsZXMuIFRoZSBzcGVjaWFsaXplZCBmb250IGlzIG1vcmUg
bGlrZWx5IHRvIGJlIHRoZSBvbmUgdGhlIGF1dGhvciB3YW50cyB1c2VkLgotICAgICAgICAgICAg
Ym9vbCBmaXJzdFJlcXVpcmVzSXRhbGljcyA9IChmaXJzdFRyYWl0c01hc2sgJiBGb250U3R5bGVJ
dGFsaWNNYXNrKSAmJiAhKGZpcnN0VHJhaXRzTWFzayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spOwot
ICAgICAgICAgICAgYm9vbCBzZWNvbmRSZXF1aXJlc0l0YWxpY3MgPSAoc2Vjb25kVHJhaXRzTWFz
ayAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICEoc2Vjb25kVHJhaXRzTWFzayAmIEZvbnRTdHls
ZU5vcm1hbE1hc2spOwotICAgICAgICAgICAgaWYgKGZpcnN0UmVxdWlyZXNJdGFsaWNzICE9IHNl
Y29uZFJlcXVpcmVzSXRhbGljcykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RSZXF1aXJl
c0l0YWxpY3M7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2Vjb25kVHJhaXRzTWFzayAmIG1f
ZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFdlaWdodE1hc2spCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChmaXJzdFRyYWl0c01hc2sgJiBtX2Rlc2ly
ZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRXZWlnaHRNYXNrKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9XRC1j
c3MzLWZvbnRzLTIwMTExMDA0LyNmb250LW1hdGNoaW5nLWFsZ29yaXRobSBzYXlzIDoKLSAgICAg
ICAgLy8gICAtIElmIHRoZSBkZXNpcmVkIHdlaWdodCBpcyBsZXNzIHRoYW4gNDAwLCB3ZWlnaHRz
IGJlbG93IHRoZSBkZXNpcmVkIHdlaWdodCBhcmUgY2hlY2tlZCBpbiBkZXNjZW5kaW5nIG9yZGVy
IGZvbGxvd2VkIGJ5IHdlaWdodHMgYWJvdmUgdGhlIGRlc2lyZWQgd2VpZ2h0IGluIGFzY2VuZGlu
ZyBvcmRlciB1bnRpbCBhIG1hdGNoIGlzIGZvdW5kLgotICAgICAgICAvLyAgIC0gSWYgdGhlIGRl
c2lyZWQgd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiA1MDAsIHdlaWdodHMgYWJvdmUgdGhlIGRlc2ly
ZWQgd2VpZ2h0IGFyZSBjaGVja2VkIGluIGFzY2VuZGluZyBvcmRlciBmb2xsb3dlZCBieSB3ZWln
aHRzIGJlbG93IHRoZSBkZXNpcmVkIHdlaWdodCBpbiBkZXNjZW5kaW5nIG9yZGVyIHVudGlsIGEg
bWF0Y2ggaXMgZm91bmQuCi0gICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJlZCB3ZWlnaHQgaXMg
NDAwLCA1MDAgaXMgY2hlY2tlZCBmaXJzdCBhbmQgdGhlbiB0aGUgcnVsZSBmb3IgZGVzaXJlZCB3
ZWlnaHRzIGxlc3MgdGhhbiA0MDAgaXMgdXNlZC4KLSAgICAgICAgLy8gICAtIElmIHRoZSBkZXNp
cmVkIHdlaWdodCBpcyA1MDAsIDQwMCBpcyBjaGVja2VkIGZpcnN0IGFuZCB0aGVuIHRoZSBydWxl
IGZvciBkZXNpcmVkIHdlaWdodHMgbGVzcyB0aGFuIDQwMCBpcyB1c2VkLgotCi0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBmYWxsYmFja1J1bGVTZXRzID0gOTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHJ1bGVzUGVyU2V0ID0gODsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZv
bnRUcmFpdHNNYXNrIHdlaWdodEZhbGxiYWNrUnVsZVNldHNbZmFsbGJhY2tSdWxlU2V0c11bcnVs
ZXNQZXJTZXRdID0gewotICAgICAgICAgICAgeyBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdo
dDMwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdo
dDYwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdo
dDkwME1hc2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDEwME1hc2ssIEZvbnRXZWlnaHQz
MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ2
MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5
MDBNYXNrIH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAw
TWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NjAw
TWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAw
TWFzayB9LAotICAgICAgICAgICAgeyBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDMwME1h
c2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDYwME1h
c2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1h
c2sgfSwKLSAgICAgICAgICAgIHsgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQzMDBNYXNr
LCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNr
LCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNr
IH0sCi0gICAgICAgICAgICB7IEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywg
Rm9udFdlaWdodDkwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywg
Rm9udFdlaWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9
LAotICAgICAgICAgICAgeyBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2ssIEZv
bnRXZWlnaHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZv
bnRXZWlnaHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sgfSwK
LSAgICAgICAgICAgIHsgRm9udFdlaWdodDkwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250
V2VpZ2h0NjAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250
V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0sCi0g
ICAgICAgICAgICB7IEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdl
aWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdl
aWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgdW5zaWduZWQgcnVsZVNldEluZGV4ID0gMDsKLSAgICAgICAgZm9y
ICg7ICEobV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiAoMSA8PCAoRm9udFdlaWdo
dDEwMEJpdCArIHJ1bGVTZXRJbmRleCkpKTsgcnVsZVNldEluZGV4KyspIHsgfQotCi0gICAgICAg
IGNvbnN0IEZvbnRUcmFpdHNNYXNrKiB3ZWlnaHRGYWxsYmFja1J1bGUgPSB3ZWlnaHRGYWxsYmFj
a1J1bGVTZXRzW3J1bGVTZXRJbmRleF07Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBydWxlc1BlclNldDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc2Vjb25kVHJhaXRzTWFzayAm
IHdlaWdodEZhbGxiYWNrUnVsZVtpXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoZmlyc3RUcmFpdHNNYXNrICYgd2VpZ2h0RmFsbGJhY2tSdWxlW2ldKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGb250VHJhaXRzTWFzayBtX2Rlc2lyZWRU
cmFpdHNNYXNrRm9yQ29tcGFyaXNvbjsKLX07Ci0KIEZvbnRSYW5nZXMgQ1NTRm9udFNlbGVjdG9y
Ojpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0
aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IFRo
ZSBzcGVjIChhbmQgRmlyZWZveCkgc2F5cyB1c2VyIHNwZWNpZmllZCBnZW5lcmljIGZhbWlsaWVz
IChzYW5zLXNlcmlmIGV0Yy4pIHNob3VsZCBiZSByZXNvbHZlZCBiZWZvcmUgdGhlIEBmb250LWZh
Y2UgbG9va3VwIHRvby4KICAgICBib29sIHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPSBmYW1p
bHlOYW1lID09IHN0YW5kYXJkRmFtaWx5OwogCiAgICAgQXRvbWljU3RyaW5nIGZhbWlseUZvckxv
b2t1cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPyByZXNvbHZlR2VuZXJpY0ZhbWlseSht
X2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpIDogZmFtaWx5TmFtZTsKLSAg
ICBDU1NTZWdtZW50ZWRGb250RmFjZSogZmFjZSA9IGdldEZvbnRGYWNlKGZvbnREZXNjcmlwdGlv
biwgZmFtaWx5Rm9yTG9va3VwKTsKKyAgICBhdXRvIGZhY2UgPSBtX2ZvbnRGYWNlU2V0LT5nZXRG
b250RmFjZShmYW1pbHlGb3JMb29rdXAsIGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCkpOwog
ICAgIGlmICghZmFjZSkgewogICAgICAgICBpZiAoIXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3Qp
CiAgICAgICAgICAgICBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2Rv
Y3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwogICAgICAgICByZXR1cm4gRm9u
dFJhbmdlcyhGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0
aW9uLCBmYW1pbHlGb3JMb29rdXApKTsKICAgICB9CiAKLSAgICByZXR1cm4gZmFjZS0+Zm9udFJh
bmdlcyhmb250RGVzY3JpcHRpb24pOwotfQotCi1DU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9u
dFNlbGVjdG9yOjpnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fZm9udEZhY2VzLmZpbmQoZmFtaWx5KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9mb250RmFj
ZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIGZhbWlseUZvbnRG
YWNlcyA9IGl0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGF1dG8mIHNlZ21lbnRlZEZvbnRGYWNlQ2Fj
aGUgPSBtX2ZvbnRzLmFkZChmYW1pbHksIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0
cjxDU1NTZWdtZW50ZWRGb250RmFjZT4+KCkpLml0ZXJhdG9yLT52YWx1ZTsKLQotICAgIEZvbnRU
cmFpdHNNYXNrIHRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwotCi0g
ICAgYXV0byBhZGRSZXN1bHQgPSBzZWdtZW50ZWRGb250RmFjZUNhY2hlLmFkZCh0cmFpdHNNYXNr
LCBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlZ21lbnRlZEZvbnRGYWNlPigqdGhpcykpOwotICAgIENT
U1NlZ21lbnRlZEZvbnRGYWNlJiBmYWNlID0gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0g
ICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuICZmYWNlOwotCi0g
ICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Rm9udEZhY2U+LCAzMj4gY2FuZGlkYXRl
Rm9udEZhY2VzOwotICAgIGZvciAoaW50IGkgPSBmYW1pbHlGb250RmFjZXMuc2l6ZSgpIC0gMTsg
aSA+PSAwOyAtLWkpIHsKLSAgICAgICAgRm9udEZhY2UmIGNhbmRpZGF0ZSA9IGZhbWlseUZvbnRG
YWNlc1tpXTsKLSAgICAgICAgdW5zaWduZWQgY2FuZGlkYXRlVHJhaXRzTWFzayA9IGNhbmRpZGF0
ZS50cmFpdHNNYXNrKCk7Ci0gICAgICAgIGlmICgodHJhaXRzTWFzayAmIEZvbnRTdHlsZU5vcm1h
bE1hc2spICYmICEoY2FuZGlkYXRlVHJhaXRzTWFzayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhbmRpZGF0ZUZvbnRGYWNlcy5hcHBlbmQo
Y2FuZGlkYXRlKTsKLSAgICB9Ci0KLSAgICBhdXRvIGxvY2FsSXRlcmF0b3IgPSBtX2xvY2FsbHlJ
bnN0YWxsZWRGb250RmFjZXMuZmluZChmYW1pbHkpOwotICAgIGlmIChsb2NhbEl0ZXJhdG9yICE9
IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5lbmQoKSkgewotICAgICAgICBmb3IgKGF1dG8m
IGNhbmRpZGF0ZSA6IGxvY2FsSXRlcmF0b3ItPnZhbHVlKSB7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBjYW5kaWRhdGVUcmFpdHNNYXNrID0gY2FuZGlkYXRlLT50cmFpdHNNYXNrKCk7Ci0gICAgICAg
ICAgICBpZiAoKHRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSAmJiAhKGNhbmRpZGF0
ZVRyYWl0c01hc2sgJiBGb250U3R5bGVOb3JtYWxNYXNrKSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGNhbmRpZGF0ZUZvbnRGYWNlcy5hcHBlbmQoY2FuZGlkYXRlKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHN0ZDo6c3RhYmxlX3NvcnQoY2FuZGlkYXRlRm9udEZh
Y2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZvbnRGYWNlcy5lbmQoKSwgRm9udEZhY2VDb21wYXJhdG9y
KHRyYWl0c01hc2spKTsKLSAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZUZvbnRG
YWNlcykKLSAgICAgICAgZmFjZS5hcHBlbmRGb250RmFjZShjYW5kaWRhdGUuZ2V0KCkpOwotCi0g
ICAgcmV0dXJuICZmYWNlOworICAgIHJldHVybiBmYWNlLnZhbHVlKCkuZm9udFJhbmdlcyhmb250
RGVzY3JpcHRpb24pOwogfQogCiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Y2xlYXJEb2N1bWVudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggZjg3YWI1OS4uZWI5Y2MwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNTU1NlZ21lbnRlZEZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udEZhY2VTZXQuaCIKICNp
bmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPG1l
bW9yeT4KQEAgLTYyLDIyICs2MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGb250UmFuZ2Vz
IGZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBzaXplX3QgZmFsbGJhY2tGb250Q291bnQo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25z
dCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIENTU1NlZ21lbnRlZEZv
bnRGYWNlKiBnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseSk7CiAKICAgICB2b2lkIGNsZWFyRG9jdW1lbnQoKTsKIAogICAgIHZvaWQg
YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIGJvb2wgaXNJbml0aWF0aW5n
RWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7CiAKLSAgICB2b2lkIGZvbnRMb2FkZWQoRm9u
dEZhY2UmKTsKKyAgICB2b2lkIGtpY2soRm9udEZhY2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9u
dENhY2hlSW52YWxpZGF0ZWQoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
OwotCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZv
bnRTZWxlY3RvckNsaWVudCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVy
Rm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZvbnRTZWxlY3RvckNsaWVudCYpIG92ZXJyaWRlOwog
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQog
CisgICAgRm9udEZhY2VTZXQmIGZvbnRGYWNlU2V0KCkgeyByZXR1cm4gbV9mb250RmFjZVNldC5n
ZXQoKTsgfQorCiAgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250Kik7CiAK
ICAgICBzdGF0aWMgU3RyaW5nIGZhbWlseU5hbWVGcm9tUHJpbWl0aXZlKGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlJik7CkBAIC05NCw5ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdpbkxv
YWRUaW1lckZpcmVkKCk7CiAKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKLSAgICBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPFJlZjxGb250RmFjZT4+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IG1fZm9udEZhY2VzOwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4s
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzOwot
ICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NT
U2VnbWVudGVkRm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2ZvbnRzOwor
ICAgIFJlZjxGb250RmFjZVNldD4gbV9mb250RmFjZVNldDsKICAgICBIYXNoU2V0PEZvbnRTZWxl
Y3RvckNsaWVudCo+IG1fY2xpZW50czsKIAogICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXggNDRlZGM3My4uYzdlYWM1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC0zNiw4ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTU2VnbWVudGVkRm9udEZhY2U6OkNTU1Nl
Z21lbnRlZEZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKQotICAgIDogbV9m
b250U2VsZWN0b3IoZm9udFNlbGVjdG9yKQorQ1NTU2VnbWVudGVkRm9udEZhY2U6OkNTU1NlZ21l
bnRlZEZvbnRGYWNlKCkKIHsKIH0KIApAQCAtOTYsNCArOTUsMTkgQEAgRm9udFJhbmdlcyBDU1NT
ZWdtZW50ZWRGb250RmFjZTo6Zm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGkKICAgICByZXR1cm4gZm9udFJhbmdlczsKIH0KIAordm9pZCBDU1NTZWdtZW50ZWRG
b250RmFjZTo6bG9hZCgpCit7CisgICAgZm9yIChhdXRvJiBmYWNlIDogbV9mb250RmFjZXMpCisg
ICAgICAgIGZhY2UtPmxvYWQoKTsKK30KKworYm9vbCBDU1NTZWdtZW50ZWRGb250RmFjZTo6YWxs
Rm9udEZhY2VzQXJlTG9hZGVkKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBtX2Zv
bnRGYWNlcykgeworICAgICAgICBpZiAoZmFjZS0+c3RhdHVzRW51bSgpICE9IEZvbnRGYWNlOjpT
dGF0dXM6OkxvYWRlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNl
LmgKaW5kZXggYzBhYTJmOS4uMWU3MWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmgKQEAgLTQxLDkgKzQxLDcgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwog
CiBjbGFzcyBDU1NTZWdtZW50ZWRGb250RmFjZSB7CiBwdWJsaWM6Ci0gICAgQ1NTU2VnbWVudGVk
Rm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yJik7Ci0KLSAgICBDU1NGb250U2VsZWN0b3ImIGZvbnRT
ZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNlbGVjdG9yOyB9CisgICAgQ1NTU2VnbWVu
dGVkRm9udEZhY2UoKTsKIAogICAgIHZvaWQgZm9udExvYWRlZChGb250RmFjZSYpOwogCkBAIC01
MSwxMCArNDksMTQgQEAgcHVibGljOgogCiAgICAgRm9udFJhbmdlcyBmb250UmFuZ2VzKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYpOwogCisgICAgdm9pZCBsb2FkKCk7CisgICAgYm9vbCBhbGxGb250
RmFjZXNBcmVMb2FkZWQoKSBjb25zdDsKKworICAgIFZlY3RvcjxSZWY8Rm9udEZhY2U+LCAxPiYg
ZmFjZXMoKSB7IHJldHVybiBtX2ZvbnRGYWNlczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgcHJ1
bmVUYWJsZSgpOwogCi0gICAgQ1NTRm9udFNlbGVjdG9yJiBtX2ZvbnRTZWxlY3RvcjsKICAgICBI
YXNoTWFwPEZvbnREZXNjcmlwdGlvbktleSwgRm9udFJhbmdlcywgRm9udERlc2NyaXB0aW9uS2V5
SGFzaCwgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Rm9udERlc2NyaXB0aW9uS2V5Pj4gbV9k
ZXNjcmlwdGlvblRvUmFuZ2VzTWFwOwogICAgIFZlY3RvcjxSZWY8Rm9udEZhY2U+LCAxPiBtX2Zv
bnRGYWNlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCAyM2ExMTdjLi5hNTYzNGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTI0Miw2ICsyNDIsNyBAQCB2b2lkIEZvbnRG
YWNlOjpzZXRTdHlsZShjb25zdCBTdHJpbmcmIG5ld1N0eWxlKQogICAgICAgICBuZXdUcmFpdHNN
YXNrIHw9IEZvbnRTdHlsZUl0YWxpY01hc2s7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIG1fdHJhaXRzTWFzayA9IHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPihuZXdUcmFpdHNN
YXNrKTsKQEAgLTI4MywxMCArMjg0LDcgQEAgdm9pZCBGb250RmFjZTo6c2V0V2VpZ2h0KGNvbnN0
IFN0cmluZyYgd2VpZ2h0KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+
IGZvbnRXZWlnaHQgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRX
ZWlnaHQpOwotICAgIGlmICghZm9udFdlaWdodCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQpKQorICAgIGlmICghZm9udFdlaWdo
dCB8fCAhaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgZm9udFNlbGVjdG9yKCkuZm9udEZhY2VXaWxsQ2hhbmdlKCp0aGlzKTsKQEAgLTMy
Myw2ICszMjEsNyBAQCB2b2lkIEZvbnRGYWNlOjpzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiB3ZWln
aHQpCiAgICAgICAgIG5ld1RyYWl0c01hc2sgfD0gRm9udFdlaWdodDEwME1hc2s7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fdHJhaXRzTWFzayA9IHN0YXRpY19jYXN0PEZvbnRU
cmFpdHNNYXNrPihuZXdUcmFpdHNNYXNrKTsKQEAgLTUxMCw3ICs1MDksNyBAQCB2b2lkIEZvbnRG
YWNlOjpraWNrKEZvbnRGYWNlU291cmNlJikKICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVzOjpM
b2FkaW5nKQogICAgICAgICBwdW1wKCk7CiAKLSAgICBmb250U2VsZWN0b3IoKS5mb250TG9hZGVk
KCp0aGlzKTsKKyAgICBmb250U2VsZWN0b3IoKS5raWNrKCp0aGlzKTsKIH0KIAogUmVmUHRyPEZv
bnQ+IEZvbnRGYWNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2UuaAppbmRleCBlMTA4MWVjLi4xNzgwM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMTE2
LDYgKzExNiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3Qg
U3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpOwogICAgIFN0cmluZyBzdGF0dXMoKSBjb25zdDsKIAor
ICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAgICAgICAgVW5sb2FkZWQsCisgICAgICAgIExvYWRp
bmcsCisgICAgICAgIExvYWRlZCwKKyAgICAgICAgRXJyb3IKKyAgICB9OworICAgIFN0YXR1cyBz
dGF0dXNFbnVtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKwogICAgIGJvb2wgYWxsU291
cmNlc0hhdmVGYWlsZWQoKSBjb25zdDsKIAogICAgIFJlZlB0cjxGb250PiBmb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMp
OwpAQCAtMTQzLDEyICsxNTEsNiBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBl
bnVtIGNsYXNzIFN0YXR1cyB7Ci0gICAgICAgIFVubG9hZGVkLAotICAgICAgICBMb2FkaW5nLAot
ICAgICAgICBMb2FkZWQsCi0gICAgICAgIEVycm9yCi0gICAgfTsKIAogICAgIEZvbnRGYWNlKERv
Y3VtZW50JiwgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzaywgYm9vbCBpc0xvY2FsRmFsbGJhY2sp
OwogICAgIEZvbnRGYWNlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IERp
Y3Rpb25hcnkmIGRlc2NyaXB0b3JzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsCmluZGV4IDAwNzJj
MzEuLjJjZTYyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbApAQCAtMzEsNiArMzEsOCBAQAog
fTsKIAogWworICAgIEdsb2JhbENvbnRleHQ9RE9NV2luZG93LAorICAgIEFjdGl2ZURPTU9iamVj
dCwKICAgICBDdXN0b21Db25zdHJ1Y3RvcihET01TdHJpbmcgZmFtaWx5LCBhbnkgc291cmNlLCBE
aWN0aW9uYXJ5IGRlc2NyaXB0b3JzKQogXSBpbnRlcmZhY2UgRm9udEZhY2UgewogICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgZmFtaWx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI4MzIwMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKQEAgLTAsMCArMSwzOTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udEZhY2VTZXQuaCIK
KworI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlZ21lbnRlZEZv
bnRGYWNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJET01Db3JlRXhjZXB0
aW9uLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udEZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvcmVF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0ZvbnRGYWNlLmgiCisjaW5jbHVkZSAiTG9jYWxGb250
RmFjZVNvdXJjZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgT3B0aW9uYWw8Rm9udEZhY2VTZXQ6OlByb21pc2U+
IGNyZWF0ZVByb21pc2UoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2soZG9jdW1lbnQudm0oKSk7CisgICAgRE9NV3JhcHBlcldvcmxkJiBub3JtYWxXb3Js
ZCA9IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KCZkb2N1bWVudCwgbm9ybWFsV29ybGQpOwor
ICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBKU0M6
OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIHJldHVy
biBGb250RmFjZVNldDo6UHJvbWlzZShEZWZlcnJlZFdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KSkpOwor
fQorCitGb250RmFjZVNldDo6Rm9udEZhY2VTZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBW
ZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mIGluaXRpYWxGYWNlcykKKyAgICA6IEFjdGl2ZURPTU9i
amVjdCgmZG9jdW1lbnQpCisgICAgLCBtX3Byb21pc2UoY3JlYXRlUHJvbWlzZShkb2N1bWVudCkp
Cit7CisgICAgZm9yIChhdXRvJiBmYWNlIDogaW5pdGlhbEZhY2VzKQorICAgICAgICBhZGQoZmFj
ZS5nZXQoKSk7CisgICAgc3VzcGVuZElmTmVlZGVkKCk7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6
OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBt
X3N0YXR1cyA9PSBTdGF0dXM6OkxvYWRpbmc7Cit9CisKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyTG9j
YWxGb250RmFjZXNGb3JGYW1pbHkoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZh
bWlseU5hbWUsIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4sIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIGxvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMpCit7CisgICAgQVNT
RVJUKCFsb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmNvbnRhaW5zKGZhbWlseU5hbWUpKTsKKwor
ICAgIFZlY3RvcjxGb250VHJhaXRzTWFzaz4gdHJhaXRzTWFza3MgPSBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmdldFRyYWl0c0luRmFtaWx5KGZhbWlseU5hbWUpOworICAgIGlmICh0cmFpdHNNYXNr
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZWY8Rm9udEZhY2U+
PiBmYWNlcyA9IHsgfTsKKyAgICBmb3IgKGF1dG8gbWFzayA6IHRyYWl0c01hc2tzKSB7CisgICAg
ICAgIFJlZjxGb250RmFjZT4gZmFjZSA9IEZvbnRGYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1hc2ss
IHRydWUpOworICAgICAgICBmYWNlLT5hZGRTb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxMb2NhbEZv
bnRGYWNlU291cmNlPihmYWNlLCBmYW1pbHlOYW1lKSk7CisgICAgICAgIEFTU0VSVCghZmFjZS0+
YWxsU291cmNlc0hhdmVGYWlsZWQoKSk7CisgICAgICAgIGZhY2VzLmFwcGVuZChXVEZNb3ZlKGZh
Y2UpKTsKKyAgICB9CisgICAgbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5hZGQoZmFtaWx5TmFt
ZSwgV1RGTW92ZShmYWNlcykpOworfQorCitGb250RmFjZVNldCYgRm9udEZhY2VTZXQ6OmFkZChG
b250RmFjZSogbmV3RmFjZSkKK3sKKyAgICBpZiAoIW5ld0ZhY2UpCisgICAgICAgIHJldHVybiAq
dGhpczsKKworICAgIGF1dG8qIGV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvbnRleHQgJiYgZXhlY3V0aW9uQ29udGV4dC0+
aXNEb2N1bWVudCgpKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpkb3duY2FzdDxEb2N1bWVudD4o
ZXhlY3V0aW9uQ29udGV4dCk7CisKKyAgICBmb3IgKGF1dG8mIGZhbWlseU5hbWUgOiBuZXdGYWNl
LT5mYW1pbGllcygpKSB7CisgICAgICAgIGlmIChmYW1pbHlOYW1lLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RmFjZXMu
YWRkKGZhbWlseU5hbWUsIFZlY3RvcjxSZWY8Rm9udEZhY2U+PigpKTsKKyAgICAgICAgYXV0byYg
ZmFtaWx5Rm9udEZhY2VzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgICAgICByZWdpc3RlckxvY2FsRm9udEZh
Y2VzRm9yRmFtaWx5KGRvY3VtZW50LCBmYW1pbHlOYW1lLCBtX2xvY2FsbHlJbnN0YWxsZWRGb250
RmFjZXMpOworICAgICAgICAgICAgZmFtaWx5Rm9udEZhY2VzID0geyB9OworICAgICAgICB9CisK
KyAgICAgICAgZmFtaWx5Rm9udEZhY2VzLmFwcGVuZCgqbmV3RmFjZSk7CisgICAgfQorICAgIHJl
dHVybiAqdGhpczsKK30KKworYm9vbCBGb250RmFjZVNldDo6cmVtb3ZlKEZvbnRGYWNlKiByZW1v
dmVkRmFjZSkKK3sKKyAgICBpZiAoIXJlbW92ZWRGYWNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGZvciAoYXV0byYgZmFtaWx5TmFtZSA6IHJlbW92ZWRGYWNlLT5mYW1pbGllcygpKSB7
CisgICAgICAgIGF1dG8gaXRlciA9IG1fZm9udEZhY2VzLmZpbmQoZmFtaWx5TmFtZSk7CisgICAg
ICAgIEFTU0VSVChpdGVyICE9IG1fZm9udEZhY2VzLmVuZCgpKTsKKyAgICAgICAgaXRlci0+dmFs
dWUucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGb250RmFjZT4mIGl0ZW0pIHsKKyAg
ICAgICAgICAgIHJldHVybiBpdGVtLnB0cigpID09IHJlbW92ZWRGYWNlOworICAgICAgICB9KTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OmNsZWFyKCkK
K3sKKyAgICBtX2ZvbnRGYWNlcy5jbGVhcigpOworICAgIG1fbG9jYWxseUluc3RhbGxlZEZvbnRG
YWNlcy5jbGVhcigpOworfQorCitjbGFzcyBGb250RmFjZUNvbXBhcmF0b3IgeworcHVibGljOgor
ICAgIEZvbnRGYWNlQ29tcGFyYXRvcihGb250VHJhaXRzTWFzayBkZXNpcmVkVHJhaXRzTWFza0Zv
ckNvbXBhcmlzb24pCisgICAgICAgIDogbV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24o
ZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9kZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24g
JiBGb250V2VpZ2h0TWFzayk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEZv
bnRGYWNlJiBmaXJzdCwgY29uc3QgRm9udEZhY2UmIHNlY29uZCkKKyAgICB7CisgICAgICAgIEZv
bnRUcmFpdHNNYXNrIGZpcnN0VHJhaXRzTWFzayA9IGZpcnN0LnRyYWl0c01hc2soKTsKKyAgICAg
ICAgRm9udFRyYWl0c01hc2sgc2Vjb25kVHJhaXRzTWFzayA9IHNlY29uZC50cmFpdHNNYXNrKCk7
CisKKyAgICAgICAgYm9vbCBmaXJzdEhhc0Rlc2lyZWRTdHlsZSA9IGZpcnN0VHJhaXRzTWFzayAm
IG1fZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFN0eWxlTWFzazsKKyAgICAg
ICAgYm9vbCBzZWNvbmRIYXNEZXNpcmVkU3R5bGUgPSBzZWNvbmRUcmFpdHNNYXNrICYgbV9kZXNp
cmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250U3R5bGVNYXNrOworCisgICAgICAgIGlm
IChmaXJzdEhhc0Rlc2lyZWRTdHlsZSAhPSBzZWNvbmRIYXNEZXNpcmVkU3R5bGUpCisgICAgICAg
ICAgICByZXR1cm4gZmlyc3RIYXNEZXNpcmVkU3R5bGU7CisKKyAgICAgICAgaWYgKChtX2Rlc2ly
ZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmIEZvbnRTdHlsZUl0YWxpY01hc2spICYmICFmaXJz
dC5pc0xvY2FsRmFsbGJhY2soKSAmJiAhc2Vjb25kLmlzTG9jYWxGYWxsYmFjaygpKSB7CisgICAg
ICAgICAgICAvLyBQcmVmZXIgYSBmb250IHRoYXQgaGFzIGluZGljYXRlZCB0aGF0IGl0IGNhbiBv
bmx5IHN1cHBvcnQgaXRhbGljcyB0byBhIGZvbnQgdGhhdCBjbGFpbXMgdG8gc3VwcG9ydAorICAg
ICAgICAgICAgLy8gYWxsIHN0eWxlcy4gVGhlIHNwZWNpYWxpemVkIGZvbnQgaXMgbW9yZSBsaWtl
bHkgdG8gYmUgdGhlIG9uZSB0aGUgYXV0aG9yIHdhbnRzIHVzZWQuCisgICAgICAgICAgICBib29s
IGZpcnN0UmVxdWlyZXNJdGFsaWNzID0gKGZpcnN0VHJhaXRzTWFzayAmIEZvbnRTdHlsZUl0YWxp
Y01hc2spICYmICEoZmlyc3RUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9ybWFsTWFzayk7CisgICAg
ICAgICAgICBib29sIHNlY29uZFJlcXVpcmVzSXRhbGljcyA9IChzZWNvbmRUcmFpdHNNYXNrICYg
Rm9udFN0eWxlSXRhbGljTWFzaykgJiYgIShzZWNvbmRUcmFpdHNNYXNrICYgRm9udFN0eWxlTm9y
bWFsTWFzayk7CisgICAgICAgICAgICBpZiAoZmlyc3RSZXF1aXJlc0l0YWxpY3MgIT0gc2Vjb25k
UmVxdWlyZXNJdGFsaWNzKQorICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdFJlcXVpcmVzSXRh
bGljczsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZWNvbmRUcmFpdHNNYXNrICYgbV9kZXNp
cmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gJiBGb250V2VpZ2h0TWFzaykKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGZpcnN0VHJhaXRzTWFzayAmIG1fZGVzaXJlZFRy
YWl0c01hc2tGb3JDb21wYXJpc29uICYgRm9udFdlaWdodE1hc2spCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWNzczMt
Zm9udHMtMjAxMTEwMDQvI2ZvbnQtbWF0Y2hpbmctYWxnb3JpdGhtIHNheXMgOgorICAgICAgICAv
LyAgIC0gSWYgdGhlIGRlc2lyZWQgd2VpZ2h0IGlzIGxlc3MgdGhhbiA0MDAsIHdlaWdodHMgYmVs
b3cgdGhlIGRlc2lyZWQgd2VpZ2h0IGFyZSBjaGVja2VkIGluIGRlc2NlbmRpbmcgb3JkZXIgZm9s
bG93ZWQgYnkgd2VpZ2h0cyBhYm92ZSB0aGUgZGVzaXJlZCB3ZWlnaHQgaW4gYXNjZW5kaW5nIG9y
ZGVyIHVudGlsIGEgbWF0Y2ggaXMgZm91bmQuCisgICAgICAgIC8vICAgLSBJZiB0aGUgZGVzaXJl
ZCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIDUwMCwgd2VpZ2h0cyBhYm92ZSB0aGUgZGVzaXJlZCB3
ZWlnaHQgYXJlIGNoZWNrZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGZvbGxvd2VkIGJ5IHdlaWdodHMg
YmVsb3cgdGhlIGRlc2lyZWQgd2VpZ2h0IGluIGRlc2NlbmRpbmcgb3JkZXIgdW50aWwgYSBtYXRj
aCBpcyBmb3VuZC4KKyAgICAgICAgLy8gICAtIElmIHRoZSBkZXNpcmVkIHdlaWdodCBpcyA0MDAs
IDUwMCBpcyBjaGVja2VkIGZpcnN0IGFuZCB0aGVuIHRoZSBydWxlIGZvciBkZXNpcmVkIHdlaWdo
dHMgbGVzcyB0aGFuIDQwMCBpcyB1c2VkLgorICAgICAgICAvLyAgIC0gSWYgdGhlIGRlc2lyZWQg
d2VpZ2h0IGlzIDUwMCwgNDAwIGlzIGNoZWNrZWQgZmlyc3QgYW5kIHRoZW4gdGhlIHJ1bGUgZm9y
IGRlc2lyZWQgd2VpZ2h0cyBsZXNzIHRoYW4gNDAwIGlzIHVzZWQuCisKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGZhbGxiYWNrUnVsZVNldHMgPSA5OworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgcnVsZXNQZXJTZXQgPSA4OworICAgICAgICBzdGF0aWMgY29uc3QgRm9udFRy
YWl0c01hc2sgd2VpZ2h0RmFsbGJhY2tSdWxlU2V0c1tmYWxsYmFja1J1bGVTZXRzXVtydWxlc1Bl
clNldF0gPSB7CisgICAgICAgICAgICB7IEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MzAw
TWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NjAw
TWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAw
TWFzayB9LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDMwME1h
c2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDYwME1h
c2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1h
c2sgfSwKKyAgICAgICAgICAgIHsgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNr
LCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ2MDBNYXNr
LCBGb250V2VpZ2h0NzAwTWFzaywgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ5MDBNYXNr
IH0sCisgICAgICAgICAgICB7IEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0MzAwTWFzaywg
Rm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrLCBGb250V2VpZ2h0NjAwTWFzaywg
Rm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzayB9
LAorICAgICAgICAgICAgeyBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdlaWdodDMwME1hc2ssIEZv
bnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzaywgRm9udFdlaWdodDYwME1hc2ssIEZv
bnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0ODAwTWFzaywgRm9udFdlaWdodDkwME1hc2sgfSwK
KyAgICAgICAgICAgIHsgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250
V2VpZ2h0OTAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250
V2VpZ2h0MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0sCisg
ICAgICAgICAgICB7IEZvbnRXZWlnaHQ4MDBNYXNrLCBGb250V2VpZ2h0OTAwTWFzaywgRm9udFdl
aWdodDYwME1hc2ssIEZvbnRXZWlnaHQ1MDBNYXNrLCBGb250V2VpZ2h0NDAwTWFzaywgRm9udFdl
aWdodDMwME1hc2ssIEZvbnRXZWlnaHQyMDBNYXNrLCBGb250V2VpZ2h0MTAwTWFzayB9LAorICAg
ICAgICAgICAgeyBGb250V2VpZ2h0OTAwTWFzaywgRm9udFdlaWdodDcwME1hc2ssIEZvbnRXZWln
aHQ2MDBNYXNrLCBGb250V2VpZ2h0NTAwTWFzaywgRm9udFdlaWdodDQwME1hc2ssIEZvbnRXZWln
aHQzMDBNYXNrLCBGb250V2VpZ2h0MjAwTWFzaywgRm9udFdlaWdodDEwME1hc2sgfSwKKyAgICAg
ICAgICAgIHsgRm9udFdlaWdodDgwME1hc2ssIEZvbnRXZWlnaHQ3MDBNYXNrLCBGb250V2VpZ2h0
NjAwTWFzaywgRm9udFdlaWdodDUwME1hc2ssIEZvbnRXZWlnaHQ0MDBNYXNrLCBGb250V2VpZ2h0
MzAwTWFzaywgRm9udFdlaWdodDIwME1hc2ssIEZvbnRXZWlnaHQxMDBNYXNrIH0KKyAgICAgICAg
fTsKKworICAgICAgICB1bnNpZ25lZCBydWxlU2V0SW5kZXggPSAwOworICAgICAgICBmb3IgKDsg
IShtX2Rlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiAmICgxIDw8IChGb250V2VpZ2h0MTAw
Qml0ICsgcnVsZVNldEluZGV4KSkpOyBydWxlU2V0SW5kZXgrKykgeyB9CisKKyAgICAgICAgY29u
c3QgRm9udFRyYWl0c01hc2sqIHdlaWdodEZhbGxiYWNrUnVsZSA9IHdlaWdodEZhbGxiYWNrUnVs
ZVNldHNbcnVsZVNldEluZGV4XTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1
bGVzUGVyU2V0OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChzZWNvbmRUcmFpdHNNYXNrICYgd2Vp
Z2h0RmFsbGJhY2tSdWxlW2ldKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChmaXJzdFRyYWl0c01hc2sgJiB3ZWlnaHRGYWxsYmFja1J1bGVbaV0pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCitwcml2YXRlOgorICAgIEZvbnRUcmFpdHNNYXNrIG1fZGVzaXJlZFRyYWl0
c01hc2tGb3JDb21wYXJpc29uOworfTsKKworT3B0aW9uYWw8Q1NTU2VnbWVudGVkRm9udEZhY2U+
IEZvbnRGYWNlU2V0OjpnZXRGb250RmFjZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgRm9u
dFRyYWl0c01hc2sgdHJhaXRzTWFzaykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9mb250RmFj
ZXMuZmluZChmYW1pbHkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2ZvbnRGYWNlcy5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgYXV0byYgZmFtaWx5Rm9udEZhY2VzID0gaXRl
cmF0b3ItPnZhbHVlOworCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGNhY2hlZC4KKyAg
ICBDU1NTZWdtZW50ZWRGb250RmFjZSBmYWNlOworCisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Rm9udEZhY2U+LCAzMj4gY2FuZGlkYXRlRm9udEZhY2VzOworICAgIGZvciAoaW50
IGkgPSBmYW1pbHlGb250RmFjZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAg
Rm9udEZhY2UmIGNhbmRpZGF0ZSA9IGZhbWlseUZvbnRGYWNlc1tpXTsKKyAgICAgICAgdW5zaWdu
ZWQgY2FuZGlkYXRlVHJhaXRzTWFzayA9IGNhbmRpZGF0ZS50cmFpdHNNYXNrKCk7CisgICAgICAg
IGlmICgodHJhaXRzTWFzayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spICYmICEoY2FuZGlkYXRlVHJh
aXRzTWFzayAmIEZvbnRTdHlsZU5vcm1hbE1hc2spKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGNhbmRpZGF0ZUZvbnRGYWNlcy5hcHBlbmQoY2FuZGlkYXRlKTsKKyAgICB9CisKKyAg
ICBhdXRvIGxvY2FsSXRlcmF0b3IgPSBtX2xvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMuZmluZChm
YW1pbHkpOworICAgIGlmIChsb2NhbEl0ZXJhdG9yICE9IG1fbG9jYWxseUluc3RhbGxlZEZvbnRG
YWNlcy5lbmQoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGxvY2FsSXRlcmF0
b3ItPnZhbHVlKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjYW5kaWRhdGVUcmFpdHNNYXNrID0g
Y2FuZGlkYXRlLT50cmFpdHNNYXNrKCk7CisgICAgICAgICAgICBpZiAoKHRyYWl0c01hc2sgJiBG
b250U3R5bGVOb3JtYWxNYXNrKSAmJiAhKGNhbmRpZGF0ZVRyYWl0c01hc2sgJiBGb250U3R5bGVO
b3JtYWxNYXNrKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhbmRp
ZGF0ZUZvbnRGYWNlcy5hcHBlbmQoY2FuZGlkYXRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHN0ZDo6c3RhYmxlX3NvcnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZv
bnRGYWNlcy5lbmQoKSwgRm9udEZhY2VDb21wYXJhdG9yKHRyYWl0c01hc2spKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZUZvbnRGYWNlcykKKyAgICAgICAgZmFjZS5hcHBl
bmRGb250RmFjZShjYW5kaWRhdGUuZ2V0KCkpOworCisgICAgcmV0dXJuIFdURk1vdmUoZmFjZSk7
Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBzdHlsZVRyYWl0c01hc2tGcm9tU3R5bGVQcm9wZXJ0aWVz
KFN0eWxlUHJvcGVydGllcyYgc3R5bGVQcm9wZXJ0aWVzKQoreworICAgIFJlZlB0cjxDU1NWYWx1
ZT4gZm9udFN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlGb250U3R5bGUpOworICAgIGlmICghZm9udFN0eWxlIHx8ICFpczxDU1NQcmltaXRpdmVW
YWx1ZT4oKmZvbnRTdHlsZSkpCisgICAgICAgIHJldHVybiBGb250U3R5bGVOb3JtYWxNYXNrOwor
CisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkuZ2V0
VmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICAgICAgcmV0dXJuIEZv
bnRTdHlsZU5vcm1hbE1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVJdGFs
aWM6CisgICAgY2FzZSBDU1NWYWx1ZU9ibGlxdWU6CisgICAgICAgIHJldHVybiBGb250U3R5bGVJ
dGFsaWNNYXNrOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEZvbnRTdHlsZU5vcm1hbE1hc2s7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBGb250U3R5bGVOb3JtYWxN
YXNrOworfQorCitzdGF0aWMgdW5zaWduZWQgd2VpZ2h0VHJhaXRzTWFza0Zyb21TdHlsZVByb3Bl
cnRpZXMoU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZVByb3BlcnRpZXMpCit7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiBmb250V2VpZ2h0ID0gc3R5bGVQcm9wZXJ0aWVzLmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0KTsKKyAgICBpZiAoIWZvbnRXZWlnaHQgfHwgIWlzPENTU1By
aW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkpCisgICAgICAgIHJldHVybiBGb250V2VpZ2h0NDAw
TWFzazsKKworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2Vp
Z2h0KS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlQm9sZDoKKyAgICBjYXNlIENT
U1ZhbHVlNzAwOgorICAgICAgICByZXR1cm4gRm9udFdlaWdodDcwME1hc2s7CisgICAgY2FzZSBD
U1NWYWx1ZU5vcm1hbDoKKyAgICBjYXNlIENTU1ZhbHVlNDAwOgorICAgICAgICByZXR1cm4gRm9u
dFdlaWdodDQwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTkwMDoKKyAgICAgICAgcmV0dXJuIEZv
bnRXZWlnaHQ5MDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWU4MDA6CisgICAgICAgIHJldHVybiBG
b250V2VpZ2h0ODAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlNjAwOgorICAgICAgICByZXR1cm4g
Rm9udFdlaWdodDYwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTUwMDoKKyAgICAgICAgcmV0dXJu
IEZvbnRXZWlnaHQ1MDBNYXNrOworICAgIGNhc2UgQ1NTVmFsdWUzMDA6CisgICAgICAgIHJldHVy
biBGb250V2VpZ2h0MzAwTWFzazsKKyAgICBjYXNlIENTU1ZhbHVlMjAwOgorICAgICAgICByZXR1
cm4gRm9udFdlaWdodDIwME1hc2s7CisgICAgY2FzZSBDU1NWYWx1ZTEwMDoKKyAgICAgICAgcmV0
dXJuIEZvbnRXZWlnaHQxMDBNYXNrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRm9udFdlaWdodDQwME1hc2s7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBGb250V2VpZ2h0NDAwTWFzazsKK30K
Kworc3RhdGljIGlubGluZSBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrRnJvbVN0eWxlUHJvcGVy
dGllcyhTdHlsZVByb3BlcnRpZXMmIHN0eWxlUHJvcGVydGllcykKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KHN0eWxlVHJhaXRzTWFza0Zyb21TdHlsZVByb3BlcnRp
ZXMoc3R5bGVQcm9wZXJ0aWVzKSB8IHdlaWdodFRyYWl0c01hc2tGcm9tU3R5bGVQcm9wZXJ0aWVz
KHN0eWxlUHJvcGVydGllcykpOworfQorCit2b2lkIEZvbnRGYWNlU2V0OjpzZWdtZW50ZWRGb250
RmFjZXMoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoQ1NTU2VnbWVudGVkRm9udEZhY2UmKT4gY2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IFdl
IGlnbm9yZSB0aGUgdGV4dCBzdHJpbmcuCisKKyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlLnB0cigpLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnQsIHRy
dWUsIENTU1N0cmljdE1vZGUsIG51bGxwdHIpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVy
cm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrID0g
dHJhaXRzTWFza0Zyb21TdHlsZVByb3BlcnRpZXMoc3R5bGUuZ2V0KCkpOworCisgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
Rm9udEZhbWlseSk7CisgICAgaWYgKCF2YWx1ZSB8fCAhaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZS5n
ZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ZhbHVlTGlzdCYgZmFtaWx5TGlzdCA9
IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKTsKKyAgICBpZiAoIWZhbWlseUxpc3QubGVu
Z3RoKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgaXRlbSA6IGZhbWlseUxp
c3QpIHsKKyAgICAgICAgU3RyaW5nIGZhbWlseU5hbWUgPSBDU1NGb250U2VsZWN0b3I6OmZhbWls
eU5hbWVGcm9tUHJpbWl0aXZlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgp
KSk7CisgICAgICAgIGlmIChmYW1pbHlOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoYXV0byBzZWdtZW50ZWRGb250RmFjZSA9IGdldEZvbnRGYWNlKGZh
bWlseU5hbWUsIHRyYWl0c01hc2spKQorICAgICAgICAgICAgY2FsbGJhY2soc2VnbWVudGVkRm9u
dEZhY2UudmFsdWUoKSk7CisgICAgfQorfQorCit2b2lkIEZvbnRGYWNlU2V0Ojpsb2FkKGNvbnN0
IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9t
aXNlKQoreworICAgIFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiBmYWNlczsKKyAgICBzZWdtZW50
ZWRGb250RmFjZXMoZm9udCwgdGV4dCwgWyZdKENTU1NlZ21lbnRlZEZvbnRGYWNlJiBzZWdtZW50
ZWRGb250RmFjZSkgeworICAgICAgICBmb3IgKGF1dG8mIGZhY2UgOiBzZWdtZW50ZWRGb250RmFj
ZS5mYWNlcygpKQorICAgICAgICAgICAgZmFjZXMuYXBwZW5kKGZhY2UucHRyKCkpOworICAgICAg
ICBzZWdtZW50ZWRGb250RmFjZS5sb2FkKCk7CisgICAgfSk7CisgICAgYXV0byBsb2FkaW5nSW5m
byA9IExvYWRpbmdJbmZvOjpjcmVhdGUocHJvbWlzZSwgV1RGTW92ZShmYWNlcykpOworICAgIGZv
ciAoYXV0byYgZmFjZSA6IGxvYWRpbmdJbmZvLT5yZXN1bHQpIHsKKyAgICAgICAgYXV0byYgdmVj
dG9yID0gbV9sb2FkaW5nSW5mby5hZGQoZmFjZS5nZXQoKSwgVmVjdG9yPFJlZlB0cjxMb2FkaW5n
SW5mbz4+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgdmVjdG9yLmFwcGVuZChsb2FkaW5n
SW5mby5jb3B5UmVmKCkpOworICAgIH0KK30KKworYm9vbCBGb250RmFjZVNldDo6Y2hlY2soY29u
c3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgYm9vbCBsb2FkZWQg
PSB0cnVlOworICAgIHNlZ21lbnRlZEZvbnRGYWNlcyhmb250LCB0ZXh0LCBbJl0oY29uc3QgQ1NT
U2VnbWVudGVkRm9udEZhY2UmIHNlZ21lbnRlZEZvbnRGYWNlKSB7CisgICAgICAgIGxvYWRlZCAm
PSBzZWdtZW50ZWRGb250RmFjZS5hbGxGb250RmFjZXNBcmVMb2FkZWQoKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gbG9hZGVkOworfQorCitTdHJpbmcgRm9udEZhY2VTZXQ6OnN0YXR1cygpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChtX3N0YXR1cykgeworICAgIGNhc2UgU3RhdHVzOjpMb2FkaW5nOgor
ICAgICAgICByZXR1cm4gU3RyaW5nKCJsb2FkaW5nIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgY2FzZSBTdGF0dXM6OkxvYWRlZDoKKyAgICAgICAgcmV0dXJuIFN0cmluZygi
bG9hZGVkIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoImxvYWRpbmciLCBTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKwordm9pZCBGb250RmFjZVNldDo6a2ljayhGb250RmFj
ZSYgZmFjZSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX2xvYWRpbmdJbmZvLmZpbmQoJmZhY2UpOwor
CisgICAgQVNTRVJUKGZhY2Uuc3RhdHVzRW51bSgpICE9IEZvbnRGYWNlOjpTdGF0dXM6OlVubG9h
ZGVkKTsKKworICAgIGlmIChpdGVyID09IG1fbG9hZGluZ0luZm8uZW5kKCkgfHwgZmFjZS5zdGF0
dXNFbnVtKCkgPT0gRm9udEZhY2U6OlN0YXR1czo6TG9hZGluZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byYgaW5mb3MgPSBpdGVyLT52YWx1ZTsKKworICAgIHN3aXRjaCAoZmFjZS5zdGF0
dXNFbnVtKCkpIHsKKyAgICBjYXNlIEZvbnRGYWNlOjpTdGF0dXM6OkxvYWRlZDoKKyAgICAgICAg
Zm9yIChhdXRvJiBpbmZvIDogaW5mb3MpIHsKKyAgICAgICAgICAgIGlmICghaW5mby0+aGFzT25l
UmVmKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpbmZvLT5wcm9t
aXNlLnJlc29sdmUoaW5mby0+cmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZvbnRGYWNlOjpTdGF0dXM6OkVycm9yOgorICAgICAgICBmb3IgKGF1dG8mIGluZm8g
OiBpbmZvcykKKyAgICAgICAgICAgIGluZm8tPnByb21pc2UucmVqZWN0PERPTUNvcmVFeGNlcHRp
b24mPihET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKE5F
VFdPUktfRVJSKSkuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgbV9sb2FkaW5nSW5mby5yZW1vdmUo
aXRlcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNl
dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMzkxZDA0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBGb250RmFjZVNldF9oCisjZGVmaW5lIEZvbnRGYWNlU2V0X2gKKworI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRm9u
dEZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NGb250U2VsZWN0b3I7Citj
bGFzcyBDU1NTZWdtZW50ZWRGb250RmFjZTsKK2NsYXNzIERlZmVycmVkV3JhcHBlcjsKK2NsYXNz
IERPTUNvcmVFeGNlcHRpb247CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFz
cyBGb250RmFjZVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0PiwgcHVi
bGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qgewor
cHVibGljOgorICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNvcmVFeGNl
cHRpb24mPiBQcm9taXNlOworCisgICAgc3RhdGljIFJlZjxGb250RmFjZVNldD4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0aWFs
RmFjZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250RmFjZVNldChk
b2N1bWVudCwgaW5pdGlhbEZhY2VzKSk7CisgICAgfQorCisgICAgRm9udEZhY2VTZXQmIGFkZChG
b250RmFjZSopOworICAgIGJvb2wgcmVtb3ZlKEZvbnRGYWNlKik7CisgICAgdm9pZCBjbGVhcigp
OworCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgRGVmZXJyZWRXcmFwcGVyJiYg
cHJvbWlzZSkgeyBsb2FkKGZvbnQsIFN0cmluZygiICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsgfQorICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcm
IGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSk7CisK
KyAgICBib29sIGNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiA9IFN0cmlu
ZygiICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKworICAgIFN0cmluZyBzdGF0
dXMoKSBjb25zdDsKKworICAgIGNvbnN0IE9wdGlvbmFsPFByb21pc2U+JiBwcm9taXNlKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9taXNlOyB9CisKKyAgICB1c2luZyBSZWZDb3VudGVkPEZvbnRGYWNl
U2V0Pjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+OjpkZXJlZjsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworCisgICAgZW51bSBj
bGFzcyBTdGF0dXMgeworICAgICAgICBMb2FkaW5nLAorICAgICAgICBMb2FkZWQKKyAgICB9Owor
CisgICAgc3RydWN0IExvYWRpbmdJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8TG9hZGluZ0luZm8+
IHsKKyAgICAgICAgc3RhdGljIFJlZjxMb2FkaW5nSW5mbz4gY3JlYXRlKERlZmVycmVkV3JhcHBl
ciBwcm9taXNlLCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mJiByZXN1bHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvYWRpbmdJbmZvKHByb21pc2UsIFdU
Rk1vdmUocmVzdWx0KSkpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBMb2Fk
aW5nSW5mbyhEZWZlcnJlZFdyYXBwZXIgcHJvbWlzZSwgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+
JiYgcmVzdWx0KQorICAgICAgICAgICAgOiBwcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCisgICAg
ICAgICAgICAsIHJlc3VsdChXVEZNb3ZlKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgcHVibGljOgorICAgICAgICBEZWZlcnJlZFdyYXBwZXIgcHJvbWlzZTsKKyAgICAgICAg
VmVjdG9yPFJlZlB0cjxGb250RmFjZT4+IHJlc3VsdDsKKyAgICB9OworCisgICAgRm9udEZhY2VT
ZXQoRG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mKTsKKworICAgIC8v
IEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJGb250RmFjZVNldCI7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRm9udEZhY2VT
ZXRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgT3B0
aW9uYWw8Q1NTU2VnbWVudGVkRm9udEZhY2U+IGdldEZvbnRGYWNlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5LCBGb250VHJhaXRzTWFzayk7CisgICAgdm9pZCBzZWdtZW50ZWRGb250RmFjZXMo
Y29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChDU1NTZWdtZW50ZWRGb250RmFjZSYpPik7CisKKyAgICB2b2lkIGtpY2soRm9udEZhY2UmIGZv
bnRGYWNlKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZvbnRGYWNlPj4sIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9mb250RmFjZXM7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxSZWY8Rm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2xvY2Fs
bHlJbnN0YWxsZWRGb250RmFjZXM7CisgICAgSGFzaE1hcDxSZWZQdHI8Rm9udEZhY2U+LCBWZWN0
b3I8UmVmUHRyPExvYWRpbmdJbmZvPj4+IG1fbG9hZGluZ0luZm87CisgICAgU3RhdHVzIG1fc3Rh
dHVzIHsgU3RhdHVzOjpMb2FkaW5nIH07CisgICAgT3B0aW9uYWw8UHJvbWlzZT4gbV9wcm9taXNl
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YzY1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitlbnVtIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyB7CisgICAgImxvYWRpbmciLAorICAg
ICJsb2FkZWQiCit9OworCitbCisgICAgR2xvYmFsQ29udGV4dD1ET01XaW5kb3csCisgICAgQWN0
aXZlRE9NT2JqZWN0LAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCisgICAgQ29u
c3RydWN0b3Ioc2VxdWVuY2U8Rm9udEZhY2U+IGluaXRpYWxGYWNlcyksCisgICAgRXZlbnRUYXJn
ZXQKK10gaW50ZXJmYWNlIEZvbnRGYWNlU2V0IHsKKyAgICBGb250RmFjZVNldCBhZGQoRm9udEZh
Y2UgZm9udCk7CisgICAgW0ltcGxlbWVudGVkQXM9cmVtb3ZlXSBib29sZWFuIGRlbGV0ZShGb250
RmFjZSBmb250KTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9ubG9hZGluZzsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZ2RvbmU7
CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmxvYWRpbmdlcnJvcjsKKworICAgIFByb21p
c2UgbG9hZChET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOworCisgICAg
Ym9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOwor
CisgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgcmVhZHk7CisKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1czsKK307ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMTE1OTFk
Ny4uOGFmOWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02Njk3LDE0ICs2Njk3LDEw
IEBAIERvY3VtZW50JiBEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpCiB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotUmVmUHRyPEZvbnRMb2FkZXI+IERv
Y3VtZW50Ojpmb250cygpCitGb250RmFjZVNldCYgRG9jdW1lbnQ6OmZvbnRzKCkKIHsKLSAgICBp
ZiAoIW1fZm9udGxvYWRlcikKLSAgICAgICAgbV9mb250bG9hZGVyID0gRm9udExvYWRlcjo6Y3Jl
YXRlKHRoaXMpOwotICAgIHJldHVybiBtX2ZvbnRsb2FkZXI7CisgICAgcmV0dXJuIGZvbnRTZWxl
Y3RvcigpLmZvbnRGYWNlU2V0KCk7CiB9Ci0jZW5kaWYKIAogZmxvYXQgRG9jdW1lbnQ6OmRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2I2MmZlOC4u
YWNkZjRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIwNSw5ICsyMDUsNyBAQCBjbGFzcyBU
ZXh0QXV0b3NpemVyOwogY2xhc3MgRE9NU2VjdXJpdHlQb2xpY3k7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShGT05UX0xPQURfRVZFTlRTKQotY2xhc3MgRm9udExvYWRlcjsKLSNlbmRpZgorY2xhc3Mg
Rm9udEZhY2VTZXQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTEyNzQsOSAr
MTI3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgU2VjdXJpdHlP
cmlnaW4qIHRvcE9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCi0jaWYgRU5BQkxFKEZP
TlRfTE9BRF9FVkVOVFMpCi0gICAgUmVmUHRyPEZvbnRMb2FkZXI+IGZvbnRzKCk7Ci0jZW5kaWYK
KyAgICBGb250RmFjZVNldCYgZm9udHMoKTsKIAogICAgIHZvaWQgZW5zdXJlUGx1Z0luc0luamVj
dGVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpOwogCkBAIC0xNzU1LDEwICsxNzUxLDYgQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOwogCi0j
aWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgUmVmUHRyPEZvbnRMb2FkZXI+IG1fZm9u
dGxvYWRlcjsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgUmVmUHRyPEpT
Qzo6SW5wdXRDdXJzb3I+IG1faW5wdXRDdXJzb3I7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCmluZGV4IDYxYzY3YzQuLmRhNmVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAt
MjY1LDcgKzI2NSw3IEBACiAgICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBET01OYW1lZEZs
b3dDb2xsZWN0aW9uIHdlYmtpdEdldE5hbWVkRmxvd3MoKTsKIAogI2lmIGRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAotICAgIFtDb25kaXRpb25hbD1G
T05UX0xPQURfRVZFTlRTXSByZWFkb25seSBhdHRyaWJ1dGUgRm9udExvYWRlciBmb250czsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXQgZm9udHM7CiAjZW5kaWYKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICYmIEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0NjkwMGVjLi44NWIxMGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgbWFjcm8obG9hZGVuZCkgXAogICAgIG1hY3JvKGxvYWRpbmcpIFwKICAgICBtYWNybyhsb2Fk
aW5nZG9uZSkgXAorICAgIG1hY3JvKGxvYWRpbmdlcnJvcikgXAogICAgIG1hY3JvKGxvYWRzdGFy
dCkgXAogICAgIG1hY3JvKG1hcmspIFwKICAgICBtYWNybyhtZXNzYWdlKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBhYjRmZWRiLi40MzBiOGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTksNyArOSw3IEBAIERP
TUFwcGxpY2F0aW9uQ2FjaGUKIERPTVdpbmRvdwogRXZlbnRTb3VyY2UKIEZpbGVSZWFkZXIKLUZv
bnRMb2FkZXIgY29uZGl0aW9uYWw9Rk9OVF9MT0FEX0VWRU5UUworRm9udEZhY2VTZXQKIElEQkRh
dGFiYXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQk9wZW5EQlJlcXVlc3QgY29u
ZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVE
X0RBVEFCQVNFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271512</attachid>
            <date>2016-02-16 17:32:30 -0800</date>
            <delta_ts>2016-02-16 19:57:27 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-153348-20160216173210.patch</filename>
            <type>text/plain</type>
            <size>73630</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE1MTI3MDM3YTlkOTZi
YWNkODRhODg1NWE4Mjg4ZThiMGUxYmU0NS4uYmY4Y2M3NGE3MTMwNWZlMGIxYTRiYmExMzM4NDNj
YzYzZWI0MzU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wMi0xNiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtGb250IExv
YWRpbmddIEltcGxlbWVudCBGb250RmFjZVNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0ZvbnRGYWNlU2V0OjpyZWFkeSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0ZvbnRGYWNlU2V0OjplbnRyaWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRm9udEZhY2VTZXQ6OmtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNGb250RmFj
ZVNldDo6dmFsdWVzKToKKyAgICAgICAgKiBjc3MvQ1NTQWxsSW5PbmUuY3BwOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Q1NT
Rm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFkZENsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2U6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFkZGVk
VG9TZWdtZW50ZWRGb250RmFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZTo6cmVtb3ZlZEZyb21TZWdtZW50ZWRGb250RmFjZSk6IERlbGV0ZWQuCisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpDbGllbnQ6On5DbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OkNsaWVudDo6a2ljayk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZTo6Q2xpZW50OjpzdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udEZhY2U6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VD
bGllbnQ6On5DU1NGb250RmFjZUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6
Q1NTRm9udEZhY2VTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6On5DU1NG
b250RmFjZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6aW5jcmVtZW50
QWN0aXZlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmRlY3JlbWVu
dEFjdGl2ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpoYXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZVNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RGYW1p
bGllcyk6CisgICAgICAgIChXZWJDb3JlOjpmYW1pbGllc0ludGVyc2VjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNldDo6bWF0Y2hpbmdGYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZVNldDo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNl
dDo6Y2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OnN0YXRlQ2hhbmdl
ZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2VTZXRDbGllbnQ6On5DU1NGb250RmFjZVNldENsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNldDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6c3RhdHVzKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpyZWdpc3RlckxvY2FsRm9udEZhY2Vz
Rm9yRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZh
Y2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmZhbWlseU5hbWVGcm9tUHJpbWl0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6a2ljayk6IERlbGV0ZWQu
CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFj
ZTo6fkNTU1NlZ21lbnRlZEZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRl
ZEZvbnRGYWNlOjphcHBlbmRGb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50
ZWRGb250RmFjZTo6a2ljayk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFj
ZTo6Zm9udExvYWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1NlZ21lbnRlZEZvbnRG
YWNlLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRGYWNlOjpGb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6fkZvbnRGYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEZhY2U6OmtpY2spOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250RmFj
ZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Rm9u
dEZhY2VTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6On5Gb250RmFjZVNldCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6OlBlbmRpbmdQcm9taXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpQZW5kaW5nUHJvbWlzZTo6flBlbmRpbmdQcm9t
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpoYXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEZhY2VTZXQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZVNldDo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Y2hlY2spOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RmFjZVNldDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFjZVNldDo6c3RhcnRlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2VTZXQ6OmNvbXBsZXRlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZh
Y2VTZXQ6OmZhY2VGaW5pc2hlZCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb250RmFjZVNldDo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6
Y2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNyZWF0ZUl0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpQZW5kaW5nUHJvbWlzZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRXZl
bnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTYt
MDItMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Um9sbG91dCByMTg4NjU5LiBUaGlzIGJyb2tlIHNjcm9sbGluZyBvZiBpZnJhbWVzIGFuZCBvdmVy
ZmxvdyB3aGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDg5ZmJjODIyMWRhOThjNDgxZmYwNDAw
ZDY1ZWVlMDRmN2UyNTc2ZjMuLjQ1YTVhMzQ5ZjU3MTFmZWI0N2E2NzdhNmE2YTQyZTc5MTZiOGNm
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMzEsNiArMzMxLDcgQEAgc2V0KFdlYkNvcmVf
Tk9OX1NWR19JRExfRklMRVMKICAgICBjc3MvQ291bnRlci5pZGwKICAgICBjc3MvRE9NV2luZG93
Q1NTLmlkbAogICAgIGNzcy9Gb250RmFjZS5pZGwKKyAgICBjc3MvRm9udEZhY2VTZXQuaWRsCiAg
ICAgY3NzL0ZvbnRMb2FkZXIuaWRsCiAgICAgY3NzL01lZGlhTGlzdC5pZGwKICAgICBjc3MvTWVk
aWFRdWVyeUxpc3QuaWRsCkBAIC0xMTEwLDYgKzExMTEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNGb250
RmFjZUN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwCkBAIC0xMzAyLDggKzEzMDQsMTAgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAogICAgIGNzcy9DU1NEZWZhdWx0U3R5bGVT
aGVldHMuY3BwCiAgICAgY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCisgICAgY3NzL0ZvbnRG
YWNlU2V0LmNwcAogICAgIGNzcy9Gb250RmFjZS5jcHAKICAgICBjc3MvQ1NTRm9udEZhY2UuY3Bw
CisgICAgY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAogICAgIGNzcy9DU1NGb250RmFjZUxvYWRFdmVu
dC5jcHAKICAgICBjc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAogICAgIGNzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM5NmMzODFjNGNlMDg0
ZjgyYzJhZmUzZDBhZDI3NGNiYWMxNzljNjkuLmEzOTBiNDc5ZTEwODkzZDVmMGIxYTcxN2JjYzc0
ZGM1N2IyZDQ2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjQyLDYgKzI0
Miw3IEBAIE5PTl9TVkdfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvY3NzL0NvdW50
ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01XaW5kb3dDU1MuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNlU2V0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRm9udExvYWRlci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvY3NzL01lZGlhTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL01lZGlhUXVlcnlMaXN0
LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agppbmRleCA3NGU1MDU2MDg5MWQ1ZmJhODU5MTMxZjI2MmU4ZTA3YWZiMmE1NjRhLi4yNWYzYzU0
ODZhN2JiYWEwNTQ0OGViZGE1NGFiYjQ2MzUzYTc1ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTE5NzEsNiArMTk3MSwyMCBAQAog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRm9udEZhY2VTZXQuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZvbnRGYWNlLmNwcCI+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC05NjExLDYgKzk2MjUsMjAgQEAK
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcRm9udEZhY2VT
ZXQuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xGb250
RmFjZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpA
QCAtOTYyNSw2ICs5NjUzLDIwIEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cY3NzXENTU0ZvbnRGYWNlU2V0LmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZhY2UuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3NzQwLDYgKzE3NzgyLDIwIEBACiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNGb250
RmFjZVNldEN1c3RvbS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcSlNGb250RmFjZUN1c3RvbS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTk5ODcsNiArMjAwNDMsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVJlYWRlci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
RmlsZVJlYWRlclN5bmMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0ZvbnRMb2FkZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZvbnRGYWNlU2V0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTR2FtZXBh
ZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTR2FtZXBhZEJ1dHRvbi5oIiAvPgpAQCAtMjE3MDUsNyArMjE3NjIsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0N1cnNvckltYWdlVmFsdWUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NGaWx0ZXJJbWFnZVZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZhY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGNzc1xDU1NGb250RmFjZVNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cY3NzXEZvbnRGYWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxj
c3NcRm9udEZhY2VTZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NG
b250RmFjZUxvYWRFdmVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENT
U0ZvbnRGYWNlUnVsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0Zv
bnRGYWNlU291cmNlLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZDg0ZDcyMWM1NDE5NjNmODEzNzgy
OTVkN2VhMDE4OWU5NGJlY2E4Yi4uMjNlYjdjMmVjZTY0MDEwNDRmMjM0NGY2NDRhYTc5YmZlOWM1
ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjA4NCw5ICsyMDg0LDE1IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxjc3NcQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAiPgogICAgICAgPEZpbHRl
cj5jc3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGNzc1xGb250RmFjZVNldC5jcHAiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xGb250RmFjZS5j
cHAiPgogICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xDU1NGb250RmFjZVNldC5jcHAiPgorICAgICAgPEZp
bHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGNzc1xDU1NGb250RmFjZS5jcHAiPgogICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTQyNjIsNiArNDI2OCw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcCI+CiAgICAgICA8
RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0ZvbnRGYWNlQ3VzdG9tLmNwcCI+
CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBA
IC01Mjc0LDYgKzUyODMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRmlsZVJlYWRlclN5bmMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZl
ZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZvbnRGYWNlU2V0LmNwcCI+CisgICAgICA8
RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZS5jcHAi
PgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgpAQCAtOTA2Nyw5ICs5MDc5LDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3Nc
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcRm9udEZhY2VTZXQu
aCI+CisgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXEZvbnRGYWNlLmgiPgogICAgICAgPEZpbHRlcj5jc3M8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNz
c1xDU1NGb250RmFjZVNldC5oIj4KKyAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZhY2UuaCI+
CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTI3MDIs
NiArMTI3MjAsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTRmlsZVJlYWRlclN5bmMuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2Vz
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZVNldC5oIj4KKyAgICAgIDxGaWx0ZXI+RGVy
aXZlZFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZvbnRGYWNlLmgiPgogICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4NGY0
NjIzMjFhYzliNzE4N2U5ZjM1MWM0OGNkYjc0YWVkMzZkNGYuLmNhOGM0YzA5OWFkMDM3Y2ZhZjZi
MDY2OTFmNzdhM2Y4MGNlZGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1MCw2ICs5NTAsMTEgQEAKIAkJMUMyMUU1N0Mx
ODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElP
U3VyZmFjZVBvb2wuY3BwICovOyB9OwogCQkxQzIxRTU3RDE4M0VEMUZGMDAxQzI4OUQgLyogSU9T
dXJmYWNlUG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMyMUU1N0IxODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzI0MTdCQTE5OTJDMDQx
MDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxp
bmdEb3RAM3gucG5nICovOyB9OworCQkxQzI0RUVBNDFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZh
Y2VTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUMyNEVFQTIxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJMUMy
NEVFQTUxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI0RUVBMzFDNzI5Q0U0MDA4MEY4RkMgLyog
Rm9udEZhY2VTZXQuaCAqLzsgfTsKKwkJMUMyNEVFQTgxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9u
dEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMyNEVFQTYxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuY3BwICovOyB9Owor
CQkxQzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNEVFQTcxQzcyQTdCNDAwODBG
OEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLzsgfTsKKwkJMUMyNEVFQUIxQzcyQUEwQTAwODBGOEZD
IC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUMyNEVFQUExQzcyQUEwQTAwODBGOEZDIC8qIEpTRm9udEZhY2VT
ZXRDdXN0b20uY3BwICovOyB9OwogCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1l
bnRMb2FkZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAq
LzsgfTsKIAkJMUMzMjQ5MTExQzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzMyNDkx
MDFDNkQ2QTNCMDA3RURCMzIgLyogRm9udFZhcmlhbnRCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMUMz
OTY5RDAxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMzk2OUNGMUI3NDIxMUUwMDJC
Q0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi87IH07CkBAIC01OTEzLDYgKzU5MTgsOCBA
QAogCQlDMTA1REE2MjBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURB
NjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLzsgfTsK
IAkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBGM0FB
NkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsKIAkJQzIwMTVDMEEx
QkU2RkVCMjAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8q
IEZvbnRWYXJpYW50QnVpbGRlci5oICovOyB9OworCQlDMjYwMTdBMzFDNzJEQzk5MDBGNzRBMTYg
LyogQ1NTRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzI2MDE3QTExQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmNw
cCAqLzsgfTsKKwkJQzI2MDE3QTQxQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjYwMTdBMjFD
NzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuaCAqLzsgfTsKIAkJQzI4MDgzM0YxQzZE
QzI2RjAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNl
LmggKi87IH07CiAJCUMyODA4MzQwMUM2REMyNzUwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNEMUM2
REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCAqLzsgfTsKIAkJQzI4MDgzNDIxQzZEQzk2
QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzNDExQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9u
dEZhY2VDdXN0b20uY3BwICovOyB9OwpAQCAtODM3NCw2ICs4MzgxLDEyIEBACiAJCTFDMjFFNTdB
MTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElPU3VyZmFjZVBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJT1N1cmZhY2VQb29sLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjQxN0I5MTk5MkMwNDEwMEVGOTkzOCAvKiBTcGVsbGlu
Z0RvdEAzeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAiU3BlbGxpbmdEb3RAM3gucG5nIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUMyNEVFQTExQzcyOUIzMjAwODBGOEZDIC8qIEZvbnRGYWNlU2V0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGb250RmFjZVNldC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDMjRFRUEyMUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFjZVNldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMjRFRUEzMUM3MjlDRTQwMDgwRjhG
QyAvKiBGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250
RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzI0RUVBNjFDNzJBN0I0
MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0ZvbnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMyNEVFQTcxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzI0RUVBQTFDNzJBQTBBMDA4MEY4RkMgLyogSlNGb250RmFjZVNldEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNl
U2V0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNjQ5NzkwRDdF
MjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMzMjQ5MTAxQzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVp
bGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250VmFyaWFu
dEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzM5NjlDRjFCNzQy
MTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM4MzMsNiArMTM4NDYsOCBAQAogCQlDMTA1REE2MzBGM0FBNkI4MDAx
REQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzI0Njg1MTMxQTE0OEUxODAwODExNzkyIC8qIENvcmVHcmFwaGljc1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlR3JhcGhpY3NTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI2MDE3QTExQzcyREM5OTAwRjc0QTE2IC8qIENTU0Zv
bnRGYWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0Zv
bnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI2MDE3QTIxQzcy
REM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyODA4MzNDMUM2REIxOTQwMDE0NTFCNiAvKiBGb250RmFjZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRm9udEZhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgw
ODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzI4MDgzM0UxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTc1NTUsNiArMTc1NzAsOCBAQAogCQk2NTY1ODBFQzA5RDEyQjIwMDAw
RTYxRDcgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkxQzI0RUVBNjFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNl
dC5jcHAgKi8sCisJCQkJMUMyNEVFQTcxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQu
aCAqLywKIAkJCQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8s
CiAJCQkJQzI4MDgzM0UxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLywKIAkJCQk5
OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0
aW5zLmNwcCAqLywKQEAgLTIyNDY1LDYgKzIyNDgyLDcgQEAKIAkJCQlBMUM3RkFBMTEzM0E1RDM1
MDBENjczMkQgLyogSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFRkUxRTQwRENB
NUYzMzAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAgKi8sCiAJCQkJQzI4MDgz
NDExQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwICovLAorCQkJCTFDMjRF
RUFBMUM3MkFBMEEwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCAqLywKIAkJCSk7
CiAJCQluYW1lID0gQ3VzdG9tOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzNzc0
LDYgKzIzNzkyLDExIEBACiAJCQkJMUM2NjI2MEUxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNl
LmNwcCAqLywKIAkJCQkxQzY2MjYwRjFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuaCAqLywK
IAkJCQlDMjgwODMzQzFDNkRCMTk0MDAxNDUxQjYgLyogRm9udEZhY2UuaWRsICovLAorCQkJCTFD
MjRFRUExMUM3MjlCMzIwMDgwRjhGQyAvKiBGb250RmFjZVNldC5pZGwgKi8sCisJCQkJMUMyNEVF
QTIxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmNwcCAqLywKKwkJCQkxQzI0RUVBMzFD
NzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCAqLywKKwkJCQlDMjYwMTdBMTFDNzJEQzk5
MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuY3BwICovLAorCQkJCUMyNjAxN0EyMUM3MkRDOTkw
MEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjY0OTUsNiArMjY1MTgsNyBAQAogCQkJCTBG
REE3QzFGMTg4MzIyRkMwMEM5NTRCNSAvKiBKU0dlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ4MkI3NTIxMTk4Q0I2QjAwQkZCMDA1IC8qIEpTSGFzaENoYW5nZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzk0RDE0RjBDMjc1QzY4MDA2QkM2MTcgLyogSlNIaXN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VT
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTdFNDEzMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hU
TUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBMkRGMDBBMUI4NTJBMDBD
ODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTJE
RjIwQTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFwcGxldEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjczMDgsNiArMjczMzIsNyBAQAogCQkJCUJDNzZBQzEzMEREN0FENUMwMDQxNUYzNCAv
KiBQYXJzZXJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNkQ1QTIzMTkzRThFMEMw
MENFNENBQiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RD
QTEyNTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFDMjRFRUE5MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0QjI3MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzU5ODkwNTcxNEU5QzI4MDAwRThEMThCIC8qIFBhc3RlYm9hcmRTdHJh
dGVneS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1ODAwQjA1MzgxNDAwMkNFNjRGIC8qIFBh
dGguaCBpbiBIZWFkZXJzICovLApAQCAtMjgwNDMsNiArMjgwNjgsNyBAQAogCQkJCTA4MTA3NjQ0
MTI4Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4OEEwRTA5MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0E0MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTG9jYXRhYmxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjYwMTdBNDFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9u
dEZhY2VTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEVFMTJEOUNBNEIwMDA0NDIzNCAv
KiBTVkdNYXJrZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0NDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNDcw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5
ODYzLDYgKzI5ODg5LDcgQEAKIAkJCQk1MUUxRUNDMDBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJl
Y29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTg1RkM3NzFCQjRDNEU4MDAxMjg5OEYgLyog
SURCQW55LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOThGN0JFMUJDMzM4QUYwMEUyQ0M1RiAv
KiBJREJBbnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyNjAxN0EzMUM3MkRDOTkwMEY3
NEExNiAvKiBDU1NGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1QTY2MjEx
RDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTZEN0Q3MTFCQjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxOThGN0MwMUJDNDg1NjcwMEUyQ0M1RiAvKiBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDM4OCw2ICszMDQxNSw3IEBA
CiAJCQkJMUEwRDU3NDAwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMTI4NEJCMjEwNDQ5RkZBMDBFQUVCNTIgLyogSlNQYWdlVHJhbnNp
dGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUIxMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU1Bhbm5lck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMyNEVFQTQxQzcyOUNF
NDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEOEFBNjNF
MTY5NTE0QTcwMEQyRUE2OCAvKiBKU1Bhbm5lck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTUxQTgxREYxNzI5OEQ3NzAwQkZDQTYxIC8qIEpTUGVyZm9ybWFuY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOEE5QTU4NzAxMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExNTgsNiArMzExODYsNyBAQAogCQkJ
CUFCRERGRTc5MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNDU0NDI0RTExOUIzNjg3MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUEzNTg2REYxNTI2NEM0NTAwMjJBNjU5IC8qIFJlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzI0RUVBODFDNzJBN0I0
MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0UzMkI5
RTE1MTdDMjI3MDBGNTQyRUMgLyogUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkMxQTdEOTcxOEZDQjVCMDAwNDIxODc5IC8qIFJlbmRlck11bHRpQ29sdW1uU3Bh
bm5lclBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBQzgyMkZDMTgwRkMwMzMw
MEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMxNTc4LDYgKzMxNjA3LDcgQEAKIAkJCQk1MTFFQzEyQjFDNTBBQkJGMDAzMkY5ODMgLyogU1FM
aXRlSURCVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ1RTcyRkIwRkQyNjIz
OTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODFFQkYzQTBG
RDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxQzI0RUVBQjFDNzJBQTBBMDA4MEY4RkMgLyogSlNGb250RmFjZVNldEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyN0EwQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EwRTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3QTExMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaXRUb1ZpZXdCb3guY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRG
YWNlU2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udEZhY2VT
ZXRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkODQ5ODU2Y2Q5NjhjYjFkNmUzZGY3NWQ2N2JkNDhi
ZjkwMTdiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRm9udEZhY2VTZXQuaCIKKworI2luY2x1ZGUg
IkZvbnRGYWNlLmgiCisjaW5jbHVkZSAiSlNGb250RmFjZS5oIgorI2luY2x1ZGUgIkpTS2V5VmFs
dWVJdGVyYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIEZvbnRGYWNlU2V0
SXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGb250RmFjZVNldD47Cit1c2luZyBGb250
RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0ZXJhdG9yUHJvdG90eXBlPEpT
Rm9udEZhY2VTZXQ+OworCit0ZW1wbGF0ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyBGb250RmFj
ZVNldEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0IEl0ZXJhdG9yIiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGb250RmFjZVNldEl0ZXJhdG9yKSB9Owor
Cit0ZW1wbGF0ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyBGb250RmFjZVNldEl0ZXJhdG9yUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0IEl0ZXJhdG9yIFByb3RvdHlwZSIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRm9udEZhY2VTZXRJdGVyYXRvclBy
b3RvdHlwZSkgfTsKKworSlNDOjpKU1ZhbHVlIEpTRm9udEZhY2VTZXQ6OnJlYWR5KEpTQzo6RXhl
Y1N0YXRlJiBleGVjU3RhdGUpIGNvbnN0Cit7CisgICAgYXV0byYgcHJvbWlzZSA9IHdyYXBwZWQo
KS5wcm9taXNlKGV4ZWNTdGF0ZSk7CisgICAgcmV0dXJuIHByb21pc2UuZGVmZXJyZWQoKS5wcm9t
aXNlKCk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0OjplbnRyaWVzKEpTQzo6RXhl
Y1N0YXRlJikKK3sKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGb250RmFjZVNldD4oKmds
b2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUpOworfQorCitKU0M6
OkpTVmFsdWUgSlNGb250RmFjZVNldDo6a2V5cyhKU0M6OkV4ZWNTdGF0ZSYpCit7CisgICAgcmV0
dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMs
IEl0ZXJhdGlvbktpbmQ6OktleSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0Ojp2
YWx1ZXMoSlNDOjpFeGVjU3RhdGUmKQoreworICAgIHJldHVybiBjcmVhdGVJdGVyYXRvcjxKU0Zv
bnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCksICp0aGlzLCBJdGVyYXRpb25LaW5kOjpWYWx1ZSk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCmluZGV4IGNkYzY3YTc3MTAxNjM2
NWJjYzhhYTJiMTY0ZTg3ZjBkNmY1YTMzZGMuLjQ4OGJhMjNiNjU1MDAxMzVhMzIzMmI3Njc0OTdh
MGNiNzA2MWQxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmNwcCIKICNpbmNsdWRlICJDU1NGb250RmFjZUxv
YWRFdmVudC5jcHAiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmNwcCIKKyNpbmNsdWRlICJD
U1NGb250RmFjZVNldC5jcHAiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTb3VyY2UuY3BwIgogI2lu
Y2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJl
VmFsdWUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggOTU1NGFlZDBiZTk3
YjVlYjVlMGUwOWY1MmQxMjI5ZTZjMmJhNGU0Yy4uNDg0NWI3NTA3M2ViNjRmMWFkYTk1MWZmZWRh
MDJkYzcxNjQ0MDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC00NSw5ICs0
NSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTRm9udEZhY2U6OkNTU0ZvbnRGYWNl
KENTU0ZvbnRGYWNlQ2xpZW50JiBjbGllbnQsIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9y
LCBib29sIGlzTG9jYWxGYWxsYmFjaykKK0NTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShDU1NGb250
U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgRm9udEZhY2UqIHdyYXBwZXIsIGJvb2wgaXNMb2NhbEZh
bGxiYWNrKQogICAgIDogbV9mb250U2VsZWN0b3IoZm9udFNlbGVjdG9yKQotICAgICwgbV9jbGll
bnQoY2xpZW50KQorICAgICwgbV93cmFwcGVyKHdyYXBwZXIpCiAgICAgLCBtX2lzTG9jYWxGYWxs
YmFjayhpc0xvY2FsRmFsbGJhY2spCiB7CiB9CkBAIC0yMzAsMTQgKzIzMCwxNCBAQCBib29sIENT
U0ZvbnRGYWNlOjphbGxTb3VyY2VzRmFpbGVkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBDU1NGb250RmFjZTo6YWRkZWRUb1NlZ21lbnRlZEZvbnRGYWNlKENTU1NlZ21lbnRl
ZEZvbnRGYWNlJiBzZWdtZW50ZWRGb250RmFjZSkKK3ZvaWQgQ1NTRm9udEZhY2U6OmFkZENsaWVu
dChDbGllbnQmIGNsaWVudCkKIHsKLSAgICBtX3NlZ21lbnRlZEZvbnRGYWNlcy5hZGQoJnNlZ21l
bnRlZEZvbnRGYWNlKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwogfQogCi12b2lkIENT
U0ZvbnRGYWNlOjpyZW1vdmVkRnJvbVNlZ21lbnRlZEZvbnRGYWNlKENTU1NlZ21lbnRlZEZvbnRG
YWNlJiBzZWdtZW50ZWRGb250RmFjZSkKK3ZvaWQgQ1NTRm9udEZhY2U6OnJlbW92ZUNsaWVudChD
bGllbnQmIGNsaWVudCkKIHsKLSAgICBtX3NlZ21lbnRlZEZvbnRGYWNlcy5yZW1vdmUoJnNlZ21l
bnRlZEZvbnRGYWNlKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOwogfQogCiB2b2lk
IENTU0ZvbnRGYWNlOjphZG9wdFNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3Vy
Y2U+JiYgc291cmNlKQpAQCAtMjY4LDEwICsyNjgsMTAgQEAgdm9pZCBDU1NGb250RmFjZTo6c2V0
U3RhdHVzKFN0YXR1cyBuZXdTdGF0dXMpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIG1f
c3RhdHVzID0gbmV3U3RhdHVzOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQor
ICAgICAgICBjbGllbnQtPnN0YXRlQ2hhbmdlZCgqdGhpcywgbV9zdGF0dXMsIG5ld1N0YXR1cyk7
CiAKLSAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVzOjpTdWNjZXNzIHx8IG1fc3RhdHVzID09IFN0
YXR1czo6RmFpbHVyZSkKLSAgICAgICAgbV9jbGllbnQua2ljaygqdGhpcyk7CisgICAgbV9zdGF0
dXMgPSBuZXdTdGF0dXM7CiB9CiAKIHZvaWQgQ1NTRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1NTRm9u
dEZhY2VTb3VyY2UmKQpAQCAtMjgyLDEzICsyODIsMTAgQEAgdm9pZCBDU1NGb250RmFjZTo6Zm9u
dExvYWRlZChDU1NGb250RmFjZVNvdXJjZSYpCiAgICAgaWYgKG1fc291cmNlc1BvcHVsYXRlZCkK
ICAgICAgICAgcHVtcCgpOwogCi0gICAgaWYgKG1fc2VnbWVudGVkRm9udEZhY2VzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9mb250U2VsZWN0b3ItPmZvbnRMb2FkZWQoKTsK
IAotICAgIGZvciAoYXV0byogZmFjZSA6IG1fc2VnbWVudGVkRm9udEZhY2VzKQotICAgICAgICBm
YWNlLT5mb250TG9hZGVkKCp0aGlzKTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKKyAgICAgICAgY2xpZW50LT5raWNrKCp0aGlzKTsKIH0KIAogc2l6ZV90IENTU0ZvbnRGYWNl
OjpwdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5kZXggOTZkZjQ1MmY3ZTIzNzI4NGIz
ZWZiMTE4MDY3OWUyNTQ1OGJjOWZmMS4uZDQ4OTgxNjVlOGU3ODc5NWMzZTk0ODM5NDYwY2IzZGRi
ZWNlNTAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDE2ICs0NCwxMiBAQCBjbGFz
cyBDU1NWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsK
IGNsYXNzIEZvbnQ7CitjbGFzcyBGb250RmFjZTsKIAotY2xhc3MgQ1NTRm9udEZhY2VDbGllbnQg
ewotcHVibGljOgotICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlQ2xpZW50KCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGtpY2soQ1NTRm9udEZhY2UmKSA9IDA7Ci19OwotCisvLyBGSVhNRTogVGhpcyBj
bGFzcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlZmVyZW5jZSBjb3VudGVkLgogY2xhc3MgQ1NTRm9u
dEZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NGb250RmFjZT4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8Q1NTRm9udEZhY2U+IGNyZWF0ZShDU1NGb250RmFjZUNsaWVudCYgY2xpZW50LCBD
U1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxz
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShjbGllbnQsIGZvbnRTZWxlY3Rv
ciwgaXNMb2NhbEZhbGxiYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVh
dGUoQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIEZvbnRGYWNlKiB3cmFwcGVyID0gbnVs
bHB0ciwgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxzZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NGb250RmFjZShmb250U2VsZWN0b3IsIHdyYXBwZXIsIGlzTG9jYWxGYWxsYmFjaykpOyB9
CiAgICAgdmlydHVhbCB+Q1NTRm9udEZhY2UoKTsKIAogICAgIGJvb2wgc2V0RmFtaWxpZXMoQ1NT
VmFsdWUmKTsKQEAgLTgwLDggKzc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNMb2NhbEZhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvY2FsRmFsbGJhY2s7IH0KICAgICBTdGF0dXMgc3Rh
dHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KIAotICAgIHZvaWQgYWRkZWRUb1NlZ21l
bnRlZEZvbnRGYWNlKENTU1NlZ21lbnRlZEZvbnRGYWNlJik7Ci0gICAgdm9pZCByZW1vdmVkRnJv
bVNlZ21lbnRlZEZvbnRGYWNlKENTU1NlZ21lbnRlZEZvbnRGYWNlJik7CisgICAgY2xhc3MgQ2xp
ZW50OworICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50
KENsaWVudCYpOwogCiAgICAgYm9vbCBhbGxTb3VyY2VzRmFpbGVkKCkgY29uc3Q7CiAKQEAgLTkz
LDYgKzkwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoKTsKICAgICBSZWZQdHI8Rm9udD4g
Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljKTsKIAorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGtpY2soQ1NTRm9u
dEZhY2UmKSB7IH07CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGF0ZUNoYW5nZWQoQ1NTRm9udEZh
Y2UmLCBTdGF0dXMgb2xkU3RhdGUsIFN0YXR1cyBuZXdTdGF0ZSkgeyBVTlVTRURfUEFSQU0ob2xk
U3RhdGUpOyBVTlVTRURfUEFSQU0obmV3U3RhdGUpOyB9OworICAgIH07CisKICAgICAvLyBQZW5k
aW5nID0+IExvYWRpbmcgID0+IFRpbWVkT3V0CiAgICAgLy8gICAgICAgICAgICAgIHx8ICBcXCAg
ICAvLyAgfHwKICAgICAvLyAgICAgICAgICAgICAgfHwgICBcXCAgLy8gICB8fApAQCAtMTI1LDEy
ICsxMjksMTQgQEAgcHVibGljOgogICAgICAgICBVQ2hhcjMyIG1fdG87CiAgICAgfTsKIAorICAg
IEZvbnRGYWNlKiB3cmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVyOyB9CisKICNpZiBF
TkFCTEUoU1ZHX0ZPTlRTKQogICAgIGJvb2wgaGFzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdDsK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIENTU0ZvbnRGYWNlKENTU0ZvbnRGYWNlQ2xpZW50Jiwg
Q1NTRm9udFNlbGVjdG9yJiwgYm9vbCBpc0xvY2FsRmFsbGJhY2spOworICAgIENTU0ZvbnRGYWNl
KENTU0ZvbnRTZWxlY3RvciYsIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2FsRmFsbGJhY2spOwogCiAg
ICAgc2l6ZV90IHB1bXAoKTsKICAgICB2b2lkIHNldFN0YXR1cyhTdGF0dXMpOwpAQCAtMTM4LDkg
KzE0NCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbV9mYW1pbGllczsK
ICAgICBGb250VHJhaXRzTWFzayBtX3RyYWl0c01hc2sgeyBzdGF0aWNfY2FzdDxGb250VHJhaXRz
TWFzaz4oRm9udFN0eWxlTm9ybWFsTWFzayB8IEZvbnRXZWlnaHQ0MDBNYXNrKSB9OwogICAgIFZl
Y3RvcjxVbmljb2RlUmFuZ2U+IG1fcmFuZ2VzOwotICAgIEhhc2hTZXQ8Q1NTU2VnbWVudGVkRm9u
dEZhY2UqPiBtX3NlZ21lbnRlZEZvbnRGYWNlczsgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgKGlu
IGZhdm9yIG9mIENTU0ZvbnRGYWNlQ2xpZW50KSB3aGVuIGltcGxlbWVudGluZyBGb250RmFjZVNl
dC4KKyAgICBIYXNoU2V0PENsaWVudCo+IG1fY2xpZW50czsKICAgICBSZWY8Q1NTRm9udFNlbGVj
dG9yPiBtX2ZvbnRTZWxlY3RvcjsKLSAgICBDU1NGb250RmFjZUNsaWVudCYgbV9jbGllbnQ7Cisg
ICAgRm9udEZhY2UqIG1fd3JhcHBlcjsKICAgICBGb250RmVhdHVyZVNldHRpbmdzIG1fZmVhdHVy
ZVNldHRpbmdzOwogICAgIEZvbnRWYXJpYW50U2V0dGluZ3MgbV92YXJpYW50U2V0dGluZ3M7CiAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4+IG1fc291cmNlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExOTMyMjAxMDU5
NjlhN2I1M2E3OTRkMDk5ZjAxYzE0M2I5MDMzODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCisKKyNpbmNsdWRlICJDU1NGb250RmFtaWx5
LmgiCisjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3Qu
aCIKKyNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitDU1NGb250RmFjZVNldDo6Q1NTRm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXRDbGllbnQmIGNs
aWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30KKworQ1NTRm9udEZhY2VTZXQ6On5D
U1NGb250RmFjZVNldCgpCit7CisgICAgZm9yIChhdXRvJiBmYWNlIDogbV9mYWNlcykKKyAgICAg
ICAgZmFjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBDU1NGb250RmFjZVNldDo6
aW5jcmVtZW50QWN0aXZlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVDb3VudDsKKyAgICBpZiAo
bV9hY3RpdmVDb3VudCA9PSAxKSB7CisgICAgICAgIG1fc3RhdHVzID0gU3RhdHVzOjpMb2FkaW5n
OworICAgICAgICBtX2NsaWVudC5zdGFydGVkTG9hZGluZygpOworICAgIH0KK30KKwordm9pZCBD
U1NGb250RmFjZVNldDo6ZGVjcmVtZW50QWN0aXZlQ291bnQoKQoreworICAgIC0tbV9hY3RpdmVD
b3VudDsKKyAgICBpZiAoIW1fYWN0aXZlQ291bnQpIHsKKyAgICAgICAgbV9zdGF0dXMgPSBTdGF0
dXM6OkxvYWRlZDsKKyAgICAgICAgbV9jbGllbnQuY29tcGxldGVkTG9hZGluZygpOworICAgIH0K
K30KKworYm9vbCBDU1NGb250RmFjZVNldDo6aGFzKGNvbnN0IENTU0ZvbnRGYWNlJiBmYWNlKSBj
b25zdAoreworICAgIGZvciAoYXV0byYgbXlGYWNlIDogbV9mYWNlcykgeworICAgICAgICBpZiAo
bXlGYWNlLnB0cigpID09ICZmYWNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDU1NGb250RmFjZVNldDo6YWRkKENTU0ZvbnRG
YWNlJiBmYWNlKQoreworICAgIEFTU0VSVCghaGFzKGZhY2UpKTsKKworICAgIG1fZmFjZXMuYXBw
ZW5kKGZhY2UpOworICAgIGZhY2UuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAoZmFjZS5zdGF0
dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpMb2FkaW5nIHx8IGZhY2Uuc3RhdHVzKCkgPT0g
Q1NTRm9udEZhY2U6OlN0YXR1czo6VGltZWRPdXQpCisgICAgICAgIGluY3JlbWVudEFjdGl2ZUNv
dW50KCk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OnJlbW92ZShjb25zdCBDU1NGb250RmFj
ZSYgZmFjZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZmFjZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fZmFjZXNbaV0ucHRyKCkgPT0gJmZhY2UpIHsKKyAgICAgICAg
ICAgIG1fZmFjZXNbaV0tPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgICAgICAgICBtX2ZhY2Vz
LnJlbW92ZShpKTsKKyAgICAgICAgICAgIGlmIChmYWNlLnN0YXR1cygpID09IENTU0ZvbnRGYWNl
OjpTdGF0dXM6OkxvYWRpbmcgfHwgZmFjZS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVz
OjpUaW1lZE91dCkKKyAgICAgICAgICAgICAgICBkZWNyZW1lbnRBY3RpdmVDb3VudCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCitzdGF0aWMgSGFzaFNldDxTdHJpbmc+IGV4dHJhY3RGYW1pbGllcyhjb25zdCBD
U1NWYWx1ZUxpc3QmIGxpc3QpCit7CisgICAgSGFzaFNldDxTdHJpbmc+IHJlc3VsdDsKKyAgICBm
b3IgKGF1dG8mIGZhbWlseSA6IGxpc3QpIHsKKyAgICAgICAgY29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUmIHByaW1pdGl2ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihmYW1pbHkuZ2V0KCkp
OworICAgICAgICBpZiAoIXByaW1pdGl2ZS5pc0ZvbnRGYW1pbHkoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICByZXN1bHQuYWRkKHByaW1pdGl2ZS5mb250RmFtaWx5KCkuZmFtaWx5
TmFtZSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBib29sIGZhbWls
aWVzSW50ZXJzZWN0KENTU0ZvbnRGYWNlJiBmYWNlLCBjb25zdCBDU1NWYWx1ZUxpc3QmIHJlcXVl
c3QpCit7CisgICAgaWYgKCFmYWNlLmZhbWlsaWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEhhc2hTZXQ8U3RyaW5nPiBmYWNlRmFtaWxpZXMgPSBleHRyYWN0RmFtaWxpZXMoKmZh
Y2UuZmFtaWxpZXMoKSk7CisgICAgSGFzaFNldDxTdHJpbmc+IHJlcXVlc3RGYW1pbGllcyA9IGV4
dHJhY3RGYW1pbGllcyhyZXF1ZXN0KTsKKyAgICBmb3IgKGF1dG8gJmZhbWlseTEgOiBmYWNlRmFt
aWxpZXMpIHsKKyAgICAgICAgaWYgKHJlcXVlc3RGYW1pbGllcy5jb250YWlucyhmYW1pbHkxKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K1ZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gQ1NTRm9udEZhY2VT
ZXQ6Om1hdGNoaW5nRmFjZXMoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NG
b250RmFjZT4+IHJlc3VsdDsKKyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHBhcnNlUmVzdWx0
ID0gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlLnB0cigpLCBDU1NQcm9wZXJ0eUZvbnQsIGZv
bnQsIHRydWUsIENTU1N0cmljdE1vZGUsIG51bGxwdHIpOworICAgIGlmIChwYXJzZVJlc3VsdCA9
PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikgeworICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGJvb2wgZGVzaXJlZFN0eWxl
SXNOb3JtYWwgPSB0cnVlOworICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGRlc2lyZWRTdHlsZSA9
IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKSkgeworICAg
ICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZGVzaXJlZFN0eWxlKSkgeworICAgICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgICAgICBkZXNpcmVkU3R5bGVJc05vcm1hbCA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqZGVzaXJlZFN0eWxlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWw7Cisg
ICAgfQorICAgIFJlZlB0cjxDU1NWYWx1ZT4gZmFtaWx5ID0gc3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4o
ZmFtaWx5LmdldCgpKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIENTU1ZhbHVlTGlzdCYgZmFtaWx5TGlzdCA9IGRvd25jYXN0
PENTU1ZhbHVlTGlzdD4oKmZhbWlseSk7CisKKyAgICAvLyBNYXRjaCBDU1NGb250U2VsZWN0b3I6
OmdldEZvbnRGYWNlKCkKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBtX2ZhY2VzKSB7CisgICAgICAg
IGlmICghZmFtaWxpZXNJbnRlcnNlY3QoZmFjZSwgZmFtaWx5TGlzdCkgfHwgKGRlc2lyZWRTdHls
ZUlzTm9ybWFsICYmICEoZmFjZS0+dHJhaXRzTWFzaygpICYgRm9udFN0eWxlTm9ybWFsTWFzaykp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZmFjZS5nZXQo
KSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6
OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGF1dG8gbWF0Y2hpbmdGYWNlcyA9IHRoaXMtPm1hdGNoaW5nRmFjZXMo
Zm9udCwgdGV4dCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChhdXRvIGZhY2UgOiBtYXRjaGluZ0ZhY2VzKQorICAgICAgICBmYWNlLmdldCgpLmxvYWQoKTsK
K30KKworYm9vbCBDU1NGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25z
dCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGF1dG8gbWF0Y2hpbmdG
YWNlcyA9IHRoaXMtPm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCwgZWMpOworICAgIGlmIChlYykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChhdXRvIGZhY2UgOiBtYXRjaGluZ0Zh
Y2VzKSB7CisgICAgICAgIGlmIChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpT
dGF0dXM6OlBlbmRpbmcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIENTU0ZvbnRGYWNlU2V0OjpzdGF0ZUNoYW5nZWQoQ1NTRm9u
dEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMgb2xkU3RhdGUsIENTU0ZvbnRGYWNlOjpT
dGF0dXMgbmV3U3RhdGUpCit7CisgICAgQVNTRVJUKGhhcyhmYWNlKSk7CisgICAgaWYgKG9sZFN0
YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlBlbmRpbmcpIHsKKyAgICAgICAgQVNTRVJUKG5l
d1N0YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkxvYWRpbmcpOworICAgICAgICBpbmNyZW1l
bnRBY3RpdmVDb3VudCgpOworICAgIH0KKyAgICBpZiAobmV3U3RhdGUgPT0gQ1NTRm9udEZhY2U6
OlN0YXR1czo6U3VjY2VzcyB8fCBuZXdTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpGYWls
dXJlKSB7CisgICAgICAgIEFTU0VSVChvbGRTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpM
b2FkaW5nIHx8IG9sZFN0YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlRpbWVkT3V0KTsKKyAg
ICAgICAgbV9jbGllbnQuZmFjZUZpbmlzaGVkKGZhY2UsIG5ld1N0YXRlKTsKKyAgICAgICAgZGVj
cmVtZW50QWN0aXZlQ291bnQoKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY5ZmJhNTU1NTdkNTQ0Yjc1ODBiNTJlMGNmYjgzZTU4ZDA3
NTRjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNl
dC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENTU0ZvbnRGYWNlU2V0X2gKKyNkZWZpbmUgQ1NTRm9udEZhY2VT
ZXRfaAorCisjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9udEZhY2VTZXQ7CisKK2NsYXNzIENT
U0ZvbnRGYWNlU2V0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNl
dENsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2Um
LCBDU1NGb250RmFjZTo6U3RhdHVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0ZWRMb2Fk
aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZWRMb2FkaW5nKCkgPSAwOworfTsK
KworY2xhc3MgQ1NTRm9udEZhY2VTZXQgOiBwdWJsaWMgQ1NTRm9udEZhY2U6OkNsaWVudCB7Citw
dWJsaWM6CisgICAgQ1NTRm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXRDbGllbnQmKTsKKyAgICB+
Q1NTRm9udEZhY2VTZXQoKTsKKworICAgIGJvb2wgaGFzKGNvbnN0IENTU0ZvbnRGYWNlJikgY29u
c3Q7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZhY2VzLnNpemUoKTsgfQor
ICAgIHZvaWQgYWRkKENTU0ZvbnRGYWNlJik7CisgICAgdm9pZCByZW1vdmUoY29uc3QgQ1NTRm9u
dEZhY2UmKTsKKyAgICBjb25zdCBDU1NGb250RmFjZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29u
c3QgeyByZXR1cm4gbV9mYWNlc1tpXTsgfQorCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYg
Zm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBjaGVj
ayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYp
OworCisgICAgZW51bSBjbGFzcyBTdGF0dXMgeworICAgICAgICBMb2FkaW5nLAorICAgICAgICBM
b2FkZWQKKyAgICB9OworICAgIFN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
czsgfQorCisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q1NTRm9udEZhY2U+PiBt
YXRjaGluZ0ZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNl
cHRpb25Db2RlJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVDb3VudCgp
OworICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlQ291bnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
dGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzIG9sZFN0YXRlLCBD
U1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBvdmVycmlkZTsKKworICAgIFZlY3RvcjxSZWY8
Q1NTRm9udEZhY2U+PiBtX2ZhY2VzOworICAgIFN0YXR1cyBtX3N0YXR1cyB7IFN0YXR1czo6TG9h
ZGVkIH07CisgICAgQ1NTRm9udEZhY2VTZXRDbGllbnQmIG1fY2xpZW50OworICAgIHVuc2lnbmVk
IG1fYWN0aXZlQ291bnQgeyAwIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCAxYzcyZDk5NmRhN2Y3NzVkMTg4NDhlZDk1ZDQ3YWUx
OGJiMGZhZTc4Li4yYzhjMmM2ZDM2NDFhMTgyNWRkZWFmYWY4ZmRhYzUxZWRkNTEzM2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZv
aWQgQ1NTRm9udFNlbGVjdG9yOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwg
Q1NTVmFsdWVMaXN0JiBzcmNMaXN0CiAgICAgZm9udEZhY2Uuc291cmNlc1BvcHVsYXRlZCgpOwog
fQogCi1zdGF0aWMgU3RyaW5nIGZhbWlseU5hbWVGcm9tUHJpbWl0aXZlKGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlJiB2YWx1ZSkKK1N0cmluZyBDU1NGb250U2VsZWN0b3I6OmZhbWlseU5hbWVGcm9t
UHJpbWl0aXZlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUuaXNGb250RmFtaWx5KCkpCiAgICAgICAgIHJldHVybiB2YWx1ZS5mb250RmFtaWx5KCkuZmFt
aWx5TmFtZTsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6cmVnaXN0
ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiAKICAg
ICBWZWN0b3I8UmVmPENTU0ZvbnRGYWNlPj4gZmFjZXMgPSB7IH07CiAgICAgZm9yIChhdXRvIG1h
c2sgOiB0cmFpdHNNYXNrcykgewotICAgICAgICBSZWY8Q1NTRm9udEZhY2U+IGZhY2UgPSBDU1NG
b250RmFjZTo6Y3JlYXRlKCp0aGlzLCAqdGhpcywgdHJ1ZSk7CisgICAgICAgIFJlZjxDU1NGb250
RmFjZT4gZmFjZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUoKnRoaXMsIG51bGxwdHIsIHRydWUpOwog
ICAgICAgICAKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZmFtaWx5TGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgZmFtaWx5TGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZhbHVlKGZhbWls
eU5hbWUpKTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9u
dEZhY2VSdWxlKGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlJiBmb250RmFjZVJ1bGUsIGJvbwogICAg
IGlmICghc3JjTGlzdC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPENTU0Zv
bnRGYWNlPiBmb250RmFjZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUoKnRoaXMsICp0aGlzKTsKKyAg
ICBSZWY8Q1NTRm9udEZhY2U+IGZvbnRGYWNlID0gQ1NTRm9udEZhY2U6OmNyZWF0ZSgqdGhpcyk7
CiAKICAgICBpZiAoIWZvbnRGYWNlLT5zZXRGYW1pbGllcygqZm9udEZhbWlseSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTQ5NiwxMCArNDk2LDYgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2lu
TG9hZFRpbWVyRmlyZWQoKQogfQogCiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpraWNrKENTU0Zv
bnRGYWNlJikKLXsKLX0KLQogc2l6ZV90IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250Q291
bnQoKQogewogICAgIGlmICghbV9kb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuaAppbmRleCBhMzI3YmFmZTFhMjJiNWMwNWMxMDgzY2M5M2M0ZmMxYWIxZTg3MmFiLi45YTI3
ZmUyMmVmNzJkNGE5NzdiNmY3MzVhMzEwMjM1OTYxOTY1NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5oCkBAIC00MSwxMyArNDEsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ1NTRm9udEZhY2VSdWxlOworY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiBjbGFz
cyBDU1NTZWdtZW50ZWRGb250RmFjZTsKIGNsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIENhY2hl
ZEZvbnQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFN0eWxlUnVsZUZvbnRGYWNlOwogCi1jbGFz
cyBDU1NGb250U2VsZWN0b3IgZmluYWwgOiBwdWJsaWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NT
Rm9udEZhY2VDbGllbnQgeworY2xhc3MgQ1NTRm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZv
bnRTZWxlY3RvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NGb250U2VsZWN0b3I+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewpAQCAtODAsNiArODEsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQqKTsKIAorICAgIHN0
YXRpYyBTdHJpbmcgZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoY29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1NGb250U2VsZWN0b3IoRG9jdW1lbnQm
KTsKIApAQCAtODksOCArOTIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWdpc3RlckxvY2Fs
Rm9udEZhY2VzRm9yRmFtaWx5KGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBraWNrKENTU0Zv
bnRGYWNlJikgb3ZlcnJpZGU7Ci0KICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPFJlZjxDU1NGb250RmFjZT4+LCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+IG1fZm9udEZhY2VzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPENTU0Zv
bnRGYWNlPj4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9sb2NhbGx5SW5zdGFsbGVkRm9u
dEZhY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRG
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKaW5k
ZXggZGNmOGZlNDQyYTRkMWJlNGJiMDNlZGI5MGVhOTUwMmNhOWU0ZDU4MS4uZjAyNGVkNTRlODZi
NTNkMGU1ZTcwOWYwMzYwN2VjMTMzOTgzYWFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAgQ1NTU2VnbWVudGVkRm9u
dEZhY2U6OkNTU1NlZ21lbnRlZEZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9y
KQogQ1NTU2VnbWVudGVkRm9udEZhY2U6On5DU1NTZWdtZW50ZWRGb250RmFjZSgpCiB7CiAgICAg
Zm9yIChhdXRvJiBmYWNlIDogbV9mb250RmFjZXMpCi0gICAgICAgIGZhY2UtPnJlbW92ZWRGcm9t
U2VnbWVudGVkRm9udEZhY2UoKnRoaXMpOworICAgICAgICBmYWNlLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwogfQogCi12b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpmb250TG9hZGVkKENTU0ZvbnRG
YWNlJikKK3ZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmFwcGVuZEZvbnRGYWNlKFJlZjxDU1NG
b250RmFjZT4mJiBmb250RmFjZSkKIHsKICAgICBtX2NhY2hlLmNsZWFyKCk7CisgICAgZm9udEZh
Y2UtPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9mb250RmFjZXMuYXBwZW5kKFdURk1vdmUoZm9u
dEZhY2UpKTsKIH0KIAotdm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6YXBwZW5kRm9udEZhY2Uo
UmVmPENTU0ZvbnRGYWNlPiYmIGZvbnRGYWNlKQordm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6
a2ljayhDU1NGb250RmFjZSYpCiB7CiAgICAgbV9jYWNoZS5jbGVhcigpOwotICAgIGZvbnRGYWNl
LT5hZGRlZFRvU2VnbWVudGVkRm9udEZhY2UoKnRoaXMpOwotICAgIG1fZm9udEZhY2VzLmFwcGVu
ZChXVEZNb3ZlKGZvbnRGYWNlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEZvbnRXaXRoSW52
YWxpZFVuaWNvZGVSYW5nZUlmTG9hZGluZyhGb250UmFuZ2VzJiByYW5nZXMsIFJlZjxGb250PiYm
IGZvbnQsIGNvbnN0IFZlY3RvcjxDU1NGb250RmFjZTo6VW5pY29kZVJhbmdlPiYgdW5pY29kZVJh
bmdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgKaW5kZXggY2Fl
NjRhZjY5ZDYyODBkNDI1M2YyYTFhZjMzODg2MGRmMWE1Y2JiOS4uNjdmZjhhYWRlYmMyYmJkOWU4
ZmU5NTM2NTdkMjUyNThiMmQ3MWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlZ21lbnRlZEZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRl
ZEZvbnRGYWNlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1NTU2VnbWVudGVkRm9udEZh
Y2VfaAogI2RlZmluZSBDU1NTZWdtZW50ZWRGb250RmFjZV9oCiAKKyNpbmNsdWRlICJDU1NGb250
RmFjZS5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRSYW5nZXMuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzUsMTEgKzM2LDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7
CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiAKLWNsYXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlIGZp
bmFsIHsKK2NsYXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlIGZpbmFsIDogcHVibGljIENTU0ZvbnRG
YWNlOjpDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IENTU1NlZ21lbnRlZEZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYpOwpAQCAtNDcsMTMgKzQ3LDEy
IEBAIHB1YmxpYzoKIAogICAgIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9mb250U2VsZWN0b3I7IH0KIAotICAgIHZvaWQgZm9udExvYWRlZChDU1NGb250
RmFjZSYpOwotCiAgICAgdm9pZCBhcHBlbmRGb250RmFjZShSZWY8Q1NTRm9udEZhY2U+JiYpOwog
CiAgICAgRm9udFJhbmdlcyBmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwogCiBw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBraWNrKENTU0ZvbnRGYWNlJikgb3ZlcnJpZGU7CiAK
ICAgICBDU1NGb250U2VsZWN0b3ImIG1fZm9udFNlbGVjdG9yOwogICAgIEhhc2hNYXA8Rm9udERl
c2NyaXB0aW9uS2V5LCBGb250UmFuZ2VzLCBGb250RGVzY3JpcHRpb25LZXlIYXNoLCBXVEY6OlNp
bXBsZUNsYXNzSGFzaFRyYWl0czxGb250RGVzY3JpcHRpb25LZXk+PiBtX2NhY2hlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAKaW5kZXggYmNiMmNkMGZiOGE2NmJmMjIzYzU2OWYzNWU1OTVlYmRmMDIx
OTRjMS4uYzQ1ZThkMjcxMWYwNzU5NzY5NWRmNjI2MjY0Yzg5ZTM4ZDNjNWVmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTEsMTMgKzExMSwxNSBAQCBSZWZQdHI8Rm9u
dEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgU2NyaXB0
RXhlY3V0aW9uQ29udAogfQogCiBGb250RmFjZTo6Rm9udEZhY2UoSlNDOjpFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IpCi0gICAgOiBtX2JhY2tpbmco
Q1NTRm9udEZhY2U6OmNyZWF0ZSgqdGhpcywgZm9udFNlbGVjdG9yKSkKKyAgICA6IG1fYmFja2lu
ZyhDU1NGb250RmFjZTo6Y3JlYXRlKGZvbnRTZWxlY3RvciwgdGhpcykpCiAgICAgLCBtX3Byb21p
c2UoY3JlYXRlUHJvbWlzZShleGVjU3RhdGUpKQogeworICAgIG1fYmFja2luZy0+YWRkQ2xpZW50
KCp0aGlzKTsKIH0KIAogRm9udEZhY2U6On5Gb250RmFjZSgpCiB7CisgICAgbV9iYWNraW5nLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IEZvbnRGYWNlOjpwYXJz
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQpA
QCAtMzE1LDEwICszMTcsMTAgQEAgU3RyaW5nIEZvbnRGYWNlOjpzdGF0dXMoKSBjb25zdAogICAg
IHJldHVybiBTdHJpbmcoImVycm9yIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiB9
CiAKLXZvaWQgRm9udEZhY2U6OmtpY2soQ1NTRm9udEZhY2UmIGZhY2UpCit2b2lkIEZvbnRGYWNl
OjpzdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMsIENT
U0ZvbnRGYWNlOjpTdGF0dXMgbmV3U3RhdGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChmYWNlLCAm
ZmFjZSA9PSBtX2JhY2tpbmcucHRyKCkpOwotICAgIHN3aXRjaCAobV9iYWNraW5nLT5zdGF0dXMo
KSkgeworICAgIHN3aXRjaCAobmV3U3RhdGUpIHsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0
dXM6OlRpbWVkT3V0OgogICAgICAgICByZWplY3RQcm9taXNlKE5FVFdPUktfRVJSKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCA3YzEzOWYyMmJkYzc3MDc2MWUyNGU3
MWQzODEyMWMxZmRhNTQ3MDFlLi5kNTY3NDI0YjhhNzA4YWU1MzYzYjE1ZjJkMWRmNWRkYWU2ODcw
NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDU1NGb250RmFj
ZTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgRGljdGlvbmFyeTsKIAotY2xhc3MgRm9udEZhY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZT4sIHB1YmxpYyBDU1NGb250RmFjZUNsaWVudCB7
CitjbGFzcyBGb250RmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlPiwgcHVibGljIENT
U0ZvbnRGYWNlOjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8Rm9udEZhY2U+
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBT
dHJpbmcmIGZhbWlseSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNvdXJjZSwgY29u
c3QgRGljdGlvbmFyeSYgZGVzY3JpcHRvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IH5Gb250RmFjZSgpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZv
bnRGYWNlKEpTQzo6RXhlY1N0YXRlJiwgQ1NTRm9udFNlbGVjdG9yJik7CiAKLSAgICB2b2lkIGtp
Y2soQ1NTRm9udEZhY2UmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhdGVDaGFuZ2Vk
KENTU0ZvbnRGYWNlJiwgQ1NTRm9udEZhY2U6OlN0YXR1cyBvbGRTdGF0ZSwgQ1NTRm9udEZhY2U6
OlN0YXR1cyBuZXdTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZ1bGZpbGxQcm9taXNlKCk7
CiAgICAgdm9pZCByZWplY3RQcm9taXNlKEV4Y2VwdGlvbkNvZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMjk4MTJjNjhmYTQ3YmJmNWM0MjExOTIxZDU3NmU4
NDA4YjE2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNl
dC5jcHAKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udEZhY2VTZXQu
aCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uLmgiCisjaW5jbHVkZSAiRm9udEZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKKyNpbmNsdWRlICJKU0RPTUNvcmVFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0ZvbnRGYWNl
LmgiCisjaW5jbHVkZSAiSlNGb250RmFjZVNldC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBGb250RmFjZVNldDo6UHJvbWlzZSBjcmVhdGVQcm9taXNlKEpTQzo6RXhlY1N0YXRl
JiBleGVjKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAqSlNDOjpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLmxleGljYWxHbG9iYWxPYmplY3QoKSk7Cisg
ICAgcmV0dXJuIEZvbnRGYWNlU2V0OjpQcm9taXNlKERlZmVycmVkV3JhcHBlcigmZXhlYywgJmds
b2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZleGVjLCAmZ2xvYmFs
T2JqZWN0KSkpOworfQorCitGb250RmFjZVNldDo6Rm9udEZhY2VTZXQoSlNDOjpFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRG
YWNlPj4mIGluaXRpYWxGYWNlcykKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisg
ICAgLCBtX2JhY2tpbmcoKnRoaXMpCisgICAgLCBtX3Byb21pc2UoY3JlYXRlUHJvbWlzZShleGVj
U3RhdGUpKQoreworICAgIGZvciAoYXV0byYgZmFjZSA6IGluaXRpYWxGYWNlcykKKyAgICAgICAg
YWRkKGZhY2UuZ2V0KCkpOworfQorCitGb250RmFjZVNldDo6fkZvbnRGYWNlU2V0KCkKK3sKK30K
KworRm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpJdGVyYXRvcihGb250RmFjZVNldCYgc2V0KQorICAg
IDogbV90YXJnZXQoc2V0KQoreworfQorCitib29sIEZvbnRGYWNlU2V0OjpJdGVyYXRvcjo6bmV4
dChSZWZQdHI8Rm9udEZhY2U+JiBrZXksIFJlZlB0cjxGb250RmFjZT4mIHZhbHVlKQoreworICAg
IGlmIChtX2luZGV4ID09IG1fdGFyZ2V0LT5zaXplKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGtleSA9IG1fdGFyZ2V0LT5tX2JhY2tpbmdbbV9pbmRleCsrXS53cmFwcGVyKCk7CisgICAg
dmFsdWUgPSBrZXk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitGb250RmFjZVNldDo6UGVuZGlu
Z1Byb21pc2U6OlBlbmRpbmdQcm9taXNlKFByb21pc2UmJiBwcm9taXNlKQorICAgIDogcHJvbWlz
ZShXVEZNb3ZlKHByb21pc2UpKQoreworfQorCitGb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6
On5QZW5kaW5nUHJvbWlzZSgpCit7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OmhhcyhGb250RmFj
ZSogZmFjZSkgY29uc3QKK3sKKyAgICBpZiAoIWZhY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9iYWNraW5nLmhhcyhmYWNlLT5iYWNraW5nKCkpOworfQorCitzaXplX3Qg
Rm9udEZhY2VTZXQ6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tpbmcuc2l6ZSgp
OworfQorCitGb250RmFjZVNldCYgRm9udEZhY2VTZXQ6OmFkZChGb250RmFjZSogZmFjZSkKK3sK
KyAgICBpZiAoZmFjZSAmJiAhbV9iYWNraW5nLmhhcyhmYWNlLT5iYWNraW5nKCkpKQorICAgICAg
ICBtX2JhY2tpbmcuYWRkKGZhY2UtPmJhY2tpbmcoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQor
Citib29sIEZvbnRGYWNlU2V0OjpyZW1vdmUoRm9udEZhY2UqIGZhY2UpCit7CisgICAgaWYgKCFm
YWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IG1fYmFja2lu
Zy5oYXMoZmFjZS0+YmFja2luZygpKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBtX2JhY2tp
bmcucmVtb3ZlKGZhY2UtPmJhY2tpbmcoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBGb250RmFjZVNldDo6Y2xlYXIoKQoreworICAgIHdoaWxlIChtX2JhY2tpbmcuc2l6ZSgpKQor
ICAgICAgICBtX2JhY2tpbmcucmVtb3ZlKG1fYmFja2luZ1swXSk7Cit9CisKK3ZvaWQgRm9udEZh
Y2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVy
cmVkV3JhcHBlciYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGF1dG8gbWF0
Y2hpbmdGYWNlcyA9IG1fYmFja2luZy5tYXRjaGluZ0ZhY2VzKGZvbnQsIHRleHQsIGVjKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbWF0Y2hpbmdGYWNlcy5zaXpl
KCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+Pigp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byBmYWNlIDogbWF0Y2hp
bmdGYWNlcykKKyAgICAgICAgZmFjZS5nZXQoKS5sb2FkKCk7CisKKyAgICBhdXRvIHBlbmRpbmdQ
cm9taXNlID0gUGVuZGluZ1Byb21pc2U6OmNyZWF0ZShXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBi
b29sIHdhaXRpbmcgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gZmFjZSA6IG1hdGNoaW5nRmFjZXMp
IHsKKyAgICAgICAgcGVuZGluZ1Byb21pc2UtPmZhY2VzLmFwcGVuZChmYWNlLmdldCgpLndyYXBw
ZXIoKSk7CisgICAgICAgIGlmIChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpT
dGF0dXM6OkZhaWx1cmUpIHsKKyAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlLT5wcm9taXNlLnJl
amVjdChET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKE5F
VFdPUktfRVJSKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlm
IChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlN1Y2Nlc3MpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgd2FpdGluZyA9IHRydWU7CisgICAgICAgIGF1
dG8mIHZlYyA9IG1fcGVuZGluZ1Byb21pc2VzLmFkZChSZWZQdHI8Rm9udEZhY2U+KGZhY2UuZ2V0
KCkud3JhcHBlcigpKSwgVmVjdG9yPFJlZjxQZW5kaW5nUHJvbWlzZT4+KCkpLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgdmVjLmFwcGVuZChwZW5kaW5nUHJvbWlzZS5jb3B5UmVmKCkpOworICAg
IH0KKyAgICBpZiAoIXdhaXRpbmcpCisgICAgICAgIHBlbmRpbmdQcm9taXNlLT5wcm9taXNlLnJl
c29sdmUocGVuZGluZ1Byb21pc2UtPmZhY2VzKTsKK30KKworYm9vbCBGb250RmFjZVNldDo6Y2hl
Y2soY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgcmV0dXJuIG1fYmFja2luZy5jaGVjayhmYW1pbHksIHRleHQsIGVjKTsK
K30KKworYXV0byBGb250RmFjZVNldDo6cHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRl
KSAtPiBQcm9taXNlJgoreworICAgIGlmICghbV9wcm9taXNlKQorICAgICAgICBtX3Byb21pc2Ug
PSBjcmVhdGVQcm9taXNlKGV4ZWNTdGF0ZSk7CisgICAgcmV0dXJuIG1fcHJvbWlzZS52YWx1ZSgp
OworfQorICAgIAorU3RyaW5nIEZvbnRGYWNlU2V0OjpzdGF0dXMoKSBjb25zdAoreworICAgIHN3
aXRjaCAobV9iYWNraW5nLnN0YXR1cygpKSB7CisgICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3Rh
dHVzOjpMb2FkaW5nOgorICAgICAgICByZXR1cm4gU3RyaW5nKCJsb2FkaW5nIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpM
b2FkZWQ6CisgICAgICAgIHJldHVybiBTdHJpbmcoImxvYWRlZCIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCJsb2FkZWQiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKwor
Ym9vbCBGb250RmFjZVNldDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fYmFja2luZy5zdGF0dXMoKSA9PSBDU1NGb250RmFjZVNldDo6U3Rh
dHVzOjpMb2FkZWQ7Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0ZWRMb2FkaW5nKCkKK3sK
KyAgICAvLyBGSVhNRTogRmlyZSBhICJsb2FkaW5nIiBldmVudCBhc3luY2hyb25vdXNseS4KK30K
Kwordm9pZCBGb250RmFjZVNldDo6Y29tcGxldGVkTG9hZGluZygpCit7CisgICAgaWYgKG1fcHJv
bWlzZSkKKyAgICAgICAgbV9wcm9taXNlLnZhbHVlKCkucmVzb2x2ZSgqdGhpcyk7CisgICAgbV9w
cm9taXNlID0gTnVsbG9wdDsKKyAgICAvLyBGSVhNRTogRmlyZSBhICJsb2FkaW5nZG9uZSIgYW5k
IHBvc3NpYmx5IGEgbG9hZGluZ2Vycm9yIGV2ZW50IGFzeW5jaHJvbm91c2x5LgorfQorCit2b2lk
IEZvbnRGYWNlU2V0OjpmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNl
OjpTdGF0dXMgbmV3U3RhdHVzKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3BlbmRpbmdQcm9t
aXNlcy5maW5kKGZhY2Uud3JhcHBlcigpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9wZW5kaW5n
UHJvbWlzZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgcGVuZGlu
Z1Byb21pc2UgOiBpdGVyYXRvci0+dmFsdWUpIHsKKyAgICAgICAgaWYgKG5ld1N0YXR1cyA9PSBD
U1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNzKSB7CisgICAgICAgICAgICBpZiAocGVuZGluZ1By
b21pc2UtPmhhc09uZVJlZigpKQorICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlLT5wcm9t
aXNlLnJlc29sdmUocGVuZGluZ1Byb21pc2UtPmZhY2VzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIEFTU0VSVChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVy
ZSk7CisgICAgICAgICAgICAvLyBUaGUgZmlyc3QgcmVzb2x1dGlvbiB3aW5zLCBzbyB3ZSBjYW4g
anVzdCByZWplY3QgZWFybHkgbm93LgorICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21p
c2UucmVqZWN0KERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24oTkVUV09SS19FUlIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3BlbmRpbmdQcm9t
aXNlcy5yZW1vdmUoaXRlcmF0b3IpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIxMWI3ZjE0ODgxYzQyN2UyZTQ2ZTA1YjYzNzM0YzMxZTg5MDI1MDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMCwwICsx
LDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRm9udEZhY2VTZXRfaAorI2RlZmluZSBGb250RmFjZVNldF9oCisKKyNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJDU1NGb250RmFjZVNldC5oIgorI2luY2x1ZGUg
IkRPTUNvcmVFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBG
b250RmFjZTsKKworY2xhc3MgRm9udEZhY2VTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFj
ZVNldD4sIHB1YmxpYyBDU1NGb250RmFjZVNldENsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8Rm9udEZhY2VTZXQ+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYgaW5pdGlhbEZh
Y2VzKQorICAgIHsKKyAgICAgICAgUmVmPEZvbnRGYWNlU2V0PiByZXN1bHQgPSBhZG9wdFJlZigq
bmV3IEZvbnRGYWNlU2V0KGV4ZWNTdGF0ZSwgZG9jdW1lbnQsIGluaXRpYWxGYWNlcykpOworICAg
ICAgICByZXN1bHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICB2aXJ0dWFsIH5Gb250RmFjZVNldCgpOworCisgICAgYm9vbCBoYXMoRm9udEZh
Y2UqKSBjb25zdDsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgIEZvbnRGYWNlU2V0JiBh
ZGQoRm9udEZhY2UqKTsKKyAgICBib29sIHJlbW92ZShGb250RmFjZSopOworICAgIHZvaWQgY2xl
YXIoKTsKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGxvYWQoZm9udCwgU3RyaW5nKCIgIiwg
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocHJvbWlzZSksIGVjKTsgfQor
ICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVm
ZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgY2hlY2so
Y29uc3QgU3RyaW5nJiBmb250LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY2hlY2soZm9u
dCwgU3RyaW5nKCIgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksIGVjKTsgfQorICAg
IGJvb2wgY2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICAKKyAgICBTdHJpbmcgc3RhdHVzKCkgY29uc3Q7CisKKyAgICB0eXBl
ZGVmIERPTVByb21pc2U8Rm9udEZhY2VTZXQmLCBET01Db3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsK
KyAgICBQcm9taXNlJiBwcm9taXNlKEpTQzo6RXhlY1N0YXRlJik7CisKKyAgICBjbGFzcyBJdGVy
YXRvciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGb250RmFjZVNl
dCYpOworCisgICAgICAgIHVzaW5nIEtleSA9IFJlZlB0cjxGb250RmFjZT47CisgICAgICAgIHVz
aW5nIFZhbHVlID0gUmVmUHRyPEZvbnRGYWNlPjsKKworICAgICAgICBib29sIG5leHQoS2V5JiBu
ZXh0S2V5LCBWYWx1ZSYgbmV4dFZhbHVlKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxG
b250RmFjZVNldD4gbV90YXJnZXQ7CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgMCB9OworICAg
IH07CisgICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvcigqdGhp
cyk7IH0KKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+OjpyZWY7CisgICAgdXNp
bmcgUmVmQ291bnRlZDxGb250RmFjZVNldD46OmRlcmVmOworCitwcml2YXRlOgorICAgIHN0cnVj
dCBQZW5kaW5nUHJvbWlzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdQcm9taXNlPiB7Cisg
ICAgICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mLCBET01D
b3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKKyAgICAgICAgc3RhdGljIFJlZjxQZW5kaW5nUHJvbWlz
ZT4gY3JlYXRlKFByb21pc2UmJiBwcm9taXNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5nUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKSk7CisgICAg
ICAgIH0KKyAgICAgICAgflBlbmRpbmdQcm9taXNlKCk7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYpOworCisgICAgcHVibGljOgorICAgICAgICBWZWN0
b3I8UmVmUHRyPEZvbnRGYWNlPj4gZmFjZXM7CisgICAgICAgIFByb21pc2UgcHJvbWlzZTsKKyAg
ICB9OworCisgICAgRm9udEZhY2VTZXQoSlNDOjpFeGVjU3RhdGUmLCBEb2N1bWVudCYsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYpOworCisgICAgLy8gQ1NTRm9udEZhY2VTZXRDbGll
bnQKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRlZExvYWRpbmcoKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29tcGxldGVkTG9hZGluZygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBm
YWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzKSBvdmVycmlkZTsK
KworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJGb250RmFjZVNldCI7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Rm9udEZhY2VTZXRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQor
CisgICAgQ1NTRm9udEZhY2VTZXQgbV9iYWNraW5nOworICAgIEhhc2hNYXA8UmVmUHRyPEZvbnRG
YWNlPiwgVmVjdG9yPFJlZjxQZW5kaW5nUHJvbWlzZT4+PiBtX3BlbmRpbmdQcm9taXNlczsKKyAg
ICBPcHRpb25hbDxQcm9taXNlPiBtX3Byb21pc2U7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZVNldC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZmNjg1ZGNhY2Q5YjUyZWMyNzM1NWUw
ZGRiMzUxZGYzZTU2ZmU3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5pZGwKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2VudW0gRm9udEZh
Y2VTZXRMb2FkU3RhdHVzIHsKKyAgICAibG9hZGluZyIsCisgICAgImxvYWRlZCIKK307CisKK1sK
KyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlJkRvY3VtZW50LAorICAgIENvbnN0
cnVjdG9yKHNlcXVlbmNlPEZvbnRGYWNlPiBpbml0aWFsRmFjZXMpCitdIGludGVyZmFjZSBGb250
RmFjZVNldCA6IEV2ZW50VGFyZ2V0IHsKKyAgICBbQ3VzdG9tXSBPYmplY3QgZW50cmllcygpOwor
ICAgIC8vIGZvckVhY2goKTogTWF5YmUgaW1wbGVtZW50IHRoaXMgaW4gSmF2YXNjcmlwdCBvbiB0
b3Agb2Yga2V5cygpLgorICAgIGJvb2xlYW4gaGFzKEZvbnRGYWNlIGZvbnQpOworICAgIFtDdXN0
b21dIE9iamVjdCBrZXlzKCk7CisgICAgW0N1c3RvbV0gT2JqZWN0IHZhbHVlcygpOworICAgIC8v
IEBpdGVyYXRvcgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNpemU7CisKKyAgICBGb250
RmFjZVNldCBhZGQoRm9udEZhY2UgZm9udCk7CisgICAgW0ltcGxlbWVudGVkQXM9cmVtb3ZlXSBi
b29sZWFuIGRlbGV0ZShGb250RmFjZSBmb250KTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZzsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9ubG9hZGluZ2RvbmU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmxvYWRpbmdl
cnJvcjsKKworICAgIFtSYWlzZXNFeGNlcHRpb25dIFByb21pc2UgbG9hZChET01TdHJpbmcgZm9u
dCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOworICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xl
YW4gY2hlY2soRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0KTsKKworICAg
IFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIHJlYWR5OworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBGb250RmFjZVNldExvYWRTdGF0dXMgc3RhdHVzOworfTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0NjkwMGVjYTMyNzBl
ZjNjMzE0YThjM2NkYWMxMjA5ODhlYjVhZWQzLi44NWIxMGZjOTVhYjA2MWNjOWY4MTk4MjA2NTdj
NDg5M2VkMmU4ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE0MSw2ICsxNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obG9hZGVuZCkgXAogICAgIG1hY3JvKGxv
YWRpbmcpIFwKICAgICBtYWNybyhsb2FkaW5nZG9uZSkgXAorICAgIG1hY3JvKGxvYWRpbmdlcnJv
cikgXAogICAgIG1hY3JvKGxvYWRzdGFydCkgXAogICAgIG1hY3JvKG1hcmspIFwKICAgICBtYWNy
byhtZXNzYWdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRl
eCBhYjRmZWRiZDU3MWJlMTYzOTAzY2NhZGEyMDc0MjVkMTU1NzRjYzA0Li40MzBiOGI3MjAyMjg1
NWMxN2IyNWE4NTYzNjM2NWJiNWU3MjllZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KQEAgLTksNyArOSw3IEBAIERPTUFwcGxpY2F0aW9uQ2FjaGUKIERPTVdp
bmRvdwogRXZlbnRTb3VyY2UKIEZpbGVSZWFkZXIKLUZvbnRMb2FkZXIgY29uZGl0aW9uYWw9Rk9O
VF9MT0FEX0VWRU5UUworRm9udEZhY2VTZXQKIElEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKIElEQk9wZW5EQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RQogSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271522</attachid>
            <date>2016-02-16 19:57:30 -0800</date>
            <delta_ts>2016-02-16 21:10:02 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-153348-20160216195710.patch</filename>
            <type>text/plain</type>
            <size>83577</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIwZDVkMTJhNGU0NzU0
YWM2N2ZlNzJhNjFhNWMzNWRlNTdjYTNiNS4uN2RjYzNjMDNlNTdmMjNkMjFkMzc4ZjliYTBlM2Y3
NzE1ZjIxMjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxNi0wMi0xNiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtGb250IExv
YWRpbmddIEltcGxlbWVudCBGb250RmFjZVNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIENTUyBGb250IExvYWRpbmcgc3BlYyBpbmNsdWRlcyBh
IEZvbnRGYWNlU2V0IG9iamVjdCB3aGljaCByZXByZXNlbnRzCisgICAgICAgIGEgY29sbGVjdGlv
biBvZiBGb250RmFjZXMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBzdWNoIGFuIG9iamVjdCwgYW5k
CisgICAgICAgIGJhY2tzIGl0IHdpdGggYSB2ZWN0b3Igb2YgRm9udEZhY2VzLiBTaW1pbGFybHkg
dG8gdGhlIEZvbnRGYWNlIG9iamVjdCwKKyAgICAgICAgRm9udEZhY2VTZXQgaXMgc2VwYXJhdGVk
IGludG8gYSBGb250RmFjZVNldCBmcm9udGVuZCBvYmplY3QgYW5kIGEKKyAgICAgICAgQ1NTRm9u
dEZhY2VTZXQgYmFja2VuZCBvYmplY3QsIHdoaWNoIGFjdHVhbGx5IG93bnMgdGhlIEZvbnRGYWNl
IG9iamVjdHMuCisgICAgICAgIEFsbCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBQcm9taXNlcyBpcyBw
ZXJmb3JtZWQgaW4gdGhlIGZyb250ZW5kIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXMgbm90IGltcGxlbWVudCB0aGUgRXZlbnRUYXJnZXQgcGFydCBvZiB0aGUgRm9udEZhY2VTZXQK
KyAgICAgICAgQVBJLCBzbyB0aGUgb25seSB3YXkgdG8ga25vdyB3aGVuIGEgZm9udCBpcyBmaW5p
c2hlZCBsb2FkaW5nIGlzIGJ5IHVzaW5nCisgICAgICAgIHRoZSBhc3NvY2lhdGVkIFByb21pc2Ug
b2JqZWN0cy4KKworICAgICAgICBUaGUgQ1NTIEZvbnQgTG9hZGluZyBzcGVjIGRlc2NyaWJlcyBo
b3cgdGhlIERvY3VtZW50IHNob3VsZCB2ZW5kIGFuCisgICAgICAgIGluc3RhbmNlIG9mIEZvbnRG
YWNlU2V0IHdoaWNoIHJlcHJlc2VudHMgdGhlIGZvbnQgZmFjZXMgY3VycmVudGx5CisgICAgICAg
IGFzc29jaWF0ZWQgd2l0aCB0aGUgRG9jdW1lbnQuIEhvd2V2ZXIsIHRoYXQgZnVuY3Rpb25hbGl0
eSBpcworICAgICAgICBmb3J0aGNvbWluZy4gQ3VycmVudGx5LCB0aGUgb25seSB3YXkgdG8gZ2V0
IGEgRm9udEZhY2VTZXQgaXMgdG8gY3JlYXRlCisgICAgICAgIG9uZSB5b3Vyc2VsZiAodXNpbmcg
dGhlIGNvbnN0cnVjdG9yKS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90CisgICAgICAg
IGltcGxlbWVudCB0aGUgc3BlYydzIG5vdGlvbiBvZiBhICJDU1MtY29ubmVjdGVkIGZvbnQgZmFj
ZS4iCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ZvbnQtZmFjZS1zZXQtamF2YXNjcmlwdC5o
dG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBmaWxlcy4KKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNGb250RmFjZVNldDo6cmVh
ZHkpOiBVc2UgdGhlIFByb21pc2UgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6SlNGb250RmFj
ZVNldDo6ZW50cmllcyk6IFVzZSBleGlzdGluZyBpdGVyYXRvciBjb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6SlNGb250RmFjZVNldDo6a2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0ZvbnRGYWNl
U2V0Ojp2YWx1ZXMpOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9uZS5jcHA6IEFkZCBuZXcgZmls
ZXMuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDogV2Ugbm93IGhhdmUgYSBjb2xsZWN0
aW9uIG9mIGNsaWVudHMgKGluc3RlYWQgb2YKKyAgICAgICAganVzdCBvbmUpLiBBbHNvLCB3ZSBu
ZWVkIHRvIGtlZXAgYSBwb2ludGVyIHRvIG91ciBGb250RmFjZSB3cmFwcGVyLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2U6OkNTU0ZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlOjphZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnJl
bW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0U3RhdHVzKTog
UmVuYW1lIHRoZSBkZWxlZ2F0ZSBjYWxsYmFjayB0byBiZQorICAgICAgICBtb3JlIGNsZWFyLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2U6OmFkZGVkVG9TZWdtZW50ZWRGb250RmFjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6cmVtb3ZlZEZyb21TZWdtZW50ZWRGb250RmFj
ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6IFNhbWUgYXMgYWJvdmUu
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlOjpDbGllbnQ6On5DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6OkNsaWVudDo6a2ljayk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
Q2xpZW50OjpzdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6Ondy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VDbGllbnQ6On5DU1NGb250RmFj
ZUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDogQWRk
ZWQuIEluaXRpYWwgaW1sZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0OjpDU1NGb250RmFjZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6
fkNTU0ZvbnRGYWNlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjppbmNy
ZW1lbnRBY3RpdmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6ZGVj
cmVtZW50QWN0aXZlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6Omhh
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dEZhbWlsaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmZhbWlsaWVzSW50ZXJzZWN0KTogQmVjYXVz
ZSB0aGlzIGlzIGFuIGluaXRpYWwgaW1sZW1lbnRhdGlvbiwKKyAgICAgICAgdGhpcyBmdW5jdGlv
biBpcyBub3Qgb3B0aW1pemVkLiBBIHN1YnNlcXVlbnQgcGF0Y2ggKHdoaWNoIGltcGxlbWVudHMK
KyAgICAgICAgRG9jdW1lbnQuZm9udHMpIHdpbGwgb3B0aW1pemUgdGhpcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjptYXRjaGluZ0ZhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlU2V0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0
OjpjaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6c3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZVNldENsaWVudDo6fkNTU0ZvbnRGYWNlU2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlU2V0OjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0OjpzdGF0dXMpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OnJlZ2lzdGVyTG9jYWxGb250RmFjZXNG
b3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFj
ZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpraWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
Ojp+Q1NTU2VnbWVudGVkRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVk
Rm9udEZhY2U6OmFwcGVuZEZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRl
ZEZvbnRGYWNlOjpraWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
Ojpmb250TG9hZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9udEZh
Y2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6OkZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp+Rm9udEZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgdG8g
bWFrZSBpdHMgcHVycG9zZSBjbGVhcmVyLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6Omtp
Y2spOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9G
b250RmFjZVNldC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJvbWlzZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Rm9udEZhY2VTZXQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEZhY2VTZXQ6On5Gb250RmFjZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RmFjZVNldDo6SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlU2V0OjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6
UGVuZGluZ1Byb21pc2U6OlBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlU2V0OjpQZW5kaW5nUHJvbWlzZTo6flBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlU2V0OjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OnNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250RmFjZVNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6bG9hZCk6IE1vc3Qgb2Yg
dGhlIGNvbXBsZXhpdHkgb2YgbG9hZGluZyBpcworICAgICAgICBkdWUgdG8gdGhlIHByb21pc2Vz
IGludm9sdmVkLiBSYXRoZXIgdGhhbiB1c2UgdGhlIEphdmFzY3JpcHQgZnVuY3Rpb24KKyAgICAg
ICAgUHJvbWlzZS5hbGwoKSwgdGhpcyBwYXRjaCBidWlsZHMgYSBkYXRhIHN0cnVjdHVyZSB0byBy
ZXByZXNlbnQgdGhlCisgICAgICAgIHByb21pc2VzIHdoaWNoIG5lZWQgdG8gYmUgcmVzb2x2ZWQu
IFdoZW4gZm9udHMgZmluaXNoIGxvYWRpbmcsIHdlIGxvb2sKKyAgICAgICAgYXQgdGhlIGRhdGEg
c3RydWN0dXJlIHRvIGRldGVybWluZSB3aGljaCBwcm9taXNlcyB0byByZXNvbHZlLgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlU2V0OjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNhblN1c3Bl
bmRGb3JEb2N1bWVudFN1c3BlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6
OnN0YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpjb21wbGV0
ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpmdWxmaWxsUHJvbWlz
ZSk6IEtlZXAgdGhlIHByb21pc2UgYWxpdmUuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNl
dDo6ZmFjZUZpbmlzaGVkKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRGYWNlU2V0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpjaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Y3JlYXRlSXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjpjcmVhdGUpOgorICAg
ICAgICAqIGNzcy9Gb250RmFjZVNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9FdmVudE5h
bWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKwogMjAxNi0wMi0x
NiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCBzaG91bGQgbm90IHNlYXJjaCBwaG90byBj
aGFpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4OWZiYzgyMjFkYTk4YzQ4MWZmMDQwMGQ2NWVl
ZTA0ZjdlMjU3NmYzLi40NWE1YTM0OWY1NzExZmViNDdhNjc3YTZhNmE0MmU3OTE2YjhjZjY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzMxLDYgKzMzMSw3IEBAIHNldChXZWJDb3JlX05PTl9T
VkdfSURMX0ZJTEVTCiAgICAgY3NzL0NvdW50ZXIuaWRsCiAgICAgY3NzL0RPTVdpbmRvd0NTUy5p
ZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCisgICAgY3NzL0ZvbnRGYWNlU2V0LmlkbAogICAgIGNz
cy9Gb250TG9hZGVyLmlkbAogICAgIGNzcy9NZWRpYUxpc3QuaWRsCiAgICAgY3NzL01lZGlhUXVl
cnlMaXN0LmlkbApAQCAtMTExMCw2ICsxMTExLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlND
U1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRm9udEZhY2VD
dXN0b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ2FsbGJh
Y2tEYXRhLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcApAQCAtMTMwMiw4ICsxMzA0LDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBj
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKICAgICBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRz
LmNwcAogICAgIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorICAgIGNzcy9Gb250RmFjZVNl
dC5jcHAKICAgICBjc3MvRm9udEZhY2UuY3BwCiAgICAgY3NzL0NTU0ZvbnRGYWNlLmNwcAorICAg
IGNzcy9DU1NGb250RmFjZVNldC5jcHAKICAgICBjc3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3Bw
CiAgICAgY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAKICAgICBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzOTZjMzgxYzRjZTA4NGY4MmMy
YWZlM2QwYWQyNzRjYmFjMTc5YzY5Li5hMzkwYjQ3OWUxMDg5M2Q1ZjBiMWE3MTdiY2M3NGRjNTdi
MmQ0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0Miw2ICsyNDIsNyBA
QCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9Db3VudGVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRE9NV2luZG93Q1NTLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9jc3MvRm9udEZhY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZVNldC5pZGwg
XAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRMb2FkZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nz
cy9NZWRpYUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9NZWRpYVF1ZXJ5TGlzdC5pZGwg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggNzRlNTA1NjA4OTFkNWZiYTg1OTEzMWYyNjJlOGUwN2FmYjJhNTY0YS4uMjVmM2M1NDg2YTdi
YmFhMDU0NDhlYmRhNTRhYmI0NjM1M2E3NWRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTcxLDYgKzE5NzEsMjAgQEAKICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0ZvbnRGYWNlU2V0LmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtOTYxMSw2ICs5NjI1LDIwIEBACiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXEZvbnRGYWNlU2V0LmNw
cCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcRm9udEZhY2Uu
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTk2
MjUsNiArOTY1MywyMCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGNzc1xDU1NGb250RmFjZVNldC5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cY3NzXENTU0ZvbnRGYWNlLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzc0MCw2ICsxNzc4MiwyMCBAQAogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRm9udEZhY2VT
ZXRDdXN0b20uY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXEpTRm9udEZhY2VDdXN0b20uY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5OTg3LDYgKzIwMDQzLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVSZWFkZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVS
ZWFkZXJTeW5jLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNGb250TG9hZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZVNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRm9udEZhY2UuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0dhbWVwYWQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0dh
bWVwYWRCdXR0b24uaCIgLz4KQEAgLTIxNzA1LDcgKzIxNzYyLDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGNzc1xDU1NDdXJzb3JJbWFnZVZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0ZvbnRGYWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxjc3NcQ1NTRm9udEZhY2VTZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGNzc1xGb250RmFjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXEZv
bnRGYWNlU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZh
Y2VMb2FkRXZlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NGb250
RmFjZVJ1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NGb250RmFj
ZVNvdXJjZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGQ4NGQ3MjFjNTQxOTYzZjgxMzc4Mjk1ZDdl
YTAxODllOTRiZWNhOGIuLjIzZWI3YzJlY2U2NDAxMDQ0ZjIzNDRmNjQ0YWE3OWJmZTljNWY1ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKQEAgLTIwODQsOSArMjA4NCwxNSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cY3NzXENTU0N1cnNvckltYWdlVmFsdWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Y3Nz
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxj
c3NcRm9udEZhY2VTZXQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcRm9udEZhY2UuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZhY2VTZXQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
Y3NzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxjc3NcQ1NTRm9udEZhY2UuY3BwIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC00MjYyLDYgKzQyNjgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAiPgogICAgICAgPEZpbHRl
cj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNGb250RmFjZVNldEN1c3RvbS5jcHAiPgorICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNGb250RmFjZUN1c3RvbS5jcHAiPgogICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTI3
NCw2ICs1MjgzLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0ZpbGVSZWFkZXJTeW5jLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3Vy
Y2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZVNldC5jcHAiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRm9udEZhY2UuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTkwNjcsOSArOTA3OSwxNSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0N1
cnNvckltYWdlVmFsdWUuaCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXEZvbnRGYWNlU2V0LmgiPgor
ICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGNzc1xGb250RmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NT
Rm9udEZhY2VTZXQuaCI+CisgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0ZvbnRGYWNlLmgiPgogICAg
ICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyNzAyLDYgKzEy
NzIwLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVSZWFkZXJTeW5jLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRm9udEZhY2VTZXQuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWRT
b3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlODRmNDYyMzIx
YWM5YjcxODdlOWYzNTFjNDhjZGI3NGFlZDM2ZDRmLi5jYThjNGMwOTlhZDAzN2NmYWY2YjA2Njkx
Zjc3YTNmODBjZWRlYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NTAsNiArOTUwLDExIEBACiAJCTFDMjFFNTdDMTgzRUQx
RkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZh
Y2VQb29sLmNwcCAqLzsgfTsKIAkJMUMyMUU1N0QxODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFj
ZVBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUMyNDE3QkExOTkyQzA0MTAwRUY5
OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUMyNDE3QjkxOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90
QDN4LnBuZyAqLzsgfTsKKwkJMUMyNEVFQTQxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRF
RUEyMUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5jcHAgKi87IH07CisJCTFDMjRFRUE1
MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNEVFQTMxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRG
YWNlU2V0LmggKi87IH07CisJCTFDMjRFRUE4MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNl
U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MjRFRUE2MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJMUMy
NEVFQTkxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAv
KiBKU0ZvbnRGYWNlU2V0LmggKi87IH07CisJCTFDMjRFRUFCMUM3MkFBMEEwMDgwRjhGQyAvKiBK
U0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMjRFRUFBMUM3MkFBMEEwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcCAqLzsgfTsKIAkJMUMyNjQ5N0EwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9h
ZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi87IH07
CiAJCTFDMzI0OTExMUM2RDZBM0IwMDdFREIzMiAvKiBGb250VmFyaWFudEJ1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMzMjQ5MTAxQzZE
NkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi87IH07CiAJCTFDMzk2OUQw
MUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcg
LyogRm9udENhY2hlQ29yZVRleHQuY3BwICovOyB9OwpAQCAtNTkxMyw2ICs1OTE4LDggQEAKIAkJ
QzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYxMEYz
QUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgKi87IH07CiAJCUMx
MDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjMwRjNBQTZCODAw
MURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87IH07CiAJCUMyMDE1QzBBMUJFNkZF
QjIwMDgyMjM4OSAvKiBGb250VmFyaWFudEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMDE1QzA5MUJFNkZFMkMwMDgyMjM4OSAvKiBGb250
VmFyaWFudEJ1aWxkZXIuaCAqLzsgfTsKKwkJQzI2MDE3QTMxQzcyREM5OTAwRjc0QTE2IC8qIENT
U0ZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNjAxN0ExMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5jcHAgKi87
IH07CisJCUMyNjAxN0E0MUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI2MDE3QTIxQzcyREM5
OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmggKi87IH07CiAJCUMyODA4MzNGMUM2REMyNkYw
MDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjgwODMzRTFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5oICov
OyB9OwogCQlDMjgwODM0MDFDNkRDMjc1MDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgwODMzRDFDNkRDMjJD
MDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi87IH07CiAJCUMyODA4MzQyMUM2REM5NkEwMDE0
NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzQxMUM2REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRGYWNl
Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgzNzQsNiArODM4MSwxMiBAQAogCQkxQzIxRTU3QTE4M0VE
MUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJT1N1cmZhY2VQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMyMUU1N0IxODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSU9TdXJmYWNlUG9vbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RA
M3gucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucG5nOyBwYXRoID0gIlNwZWxsaW5nRG90QDN4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDMjRFRUExMUM3MjlCMzIwMDgwRjhGQyAvKiBGb250RmFjZVNldC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2VTZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzI0RUVBMjFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2VTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzI0RUVBMzFDNzI5Q0U0MDA4MEY4RkMgLyog
Rm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZhY2VT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMyNEVFQTYxQzcyQTdCNDAwODBG
OEZDIC8qIEpTRm9udEZhY2VTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
MjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUMyNEVFQUExQzcyQUEwQTAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXRDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFjZVNldEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEw
MEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMzI0OTEwMUM2RDZBM0IwMDdFREIzMiAvKiBGb250VmFyaWFudEJ1aWxkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFZhcmlhbnRCdWls
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzOTY5Q0YxQjc0MjExRTAw
MkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzODMzLDYgKzEzODQ2LDggQEAKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRG
IC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMDE1QzA5MUJFNkZFMkMwMDgyMjM4OSAvKiBGb250VmFyaWFudEJ1aWxkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udFZhcmlhbnRCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyNDY4NTEzMUExNDhFMTgwMDgxMTc5MiAvKiBDb3JlR3JhcGhpY3NTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUdyYXBoaWNzU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyNjAxN0ExMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFj
ZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250RmFj
ZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNjAxN0EyMUM3MkRDOTkw
MEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgw
ODMzQzFDNkRCMTk0MDAxNDUxQjYgLyogRm9udEZhY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEZvbnRGYWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0Qx
QzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE3NTU1LDYgKzE3NTcwLDggQEAKIAkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3
IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUMyNEVFQTYxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuY3Bw
ICovLAorCQkJCTFDMjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi8s
CiAJCQkJQzI4MDgzM0QxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovLAogCQkJ
CUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8sCiAJCQkJOTkwOEIw
RjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5j
cHAgKi8sCkBAIC0yMjQ2NSw2ICsyMjQ4Miw3IEBACiAJCQkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3
MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICovLAogCQkJCUJDRUZFMUU0MERDQTVGMzMw
MDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwICovLAogCQkJCUMyODA4MzQxMUM2
REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCAqLywKKwkJCQkxQzI0RUVBQTFD
NzJBQTBBMDA4MEY4RkMgLyogSlNGb250RmFjZVNldEN1c3RvbS5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IEN1c3RvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzc3NCw2ICsy
Mzc5MiwxMSBAQAogCQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAg
Ki8sCiAJCQkJMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi8sCiAJCQkJ
QzI4MDgzM0MxQzZEQjE5NDAwMTQ1MUI2IC8qIEZvbnRGYWNlLmlkbCAqLywKKwkJCQkxQzI0RUVB
MTFDNzI5QjMyMDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaWRsICovLAorCQkJCTFDMjRFRUEyMUM3
MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5jcHAgKi8sCisJCQkJMUMyNEVFQTMxQzcyOUNF
NDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggKi8sCisJCQkJQzI2MDE3QTExQzcyREM5OTAwRjc0
QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmNwcCAqLywKKwkJCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRB
MTYgLyogQ1NTRm9udEZhY2VTZXQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2NDk1LDYgKzI2NTE4LDcgQEAKIAkJCQkwRkRBN0Mx
RjE4ODMyMkZDMDBDOTU0QjUgLyogSlNHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0ODJCNzUyMTE5OENCNkIwMEJGQjAwNSAvKiBKU0hhc2hDaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM5NEQxNEYwQzI3NUM2ODAwNkJDNjE3IC8qIEpTSGlzdG9yeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUMyNEVFQTUxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzk3RTQxMzEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxs
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTJERjAwQTFCODUyQTAwQzgwN0Y4
IC8qIEpTSFRNTEFuY2hvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEEyREYyMEEx
Qjg1MkEwMEM4MDdGOCAvKiBKU0hUTUxBcHBsZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI3MzA4LDYgKzI3MzMyLDcgQEAKIAkJCQlCQzc2QUMxMzBERDdBRDVDMDA0MTVGMzQgLyogUGFy
c2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzZENUEyMzE5M0U4RTBDMDBDRTRD
QUIgLyogUGFyc2luZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQ0ExMjUx
RjEyRDAwM0VGMjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
QzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEIyNzA4QzcwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUM1OTg5MDU3MTRFOUMyODAwMEU4RDE4QiAvKiBQYXN0ZWJvYXJkU3RyYXRlZ3ku
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTgwMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4MDQzLDYgKzI4MDY4LDcgQEAKIAkJCQkwODEwNzY0NDEyODI4
NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwOTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzI2MDE3QTQxQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNl
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhFRTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZH
TWFya2VyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNDQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTQ3MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTg2Myw2
ICsyOTg4OSw3IEBACiAJCQkJNTFFMUVDQzAwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4NUZDNzcxQkI0QzRFODAwMTI4OThGIC8qIElEQkFu
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTk4RjdCRTFCQzMzOEFGMDBFMkNDNUYgLyogSURC
QW55SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMjYwMTdBMzFDNzJEQzk5MDBGNzRBMTYg
LyogQ1NTRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2NjIxMUQ0RkFD
NTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE2RDdENzExQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTk4RjdDMDFCQzQ4NTY3MDBFMkNDNUYgLyogSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAzODgsNiArMzA0MTUsNyBAQAogCQkJ
CTFBMEQ1NzQwMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTEyODRCQjIxMDQ0OUZGQTAwRUFFQjUyIC8qIEpTUGFnZVRyYW5zaXRpb25F
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVCMTEyQjAzRUUxMDAzQTU4M0EgLyog
SlNQYW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMjRFRUE0MUM3MjlDRTQwMDgw
RjhGQyAvKiBGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDhBQTYzRTE2OTUx
NEE3MDBEMkVBNjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU1MUE4MURGMTcyOThENzcwMEJGQ0E2MSAvKiBKU1BlcmZvcm1hbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCThBOUE1ODcwMTFFODRDMzYwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMTU4LDYgKzMxMTg2LDcgQEAKIAkJCQlBQkRE
RkU3OTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTQ1NDQyNEUxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMzU4NkRGMTUyNjRDNDUwMDIyQTY1OSAvKiBSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMyNEVFQTgxQzcyQTdCNDAwODBG
OEZDIC8qIEpTRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMzJCOUUxNTE3
QzIyNzAwRjU0MkVDIC8qIFJlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMUE3RDk3MThGQ0I1QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QUM4MjJGQzE4MEZDMDMzMDBGQjY0
RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTU3
OCw2ICszMTYwNyw3IEBACiAJCQkJNTExRUMxMkIxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NUU3MkZCMEZEMjYyMzkwMEE4
N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDgxRUJGM0EwRkQzNEY0
MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMy
NEVFQUIxQzcyQUEwQTAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjdBMEIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZpbHRlckVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMEUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0ExMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRml0VG9WaWV3Qm94LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZDg0OTg1NmNkOTY4Y2IxZDZlM2RmNzVkNjdiZDQ4YmY5MDE3
YmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250
RmFjZVNldEN1c3RvbS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ZvbnRGYWNlU2V0LmgiCisKKyNpbmNsdWRlICJGb250
RmFjZS5oIgorI2luY2x1ZGUgIkpTRm9udEZhY2UuaCIKKyNpbmNsdWRlICJKU0tleVZhbHVlSXRl
cmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBGb250RmFjZVNldEl0ZXJh
dG9yID0gSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+OwordXNpbmcgRm9udEZhY2VT
ZXRJdGVyYXRvclByb3RvdHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTxKU0ZvbnRG
YWNlU2V0PjsKKwordGVtcGxhdGU8PgorY29uc3QgSlNDOjpDbGFzc0luZm8gRm9udEZhY2VTZXRJ
dGVyYXRvcjo6c19pbmZvID0geyAiRm9udCBGYWNlIFNldCBJdGVyYXRvciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRm9udEZhY2VTZXRJdGVyYXRvcikgfTsKKwordGVt
cGxhdGU8PgorY29uc3QgSlNDOjpDbGFzc0luZm8gRm9udEZhY2VTZXRJdGVyYXRvclByb3RvdHlw
ZTo6c19pbmZvID0geyAiRm9udCBGYWNlIFNldCBJdGVyYXRvciBQcm90b3R5cGUiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZvbnRGYWNlU2V0SXRlcmF0b3JQcm90b3R5
cGUpIH07CisKK0pTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0OjpyZWFkeShKU0M6OkV4ZWNTdGF0
ZSYgZXhlY1N0YXRlKSBjb25zdAoreworICAgIGF1dG8mIHByb21pc2UgPSB3cmFwcGVkKCkucHJv
bWlzZShleGVjU3RhdGUpOworICAgIHJldHVybiBwcm9taXNlLmRlZmVycmVkKCkucHJvbWlzZSgp
OworfQorCitKU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6ZW50cmllcyhKU0M6OkV4ZWNTdGF0
ZSYpCit7CisgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpnbG9iYWxP
YmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleVZhbHVlKTsKK30KKworSlNDOjpKU1Zh
bHVlIEpTRm9udEZhY2VTZXQ6OmtleXMoSlNDOjpFeGVjU3RhdGUmKQoreworICAgIHJldHVybiBj
cmVhdGVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCksICp0aGlzLCBJdGVy
YXRpb25LaW5kOjpLZXkpOworfQorCitKU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6dmFsdWVz
KEpTQzo6RXhlY1N0YXRlJikKK3sKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGb250RmFj
ZVNldD4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6VmFsdWUpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAppbmRleCBjZGM2N2E3NzEwMTYzNjViY2M4
YWEyYjE2NGU4N2YwZDZmNWEzM2RjLi40ODhiYTIzYjY1NTAwMTM1YTMyMzJiNzY3NDk3YTBjYjcw
NjFkMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJDU1NGb250RmFjZS5jcHAiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VMb2FkRXZl
bnQuY3BwIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5jcHAiCisjaW5jbHVkZSAiQ1NTRm9u
dEZhY2VTZXQuY3BwIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU291cmNlLmNwcCIKICNpbmNsdWRl
ICJDU1NGb250RmFjZVNyY1ZhbHVlLmNwcCIKICNpbmNsdWRlICJDU1NGb250RmVhdHVyZVZhbHVl
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDk1NTRhZWQwYmU5N2I1ZWI1
ZTBlMDlmNTJkMTIyOWU2YzJiYTRlNGMuLjQ4NDViNzUwNzNlYjY0ZjFhZGE5NTFmZmVkYTAyZGM3
MTY0NDA2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNDUsOSArNDUsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShDU1NG
b250RmFjZUNsaWVudCYgY2xpZW50LCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgYm9v
bCBpc0xvY2FsRmFsbGJhY2spCitDU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoQ1NTRm9udFNlbGVj
dG9yJiBmb250U2VsZWN0b3IsIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFj
aykKICAgICA6IG1fZm9udFNlbGVjdG9yKGZvbnRTZWxlY3RvcikKLSAgICAsIG1fY2xpZW50KGNs
aWVudCkKKyAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQogICAgICwgbV9pc0xvY2FsRmFsbGJhY2so
aXNMb2NhbEZhbGxiYWNrKQogewogfQpAQCAtMjMwLDE0ICsyMzAsMTQgQEAgYm9vbCBDU1NGb250
RmFjZTo6YWxsU291cmNlc0ZhaWxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQ1NTRm9udEZhY2U6OmFkZGVkVG9TZWdtZW50ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250
RmFjZSYgc2VnbWVudGVkRm9udEZhY2UpCit2b2lkIENTU0ZvbnRGYWNlOjphZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpCiB7Ci0gICAgbV9zZWdtZW50ZWRGb250RmFjZXMuYWRkKCZzZWdtZW50ZWRG
b250RmFjZSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKIH0KIAotdm9pZCBDU1NGb250
RmFjZTo6cmVtb3ZlZEZyb21TZWdtZW50ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYg
c2VnbWVudGVkRm9udEZhY2UpCit2b2lkIENTU0ZvbnRGYWNlOjpyZW1vdmVDbGllbnQoQ2xpZW50
JiBjbGllbnQpCiB7Ci0gICAgbV9zZWdtZW50ZWRGb250RmFjZXMucmVtb3ZlKCZzZWdtZW50ZWRG
b250RmFjZSk7CisgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAogdm9pZCBDU1NG
b250RmFjZTo6YWRvcHRTb3VyY2Uoc3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiYm
IHNvdXJjZSkKQEAgLTI2OCwxMCArMjY4LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OnNldFN0YXR1
cyhTdGF0dXMgbmV3U3RhdHVzKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBtX3N0YXR1
cyA9IG5ld1N0YXR1czsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAg
ICAgY2xpZW50LT5zdGF0ZUNoYW5nZWQoKnRoaXMsIG1fc3RhdHVzLCBuZXdTdGF0dXMpOwogCi0g
ICAgaWYgKG1fc3RhdHVzID09IFN0YXR1czo6U3VjY2VzcyB8fCBtX3N0YXR1cyA9PSBTdGF0dXM6
OkZhaWx1cmUpCi0gICAgICAgIG1fY2xpZW50LmtpY2soKnRoaXMpOworICAgIG1fc3RhdHVzID0g
bmV3U3RhdHVzOwogfQogCiB2b2lkIENTU0ZvbnRGYWNlOjpmb250TG9hZGVkKENTU0ZvbnRGYWNl
U291cmNlJikKQEAgLTI4MiwxMyArMjgyLDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmZvbnRMb2Fk
ZWQoQ1NTRm9udEZhY2VTb3VyY2UmKQogICAgIGlmIChtX3NvdXJjZXNQb3B1bGF0ZWQpCiAgICAg
ICAgIHB1bXAoKTsKIAotICAgIGlmIChtX3NlZ21lbnRlZEZvbnRGYWNlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIG1fZm9udFNlbGVjdG9yLT5mb250TG9hZGVkKCk7CiAKLSAg
ICBmb3IgKGF1dG8qIGZhY2UgOiBtX3NlZ21lbnRlZEZvbnRGYWNlcykKLSAgICAgICAgZmFjZS0+
Zm9udExvYWRlZCgqdGhpcyk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+a2ljaygqdGhpcyk7CiB9CiAKIHNpemVfdCBDU1NGb250RmFjZTo6cHVt
cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDk2ZGY0NTJmN2UyMzcyODRiM2VmYjEx
ODA2NzllMjU0NThiYzlmZjEuLmQ0ODk4MTY1ZThlNzg3OTVjM2U5NDgzOTQ2MGNiM2RkYmVjZTUw
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwxNiArNDQsMTIgQEAgY2xhc3MgQ1NT
VmFsdWU7CiBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250OworY2xhc3MgRm9udEZhY2U7CiAKLWNsYXNzIENTU0ZvbnRGYWNlQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5DU1NGb250RmFjZUNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBraWNrKENTU0ZvbnRGYWNlJikgPSAwOwotfTsKLQorLy8gRklYTUU6IFRoaXMgY2xhc3Mg
ZG9lcyBub3QgbmVlZCB0byBiZSByZWZlcmVuY2UgY291bnRlZC4KIGNsYXNzIENTU0ZvbnRGYWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTRm9udEZhY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoQ1NTRm9udEZhY2VDbGllbnQmIGNsaWVudCwgQ1NTRm9u
dFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2UoY2xpZW50LCBmb250U2VsZWN0b3IsIGlz
TG9jYWxGYWxsYmFjaykpOyB9CisgICAgc3RhdGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlKENT
U0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIs
IGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
Rm9udEZhY2UoZm9udFNlbGVjdG9yLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spKTsgfQogICAg
IHZpcnR1YWwgfkNTU0ZvbnRGYWNlKCk7CiAKICAgICBib29sIHNldEZhbWlsaWVzKENTU1ZhbHVl
Jik7CkBAIC04MCw4ICs3Niw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9jYWxGYWxsYmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1faXNMb2NhbEZhbGxiYWNrOyB9CiAgICAgU3RhdHVzIHN0YXR1cygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAKLSAgICB2b2lkIGFkZGVkVG9TZWdtZW50ZWRG
b250RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYpOwotICAgIHZvaWQgcmVtb3ZlZEZyb21TZWdt
ZW50ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYpOworICAgIGNsYXNzIENsaWVudDsK
KyAgICB2b2lkIGFkZENsaWVudChDbGllbnQmKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChDbGll
bnQmKTsKIAogICAgIGJvb2wgYWxsU291cmNlc0ZhaWxlZCgpIGNvbnN0OwogCkBAIC05Myw2ICs5
MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkKCk7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYyk7CiAKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBraWNrKENTU0ZvbnRGYWNl
JikgeyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhdGVDaGFuZ2VkKENTU0ZvbnRGYWNlJiwg
U3RhdHVzIG9sZFN0YXRlLCBTdGF0dXMgbmV3U3RhdGUpIHsgVU5VU0VEX1BBUkFNKG9sZFN0YXRl
KTsgVU5VU0VEX1BBUkFNKG5ld1N0YXRlKTsgfTsKKyAgICB9OworCiAgICAgLy8gUGVuZGluZyA9
PiBMb2FkaW5nICA9PiBUaW1lZE91dAogICAgIC8vICAgICAgICAgICAgICB8fCAgXFwgICAgLy8g
IHx8CiAgICAgLy8gICAgICAgICAgICAgIHx8ICAgXFwgIC8vICAgfHwKQEAgLTEyNSwxMiArMTI5
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVUNoYXIzMiBtX3RvOwogICAgIH07CiAKKyAgICBGb250
RmFjZSogd3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlcjsgfQorCiAjaWYgRU5BQkxF
KFNWR19GT05UUykKICAgICBib29sIGhhc1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3Q7CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBDU1NGb250RmFjZShDU1NGb250RmFjZUNsaWVudCYsIENTU0Zv
bnRTZWxlY3RvciYsIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKKyAgICBDU1NGb250RmFjZShDU1NG
b250U2VsZWN0b3ImLCBGb250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKIAogICAgIHNp
emVfdCBwdW1wKCk7CiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKQEAgLTEzOCw5ICsxNDQs
OSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fZmFtaWxpZXM7CiAgICAg
Rm9udFRyYWl0c01hc2sgbV90cmFpdHNNYXNrIHsgc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+
KEZvbnRTdHlsZU5vcm1hbE1hc2sgfCBGb250V2VpZ2h0NDAwTWFzaykgfTsKICAgICBWZWN0b3I8
VW5pY29kZVJhbmdlPiBtX3JhbmdlczsKLSAgICBIYXNoU2V0PENTU1NlZ21lbnRlZEZvbnRGYWNl
Kj4gbV9zZWdtZW50ZWRGb250RmFjZXM7IC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIChpbiBmYXZv
ciBvZiBDU1NGb250RmFjZUNsaWVudCkgd2hlbiBpbXBsZW1lbnRpbmcgRm9udEZhY2VTZXQuCisg
ICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4g
bV9mb250U2VsZWN0b3I7Ci0gICAgQ1NTRm9udEZhY2VDbGllbnQmIG1fY2xpZW50OworICAgIEZv
bnRGYWNlKiBtX3dyYXBwZXI7CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0
aW5nczsKICAgICBGb250VmFyaWFudFNldHRpbmdzIG1fdmFyaWFudFNldHRpbmdzOwogICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+PiBtX3NvdXJjZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTkzMjIwMTA1OTY5YTdi
NTNhNzk0ZDA5OWYwMWMxNDNiOTAzMzgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDU1NGb250RmFjZVNldC5oIgorCisjaW5jbHVkZSAiQ1NTRm9udEZhbWlseS5oIgor
I2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NT
Rm9udEZhY2VTZXQ6OkNTU0ZvbnRGYWNlU2V0KENTU0ZvbnRGYWNlU2V0Q2xpZW50JiBjbGllbnQp
CisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK0NTU0ZvbnRGYWNlU2V0Ojp+Q1NTRm9u
dEZhY2VTZXQoKQoreworICAgIGZvciAoYXV0byYgZmFjZSA6IG1fZmFjZXMpCisgICAgICAgIGZh
Y2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OmluY3Jl
bWVudEFjdGl2ZUNvdW50KCkKK3sKKyAgICArK21fYWN0aXZlQ291bnQ7CisgICAgaWYgKG1fYWN0
aXZlQ291bnQgPT0gMSkgeworICAgICAgICBtX3N0YXR1cyA9IFN0YXR1czo6TG9hZGluZzsKKyAg
ICAgICAgbV9jbGllbnQuc3RhcnRlZExvYWRpbmcoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTRm9u
dEZhY2VTZXQ6OmRlY3JlbWVudEFjdGl2ZUNvdW50KCkKK3sKKyAgICAtLW1fYWN0aXZlQ291bnQ7
CisgICAgaWYgKCFtX2FjdGl2ZUNvdW50KSB7CisgICAgICAgIG1fc3RhdHVzID0gU3RhdHVzOjpM
b2FkZWQ7CisgICAgICAgIG1fY2xpZW50LmNvbXBsZXRlZExvYWRpbmcoKTsKKyAgICB9Cit9CisK
K2Jvb2wgQ1NTRm9udEZhY2VTZXQ6Omhhcyhjb25zdCBDU1NGb250RmFjZSYgZmFjZSkgY29uc3QK
K3sKKyAgICBmb3IgKGF1dG8mIG15RmFjZSA6IG1fZmFjZXMpIHsKKyAgICAgICAgaWYgKG15RmFj
ZS5wdHIoKSA9PSAmZmFjZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OmFkZChDU1NGb250RmFjZSYg
ZmFjZSkKK3sKKyAgICBBU1NFUlQoIWhhcyhmYWNlKSk7CisKKyAgICBtX2ZhY2VzLmFwcGVuZChm
YWNlKTsKKyAgICBmYWNlLmFkZENsaWVudCgqdGhpcyk7CisgICAgaWYgKGZhY2Uuc3RhdHVzKCkg
PT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGluZyB8fCBmYWNlLnN0YXR1cygpID09IENTU0Zv
bnRGYWNlOjpTdGF0dXM6OlRpbWVkT3V0KQorICAgICAgICBpbmNyZW1lbnRBY3RpdmVDb3VudCgp
OworfQorCit2b2lkIENTU0ZvbnRGYWNlU2V0OjpyZW1vdmUoY29uc3QgQ1NTRm9udEZhY2UmIGZh
Y2UpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZhY2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX2ZhY2VzW2ldLnB0cigpID09ICZmYWNlKSB7CisgICAgICAgICAgICBt
X2ZhY2VzW2ldLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICAgICAgbV9mYWNlcy5yZW1v
dmUoaSk7CisgICAgICAgICAgICBpZiAoZmFjZS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3Rh
dHVzOjpMb2FkaW5nIHx8IGZhY2Uuc3RhdHVzKCkgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6VGlt
ZWRPdXQpCisgICAgICAgICAgICAgICAgZGVjcmVtZW50QWN0aXZlQ291bnQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBleHRyYWN0RmFtaWxpZXMoY29uc3QgQ1NTVmFs
dWVMaXN0JiBsaXN0KQoreworICAgIEhhc2hTZXQ8U3RyaW5nPiByZXN1bHQ7CisgICAgZm9yIChh
dXRvJiBmYW1pbHkgOiBsaXN0KSB7CisgICAgICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBw
cmltaXRpdmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZmFtaWx5LmdldCgpKTsKKyAg
ICAgICAgaWYgKCFwcmltaXRpdmUuaXNGb250RmFtaWx5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgcmVzdWx0LmFkZChwcmltaXRpdmUuZm9udEZhbWlseSgpLmZhbWlseU5hbWUp
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBmYW1pbGllc0lu
dGVyc2VjdChDU1NGb250RmFjZSYgZmFjZSwgY29uc3QgQ1NTVmFsdWVMaXN0JiByZXF1ZXN0KQor
eworICAgIGlmICghZmFjZS5mYW1pbGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBIYXNoU2V0PFN0cmluZz4gZmFjZUZhbWlsaWVzID0gZXh0cmFjdEZhbWlsaWVzKCpmYWNlLmZh
bWlsaWVzKCkpOworICAgIEhhc2hTZXQ8U3RyaW5nPiByZXF1ZXN0RmFtaWxpZXMgPSBleHRyYWN0
RmFtaWxpZXMocmVxdWVzdCk7CisgICAgZm9yIChhdXRvICZmYW1pbHkxIDogZmFjZUZhbWlsaWVz
KSB7CisgICAgICAgIGlmIChyZXF1ZXN0RmFtaWxpZXMuY29udGFpbnMoZmFtaWx5MSkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IENTU0ZvbnRGYWNlU2V0Ojpt
YXRjaGluZ0ZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q1NTRm9udEZh
Y2U+PiByZXN1bHQ7CisgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBwYXJzZVJlc3VsdCA9IENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZS5wdHIoKSwgQ1NTUHJvcGVydHlGb250LCBmb250LCB0
cnVlLCBDU1NTdHJpY3RNb2RlLCBudWxscHRyKTsKKyAgICBpZiAocGFyc2VSZXN1bHQgPT0gQ1NT
UGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3IpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBib29sIGRlc2lyZWRTdHlsZUlzTm9y
bWFsID0gdHJ1ZTsKKyAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBkZXNpcmVkU3R5bGUgPSBzdHls
ZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpIHsKKyAgICAgICAg
aWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmRlc2lyZWRTdHlsZSkpIHsKKyAgICAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICAgICAgZGVzaXJlZFN0eWxlSXNOb3JtYWwgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKmRlc2lyZWRTdHlsZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsOworICAgIH0K
KyAgICBSZWZQdHI8Q1NTVmFsdWU+IGZhbWlseSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CisgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KGZhbWls
eS5nZXQoKSkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBDU1NWYWx1ZUxpc3QmIGZhbWlseUxpc3QgPSBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCpmYW1pbHkpOworCisgICAgLy8gTWF0Y2ggQ1NTRm9udFNlbGVjdG9yOjpnZXRG
b250RmFjZSgpCisgICAgZm9yIChhdXRvJiBmYWNlIDogbV9mYWNlcykgeworICAgICAgICBpZiAo
IWZhbWlsaWVzSW50ZXJzZWN0KGZhY2UsIGZhbWlseUxpc3QpIHx8IChkZXNpcmVkU3R5bGVJc05v
cm1hbCAmJiAhKGZhY2UtPnRyYWl0c01hc2soKSAmIEZvbnRTdHlsZU5vcm1hbE1hc2spKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXN1bHQuYXBwZW5kKGZhY2UuZ2V0KCkpOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIENTU0ZvbnRGYWNlU2V0Ojpsb2Fk
KGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBhdXRvIG1hdGNoaW5nRmFjZXMgPSB0aGlzLT5tYXRjaGluZ0ZhY2VzKGZvbnQs
IHRleHQsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0
byBmYWNlIDogbWF0Y2hpbmdGYWNlcykKKyAgICAgICAgZmFjZS5nZXQoKS5sb2FkKCk7Cit9CisK
K2Jvb2wgQ1NTRm9udEZhY2VTZXQ6OmNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBhdXRvIG1hdGNoaW5nRmFjZXMg
PSB0aGlzLT5tYXRjaGluZ0ZhY2VzKGZvbnQsIHRleHQsIGVjKTsKKyAgICBpZiAoZWMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byBmYWNlIDogbWF0Y2hpbmdGYWNlcykg
eworICAgICAgICBpZiAoZmFjZS5nZXQoKS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVz
OjpQZW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBDU1NGb250RmFjZVNldDo6c3RhdGVDaGFuZ2VkKENTU0ZvbnRGYWNl
JiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzIG9sZFN0YXRlLCBDU1NGb250RmFjZTo6U3RhdHVz
IG5ld1N0YXRlKQoreworICAgIEFTU0VSVChoYXMoZmFjZSkpOworICAgIGlmIChvbGRTdGF0ZSA9
PSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nKSB7CisgICAgICAgIEFTU0VSVChuZXdTdGF0
ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpMb2FkaW5nKTsKKyAgICAgICAgaW5jcmVtZW50QWN0
aXZlQ291bnQoKTsKKyAgICB9CisgICAgaWYgKG5ld1N0YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0
dXM6OlN1Y2Nlc3MgfHwgbmV3U3RhdGUgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSkg
eworICAgICAgICBBU1NFUlQob2xkU3RhdGUgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGlu
ZyB8fCBvbGRTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpUaW1lZE91dCk7CisgICAgICAg
IG1fY2xpZW50LmZhY2VGaW5pc2hlZChmYWNlLCBuZXdTdGF0ZSk7CisgICAgICAgIGRlY3JlbWVu
dEFjdGl2ZUNvdW50KCk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNl
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmOWZiYTU1NTU3ZDU0NGI3NTgwYjUyZTBjZmI4M2U1OGQwNzU0Y2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBDU1NGb250RmFjZVNldF9oCisjZGVmaW5lIENTU0ZvbnRGYWNlU2V0X2gK
KworI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRGYWNlU2V0OworCitjbGFzcyBDU1NGb250
RmFjZVNldENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTZXRDbGll
bnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmFjZUZpbmlzaGVkKENTU0ZvbnRGYWNlJiwgQ1NT
Rm9udEZhY2U6OlN0YXR1cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydGVkTG9hZGluZygp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkTG9hZGluZygpID0gMDsKK307CisKK2Ns
YXNzIENTU0ZvbnRGYWNlU2V0IDogcHVibGljIENTU0ZvbnRGYWNlOjpDbGllbnQgeworcHVibGlj
OgorICAgIENTU0ZvbnRGYWNlU2V0KENTU0ZvbnRGYWNlU2V0Q2xpZW50Jik7CisgICAgfkNTU0Zv
bnRGYWNlU2V0KCk7CisKKyAgICBib29sIGhhcyhjb25zdCBDU1NGb250RmFjZSYpIGNvbnN0Owor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9mYWNlcy5zaXplKCk7IH0KKyAgICB2
b2lkIGFkZChDU1NGb250RmFjZSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IENTU0ZvbnRGYWNl
Jik7CisgICAgY29uc3QgQ1NTRm9udEZhY2UmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsg
cmV0dXJuIG1fZmFjZXNbaV07IH0KKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgY2hlY2soY29u
c3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAgICAgICAgTG9hZGluZywKKyAgICAgICAgTG9hZGVk
CisgICAgfTsKKyAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0K
KworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gbWF0Y2hp
bmdGYWNlcyhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9u
Q29kZSYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlQ291bnQoKTsKKyAg
ICB2b2lkIGRlY3JlbWVudEFjdGl2ZUNvdW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhdGVD
aGFuZ2VkKENTU0ZvbnRGYWNlJiwgQ1NTRm9udEZhY2U6OlN0YXR1cyBvbGRTdGF0ZSwgQ1NTRm9u
dEZhY2U6OlN0YXR1cyBuZXdTdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8UmVmPENTU0Zv
bnRGYWNlPj4gbV9mYWNlczsKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OkxvYWRlZCB9
OworICAgIENTU0ZvbnRGYWNlU2V0Q2xpZW50JiBtX2NsaWVudDsKKyAgICB1bnNpZ25lZCBtX2Fj
dGl2ZUNvdW50IHsgMCB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAKaW5kZXggMWM3MmQ5OTZkYTdmNzc1ZDE4ODQ4ZWQ5NWQ0N2FlMThiYjBm
YWU3OC4uMmM4YzJjNmQzNjQxYTE4MjVkZGVhZmFmOGZkYWM1MWVkZDUxMzNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIENT
U0ZvbnRTZWxlY3Rvcjo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENTU1Zh
bHVlTGlzdCYgc3JjTGlzdAogICAgIGZvbnRGYWNlLnNvdXJjZXNQb3B1bGF0ZWQoKTsKIH0KIAot
c3RhdGljIFN0cmluZyBmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYgdmFsdWUpCitTdHJpbmcgQ1NTRm9udFNlbGVjdG9yOjpmYW1pbHlOYW1lRnJvbVByaW1p
dGl2ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlz
Rm9udEZhbWlseSgpKQogICAgICAgICByZXR1cm4gdmFsdWUuZm9udEZhbWlseSgpLmZhbWlseU5h
bWU7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OnJlZ2lzdGVyTG9j
YWxGb250RmFjZXNGb3JGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQogCiAgICAgVmVj
dG9yPFJlZjxDU1NGb250RmFjZT4+IGZhY2VzID0geyB9OwogICAgIGZvciAoYXV0byBtYXNrIDog
dHJhaXRzTWFza3MpIHsKLSAgICAgICAgUmVmPENTU0ZvbnRGYWNlPiBmYWNlID0gQ1NTRm9udEZh
Y2U6OmNyZWF0ZSgqdGhpcywgKnRoaXMsIHRydWUpOworICAgICAgICBSZWY8Q1NTRm9udEZhY2U+
IGZhY2UgPSBDU1NGb250RmFjZTo6Y3JlYXRlKCp0aGlzLCBudWxscHRyLCB0cnVlKTsKICAgICAg
ICAgCiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGZhbWlseUxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgIGZhbWlseUxpc3QtPmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShmYW1pbHlOYW1l
KSk7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNl
UnVsZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSYgZm9udEZhY2VSdWxlLCBib28KICAgICBpZiAo
IXNyY0xpc3QubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxDU1NGb250RmFj
ZT4gZm9udEZhY2UgPSBDU1NGb250RmFjZTo6Y3JlYXRlKCp0aGlzLCAqdGhpcyk7CisgICAgUmVm
PENTU0ZvbnRGYWNlPiBmb250RmFjZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUoKnRoaXMpOwogCiAg
ICAgaWYgKCFmb250RmFjZS0+c2V0RmFtaWxpZXMoKmZvbnRGYW1pbHkpKQogICAgICAgICByZXR1
cm47CkBAIC00OTYsMTAgKzQ5Niw2IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRU
aW1lckZpcmVkKCkKIH0KIAogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6a2ljayhDU1NGb250RmFj
ZSYpCi17Ci19Ci0KIHNpemVfdCBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udENvdW50KCkK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgK
aW5kZXggYTMyN2JhZmUxYTIyYjVjMDVjMTA4M2NjOTNjNGZjMWFiMWU4NzJhYi4uOWEyN2ZlMjJl
ZjcyZDRhOTc3YjZmNzM1YTMxMDIzNTk2MTk2NTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaApAQCAtNDEsMTMgKzQxLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENTU0ZvbnRGYWNlUnVsZTsKK2NsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NT
U2VnbWVudGVkRm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBDYWNoZWRGb250
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZTsKIAotY2xhc3MgQ1NT
Rm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZvbnRTZWxlY3RvciwgcHVibGljIENTU0ZvbnRG
YWNlQ2xpZW50IHsKK2NsYXNzIENTU0ZvbnRTZWxlY3RvciBmaW5hbCA6IHB1YmxpYyBGb250U2Vs
ZWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udFNlbGVjdG9yPiBjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKQEAgLTgwLDYgKzgxLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250Kik7CiAKKyAgICBzdGF0aWMg
U3RyaW5nIGZhbWlseU5hbWVGcm9tUHJpbWl0aXZlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTRm9udFNlbGVjdG9yKERvY3VtZW50Jik7CiAK
QEAgLTg5LDggKzkyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRG
YWNlc0ZvckZhbWlseShjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQga2ljayhDU1NGb250RmFj
ZSYpIG92ZXJyaWRlOwotCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxSZWY8Q1NTRm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiBtX2ZvbnRGYWNlczsKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxDU1NGb250RmFj
ZT4+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmluZGV4IGRj
ZjhmZTQ0MmE0ZDFiZTRiYjAzZWRiOTBlYTk1MDJjYTllNGQ1ODEuLmYwMjRlZDU0ZTg2YjUzZDBl
NWU3MDlmMDM2MDdlYzEzMzk4M2FhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWdtZW50ZWRGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcApAQCAtNDUsMTkgKzQ1LDE5IEBAIENTU1NlZ21lbnRlZEZvbnRGYWNl
OjpDU1NTZWdtZW50ZWRGb250RmFjZShDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKIENT
U1NlZ21lbnRlZEZvbnRGYWNlOjp+Q1NTU2VnbWVudGVkRm9udEZhY2UoKQogewogICAgIGZvciAo
YXV0byYgZmFjZSA6IG1fZm9udEZhY2VzKQotICAgICAgICBmYWNlLT5yZW1vdmVkRnJvbVNlZ21l
bnRlZEZvbnRGYWNlKCp0aGlzKTsKKyAgICAgICAgZmFjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KIAotdm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZSYp
Cit2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjphcHBlbmRGb250RmFjZShSZWY8Q1NTRm9udEZh
Y2U+JiYgZm9udEZhY2UpCiB7CiAgICAgbV9jYWNoZS5jbGVhcigpOworICAgIGZvbnRGYWNlLT5h
ZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9udEZhY2VzLmFwcGVuZChXVEZNb3ZlKGZvbnRGYWNl
KSk7CiB9CiAKLXZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmFwcGVuZEZvbnRGYWNlKFJlZjxD
U1NGb250RmFjZT4mJiBmb250RmFjZSkKK3ZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmtpY2so
Q1NTRm9udEZhY2UmKQogewogICAgIG1fY2FjaGUuY2xlYXIoKTsKLSAgICBmb250RmFjZS0+YWRk
ZWRUb1NlZ21lbnRlZEZvbnRGYWNlKCp0aGlzKTsKLSAgICBtX2ZvbnRGYWNlcy5hcHBlbmQoV1RG
TW92ZShmb250RmFjZSkpOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRGb250V2l0aEludmFsaWRV
bmljb2RlUmFuZ2VJZkxvYWRpbmcoRm9udFJhbmdlcyYgcmFuZ2VzLCBSZWY8Rm9udD4mJiBmb250
LCBjb25zdCBWZWN0b3I8Q1NTRm9udEZhY2U6OlVuaWNvZGVSYW5nZT4mIHVuaWNvZGVSYW5nZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCmluZGV4IGNhZTY0YWY2
OWQ2MjgwZDQyNTNmMmExYWYzMzg4NjBkZjFhNWNiYjkuLjY3ZmY4YWFkZWJjMmJiZDllOGZlOTUz
NjU3ZDI1MjU4YjJkNzFjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250
RmFjZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENTU1NlZ21lbnRlZEZvbnRGYWNlX2gK
ICNkZWZpbmUgQ1NTU2VnbWVudGVkRm9udEZhY2VfaAogCisjaW5jbHVkZSAiQ1NTRm9udEZhY2Uu
aCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250UmFuZ2VzLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM1LDExICszNiwxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogCi1jbGFzcyBDU1NTZWdtZW50ZWRGb250RmFjZSBmaW5hbCB7
CitjbGFzcyBDU1NTZWdtZW50ZWRGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBDU1NGb250RmFjZTo6
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NT
ZWdtZW50ZWRGb250RmFjZShDU1NGb250U2VsZWN0b3ImKTsKQEAgLTQ3LDEzICs0NywxMiBAQCBw
dWJsaWM6CiAKICAgICBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udFNlbGVjdG9yOyB9CiAKLSAgICB2b2lkIGZvbnRMb2FkZWQoQ1NTRm9udEZhY2Um
KTsKLQogICAgIHZvaWQgYXBwZW5kRm9udEZhY2UoUmVmPENTU0ZvbnRGYWNlPiYmKTsKIAogICAg
IEZvbnRSYW5nZXMgZm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mKTsKIAogcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIHZvaWQga2ljayhDU1NGb250RmFjZSYpIG92ZXJyaWRlOwogCiAgICAg
Q1NTRm9udFNlbGVjdG9yJiBtX2ZvbnRTZWxlY3RvcjsKICAgICBIYXNoTWFwPEZvbnREZXNjcmlw
dGlvbktleSwgRm9udFJhbmdlcywgRm9udERlc2NyaXB0aW9uS2V5SGFzaCwgV1RGOjpTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8Rm9udERlc2NyaXB0aW9uS2V5Pj4gbV9jYWNoZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwCmluZGV4IGJjYjJjZDBmYjhhNjZiZjIyM2M1NjlmMzVlNTk1ZWJkZjAyMTk0YzEu
LmM0NWU4ZDI3MTFmMDc1OTc2OTVkZjYyNjI2NGM4OWUzOGQzYzVlZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDEzICsxMTEsMTUgQEAgUmVmUHRyPEZvbnRGYWNl
PiBGb250RmFjZTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnQKIH0KIAogRm9udEZhY2U6OkZvbnRGYWNlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3Rh
dGUsIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKQotICAgIDogbV9iYWNraW5nKENTU0Zv
bnRGYWNlOjpjcmVhdGUoKnRoaXMsIGZvbnRTZWxlY3RvcikpCisgICAgOiBtX2JhY2tpbmcoQ1NT
Rm9udEZhY2U6OmNyZWF0ZShmb250U2VsZWN0b3IsIHRoaXMpKQogICAgICwgbV9wcm9taXNlKGNy
ZWF0ZVByb21pc2UoZXhlY1N0YXRlKSkKIHsKKyAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhp
cyk7CiB9CiAKIEZvbnRGYWNlOjp+Rm9udEZhY2UoKQogeworICAgIG1fYmFja2luZy0+cmVtb3Zl
Q2xpZW50KCp0aGlzKTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlPiBGb250RmFjZTo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTMx
NSwxMCArMzE3LDEwIEBAIFN0cmluZyBGb250RmFjZTo6c3RhdHVzKCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCJlcnJvciIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogfQogCi12
b2lkIEZvbnRGYWNlOjpraWNrKENTU0ZvbnRGYWNlJiBmYWNlKQordm9pZCBGb250RmFjZTo6c3Rh
dGVDaGFuZ2VkKENTU0ZvbnRGYWNlJiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzLCBDU1NGb250
RmFjZTo6U3RhdHVzIG5ld1N0YXRlKQogewogICAgIEFTU0VSVF9VTlVTRUQoZmFjZSwgJmZhY2Ug
PT0gbV9iYWNraW5nLnB0cigpKTsKLSAgICBzd2l0Y2ggKG1fYmFja2luZy0+c3RhdHVzKCkpIHsK
KyAgICBzd2l0Y2ggKG5ld1N0YXRlKSB7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpU
aW1lZE91dDoKICAgICAgICAgcmVqZWN0UHJvbWlzZShORVRXT1JLX0VSUik7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggN2MxMzlmMjJiZGM3NzA3NjFlMjRlNzFkMzgx
MjFjMWZkYTU0NzAxZS4uZDU2NzQyNGI4YTcwOGFlNTM2M2IxNWYyZDFkZjVkZGFlNjg3MDczNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ1NTRm9udEZhY2U7CiBj
bGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7CiAKLWNsYXNzIEZvbnRGYWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8Rm9udEZhY2U+LCBwdWJsaWMgQ1NTRm9udEZhY2VDbGllbnQgeworY2xh
c3MgRm9udEZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZT4sIHB1YmxpYyBDU1NGb250
RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEZvbnRGYWNlPiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiBmYW1pbHksIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzb3VyY2UsIGNvbnN0IERp
Y3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB+Rm9u
dEZhY2UoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGb250RmFj
ZShKU0M6OkV4ZWNTdGF0ZSYsIENTU0ZvbnRTZWxlY3RvciYpOwogCi0gICAgdm9pZCBraWNrKENT
U0ZvbnRGYWNlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0YXRlQ2hhbmdlZChDU1NG
b250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMgb2xkU3RhdGUsIENTU0ZvbnRGYWNlOjpTdGF0
dXMgbmV3U3RhdGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUHJvbWlzZSgpOwogICAg
IHZvaWQgcmVqZWN0UHJvbWlzZShFeGNlcHRpb25Db2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiMDMxMWRmMmYwNzk2NWU0OThhZjVkNmM2MzJiOTAyZTc1MmFh
NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3Bw
CkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oIgorI2luY2x1ZGUgIkZvbnRGYWNlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisj
aW5jbHVkZSAiSlNET01Db3JlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSlNGb250RmFjZS5oIgor
I2luY2x1ZGUgIkpTRm9udEZhY2VTZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgRm9udEZhY2VTZXQ6OlByb21pc2UgY3JlYXRlUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgZXhl
YykKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIHJl
dHVybiBGb250RmFjZVNldDo6UHJvbWlzZShEZWZlcnJlZFdyYXBwZXIoJmV4ZWMsICZnbG9iYWxP
YmplY3QsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmZXhlYywgJmdsb2JhbE9iamVj
dCkpKTsKK30KKworRm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0KEpTQzo6RXhlY1N0YXRlJiBleGVj
U3RhdGUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+
JiBpbml0aWFsRmFjZXMpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwg
bV9iYWNraW5nKCp0aGlzKQorICAgICwgbV9wcm9taXNlKGNyZWF0ZVByb21pc2UoZXhlY1N0YXRl
KSkKK3sKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBpbml0aWFsRmFjZXMpCisgICAgICAgIGFkZChm
YWNlLmdldCgpKTsKK30KKworRm9udEZhY2VTZXQ6On5Gb250RmFjZVNldCgpCit7Cit9CisKK0Zv
bnRGYWNlU2V0OjpJdGVyYXRvcjo6SXRlcmF0b3IoRm9udEZhY2VTZXQmIHNldCkKKyAgICA6IG1f
dGFyZ2V0KHNldCkKK3sKK30KKworYm9vbCBGb250RmFjZVNldDo6SXRlcmF0b3I6Om5leHQoUmVm
UHRyPEZvbnRGYWNlPiYga2V5LCBSZWZQdHI8Rm9udEZhY2U+JiB2YWx1ZSkKK3sKKyAgICBpZiAo
bV9pbmRleCA9PSBtX3RhcmdldC0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBr
ZXkgPSBtX3RhcmdldC0+bV9iYWNraW5nW21faW5kZXgrK10ud3JhcHBlcigpOworICAgIHZhbHVl
ID0ga2V5OworICAgIHJldHVybiBmYWxzZTsKK30KKworRm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9t
aXNlOjpQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYgcHJvbWlzZSkKKyAgICA6IHByb21pc2UoV1RG
TW92ZShwcm9taXNlKSkKK3sKK30KKworRm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjp+UGVu
ZGluZ1Byb21pc2UoKQoreworfQorCitib29sIEZvbnRGYWNlU2V0OjpoYXMoRm9udEZhY2UqIGZh
Y2UpIGNvbnN0Cit7CisgICAgaWYgKCFmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIG1fYmFja2luZy5oYXMoZmFjZS0+YmFja2luZygpKTsKK30KKworc2l6ZV90IEZvbnRG
YWNlU2V0OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5nLnNpemUoKTsKK30K
KworRm9udEZhY2VTZXQmIEZvbnRGYWNlU2V0OjphZGQoRm9udEZhY2UqIGZhY2UpCit7CisgICAg
aWYgKGZhY2UgJiYgIW1fYmFja2luZy5oYXMoZmFjZS0+YmFja2luZygpKSkKKyAgICAgICAgbV9i
YWNraW5nLmFkZChmYWNlLT5iYWNraW5nKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworYm9v
bCBGb250RmFjZVNldDo6cmVtb3ZlKEZvbnRGYWNlKiBmYWNlKQoreworICAgIGlmICghZmFjZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBtX2JhY2tpbmcuaGFz
KGZhY2UtPmJhY2tpbmcoKSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgbV9iYWNraW5nLnJl
bW92ZShmYWNlLT5iYWNraW5nKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgRm9u
dEZhY2VTZXQ6OmNsZWFyKCkKK3sKKyAgICB3aGlsZSAobV9iYWNraW5nLnNpemUoKSkKKyAgICAg
ICAgbV9iYWNraW5nLnJlbW92ZShtX2JhY2tpbmdbMF0pOworfQorCit2b2lkIEZvbnRGYWNlU2V0
Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBhdXRvIG1hdGNoaW5n
RmFjZXMgPSBtX2JhY2tpbmcubWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0LCBlYyk7CisgICAgaWYg
KGVjKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1hdGNoaW5nRmFjZXMuc2l6ZSgpKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZShWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4oKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gZmFjZSA6IG1hdGNoaW5nRmFj
ZXMpCisgICAgICAgIGZhY2UuZ2V0KCkubG9hZCgpOworCisgICAgYXV0byBwZW5kaW5nUHJvbWlz
ZSA9IFBlbmRpbmdQcm9taXNlOjpjcmVhdGUoV1RGTW92ZShwcm9taXNlKSk7CisgICAgYm9vbCB3
YWl0aW5nID0gZmFsc2U7CisgICAgZm9yIChhdXRvIGZhY2UgOiBtYXRjaGluZ0ZhY2VzKSB7Cisg
ICAgICAgIHBlbmRpbmdQcm9taXNlLT5mYWNlcy5hcHBlbmQoZmFjZS5nZXQoKS53cmFwcGVyKCkp
OworICAgICAgICBpZiAoZmFjZS5nZXQoKS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVz
OjpGYWlsdXJlKSB7CisgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS5yZWplY3Qo
RE9NQ29yZUV4Y2VwdGlvbjo6Y3JlYXRlKEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihORVRXT1JL
X0VSUikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmFj
ZS5nZXQoKS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNzKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIHdhaXRpbmcgPSB0cnVlOworICAgICAgICBhdXRvJiB2
ZWMgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQoUmVmUHRyPEZvbnRGYWNlPihmYWNlLmdldCgpLndy
YXBwZXIoKSksIFZlY3RvcjxSZWY8UGVuZGluZ1Byb21pc2U+PigpKS5pdGVyYXRvci0+dmFsdWU7
CisgICAgICAgIHZlYy5hcHBlbmQocGVuZGluZ1Byb21pc2UuY29weVJlZigpKTsKKyAgICB9Cisg
ICAgaWYgKCF3YWl0aW5nKQorICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS5yZXNvbHZl
KHBlbmRpbmdQcm9taXNlLT5mYWNlcyk7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OmNoZWNrKGNv
bnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIHJldHVybiBtX2JhY2tpbmcuY2hlY2soZmFtaWx5LCB0ZXh0LCBlYyk7Cit9CisK
K2F1dG8gRm9udEZhY2VTZXQ6OnByb21pc2UoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSkgLT4g
UHJvbWlzZSYKK3sKKyAgICBpZiAoIW1fcHJvbWlzZSkgeworICAgICAgICBtX3Byb21pc2UgPSBj
cmVhdGVQcm9taXNlKGV4ZWNTdGF0ZSk7CisgICAgICAgIGlmIChtX2JhY2tpbmcuc3RhdHVzKCkg
PT0gQ1NTRm9udEZhY2VTZXQ6OlN0YXR1czo6TG9hZGVkKQorICAgICAgICAgICAgZnVsZmlsbFBy
b21pc2UoKTsKKyAgICB9CisgICAgcmV0dXJuIG1fcHJvbWlzZS52YWx1ZSgpOworfQorICAgIAor
U3RyaW5nIEZvbnRGYWNlU2V0OjpzdGF0dXMoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9iYWNr
aW5nLnN0YXR1cygpKSB7CisgICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkaW5n
OgorICAgICAgICByZXR1cm4gU3RyaW5nKCJsb2FkaW5nIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ6CisgICAg
ICAgIHJldHVybiBTdHJpbmcoImxvYWRlZCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJs
b2FkZWQiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKworYm9vbCBGb250RmFj
ZVNldDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYmFja2luZy5zdGF0dXMoKSA9PSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ7
Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0ZWRMb2FkaW5nKCkKK3sKKyAgICAvLyBGSVhN
RTogRmlyZSBhICJsb2FkaW5nIiBldmVudCBhc3luY2hyb25vdXNseS4KK30KKwordm9pZCBGb250
RmFjZVNldDo6Y29tcGxldGVkTG9hZGluZygpCit7CisgICAgaWYgKG1fcHJvbWlzZSkKKyAgICAg
ICAgZnVsZmlsbFByb21pc2UoKTsKKyAgICBtX3Byb21pc2UgPSBOdWxsb3B0OworICAgIC8vIEZJ
WE1FOiBGaXJlIGEgImxvYWRpbmdkb25lIiBhbmQgcG9zc2libHkgYSAibG9hZGluZ2Vycm9yIiBl
dmVudCBhc3luY2hyb25vdXNseS4KK30KKwordm9pZCBGb250RmFjZVNldDo6ZnVsZmlsbFByb21p
c2UoKQoreworICAgIC8vIE5vcm1hbGx5LCBEZWZlcnJlZFdyYXBwZXI6OmNhbGxGdW5jdGlvbiBy
ZXNldHMgdGhlIHJlZmVyZW5jZSB0byB0aGUgcHJvbWlzZS4KKyAgICAvLyBIb3dldmVyLCBBUEkg
c2VtYW50aWNzIHJlcXVpcmUgb3VyIHByb21pc2UgdG8gbGl2ZSBmb3IgdGhlIGVudGlyZSBsaWZl
dGltZSBvZiB0aGUgRm9udEZhY2UuCisgICAgLy8gTGV0J3MgbWFrZSBzdXJlIGl0IHN0YXlzIGFs
aXZlLgorCisgICAgUHJvbWlzZSBndWFyZChtX3Byb21pc2UudmFsdWUoKSk7CisgICAgbV9wcm9t
aXNlLnZhbHVlKCkucmVzb2x2ZSgqdGhpcyk7CisgICAgbV9wcm9taXNlID0gZ3VhcmQ7Cit9CisK
K3ZvaWQgRm9udEZhY2VTZXQ6OmZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9u
dEZhY2U6OlN0YXR1cyBuZXdTdGF0dXMpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcGVuZGlu
Z1Byb21pc2VzLmZpbmQoZmFjZS53cmFwcGVyKCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Bl
bmRpbmdQcm9taXNlcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBw
ZW5kaW5nUHJvbWlzZSA6IGl0ZXJhdG9yLT52YWx1ZSkgeworICAgICAgICBpZiAobmV3U3RhdHVz
ID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlmIChwZW5k
aW5nUHJvbWlzZS0+aGFzT25lUmVmKCkpCisgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2Ut
PnByb21pc2UucmVzb2x2ZShwZW5kaW5nUHJvbWlzZS0+ZmFjZXMpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgQVNTRVJUKG5ld1N0YXR1cyA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpG
YWlsdXJlKTsKKyAgICAgICAgICAgIC8vIFRoZSBmaXJzdCByZXNvbHV0aW9uIHdpbnMsIHNvIHdl
IGNhbiBqdXN0IHJlamVjdCBlYXJseSBub3cuCisgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+
cHJvbWlzZS5yZWplY3QoRE9NQ29yZUV4Y2VwdGlvbjo6Y3JlYXRlKEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbihORVRXT1JLX0VSUikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fcGVuZGlu
Z1Byb21pc2VzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmYxOTQ2MzUxNDY2MjAwMTE5MTljNzBhZWRkOGI4NzFkM2JhM2U1Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC0w
LDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBGb250RmFjZVNldF9oCisjZGVmaW5lIEZvbnRGYWNlU2V0X2gKKworI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCisjaW5j
bHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2Ns
YXNzIEZvbnRGYWNlOworCitjbGFzcyBGb250RmFjZVNldCA6IHB1YmxpYyBSZWZDb3VudGVkPEZv
bnRGYWNlU2V0PiwgcHVibGljIENTU0ZvbnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxGb250RmFjZVNldD4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUs
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0
aWFsRmFjZXMpCisgICAgeworICAgICAgICBSZWY8Rm9udEZhY2VTZXQ+IHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgRm9udEZhY2VTZXQoZXhlY1N0YXRlLCBkb2N1bWVudCwgaW5pdGlhbEZhY2VzKSk7
CisgICAgICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICAgIHZpcnR1YWwgfkZvbnRGYWNlU2V0KCk7CisKKyAgICBib29sIGhhcyhG
b250RmFjZSopIGNvbnN0OworICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgRm9udEZhY2VT
ZXQmIGFkZChGb250RmFjZSopOworICAgIGJvb2wgcmVtb3ZlKEZvbnRGYWNlKik7CisgICAgdm9p
ZCBjbGVhcigpOworCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgbG9hZChmb250LCBTdHJpbmco
IiAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgV1RGTW92ZShwcm9taXNlKSwgZWMp
OyB9CisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBj
aGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjaGVj
ayhmb250LCBTdHJpbmcoIiAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgZWMpOyB9
CisgICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
RXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIFN0cmluZyBzdGF0dXMoKSBjb25zdDsKKworICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNvcmVFeGNlcHRpb24mPiBQcm9t
aXNlOworICAgIFByb21pc2UmIHByb21pc2UoSlNDOjpFeGVjU3RhdGUmKTsKKworICAgIGNsYXNz
IEl0ZXJhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEl0ZXJhdG9yKEZvbnRG
YWNlU2V0Jik7CisKKyAgICAgICAgdXNpbmcgS2V5ID0gUmVmUHRyPEZvbnRGYWNlPjsKKyAgICAg
ICAgdXNpbmcgVmFsdWUgPSBSZWZQdHI8Rm9udEZhY2U+OworCisgICAgICAgIGJvb2wgbmV4dChL
ZXkmIG5leHRLZXksIFZhbHVlJiBuZXh0VmFsdWUpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
UmVmPEZvbnRGYWNlU2V0PiBtX3RhcmdldDsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyAwIH07
CisgICAgfTsKKyAgICBJdGVyYXRvciBjcmVhdGVJdGVyYXRvcigpIHsgcmV0dXJuIEl0ZXJhdG9y
KCp0aGlzKTsgfQorCisgICAgdXNpbmcgUmVmQ291bnRlZDxGb250RmFjZVNldD46OnJlZjsKKyAg
ICB1c2luZyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0Pjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAg
c3RydWN0IFBlbmRpbmdQcm9taXNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ1Byb21pc2U+
IHsKKyAgICAgICAgdHlwZWRlZiBET01Qcm9taXNlPFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYs
IERPTUNvcmVFeGNlcHRpb24mPiBQcm9taXNlOworICAgICAgICBzdGF0aWMgUmVmPFBlbmRpbmdQ
cm9taXNlPiBjcmVhdGUoUHJvbWlzZSYmIHByb21pc2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpKTsK
KyAgICAgICAgfQorICAgICAgICB+UGVuZGluZ1Byb21pc2UoKTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIFBlbmRpbmdQcm9taXNlKFByb21pc2UmJik7CisKKyAgICBwdWJsaWM6CisgICAgICAg
IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiBmYWNlczsKKyAgICAgICAgUHJvbWlzZSBwcm9taXNl
OworICAgIH07CisKKyAgICBGb250RmFjZVNldChKU0M6OkV4ZWNTdGF0ZSYsIERvY3VtZW50Jiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+Jik7CisKKyAgICB2b2lkIGZ1bGZpbGxQcm9t
aXNlKCk7CisKKyAgICAvLyBDU1NGb250RmFjZVNldENsaWVudAorICAgIHZpcnR1YWwgdm9pZCBz
dGFydGVkTG9hZGluZygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZWRMb2Fk
aW5nKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZhY2VGaW5pc2hlZChDU1NGb250RmFj
ZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMpIG92ZXJyaWRlOworCisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIkZvbnRGYWNlU2V0IjsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBF
dmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGb250RmFjZVNldEV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICBDU1NGb250RmFjZVNldCBt
X2JhY2tpbmc7CisgICAgSGFzaE1hcDxSZWZQdHI8Rm9udEZhY2U+LCBWZWN0b3I8UmVmPFBlbmRp
bmdQcm9taXNlPj4+IG1fcGVuZGluZ1Byb21pc2VzOworICAgIE9wdGlvbmFsPFByb21pc2U+IG1f
cHJvbWlzZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2VTZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZmY2ODVkY2FjZDliNTJlYzI3MzU1ZTBkZGIzNTFkZjNlNTZmZTc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBGb250RmFjZVNldExvYWRTdGF0dXMgeworICAg
ICJsb2FkaW5nIiwKKyAgICAibG9hZGVkIgorfTsKKworWworICAgIENvbnN0cnVjdG9yQ2FsbFdp
dGg9U2NyaXB0U3RhdGUmRG9jdW1lbnQsCisgICAgQ29uc3RydWN0b3Ioc2VxdWVuY2U8Rm9udEZh
Y2U+IGluaXRpYWxGYWNlcykKK10gaW50ZXJmYWNlIEZvbnRGYWNlU2V0IDogRXZlbnRUYXJnZXQg
eworICAgIFtDdXN0b21dIE9iamVjdCBlbnRyaWVzKCk7CisgICAgLy8gZm9yRWFjaCgpOiBNYXli
ZSBpbXBsZW1lbnQgdGhpcyBpbiBKYXZhc2NyaXB0IG9uIHRvcCBvZiBrZXlzKCkuCisgICAgYm9v
bGVhbiBoYXMoRm9udEZhY2UgZm9udCk7CisgICAgW0N1c3RvbV0gT2JqZWN0IGtleXMoKTsKKyAg
ICBbQ3VzdG9tXSBPYmplY3QgdmFsdWVzKCk7CisgICAgLy8gQGl0ZXJhdG9yCisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgc2l6ZTsKKworICAgIEZvbnRGYWNlU2V0IGFkZChGb250RmFjZSBm
b250KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVdIGJvb2xlYW4gZGVsZXRlKEZvbnRGYWNl
IGZvbnQpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25sb2FkaW5nOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZG9uZTsKKyAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZ2Vycm9yOworCisgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gUHJvbWlzZSBsb2FkKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcg
dGV4dCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9u
dCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOworCisgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0
cmlidXRlIFByb21pc2UgcmVhZHk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0
TG9hZFN0YXR1cyBzdGF0dXM7Cit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCmluZGV4IDQ2OTAwZWNhMzI3MGVmM2MzMTRhOGMzY2RhYzEyMDk4OGVi
NWFlZDMuLjg1YjEwZmM5NWFiMDYxY2M5ZjgxOTgyMDY1N2M0ODkzZWQyZThlZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaApAQCAtMTQxLDYgKzE0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhsb2FkZW5kKSBcCiAgICAgbWFjcm8obG9hZGluZykgXAogICAgIG1hY3JvKGxv
YWRpbmdkb25lKSBcCisgICAgbWFjcm8obG9hZGluZ2Vycm9yKSBcCiAgICAgbWFjcm8obG9hZHN0
YXJ0KSBcCiAgICAgbWFjcm8obWFyaykgXAogICAgIG1hY3JvKG1lc3NhZ2UpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGFiNGZlZGJkNTcxYmUxNjM5MDNj
Y2FkYTIwNzQyNWQxNTU3NGNjMDQuLjQzMGI4YjcyMDIyODU1YzE3YjI1YTg1NjM2MzY1YmI1ZTcy
OWVkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtOSw3
ICs5LDcgQEAgRE9NQXBwbGljYXRpb25DYWNoZQogRE9NV2luZG93CiBFdmVudFNvdXJjZQogRmls
ZVJlYWRlcgotRm9udExvYWRlciBjb25kaXRpb25hbD1GT05UX0xPQURfRVZFTlRTCitGb250RmFj
ZVNldAogSURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCT3BlbkRC
UmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJSZXF1ZXN0IGNvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMmI1ZjY4MzM4MWEyOTA2NGM5NjJlNDg1ZmM5
ZDUxMmM3MzhlN2M5Li4yZjhlMWM4NzkxYzhkYWQyY2Q0ODVmZjU2YTk4NTEwY2MzYjBmNmRmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbRm9udCBMb2FkaW5nXSBJbXBsZW1lbnQgRm9u
dEZhY2VTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC90ZXh0L2ZvbnQtZmFjZS1zZXQtamF2YXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3JpcHQuaHRtbDogQWRk
ZWQuCisKIDIwMTYtMDItMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3Qgc2hvdWxkIG5v
dCBzZWFyY2ggcGhvdG8gY2hhaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9m
b250LWZhY2Utc2V0LWphdmFzY3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2ZvbnQtZmFjZS1zZXQtamF2YXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJm
OGU5MmY4MzdmMWVjYjgzY2EwZTJhNjFkMjI2OTE5ZWU0ODRjZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3JpcHQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNDMgQEAKK1BBU1MgbmV3IEZvbnRGYWNlU2V0KCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyBGb250RmFjZVNl
dChbXSkuc2l6ZSBpcyAwCitQQVNTIG5ldyBGb250RmFjZVNldChbZm9udEZhY2UxXSkuc2l6ZSBp
cyAxCitQQVNTIGZvbnRGYWNlU2V0LnN0YXR1cyBpcyAibG9hZGVkIgorUEFTUyBpdGVtLmRvbmUg
aXMgZmFsc2UKK1BBU1MgaXRlbS52YWx1ZSBpcyBbZm9udEZhY2UxLCBmb250RmFjZTFdCitQQVNT
IGl0ZW0uZG9uZSBpcyB0cnVlCitQQVNTIGl0ZW0uZG9uZSBpcyBmYWxzZQorUEFTUyBpdGVtLnZh
bHVlIGlzIGZvbnRGYWNlMQorUEFTUyBpdGVtLmRvbmUgaXMgdHJ1ZQorUEFTUyBpdGVtLmRvbmUg
aXMgZmFsc2UKK1BBU1MgaXRlbS52YWx1ZSBpcyBmb250RmFjZTEKK1BBU1MgaXRlbS5kb25lIGlz
IHRydWUKK1BBU1MgZm9udEZhY2VTZXQuYWRkKGZvbnRGYWNlMikgaXMgZm9udEZhY2VTZXQKK1BB
U1MgZm9udEZhY2VTZXQuc2l6ZSBpcyAyCitQQVNTIGZvbnRGYWNlU2V0LmRlbGV0ZShmb250RmFj
ZTEpIGlzIHRydWUKK1BBU1MgZm9udEZhY2VTZXQuZGVsZXRlKGZvbnRGYWNlMykgaXMgZmFsc2UK
K1BBU1MgZm9udEZhY2VTZXQuc2l6ZSBpcyAwCitQQVNTIGZvbnRGYWNlU2V0LnZhbHVlcygpLm5l
eHQoKS5kb25lIGlzIHRydWUKK1BBU1MgZm9udEZhY2VTZXQuY2hlY2soJ2dhcmJhZ2UnKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBm
b250RmFjZVNldC5jaGVjaygnMTZweCBnYXJiYWdlJykgaXMgdHJ1ZQorUEFTUyBmb250RmFjZVNl
dC5jaGVjaygnMTZweCBmYW1pbHkxJykgaXMgZmFsc2UKK1BBU1MgZm9udEZhY2VTZXQuc3RhdHVz
IGlzICJsb2FkZWQiCitQQVNTIGl0ZW0uY29kZSBpcyBpdGVtLlNZTlRBWF9FUlIKK1BBU1MgZm9u
dEZhY2VTZXQuY2hlY2soJzE2cHggZmFtaWx5MScpIGlzIGZhbHNlCitQQVNTIGl0ZW0gaXMgW10K
K1BBU1MgaXRlbS5jb2RlIGlzIGl0ZW0uTkVUV09SS19FUlIKK1BBU1MgZm9udEZhY2VTZXQuY2hl
Y2soJzE2cHggZmFtaWx5MycpIGlzIGZhbHNlCitQQVNTIGZvbnRGYWNlU2V0LnN0YXR1cyBpcyAi
bG9hZGluZyIKK1BBU1MgaXRlbSBpcyBbZm9udEZhY2UzXQorUEFTUyBmb250RmFjZVNldC5jaGVj
aygnMTZweCBmYW1pbHkzJykgaXMgdHJ1ZQorUEFTUyBmb250RmFjZVNldC5zdGF0dXMgaXMgImxv
YWRlZCIKK1BBU1MgZm9udEZhY2VTZXQuc3RhdHVzIGlzICJsb2FkZWQiCitQQVNTIGl0ZW0gaXMg
W2ZvbnRGYWNlM10KK1BBU1MgaXRlbSBpcyBbZm9udEZhY2UzLCBmb250RmFjZTRdCitQQVNTIGl0
ZW0gaXMgZm9udEZhY2VTZXQKK1BBU1MgZm9udEZhY2VTZXQuc3RhdHVzIGlzICJsb2FkZWQiCitQ
QVNTIGZvbnRGYWNlU2V0LnN0YXR1cyBpcyAibG9hZGluZyIKK1BBU1MgaXRlbSBpcyBmb250RmFj
ZVNldAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3Jp
cHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3JpcHQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMmIzMDU1MWIzN2VkNWY5ZGZmY2VlYzJjZTM0ZTVlZDQyNmRmY2I5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtZmFjZS1zZXQt
amF2YXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMTMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgZm9udEZhY2UxID0gbmV3IEZvbnRGYWNl
KCJmYW1pbHkxIiwgInVybCgnYXNkZicpIiwge30pOwordmFyIGZvbnRGYWNlMiA9IG5ldyBGb250
RmFjZSgiZmFtaWx5MiIsICJ1cmwoJ2FzZGYnKSIsIHt9KTsKK3ZhciBmb250RmFjZTMgPSBuZXcg
Rm9udEZhY2UoImZhbWlseTMiLCAidXJsKCcuLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYnKSIsIHt9
KTsKK3ZhciBmb250RmFjZTQgPSBuZXcgRm9udEZhY2UoImZhbWlseTMiLCAidXJsKCcuLi8uLi9y
ZXNvdXJjZXMvQWhlbS50dGYnKSIsIHsnd2VpZ2h0JzogJ2JvbGQnfSk7Cit2YXIgZm9udEZhY2U1
ID0gbmV3IEZvbnRGYWNlKCJmYW1pbHk1IiwgInVybCgnLi4vLi4vcmVzb3VyY2VzL0FoZW0ub3Rm
JykiLCB7fSk7CisKK3Nob3VsZFRocm93KCJuZXcgRm9udEZhY2VTZXQoKSIpOworc2hvdWxkQmUo
Im5ldyBGb250RmFjZVNldChbXSkuc2l6ZSIsICIwIik7CitzaG91bGRCZSgibmV3IEZvbnRGYWNl
U2V0KFtmb250RmFjZTFdKS5zaXplIiwgIjEiKTsKKwordmFyIGZvbnRGYWNlU2V0ID0gbmV3IEZv
bnRGYWNlU2V0KFtdKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZm9udEZhY2VTZXQuc3RhdHVz
IiwgImxvYWRlZCIpOworZm9udEZhY2VTZXQuYWRkKGZvbnRGYWNlMSk7Cit2YXIgaXRlcmF0b3Ig
PSBmb250RmFjZVNldC5lbnRyaWVzKCk7Cit2YXIgaXRlbSA9IGl0ZXJhdG9yLm5leHQoKTsKK3No
b3VsZEJlRmFsc2UoIml0ZW0uZG9uZSIpOworc2hvdWxkQmUoIml0ZW0udmFsdWUiLCAiW2ZvbnRG
YWNlMSwgZm9udEZhY2UxXSIpOworaXRlbSA9IGl0ZXJhdG9yLm5leHQoKTsKK3Nob3VsZEJlVHJ1
ZSgiaXRlbS5kb25lIik7CisKK2l0ZXJhdG9yID0gZm9udEZhY2VTZXQua2V5cygpOworaXRlbSA9
IGl0ZXJhdG9yLm5leHQoKTsKK3Nob3VsZEJlRmFsc2UoIml0ZW0uZG9uZSIpOworc2hvdWxkQmUo
Iml0ZW0udmFsdWUiLCAiZm9udEZhY2UxIik7CitpdGVtID0gaXRlcmF0b3IubmV4dCgpOworc2hv
dWxkQmVUcnVlKCJpdGVtLmRvbmUiKTsKKworaXRlcmF0b3IgPSBmb250RmFjZVNldC52YWx1ZXMo
KTsKK2l0ZW0gPSBpdGVyYXRvci5uZXh0KCk7CitzaG91bGRCZUZhbHNlKCJpdGVtLmRvbmUiKTsK
K3Nob3VsZEJlKCJpdGVtLnZhbHVlIiwgImZvbnRGYWNlMSIpOworaXRlbSA9IGl0ZXJhdG9yLm5l
eHQoKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5kb25lIik7CisKK3Nob3VsZEJlKCJmb250RmFjZVNl
dC5hZGQoZm9udEZhY2UyKSIsICJmb250RmFjZVNldCIpOworc2hvdWxkQmUoImZvbnRGYWNlU2V0
LnNpemUiLCAiMiIpOworc2hvdWxkQmUoImZvbnRGYWNlU2V0LmRlbGV0ZShmb250RmFjZTEpIiwg
InRydWUiKTsKK3Nob3VsZEJlKCJmb250RmFjZVNldC5kZWxldGUoZm9udEZhY2UzKSIsICJmYWxz
ZSIpOworZm9udEZhY2VTZXQuY2xlYXIoKTsKK3Nob3VsZEJlKCJmb250RmFjZVNldC5zaXplIiwg
IjAiKTsKK3Nob3VsZEJlVHJ1ZSgiZm9udEZhY2VTZXQudmFsdWVzKCkubmV4dCgpLmRvbmUiKTsK
K3Nob3VsZFRocm93KCJmb250RmFjZVNldC5jaGVjaygnZ2FyYmFnZScpIik7CitzaG91bGRCZVRy
dWUoImZvbnRGYWNlU2V0LmNoZWNrKCcxNnB4IGdhcmJhZ2UnKSIpOworCitzZWxmLmpzVGVzdElz
QXN5bmMgPSB0cnVlOworZm9udEZhY2VTZXQuYWRkKGZvbnRGYWNlMSk7CitzaG91bGRCZUZhbHNl
KCJmb250RmFjZVNldC5jaGVjaygnMTZweCBmYW1pbHkxJykiKTsKK3ZhciBpdGVtOworZm9udEZh
Y2VTZXQubG9hZCgiZ2FyYmFnZSIpLnRoZW4oZnVuY3Rpb24oYXJnKSB7CisgICAgdGVzdEZhaWxl
ZCgiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHBhcnNlIGdhcmJhZ2UiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30sIGZ1bmN0aW9uKGFyZykgeworICAgIGl0ZW0gPSBhcmc7CisgICAgc2hvdWxkQmUo
Iml0ZW0uY29kZSIsICJpdGVtLlNZTlRBWF9FUlIiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJmb250
RmFjZVNldC5jaGVjaygnMTZweCBmYW1pbHkxJykiKTsKKyAgICByZXR1cm4gZm9udEZhY2VTZXQu
bG9hZCgiMTZweCBnYXJiYWdlIik7Cit9KS50aGVuKGZ1bmN0aW9uKGFyZykgeworICAgIGl0ZW0g
PSBhcmc7CisgICAgc2hvdWxkQmUoIml0ZW0iLCAiW10iKTsKKyAgICByZXR1cm4gZm9udEZhY2VT
ZXQubG9hZCgiMTZweCBmYW1pbHkxIik7Cit9LCBmdW5jdGlvbihhcmcpIHsKKyAgICB0ZXN0RmFp
bGVkKCJTaG91bGQgbm90IGJlIGFibGUgdG8gcGFyc2UgZ2FyYmFnZSIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfSkudGhlbihmdW5jdGlvbihhcmcpIHsKKyAgICB0ZXN0RmFpbGVkKCJCb2d1cyBV
Ukwgc2hvdWxkIG5vdCBsb2FkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihh
cmcpIHsKKyAgICBpdGVtID0gYXJnOworICAgIHNob3VsZEJlKCJpdGVtLmNvZGUiLCAiaXRlbS5O
RVRXT1JLX0VSUiIpOworICAgIGZvbnRGYWNlU2V0LmFkZChmb250RmFjZTMpOworICAgIHNob3Vs
ZEJlRmFsc2UoImZvbnRGYWNlU2V0LmNoZWNrKCcxNnB4IGZhbWlseTMnKSIpOworICAgIHZhciBy
ZXN1bHQgPSBmb250RmFjZVNldC5sb2FkKCIxNnB4IGZhbWlseTMiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImZvbnRGYWNlU2V0LnN0YXR1cyIsICJsb2FkaW5nIik7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30pLnRoZW4oZnVuY3Rpb24oYXJnKSB7CisgICAgaXRlbSA9IGFyZzsKKyAgICBz
aG91bGRCZSgiaXRlbSIsICJbZm9udEZhY2UzXSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZm9udEZh
Y2VTZXQuY2hlY2soJzE2cHggZmFtaWx5MycpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJmb250RmFjZVNldC5zdGF0dXMiLCAibG9hZGVkIik7CisgICAgdmFyIHJlc3VsdCA9IGZvbnRG
YWNlU2V0LmxvYWQoIjE2cHggZmFtaWx5MyIpOyAvLyBUZXN0IHdoZW4gaXQncyBpbiB0aGUgY2Fj
aGUuCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmb250RmFjZVNldC5zdGF0dXMiLCAibG9h
ZGVkIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30sIGZ1bmN0aW9uKGFyZykgeworICAgIHRlc3RG
YWlsZWQoIlJlYWwgVVJMIHNob3VsZCBsb2FkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KS50
aGVuKGZ1bmN0aW9uKGFyZykgeworICAgIGl0ZW0gPSBhcmc7CisgICAgc2hvdWxkQmUoIml0ZW0i
LCAiW2ZvbnRGYWNlM10iKTsKKyAgICBmb250RmFjZVNldC5hZGQoZm9udEZhY2U0KTsKKyAgICBy
ZXR1cm4gZm9udEZhY2VTZXQubG9hZCgiMTZweCBmYW1pbHkzIik7Cit9LCBmdW5jdGlvbihhcmcp
IHsKKyAgICB0ZXN0RmFpbGVkKCJSZWFsIFVSTCBzaG91bGQgbG9hZCIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfSkudGhlbihmdW5jdGlvbihhcmcpIHsKKyAgICBpdGVtID0gYXJnOworICAgIHNo
b3VsZEJlKCJpdGVtIiwgIltmb250RmFjZTMsIGZvbnRGYWNlNF0iKTsKKyAgICBmb250RmFjZVNl
dC5hZGQoZm9udEZhY2U0KTsKKyAgICBmb250RmFjZVNldC5sb2FkKCIxNnB4IGZhbWlseTMiKTsK
KyAgICByZXR1cm4gZm9udEZhY2VTZXQucmVhZHk7Cit9LCBmdW5jdGlvbihhcmcpIHsKKyAgICB0
ZXN0RmFpbGVkKCJNdWx0aXBsZSBtYXRjaGluZyBmYWNlcyBzaG91bGQgbG9hZCIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfSkudGhlbihmdW5jdGlvbihhcmcpIHsKKyAgICBpdGVtID0gYXJnOwor
ICAgIHNob3VsZEJlKCJpdGVtIiwgImZvbnRGYWNlU2V0Iik7CisgICAgZm9udEZhY2VTZXQuYWRk
KGZvbnRGYWNlNSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmb250RmFjZVNldC5zdGF0
dXMiLCAibG9hZGVkIik7CisgICAgZm9udEZhY2VTZXQubG9hZCgiMTZweCBmYW1pbHk1Iik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmb250RmFjZVNldC5zdGF0dXMiLCAibG9hZGluZyIp
OworICAgIHJldHVybiBmb250RmFjZVNldC5yZWFkeTsKK30sIGZ1bmN0aW9uKGFyZykgeworICAg
IHRlc3RGYWlsZWQoIlJlYWR5IGF0dHJpYnV0ZSBzaG91bGQgbmV2ZXIgZmFpbCIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfSkudGhlbihmdW5jdGlvbihhcmcpIHsKKyAgICBpdGVtID0gYXJnOwor
ICAgIHNob3VsZEJlKCJpdGVtIiwgImZvbnRGYWNlU2V0Iik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9LCBmdW5jdGlvbihhcmcpIHsKKyAgICB0ZXN0RmFpbGVkKCJSZWFkeSBhdHRyaWJ1dGUgc2hv
dWxkIG5ldmVyIGZhaWwiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJmb250RmFjZVNldC5zdGF0dXMiLCAibG9hZGVkIik7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271529</attachid>
            <date>2016-02-16 21:10:05 -0800</date>
            <delta_ts>2016-02-17 15:57:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153348-20160216210945.patch</filename>
            <type>text/plain</type>
            <size>93874</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIwZDVkMTJhNGU0NzU0
YWM2N2ZlNzJhNjFhNWMzNWRlNTdjYTNiNS4uN2RjYzNjMDNlNTdmMjNkMjFkMzc4ZjliYTBlM2Y3
NzE1ZjIxMjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxNi0wMi0xNiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtGb250IExv
YWRpbmddIEltcGxlbWVudCBGb250RmFjZVNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIENTUyBGb250IExvYWRpbmcgc3BlYyBpbmNsdWRlcyBh
IEZvbnRGYWNlU2V0IG9iamVjdCB3aGljaCByZXByZXNlbnRzCisgICAgICAgIGEgY29sbGVjdGlv
biBvZiBGb250RmFjZXMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBzdWNoIGFuIG9iamVjdCwgYW5k
CisgICAgICAgIGJhY2tzIGl0IHdpdGggYSB2ZWN0b3Igb2YgRm9udEZhY2VzLiBTaW1pbGFybHkg
dG8gdGhlIEZvbnRGYWNlIG9iamVjdCwKKyAgICAgICAgRm9udEZhY2VTZXQgaXMgc2VwYXJhdGVk
IGludG8gYSBGb250RmFjZVNldCBmcm9udGVuZCBvYmplY3QgYW5kIGEKKyAgICAgICAgQ1NTRm9u
dEZhY2VTZXQgYmFja2VuZCBvYmplY3QsIHdoaWNoIGFjdHVhbGx5IG93bnMgdGhlIEZvbnRGYWNl
IG9iamVjdHMuCisgICAgICAgIEFsbCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBQcm9taXNlcyBpcyBw
ZXJmb3JtZWQgaW4gdGhlIGZyb250ZW5kIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXMgbm90IGltcGxlbWVudCB0aGUgRXZlbnRUYXJnZXQgcGFydCBvZiB0aGUgRm9udEZhY2VTZXQK
KyAgICAgICAgQVBJLCBzbyB0aGUgb25seSB3YXkgdG8ga25vdyB3aGVuIGEgZm9udCBpcyBmaW5p
c2hlZCBsb2FkaW5nIGlzIGJ5IHVzaW5nCisgICAgICAgIHRoZSBhc3NvY2lhdGVkIFByb21pc2Ug
b2JqZWN0cy4KKworICAgICAgICBUaGUgQ1NTIEZvbnQgTG9hZGluZyBzcGVjIGRlc2NyaWJlcyBo
b3cgdGhlIERvY3VtZW50IHNob3VsZCB2ZW5kIGFuCisgICAgICAgIGluc3RhbmNlIG9mIEZvbnRG
YWNlU2V0IHdoaWNoIHJlcHJlc2VudHMgdGhlIGZvbnQgZmFjZXMgY3VycmVudGx5CisgICAgICAg
IGFzc29jaWF0ZWQgd2l0aCB0aGUgRG9jdW1lbnQuIEhvd2V2ZXIsIHRoYXQgZnVuY3Rpb25hbGl0
eSBpcworICAgICAgICBmb3J0aGNvbWluZy4gQ3VycmVudGx5LCB0aGUgb25seSB3YXkgdG8gZ2V0
IGEgRm9udEZhY2VTZXQgaXMgdG8gY3JlYXRlCisgICAgICAgIG9uZSB5b3Vyc2VsZiAodXNpbmcg
dGhlIGNvbnN0cnVjdG9yKS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90CisgICAgICAg
IGltcGxlbWVudCB0aGUgc3BlYydzIG5vdGlvbiBvZiBhICJDU1MtY29ubmVjdGVkIGZvbnQgZmFj
ZS4iCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ZvbnQtZmFjZS1zZXQtamF2YXNjcmlwdC5o
dG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBmaWxlcy4KKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNGb250RmFjZVNldDo6cmVh
ZHkpOiBVc2UgdGhlIFByb21pc2UgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6SlNGb250RmFj
ZVNldDo6ZW50cmllcyk6IFVzZSBleGlzdGluZyBpdGVyYXRvciBjb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6SlNGb250RmFjZVNldDo6a2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0ZvbnRGYWNl
U2V0Ojp2YWx1ZXMpOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9uZS5jcHA6IEFkZCBuZXcgZmls
ZXMuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDogV2Ugbm93IGhhdmUgYSBjb2xsZWN0
aW9uIG9mIGNsaWVudHMgKGluc3RlYWQgb2YKKyAgICAgICAganVzdCBvbmUpLiBBbHNvLCB3ZSBu
ZWVkIHRvIGtlZXAgYSBwb2ludGVyIHRvIG91ciBGb250RmFjZSB3cmFwcGVyLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2U6OkNTU0ZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlOjphZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnJl
bW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0U3RhdHVzKTog
UmVuYW1lIHRoZSBkZWxlZ2F0ZSBjYWxsYmFjayB0byBiZQorICAgICAgICBtb3JlIGNsZWFyLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2U6OmFkZGVkVG9TZWdtZW50ZWRGb250RmFjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6cmVtb3ZlZEZyb21TZWdtZW50ZWRGb250RmFj
ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6IFNhbWUgYXMgYWJvdmUu
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlOjpDbGllbnQ6On5DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6OkNsaWVudDo6a2ljayk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
Q2xpZW50OjpzdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6Ondy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VDbGllbnQ6On5DU1NGb250RmFj
ZUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDogQWRk
ZWQuIEluaXRpYWwgaW1sZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0OjpDU1NGb250RmFjZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6
fkNTU0ZvbnRGYWNlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjppbmNy
ZW1lbnRBY3RpdmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6ZGVj
cmVtZW50QWN0aXZlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6Omhh
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dEZhbWlsaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmZhbWlsaWVzSW50ZXJzZWN0KTogQmVjYXVz
ZSB0aGlzIGlzIGFuIGluaXRpYWwgaW1sZW1lbnRhdGlvbiwKKyAgICAgICAgdGhpcyBmdW5jdGlv
biBpcyBub3Qgb3B0aW1pemVkLiBBIHN1YnNlcXVlbnQgcGF0Y2ggKHdoaWNoIGltcGxlbWVudHMK
KyAgICAgICAgRG9jdW1lbnQuZm9udHMpIHdpbGwgb3B0aW1pemUgdGhpcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjptYXRjaGluZ0ZhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlU2V0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0
OjpjaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6c3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZVNldENsaWVudDo6fkNTU0ZvbnRGYWNlU2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlU2V0OjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0OjpzdGF0dXMpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OnJlZ2lzdGVyTG9jYWxGb250RmFjZXNG
b3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFj
ZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpraWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
Ojp+Q1NTU2VnbWVudGVkRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVk
Rm9udEZhY2U6OmFwcGVuZEZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRl
ZEZvbnRGYWNlOjpraWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
Ojpmb250TG9hZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9udEZh
Y2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6OkZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp+Rm9udEZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgdG8g
bWFrZSBpdHMgcHVycG9zZSBjbGVhcmVyLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6Omtp
Y2spOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9G
b250RmFjZVNldC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJvbWlzZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Rm9udEZhY2VTZXQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEZhY2VTZXQ6On5Gb250RmFjZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RmFjZVNldDo6SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlU2V0OjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6
UGVuZGluZ1Byb21pc2U6OlBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlU2V0OjpQZW5kaW5nUHJvbWlzZTo6flBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlU2V0OjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OnNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250RmFjZVNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6bG9hZCk6IE1vc3Qgb2Yg
dGhlIGNvbXBsZXhpdHkgb2YgbG9hZGluZyBpcworICAgICAgICBkdWUgdG8gdGhlIHByb21pc2Vz
IGludm9sdmVkLiBSYXRoZXIgdGhhbiB1c2UgdGhlIEphdmFzY3JpcHQgZnVuY3Rpb24KKyAgICAg
ICAgUHJvbWlzZS5hbGwoKSwgdGhpcyBwYXRjaCBidWlsZHMgYSBkYXRhIHN0cnVjdHVyZSB0byBy
ZXByZXNlbnQgdGhlCisgICAgICAgIHByb21pc2VzIHdoaWNoIG5lZWQgdG8gYmUgcmVzb2x2ZWQu
IFdoZW4gZm9udHMgZmluaXNoIGxvYWRpbmcsIHdlIGxvb2sKKyAgICAgICAgYXQgdGhlIGRhdGEg
c3RydWN0dXJlIHRvIGRldGVybWluZSB3aGljaCBwcm9taXNlcyB0byByZXNvbHZlLgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlU2V0OjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNhblN1c3Bl
bmRGb3JEb2N1bWVudFN1c3BlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6
OnN0YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpjb21wbGV0
ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpmdWxmaWxsUHJvbWlz
ZSk6IEtlZXAgdGhlIHByb21pc2UgYWxpdmUuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNl
dDo6ZmFjZUZpbmlzaGVkKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRGYWNlU2V0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpjaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Y3JlYXRlSXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjpjcmVhdGUpOgorICAg
ICAgICAqIGNzcy9Gb250RmFjZVNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9FdmVudE5h
bWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKwogMjAxNi0wMi0x
NiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCBzaG91bGQgbm90IHNlYXJjaCBwaG90byBj
aGFpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4OWZiYzgyMjFkYTk4YzQ4MWZmMDQwMGQ2NWVl
ZTA0ZjdlMjU3NmYzLi40NWE1YTM0OWY1NzExZmViNDdhNjc3YTZhNmE0MmU3OTE2YjhjZjY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzMxLDYgKzMzMSw3IEBAIHNldChXZWJDb3JlX05PTl9T
VkdfSURMX0ZJTEVTCiAgICAgY3NzL0NvdW50ZXIuaWRsCiAgICAgY3NzL0RPTVdpbmRvd0NTUy5p
ZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCisgICAgY3NzL0ZvbnRGYWNlU2V0LmlkbAogICAgIGNz
cy9Gb250TG9hZGVyLmlkbAogICAgIGNzcy9NZWRpYUxpc3QuaWRsCiAgICAgY3NzL01lZGlhUXVl
cnlMaXN0LmlkbApAQCAtMTExMCw2ICsxMTExLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlND
U1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRm9udEZhY2VD
dXN0b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ2FsbGJh
Y2tEYXRhLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcApAQCAtMTMwMiw4ICsxMzA0LDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBj
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKICAgICBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRz
LmNwcAogICAgIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorICAgIGNzcy9Gb250RmFjZVNl
dC5jcHAKICAgICBjc3MvRm9udEZhY2UuY3BwCiAgICAgY3NzL0NTU0ZvbnRGYWNlLmNwcAorICAg
IGNzcy9DU1NGb250RmFjZVNldC5jcHAKICAgICBjc3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3Bw
CiAgICAgY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAKICAgICBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzOTZjMzgxYzRjZTA4NGY4MmMy
YWZlM2QwYWQyNzRjYmFjMTc5YzY5Li5hMzkwYjQ3OWUxMDg5M2Q1ZjBiMWE3MTdiY2M3NGRjNTdi
MmQ0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0Miw2ICsyNDIsNyBA
QCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9Db3VudGVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRE9NV2luZG93Q1NTLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9jc3MvRm9udEZhY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZVNldC5pZGwg
XAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRMb2FkZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nz
cy9NZWRpYUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9NZWRpYVF1ZXJ5TGlzdC5pZGwg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggNzRlNTA1NjA4OTFkNWZiYTg1OTEzMWYyNjJlOGUwN2FmYjJhNTY0YS4uMjVmM2M1NDg2YTdi
YmFhMDU0NDhlYmRhNTRhYmI0NjM1M2E3NWRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTcxLDYgKzE5NzEsMjAgQEAKICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0ZvbnRGYWNlU2V0LmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtOTYxMSw2ICs5NjI1LDIwIEBACiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXEZvbnRGYWNlU2V0LmNw
cCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcRm9udEZhY2Uu
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTk2
MjUsNiArOTY1MywyMCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGNzc1xDU1NGb250RmFjZVNldC5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cY3NzXENTU0ZvbnRGYWNlLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzc0MCw2ICsxNzc4MiwyMCBAQAogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRm9udEZhY2VT
ZXRDdXN0b20uY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXEpTRm9udEZhY2VDdXN0b20uY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5OTg3LDYgKzIwMDQzLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVSZWFkZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVS
ZWFkZXJTeW5jLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNGb250TG9hZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZVNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRm9udEZhY2UuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0dhbWVwYWQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0dh
bWVwYWRCdXR0b24uaCIgLz4KQEAgLTIxNzA1LDcgKzIxNzYyLDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGNzc1xDU1NDdXJzb3JJbWFnZVZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0ZvbnRGYWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxjc3NcQ1NTRm9udEZhY2VTZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGNzc1xGb250RmFjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXEZv
bnRGYWNlU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZh
Y2VMb2FkRXZlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NGb250
RmFjZVJ1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NGb250RmFj
ZVNvdXJjZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGQ4NGQ3MjFjNTQxOTYzZjgxMzc4Mjk1ZDdl
YTAxODllOTRiZWNhOGIuLjIzZWI3YzJlY2U2NDAxMDQ0ZjIzNDRmNjQ0YWE3OWJmZTljNWY1ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKQEAgLTIwODQsOSArMjA4NCwxNSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cY3NzXENTU0N1cnNvckltYWdlVmFsdWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Y3Nz
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxj
c3NcRm9udEZhY2VTZXQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcRm9udEZhY2UuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZhY2VTZXQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
Y3NzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxjc3NcQ1NTRm9udEZhY2UuY3BwIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC00MjYyLDYgKzQyNjgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAiPgogICAgICAgPEZpbHRl
cj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNGb250RmFjZVNldEN1c3RvbS5jcHAiPgorICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNGb250RmFjZUN1c3RvbS5jcHAiPgogICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTI3
NCw2ICs1MjgzLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0ZpbGVSZWFkZXJTeW5jLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3Vy
Y2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZVNldC5jcHAiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRm9udEZhY2UuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTkwNjcsOSArOTA3OSwxNSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0N1
cnNvckltYWdlVmFsdWUuaCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXEZvbnRGYWNlU2V0LmgiPgor
ICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGNzc1xGb250RmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NT
Rm9udEZhY2VTZXQuaCI+CisgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0ZvbnRGYWNlLmgiPgogICAg
ICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyNzAyLDYgKzEy
NzIwLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVSZWFkZXJTeW5jLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRm9udEZhY2VTZXQuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWRT
b3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250RmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlODRmNDYyMzIx
YWM5YjcxODdlOWYzNTFjNDhjZGI3NGFlZDM2ZDRmLi5jYThjNGMwOTlhZDAzN2NmYWY2YjA2Njkx
Zjc3YTNmODBjZWRlYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NTAsNiArOTUwLDExIEBACiAJCTFDMjFFNTdDMTgzRUQx
RkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZh
Y2VQb29sLmNwcCAqLzsgfTsKIAkJMUMyMUU1N0QxODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFj
ZVBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUMyNDE3QkExOTkyQzA0MTAwRUY5
OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUMyNDE3QjkxOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90
QDN4LnBuZyAqLzsgfTsKKwkJMUMyNEVFQTQxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRF
RUEyMUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5jcHAgKi87IH07CisJCTFDMjRFRUE1
MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNEVFQTMxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRG
YWNlU2V0LmggKi87IH07CisJCTFDMjRFRUE4MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNl
U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MjRFRUE2MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLzsgfTsKKwkJMUMy
NEVFQTkxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAv
KiBKU0ZvbnRGYWNlU2V0LmggKi87IH07CisJCTFDMjRFRUFCMUM3MkFBMEEwMDgwRjhGQyAvKiBK
U0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMjRFRUFBMUM3MkFBMEEwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcCAqLzsgfTsKIAkJMUMyNjQ5N0EwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9h
ZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi87IH07
CiAJCTFDMzI0OTExMUM2RDZBM0IwMDdFREIzMiAvKiBGb250VmFyaWFudEJ1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMzMjQ5MTAxQzZE
NkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi87IH07CiAJCTFDMzk2OUQw
MUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcg
LyogRm9udENhY2hlQ29yZVRleHQuY3BwICovOyB9OwpAQCAtNTkxMyw2ICs1OTE4LDggQEAKIAkJ
QzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYxMEYz
QUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgKi87IH07CiAJCUMx
MDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjMwRjNBQTZCODAw
MURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87IH07CiAJCUMyMDE1QzBBMUJFNkZF
QjIwMDgyMjM4OSAvKiBGb250VmFyaWFudEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMDE1QzA5MUJFNkZFMkMwMDgyMjM4OSAvKiBGb250
VmFyaWFudEJ1aWxkZXIuaCAqLzsgfTsKKwkJQzI2MDE3QTMxQzcyREM5OTAwRjc0QTE2IC8qIENT
U0ZvbnRGYWNlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNjAxN0ExMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5jcHAgKi87
IH07CisJCUMyNjAxN0E0MUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI2MDE3QTIxQzcyREM5
OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmggKi87IH07CiAJCUMyODA4MzNGMUM2REMyNkYw
MDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjgwODMzRTFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5oICov
OyB9OwogCQlDMjgwODM0MDFDNkRDMjc1MDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgwODMzRDFDNkRDMjJD
MDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi87IH07CiAJCUMyODA4MzQyMUM2REM5NkEwMDE0
NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzQxMUM2REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRGYWNl
Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgzNzQsNiArODM4MSwxMiBAQAogCQkxQzIxRTU3QTE4M0VE
MUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJT1N1cmZhY2VQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMyMUU1N0IxODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSU9TdXJmYWNlUG9vbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RA
M3gucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucG5nOyBwYXRoID0gIlNwZWxsaW5nRG90QDN4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDMjRFRUExMUM3MjlCMzIwMDgwRjhGQyAvKiBGb250RmFjZVNldC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2VTZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzI0RUVBMjFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2VTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzI0RUVBMzFDNzI5Q0U0MDA4MEY4RkMgLyog
Rm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZhY2VT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMyNEVFQTYxQzcyQTdCNDAwODBG
OEZDIC8qIEpTRm9udEZhY2VTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
MjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUMyNEVFQUExQzcyQUEwQTAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXRDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFjZVNldEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEw
MEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMzI0OTEwMUM2RDZBM0IwMDdFREIzMiAvKiBGb250VmFyaWFudEJ1aWxkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFZhcmlhbnRCdWls
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzOTY5Q0YxQjc0MjExRTAw
MkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzODMzLDYgKzEzODQ2LDggQEAKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRG
IC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMDE1QzA5MUJFNkZFMkMwMDgyMjM4OSAvKiBGb250VmFyaWFudEJ1aWxkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udFZhcmlhbnRCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyNDY4NTEzMUExNDhFMTgwMDgxMTc5MiAvKiBDb3JlR3JhcGhpY3NTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUdyYXBoaWNzU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyNjAxN0ExMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFj
ZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250RmFj
ZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNjAxN0EyMUM3MkRDOTkw
MEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgw
ODMzQzFDNkRCMTk0MDAxNDUxQjYgLyogRm9udEZhY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEZvbnRGYWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0Qx
QzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE3NTU1LDYgKzE3NTcwLDggQEAKIAkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3
IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUMyNEVFQTYxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuY3Bw
ICovLAorCQkJCTFDMjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi8s
CiAJCQkJQzI4MDgzM0QxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovLAogCQkJ
CUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8sCiAJCQkJOTkwOEIw
RjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5j
cHAgKi8sCkBAIC0yMjQ2NSw2ICsyMjQ4Miw3IEBACiAJCQkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3
MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICovLAogCQkJCUJDRUZFMUU0MERDQTVGMzMw
MDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwICovLAogCQkJCUMyODA4MzQxMUM2
REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCAqLywKKwkJCQkxQzI0RUVBQTFD
NzJBQTBBMDA4MEY4RkMgLyogSlNGb250RmFjZVNldEN1c3RvbS5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IEN1c3RvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzc3NCw2ICsy
Mzc5MiwxMSBAQAogCQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAg
Ki8sCiAJCQkJMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi8sCiAJCQkJ
QzI4MDgzM0MxQzZEQjE5NDAwMTQ1MUI2IC8qIEZvbnRGYWNlLmlkbCAqLywKKwkJCQkxQzI0RUVB
MTFDNzI5QjMyMDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaWRsICovLAorCQkJCTFDMjRFRUEyMUM3
MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5jcHAgKi8sCisJCQkJMUMyNEVFQTMxQzcyOUNF
NDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggKi8sCisJCQkJQzI2MDE3QTExQzcyREM5OTAwRjc0
QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmNwcCAqLywKKwkJCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRB
MTYgLyogQ1NTRm9udEZhY2VTZXQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2NDk1LDYgKzI2NTE4LDcgQEAKIAkJCQkwRkRBN0Mx
RjE4ODMyMkZDMDBDOTU0QjUgLyogSlNHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0ODJCNzUyMTE5OENCNkIwMEJGQjAwNSAvKiBKU0hhc2hDaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM5NEQxNEYwQzI3NUM2ODAwNkJDNjE3IC8qIEpTSGlzdG9yeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUMyNEVFQTUxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzk3RTQxMzEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxs
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTJERjAwQTFCODUyQTAwQzgwN0Y4
IC8qIEpTSFRNTEFuY2hvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEEyREYyMEEx
Qjg1MkEwMEM4MDdGOCAvKiBKU0hUTUxBcHBsZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI3MzA4LDYgKzI3MzMyLDcgQEAKIAkJCQlCQzc2QUMxMzBERDdBRDVDMDA0MTVGMzQgLyogUGFy
c2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzZENUEyMzE5M0U4RTBDMDBDRTRD
QUIgLyogUGFyc2luZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQ0ExMjUx
RjEyRDAwM0VGMjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
QzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEIyNzA4QzcwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUM1OTg5MDU3MTRFOUMyODAwMEU4RDE4QiAvKiBQYXN0ZWJvYXJkU3RyYXRlZ3ku
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTgwMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4MDQzLDYgKzI4MDY4LDcgQEAKIAkJCQkwODEwNzY0NDEyODI4
NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwOTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzI2MDE3QTQxQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNl
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhFRTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZH
TWFya2VyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNDQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTQ3MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTg2Myw2
ICsyOTg4OSw3IEBACiAJCQkJNTFFMUVDQzAwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4NUZDNzcxQkI0QzRFODAwMTI4OThGIC8qIElEQkFu
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTk4RjdCRTFCQzMzOEFGMDBFMkNDNUYgLyogSURC
QW55SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMjYwMTdBMzFDNzJEQzk5MDBGNzRBMTYg
LyogQ1NTRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2NjIxMUQ0RkFD
NTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE2RDdENzExQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTk4RjdDMDFCQzQ4NTY3MDBFMkNDNUYgLyogSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAzODgsNiArMzA0MTUsNyBAQAogCQkJ
CTFBMEQ1NzQwMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTEyODRCQjIxMDQ0OUZGQTAwRUFFQjUyIC8qIEpTUGFnZVRyYW5zaXRpb25F
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVCMTEyQjAzRUUxMDAzQTU4M0EgLyog
SlNQYW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMjRFRUE0MUM3MjlDRTQwMDgw
RjhGQyAvKiBGb250RmFjZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDhBQTYzRTE2OTUx
NEE3MDBEMkVBNjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU1MUE4MURGMTcyOThENzcwMEJGQ0E2MSAvKiBKU1BlcmZvcm1hbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCThBOUE1ODcwMTFFODRDMzYwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMTU4LDYgKzMxMTg2LDcgQEAKIAkJCQlBQkRE
RkU3OTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTQ1NDQyNEUxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMzU4NkRGMTUyNjRDNDUwMDIyQTY1OSAvKiBSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMyNEVFQTgxQzcyQTdCNDAwODBG
OEZDIC8qIEpTRm9udEZhY2VTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMzJCOUUxNTE3
QzIyNzAwRjU0MkVDIC8qIFJlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMUE3RDk3MThGQ0I1QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QUM4MjJGQzE4MEZDMDMzMDBGQjY0
RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTU3
OCw2ICszMTYwNyw3IEBACiAJCQkJNTExRUMxMkIxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NUU3MkZCMEZEMjYyMzkwMEE4
N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDgxRUJGM0EwRkQzNEY0
MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMy
NEVFQUIxQzcyQUEwQTAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjdBMEIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZpbHRlckVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMEUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0ExMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRml0VG9WaWV3Qm94LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3Vz
dG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZDg0OTg1NmNkOTY4Y2IxZDZlM2RmNzVkNjdiZDQ4YmY5MDE3
YmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250
RmFjZVNldEN1c3RvbS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ZvbnRGYWNlU2V0LmgiCisKKyNpbmNsdWRlICJGb250
RmFjZS5oIgorI2luY2x1ZGUgIkpTRm9udEZhY2UuaCIKKyNpbmNsdWRlICJKU0tleVZhbHVlSXRl
cmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBGb250RmFjZVNldEl0ZXJh
dG9yID0gSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+OwordXNpbmcgRm9udEZhY2VT
ZXRJdGVyYXRvclByb3RvdHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTxKU0ZvbnRG
YWNlU2V0PjsKKwordGVtcGxhdGU8PgorY29uc3QgSlNDOjpDbGFzc0luZm8gRm9udEZhY2VTZXRJ
dGVyYXRvcjo6c19pbmZvID0geyAiRm9udCBGYWNlIFNldCBJdGVyYXRvciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRm9udEZhY2VTZXRJdGVyYXRvcikgfTsKKwordGVt
cGxhdGU8PgorY29uc3QgSlNDOjpDbGFzc0luZm8gRm9udEZhY2VTZXRJdGVyYXRvclByb3RvdHlw
ZTo6c19pbmZvID0geyAiRm9udCBGYWNlIFNldCBJdGVyYXRvciBQcm90b3R5cGUiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZvbnRGYWNlU2V0SXRlcmF0b3JQcm90b3R5
cGUpIH07CisKK0pTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0OjpyZWFkeShKU0M6OkV4ZWNTdGF0
ZSYgZXhlY1N0YXRlKSBjb25zdAoreworICAgIGF1dG8mIHByb21pc2UgPSB3cmFwcGVkKCkucHJv
bWlzZShleGVjU3RhdGUpOworICAgIHJldHVybiBwcm9taXNlLmRlZmVycmVkKCkucHJvbWlzZSgp
OworfQorCitKU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6ZW50cmllcyhKU0M6OkV4ZWNTdGF0
ZSYpCit7CisgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpnbG9iYWxP
YmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleVZhbHVlKTsKK30KKworSlNDOjpKU1Zh
bHVlIEpTRm9udEZhY2VTZXQ6OmtleXMoSlNDOjpFeGVjU3RhdGUmKQoreworICAgIHJldHVybiBj
cmVhdGVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCksICp0aGlzLCBJdGVy
YXRpb25LaW5kOjpLZXkpOworfQorCitKU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6dmFsdWVz
KEpTQzo6RXhlY1N0YXRlJikKK3sKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGb250RmFj
ZVNldD4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6VmFsdWUpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAppbmRleCBjZGM2N2E3NzEwMTYzNjViY2M4
YWEyYjE2NGU4N2YwZDZmNWEzM2RjLi40ODhiYTIzYjY1NTAwMTM1YTMyMzJiNzY3NDk3YTBjYjcw
NjFkMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJDU1NGb250RmFjZS5jcHAiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VMb2FkRXZl
bnQuY3BwIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5jcHAiCisjaW5jbHVkZSAiQ1NTRm9u
dEZhY2VTZXQuY3BwIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU291cmNlLmNwcCIKICNpbmNsdWRl
ICJDU1NGb250RmFjZVNyY1ZhbHVlLmNwcCIKICNpbmNsdWRlICJDU1NGb250RmVhdHVyZVZhbHVl
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDk1NTRhZWQwYmU5N2I1ZWI1
ZTBlMDlmNTJkMTIyOWU2YzJiYTRlNGMuLjQ4NDViNzUwNzNlYjY0ZjFhZGE5NTFmZmVkYTAyZGM3
MTY0NDA2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNDUsOSArNDUsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShDU1NG
b250RmFjZUNsaWVudCYgY2xpZW50LCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgYm9v
bCBpc0xvY2FsRmFsbGJhY2spCitDU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoQ1NTRm9udFNlbGVj
dG9yJiBmb250U2VsZWN0b3IsIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFj
aykKICAgICA6IG1fZm9udFNlbGVjdG9yKGZvbnRTZWxlY3RvcikKLSAgICAsIG1fY2xpZW50KGNs
aWVudCkKKyAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQogICAgICwgbV9pc0xvY2FsRmFsbGJhY2so
aXNMb2NhbEZhbGxiYWNrKQogewogfQpAQCAtMjMwLDE0ICsyMzAsMTQgQEAgYm9vbCBDU1NGb250
RmFjZTo6YWxsU291cmNlc0ZhaWxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQ1NTRm9udEZhY2U6OmFkZGVkVG9TZWdtZW50ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250
RmFjZSYgc2VnbWVudGVkRm9udEZhY2UpCit2b2lkIENTU0ZvbnRGYWNlOjphZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpCiB7Ci0gICAgbV9zZWdtZW50ZWRGb250RmFjZXMuYWRkKCZzZWdtZW50ZWRG
b250RmFjZSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKIH0KIAotdm9pZCBDU1NGb250
RmFjZTo6cmVtb3ZlZEZyb21TZWdtZW50ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYg
c2VnbWVudGVkRm9udEZhY2UpCit2b2lkIENTU0ZvbnRGYWNlOjpyZW1vdmVDbGllbnQoQ2xpZW50
JiBjbGllbnQpCiB7Ci0gICAgbV9zZWdtZW50ZWRGb250RmFjZXMucmVtb3ZlKCZzZWdtZW50ZWRG
b250RmFjZSk7CisgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAogdm9pZCBDU1NG
b250RmFjZTo6YWRvcHRTb3VyY2Uoc3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiYm
IHNvdXJjZSkKQEAgLTI2OCwxMCArMjY4LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OnNldFN0YXR1
cyhTdGF0dXMgbmV3U3RhdHVzKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBtX3N0YXR1
cyA9IG5ld1N0YXR1czsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAg
ICAgY2xpZW50LT5zdGF0ZUNoYW5nZWQoKnRoaXMsIG1fc3RhdHVzLCBuZXdTdGF0dXMpOwogCi0g
ICAgaWYgKG1fc3RhdHVzID09IFN0YXR1czo6U3VjY2VzcyB8fCBtX3N0YXR1cyA9PSBTdGF0dXM6
OkZhaWx1cmUpCi0gICAgICAgIG1fY2xpZW50LmtpY2soKnRoaXMpOworICAgIG1fc3RhdHVzID0g
bmV3U3RhdHVzOwogfQogCiB2b2lkIENTU0ZvbnRGYWNlOjpmb250TG9hZGVkKENTU0ZvbnRGYWNl
U291cmNlJikKQEAgLTI4MiwxMyArMjgyLDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmZvbnRMb2Fk
ZWQoQ1NTRm9udEZhY2VTb3VyY2UmKQogICAgIGlmIChtX3NvdXJjZXNQb3B1bGF0ZWQpCiAgICAg
ICAgIHB1bXAoKTsKIAotICAgIGlmIChtX3NlZ21lbnRlZEZvbnRGYWNlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIG1fZm9udFNlbGVjdG9yLT5mb250TG9hZGVkKCk7CiAKLSAg
ICBmb3IgKGF1dG8qIGZhY2UgOiBtX3NlZ21lbnRlZEZvbnRGYWNlcykKLSAgICAgICAgZmFjZS0+
Zm9udExvYWRlZCgqdGhpcyk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+a2ljaygqdGhpcyk7CiB9CiAKIHNpemVfdCBDU1NGb250RmFjZTo6cHVt
cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDk2ZGY0NTJmN2UyMzcyODRiM2VmYjEx
ODA2NzllMjU0NThiYzlmZjEuLmQ0ODk4MTY1ZThlNzg3OTVjM2U5NDgzOTQ2MGNiM2RkYmVjZTUw
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwxNiArNDQsMTIgQEAgY2xhc3MgQ1NT
VmFsdWU7CiBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250OworY2xhc3MgRm9udEZhY2U7CiAKLWNsYXNzIENTU0ZvbnRGYWNlQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5DU1NGb250RmFjZUNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBraWNrKENTU0ZvbnRGYWNlJikgPSAwOwotfTsKLQorLy8gRklYTUU6IFRoaXMgY2xhc3Mg
ZG9lcyBub3QgbmVlZCB0byBiZSByZWZlcmVuY2UgY291bnRlZC4KIGNsYXNzIENTU0ZvbnRGYWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTRm9udEZhY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoQ1NTRm9udEZhY2VDbGllbnQmIGNsaWVudCwgQ1NTRm9u
dFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2UoY2xpZW50LCBmb250U2VsZWN0b3IsIGlz
TG9jYWxGYWxsYmFjaykpOyB9CisgICAgc3RhdGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlKENT
U0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIs
IGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
Rm9udEZhY2UoZm9udFNlbGVjdG9yLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spKTsgfQogICAg
IHZpcnR1YWwgfkNTU0ZvbnRGYWNlKCk7CiAKICAgICBib29sIHNldEZhbWlsaWVzKENTU1ZhbHVl
Jik7CkBAIC04MCw4ICs3Niw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9jYWxGYWxsYmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1faXNMb2NhbEZhbGxiYWNrOyB9CiAgICAgU3RhdHVzIHN0YXR1cygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAKLSAgICB2b2lkIGFkZGVkVG9TZWdtZW50ZWRG
b250RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYpOwotICAgIHZvaWQgcmVtb3ZlZEZyb21TZWdt
ZW50ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYpOworICAgIGNsYXNzIENsaWVudDsK
KyAgICB2b2lkIGFkZENsaWVudChDbGllbnQmKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChDbGll
bnQmKTsKIAogICAgIGJvb2wgYWxsU291cmNlc0ZhaWxlZCgpIGNvbnN0OwogCkBAIC05Myw2ICs5
MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkKCk7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYyk7CiAKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBraWNrKENTU0ZvbnRGYWNl
JikgeyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhdGVDaGFuZ2VkKENTU0ZvbnRGYWNlJiwg
U3RhdHVzIG9sZFN0YXRlLCBTdGF0dXMgbmV3U3RhdGUpIHsgVU5VU0VEX1BBUkFNKG9sZFN0YXRl
KTsgVU5VU0VEX1BBUkFNKG5ld1N0YXRlKTsgfTsKKyAgICB9OworCiAgICAgLy8gUGVuZGluZyA9
PiBMb2FkaW5nICA9PiBUaW1lZE91dAogICAgIC8vICAgICAgICAgICAgICB8fCAgXFwgICAgLy8g
IHx8CiAgICAgLy8gICAgICAgICAgICAgIHx8ICAgXFwgIC8vICAgfHwKQEAgLTEyNSwxMiArMTI5
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVUNoYXIzMiBtX3RvOwogICAgIH07CiAKKyAgICBGb250
RmFjZSogd3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlcjsgfQorCiAjaWYgRU5BQkxF
KFNWR19GT05UUykKICAgICBib29sIGhhc1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3Q7CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBDU1NGb250RmFjZShDU1NGb250RmFjZUNsaWVudCYsIENTU0Zv
bnRTZWxlY3RvciYsIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKKyAgICBDU1NGb250RmFjZShDU1NG
b250U2VsZWN0b3ImLCBGb250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKIAogICAgIHNp
emVfdCBwdW1wKCk7CiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKQEAgLTEzOCw5ICsxNDQs
OSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fZmFtaWxpZXM7CiAgICAg
Rm9udFRyYWl0c01hc2sgbV90cmFpdHNNYXNrIHsgc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+
KEZvbnRTdHlsZU5vcm1hbE1hc2sgfCBGb250V2VpZ2h0NDAwTWFzaykgfTsKICAgICBWZWN0b3I8
VW5pY29kZVJhbmdlPiBtX3JhbmdlczsKLSAgICBIYXNoU2V0PENTU1NlZ21lbnRlZEZvbnRGYWNl
Kj4gbV9zZWdtZW50ZWRGb250RmFjZXM7IC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIChpbiBmYXZv
ciBvZiBDU1NGb250RmFjZUNsaWVudCkgd2hlbiBpbXBsZW1lbnRpbmcgRm9udEZhY2VTZXQuCisg
ICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4g
bV9mb250U2VsZWN0b3I7Ci0gICAgQ1NTRm9udEZhY2VDbGllbnQmIG1fY2xpZW50OworICAgIEZv
bnRGYWNlKiBtX3dyYXBwZXI7CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0
aW5nczsKICAgICBGb250VmFyaWFudFNldHRpbmdzIG1fdmFyaWFudFNldHRpbmdzOwogICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+PiBtX3NvdXJjZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTkzMjIwMTA1OTY5YTdi
NTNhNzk0ZDA5OWYwMWMxNDNiOTAzMzgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDU1NGb250RmFjZVNldC5oIgorCisjaW5jbHVkZSAiQ1NTRm9udEZhbWlseS5oIgor
I2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NT
Rm9udEZhY2VTZXQ6OkNTU0ZvbnRGYWNlU2V0KENTU0ZvbnRGYWNlU2V0Q2xpZW50JiBjbGllbnQp
CisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK0NTU0ZvbnRGYWNlU2V0Ojp+Q1NTRm9u
dEZhY2VTZXQoKQoreworICAgIGZvciAoYXV0byYgZmFjZSA6IG1fZmFjZXMpCisgICAgICAgIGZh
Y2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OmluY3Jl
bWVudEFjdGl2ZUNvdW50KCkKK3sKKyAgICArK21fYWN0aXZlQ291bnQ7CisgICAgaWYgKG1fYWN0
aXZlQ291bnQgPT0gMSkgeworICAgICAgICBtX3N0YXR1cyA9IFN0YXR1czo6TG9hZGluZzsKKyAg
ICAgICAgbV9jbGllbnQuc3RhcnRlZExvYWRpbmcoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTRm9u
dEZhY2VTZXQ6OmRlY3JlbWVudEFjdGl2ZUNvdW50KCkKK3sKKyAgICAtLW1fYWN0aXZlQ291bnQ7
CisgICAgaWYgKCFtX2FjdGl2ZUNvdW50KSB7CisgICAgICAgIG1fc3RhdHVzID0gU3RhdHVzOjpM
b2FkZWQ7CisgICAgICAgIG1fY2xpZW50LmNvbXBsZXRlZExvYWRpbmcoKTsKKyAgICB9Cit9CisK
K2Jvb2wgQ1NTRm9udEZhY2VTZXQ6Omhhcyhjb25zdCBDU1NGb250RmFjZSYgZmFjZSkgY29uc3QK
K3sKKyAgICBmb3IgKGF1dG8mIG15RmFjZSA6IG1fZmFjZXMpIHsKKyAgICAgICAgaWYgKG15RmFj
ZS5wdHIoKSA9PSAmZmFjZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OmFkZChDU1NGb250RmFjZSYg
ZmFjZSkKK3sKKyAgICBBU1NFUlQoIWhhcyhmYWNlKSk7CisKKyAgICBtX2ZhY2VzLmFwcGVuZChm
YWNlKTsKKyAgICBmYWNlLmFkZENsaWVudCgqdGhpcyk7CisgICAgaWYgKGZhY2Uuc3RhdHVzKCkg
PT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGluZyB8fCBmYWNlLnN0YXR1cygpID09IENTU0Zv
bnRGYWNlOjpTdGF0dXM6OlRpbWVkT3V0KQorICAgICAgICBpbmNyZW1lbnRBY3RpdmVDb3VudCgp
OworfQorCit2b2lkIENTU0ZvbnRGYWNlU2V0OjpyZW1vdmUoY29uc3QgQ1NTRm9udEZhY2UmIGZh
Y2UpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZhY2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX2ZhY2VzW2ldLnB0cigpID09ICZmYWNlKSB7CisgICAgICAgICAgICBt
X2ZhY2VzW2ldLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICAgICAgbV9mYWNlcy5yZW1v
dmUoaSk7CisgICAgICAgICAgICBpZiAoZmFjZS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3Rh
dHVzOjpMb2FkaW5nIHx8IGZhY2Uuc3RhdHVzKCkgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6VGlt
ZWRPdXQpCisgICAgICAgICAgICAgICAgZGVjcmVtZW50QWN0aXZlQ291bnQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBleHRyYWN0RmFtaWxpZXMoY29uc3QgQ1NTVmFs
dWVMaXN0JiBsaXN0KQoreworICAgIEhhc2hTZXQ8U3RyaW5nPiByZXN1bHQ7CisgICAgZm9yIChh
dXRvJiBmYW1pbHkgOiBsaXN0KSB7CisgICAgICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBw
cmltaXRpdmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZmFtaWx5LmdldCgpKTsKKyAg
ICAgICAgaWYgKCFwcmltaXRpdmUuaXNGb250RmFtaWx5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgcmVzdWx0LmFkZChwcmltaXRpdmUuZm9udEZhbWlseSgpLmZhbWlseU5hbWUp
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBmYW1pbGllc0lu
dGVyc2VjdChDU1NGb250RmFjZSYgZmFjZSwgY29uc3QgQ1NTVmFsdWVMaXN0JiByZXF1ZXN0KQor
eworICAgIGlmICghZmFjZS5mYW1pbGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBIYXNoU2V0PFN0cmluZz4gZmFjZUZhbWlsaWVzID0gZXh0cmFjdEZhbWlsaWVzKCpmYWNlLmZh
bWlsaWVzKCkpOworICAgIEhhc2hTZXQ8U3RyaW5nPiByZXF1ZXN0RmFtaWxpZXMgPSBleHRyYWN0
RmFtaWxpZXMocmVxdWVzdCk7CisgICAgZm9yIChhdXRvICZmYW1pbHkxIDogZmFjZUZhbWlsaWVz
KSB7CisgICAgICAgIGlmIChyZXF1ZXN0RmFtaWxpZXMuY29udGFpbnMoZmFtaWx5MSkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IENTU0ZvbnRGYWNlU2V0Ojpt
YXRjaGluZ0ZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q1NTRm9udEZh
Y2U+PiByZXN1bHQ7CisgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBwYXJzZVJlc3VsdCA9IENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZS5wdHIoKSwgQ1NTUHJvcGVydHlGb250LCBmb250LCB0
cnVlLCBDU1NTdHJpY3RNb2RlLCBudWxscHRyKTsKKyAgICBpZiAocGFyc2VSZXN1bHQgPT0gQ1NT
UGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3IpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBib29sIGRlc2lyZWRTdHlsZUlzTm9y
bWFsID0gdHJ1ZTsKKyAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBkZXNpcmVkU3R5bGUgPSBzdHls
ZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpIHsKKyAgICAgICAg
aWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmRlc2lyZWRTdHlsZSkpIHsKKyAgICAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICAgICAgZGVzaXJlZFN0eWxlSXNOb3JtYWwgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKmRlc2lyZWRTdHlsZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsOworICAgIH0K
KyAgICBSZWZQdHI8Q1NTVmFsdWU+IGZhbWlseSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CisgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KGZhbWls
eS5nZXQoKSkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBDU1NWYWx1ZUxpc3QmIGZhbWlseUxpc3QgPSBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCpmYW1pbHkpOworCisgICAgLy8gTWF0Y2ggQ1NTRm9udFNlbGVjdG9yOjpnZXRG
b250RmFjZSgpCisgICAgZm9yIChhdXRvJiBmYWNlIDogbV9mYWNlcykgeworICAgICAgICBpZiAo
IWZhbWlsaWVzSW50ZXJzZWN0KGZhY2UsIGZhbWlseUxpc3QpIHx8IChkZXNpcmVkU3R5bGVJc05v
cm1hbCAmJiAhKGZhY2UtPnRyYWl0c01hc2soKSAmIEZvbnRTdHlsZU5vcm1hbE1hc2spKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXN1bHQuYXBwZW5kKGZhY2UuZ2V0KCkpOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIENTU0ZvbnRGYWNlU2V0Ojpsb2Fk
KGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBhdXRvIG1hdGNoaW5nRmFjZXMgPSB0aGlzLT5tYXRjaGluZ0ZhY2VzKGZvbnQs
IHRleHQsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0
byBmYWNlIDogbWF0Y2hpbmdGYWNlcykKKyAgICAgICAgZmFjZS5nZXQoKS5sb2FkKCk7Cit9CisK
K2Jvb2wgQ1NTRm9udEZhY2VTZXQ6OmNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBhdXRvIG1hdGNoaW5nRmFjZXMg
PSB0aGlzLT5tYXRjaGluZ0ZhY2VzKGZvbnQsIHRleHQsIGVjKTsKKyAgICBpZiAoZWMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byBmYWNlIDogbWF0Y2hpbmdGYWNlcykg
eworICAgICAgICBpZiAoZmFjZS5nZXQoKS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVz
OjpQZW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBDU1NGb250RmFjZVNldDo6c3RhdGVDaGFuZ2VkKENTU0ZvbnRGYWNl
JiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzIG9sZFN0YXRlLCBDU1NGb250RmFjZTo6U3RhdHVz
IG5ld1N0YXRlKQoreworICAgIEFTU0VSVChoYXMoZmFjZSkpOworICAgIGlmIChvbGRTdGF0ZSA9
PSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nKSB7CisgICAgICAgIEFTU0VSVChuZXdTdGF0
ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpMb2FkaW5nKTsKKyAgICAgICAgaW5jcmVtZW50QWN0
aXZlQ291bnQoKTsKKyAgICB9CisgICAgaWYgKG5ld1N0YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0
dXM6OlN1Y2Nlc3MgfHwgbmV3U3RhdGUgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSkg
eworICAgICAgICBBU1NFUlQob2xkU3RhdGUgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGlu
ZyB8fCBvbGRTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpUaW1lZE91dCk7CisgICAgICAg
IG1fY2xpZW50LmZhY2VGaW5pc2hlZChmYWNlLCBuZXdTdGF0ZSk7CisgICAgICAgIGRlY3JlbWVu
dEFjdGl2ZUNvdW50KCk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNl
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmOWZiYTU1NTU3ZDU0NGI3NTgwYjUyZTBjZmI4M2U1OGQwNzU0Y2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBDU1NGb250RmFjZVNldF9oCisjZGVmaW5lIENTU0ZvbnRGYWNlU2V0X2gK
KworI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRGYWNlU2V0OworCitjbGFzcyBDU1NGb250
RmFjZVNldENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTZXRDbGll
bnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmFjZUZpbmlzaGVkKENTU0ZvbnRGYWNlJiwgQ1NT
Rm9udEZhY2U6OlN0YXR1cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydGVkTG9hZGluZygp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkTG9hZGluZygpID0gMDsKK307CisKK2Ns
YXNzIENTU0ZvbnRGYWNlU2V0IDogcHVibGljIENTU0ZvbnRGYWNlOjpDbGllbnQgeworcHVibGlj
OgorICAgIENTU0ZvbnRGYWNlU2V0KENTU0ZvbnRGYWNlU2V0Q2xpZW50Jik7CisgICAgfkNTU0Zv
bnRGYWNlU2V0KCk7CisKKyAgICBib29sIGhhcyhjb25zdCBDU1NGb250RmFjZSYpIGNvbnN0Owor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9mYWNlcy5zaXplKCk7IH0KKyAgICB2
b2lkIGFkZChDU1NGb250RmFjZSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IENTU0ZvbnRGYWNl
Jik7CisgICAgY29uc3QgQ1NTRm9udEZhY2UmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsg
cmV0dXJuIG1fZmFjZXNbaV07IH0KKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgY2hlY2soY29u
c3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAgICAgICAgTG9hZGluZywKKyAgICAgICAgTG9hZGVk
CisgICAgfTsKKyAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0K
KworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gbWF0Y2hp
bmdGYWNlcyhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9u
Q29kZSYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlQ291bnQoKTsKKyAg
ICB2b2lkIGRlY3JlbWVudEFjdGl2ZUNvdW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhdGVD
aGFuZ2VkKENTU0ZvbnRGYWNlJiwgQ1NTRm9udEZhY2U6OlN0YXR1cyBvbGRTdGF0ZSwgQ1NTRm9u
dEZhY2U6OlN0YXR1cyBuZXdTdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8UmVmPENTU0Zv
bnRGYWNlPj4gbV9mYWNlczsKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OkxvYWRlZCB9
OworICAgIENTU0ZvbnRGYWNlU2V0Q2xpZW50JiBtX2NsaWVudDsKKyAgICB1bnNpZ25lZCBtX2Fj
dGl2ZUNvdW50IHsgMCB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAKaW5kZXggMWM3MmQ5OTZkYTdmNzc1ZDE4ODQ4ZWQ5NWQ0N2FlMThiYjBm
YWU3OC4uMmM4YzJjNmQzNjQxYTE4MjVkZGVhZmFmOGZkYWM1MWVkZDUxMzNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIENT
U0ZvbnRTZWxlY3Rvcjo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENTU1Zh
bHVlTGlzdCYgc3JjTGlzdAogICAgIGZvbnRGYWNlLnNvdXJjZXNQb3B1bGF0ZWQoKTsKIH0KIAot
c3RhdGljIFN0cmluZyBmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYgdmFsdWUpCitTdHJpbmcgQ1NTRm9udFNlbGVjdG9yOjpmYW1pbHlOYW1lRnJvbVByaW1p
dGl2ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlz
Rm9udEZhbWlseSgpKQogICAgICAgICByZXR1cm4gdmFsdWUuZm9udEZhbWlseSgpLmZhbWlseU5h
bWU7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OnJlZ2lzdGVyTG9j
YWxGb250RmFjZXNGb3JGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQogCiAgICAgVmVj
dG9yPFJlZjxDU1NGb250RmFjZT4+IGZhY2VzID0geyB9OwogICAgIGZvciAoYXV0byBtYXNrIDog
dHJhaXRzTWFza3MpIHsKLSAgICAgICAgUmVmPENTU0ZvbnRGYWNlPiBmYWNlID0gQ1NTRm9udEZh
Y2U6OmNyZWF0ZSgqdGhpcywgKnRoaXMsIHRydWUpOworICAgICAgICBSZWY8Q1NTRm9udEZhY2U+
IGZhY2UgPSBDU1NGb250RmFjZTo6Y3JlYXRlKCp0aGlzLCBudWxscHRyLCB0cnVlKTsKICAgICAg
ICAgCiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGZhbWlseUxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgIGZhbWlseUxpc3QtPmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShmYW1pbHlOYW1l
KSk7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNl
UnVsZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSYgZm9udEZhY2VSdWxlLCBib28KICAgICBpZiAo
IXNyY0xpc3QubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxDU1NGb250RmFj
ZT4gZm9udEZhY2UgPSBDU1NGb250RmFjZTo6Y3JlYXRlKCp0aGlzLCAqdGhpcyk7CisgICAgUmVm
PENTU0ZvbnRGYWNlPiBmb250RmFjZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUoKnRoaXMpOwogCiAg
ICAgaWYgKCFmb250RmFjZS0+c2V0RmFtaWxpZXMoKmZvbnRGYW1pbHkpKQogICAgICAgICByZXR1
cm47CkBAIC00OTYsMTAgKzQ5Niw2IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRU
aW1lckZpcmVkKCkKIH0KIAogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6a2ljayhDU1NGb250RmFj
ZSYpCi17Ci19Ci0KIHNpemVfdCBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udENvdW50KCkK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgK
aW5kZXggYTMyN2JhZmUxYTIyYjVjMDVjMTA4M2NjOTNjNGZjMWFiMWU4NzJhYi4uOWEyN2ZlMjJl
ZjcyZDRhOTc3YjZmNzM1YTMxMDIzNTk2MTk2NTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaApAQCAtNDEsMTMgKzQxLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENTU0ZvbnRGYWNlUnVsZTsKK2NsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NT
U2VnbWVudGVkRm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBDYWNoZWRGb250
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZTsKIAotY2xhc3MgQ1NT
Rm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZvbnRTZWxlY3RvciwgcHVibGljIENTU0ZvbnRG
YWNlQ2xpZW50IHsKK2NsYXNzIENTU0ZvbnRTZWxlY3RvciBmaW5hbCA6IHB1YmxpYyBGb250U2Vs
ZWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udFNlbGVjdG9yPiBjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKQEAgLTgwLDYgKzgxLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250Kik7CiAKKyAgICBzdGF0aWMg
U3RyaW5nIGZhbWlseU5hbWVGcm9tUHJpbWl0aXZlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTRm9udFNlbGVjdG9yKERvY3VtZW50Jik7CiAK
QEAgLTg5LDggKzkyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRG
YWNlc0ZvckZhbWlseShjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQga2ljayhDU1NGb250RmFj
ZSYpIG92ZXJyaWRlOwotCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxSZWY8Q1NTRm9udEZhY2U+PiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiBtX2ZvbnRGYWNlczsKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxDU1NGb250RmFj
ZT4+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmluZGV4IGRj
ZjhmZTQ0MmE0ZDFiZTRiYjAzZWRiOTBlYTk1MDJjYTllNGQ1ODEuLmYwMjRlZDU0ZTg2YjUzZDBl
NWU3MDlmMDM2MDdlYzEzMzk4M2FhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWdtZW50ZWRGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcApAQCAtNDUsMTkgKzQ1LDE5IEBAIENTU1NlZ21lbnRlZEZvbnRGYWNl
OjpDU1NTZWdtZW50ZWRGb250RmFjZShDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKIENT
U1NlZ21lbnRlZEZvbnRGYWNlOjp+Q1NTU2VnbWVudGVkRm9udEZhY2UoKQogewogICAgIGZvciAo
YXV0byYgZmFjZSA6IG1fZm9udEZhY2VzKQotICAgICAgICBmYWNlLT5yZW1vdmVkRnJvbVNlZ21l
bnRlZEZvbnRGYWNlKCp0aGlzKTsKKyAgICAgICAgZmFjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KIAotdm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZSYp
Cit2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjphcHBlbmRGb250RmFjZShSZWY8Q1NTRm9udEZh
Y2U+JiYgZm9udEZhY2UpCiB7CiAgICAgbV9jYWNoZS5jbGVhcigpOworICAgIGZvbnRGYWNlLT5h
ZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9udEZhY2VzLmFwcGVuZChXVEZNb3ZlKGZvbnRGYWNl
KSk7CiB9CiAKLXZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmFwcGVuZEZvbnRGYWNlKFJlZjxD
U1NGb250RmFjZT4mJiBmb250RmFjZSkKK3ZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmtpY2so
Q1NTRm9udEZhY2UmKQogewogICAgIG1fY2FjaGUuY2xlYXIoKTsKLSAgICBmb250RmFjZS0+YWRk
ZWRUb1NlZ21lbnRlZEZvbnRGYWNlKCp0aGlzKTsKLSAgICBtX2ZvbnRGYWNlcy5hcHBlbmQoV1RG
TW92ZShmb250RmFjZSkpOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRGb250V2l0aEludmFsaWRV
bmljb2RlUmFuZ2VJZkxvYWRpbmcoRm9udFJhbmdlcyYgcmFuZ2VzLCBSZWY8Rm9udD4mJiBmb250
LCBjb25zdCBWZWN0b3I8Q1NTRm9udEZhY2U6OlVuaWNvZGVSYW5nZT4mIHVuaWNvZGVSYW5nZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCmluZGV4IGNhZTY0YWY2
OWQ2MjgwZDQyNTNmMmExYWYzMzg4NjBkZjFhNWNiYjkuLjY3ZmY4YWFkZWJjMmJiZDllOGZlOTUz
NjU3ZDI1MjU4YjJkNzFjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250
RmFjZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENTU1NlZ21lbnRlZEZvbnRGYWNlX2gK
ICNkZWZpbmUgQ1NTU2VnbWVudGVkRm9udEZhY2VfaAogCisjaW5jbHVkZSAiQ1NTRm9udEZhY2Uu
aCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250UmFuZ2VzLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM1LDExICszNiwxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogCi1jbGFzcyBDU1NTZWdtZW50ZWRGb250RmFjZSBmaW5hbCB7
CitjbGFzcyBDU1NTZWdtZW50ZWRGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBDU1NGb250RmFjZTo6
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NT
ZWdtZW50ZWRGb250RmFjZShDU1NGb250U2VsZWN0b3ImKTsKQEAgLTQ3LDEzICs0NywxMiBAQCBw
dWJsaWM6CiAKICAgICBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udFNlbGVjdG9yOyB9CiAKLSAgICB2b2lkIGZvbnRMb2FkZWQoQ1NTRm9udEZhY2Um
KTsKLQogICAgIHZvaWQgYXBwZW5kRm9udEZhY2UoUmVmPENTU0ZvbnRGYWNlPiYmKTsKIAogICAg
IEZvbnRSYW5nZXMgZm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mKTsKIAogcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIHZvaWQga2ljayhDU1NGb250RmFjZSYpIG92ZXJyaWRlOwogCiAgICAg
Q1NTRm9udFNlbGVjdG9yJiBtX2ZvbnRTZWxlY3RvcjsKICAgICBIYXNoTWFwPEZvbnREZXNjcmlw
dGlvbktleSwgRm9udFJhbmdlcywgRm9udERlc2NyaXB0aW9uS2V5SGFzaCwgV1RGOjpTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8Rm9udERlc2NyaXB0aW9uS2V5Pj4gbV9jYWNoZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwCmluZGV4IGJjYjJjZDBmYjhhNjZiZjIyM2M1NjlmMzVlNTk1ZWJkZjAyMTk0YzEu
LmM0NWU4ZDI3MTFmMDc1OTc2OTVkZjYyNjI2NGM4OWUzOGQzYzVlZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDEzICsxMTEsMTUgQEAgUmVmUHRyPEZvbnRGYWNl
PiBGb250RmFjZTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnQKIH0KIAogRm9udEZhY2U6OkZvbnRGYWNlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3Rh
dGUsIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKQotICAgIDogbV9iYWNraW5nKENTU0Zv
bnRGYWNlOjpjcmVhdGUoKnRoaXMsIGZvbnRTZWxlY3RvcikpCisgICAgOiBtX2JhY2tpbmcoQ1NT
Rm9udEZhY2U6OmNyZWF0ZShmb250U2VsZWN0b3IsIHRoaXMpKQogICAgICwgbV9wcm9taXNlKGNy
ZWF0ZVByb21pc2UoZXhlY1N0YXRlKSkKIHsKKyAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhp
cyk7CiB9CiAKIEZvbnRGYWNlOjp+Rm9udEZhY2UoKQogeworICAgIG1fYmFja2luZy0+cmVtb3Zl
Q2xpZW50KCp0aGlzKTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlPiBGb250RmFjZTo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTMx
NSwxMCArMzE3LDEwIEBAIFN0cmluZyBGb250RmFjZTo6c3RhdHVzKCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCJlcnJvciIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogfQogCi12
b2lkIEZvbnRGYWNlOjpraWNrKENTU0ZvbnRGYWNlJiBmYWNlKQordm9pZCBGb250RmFjZTo6c3Rh
dGVDaGFuZ2VkKENTU0ZvbnRGYWNlJiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzLCBDU1NGb250
RmFjZTo6U3RhdHVzIG5ld1N0YXRlKQogewogICAgIEFTU0VSVF9VTlVTRUQoZmFjZSwgJmZhY2Ug
PT0gbV9iYWNraW5nLnB0cigpKTsKLSAgICBzd2l0Y2ggKG1fYmFja2luZy0+c3RhdHVzKCkpIHsK
KyAgICBzd2l0Y2ggKG5ld1N0YXRlKSB7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpU
aW1lZE91dDoKICAgICAgICAgcmVqZWN0UHJvbWlzZShORVRXT1JLX0VSUik7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggN2MxMzlmMjJiZGM3NzA3NjFlMjRlNzFkMzgx
MjFjMWZkYTU0NzAxZS4uZDU2NzQyNGI4YTcwOGFlNTM2M2IxNWYyZDFkZjVkZGFlNjg3MDczNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ1NTRm9udEZhY2U7CiBj
bGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7CiAKLWNsYXNzIEZvbnRGYWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8Rm9udEZhY2U+LCBwdWJsaWMgQ1NTRm9udEZhY2VDbGllbnQgeworY2xh
c3MgRm9udEZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZT4sIHB1YmxpYyBDU1NGb250
RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEZvbnRGYWNlPiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiBmYW1pbHksIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzb3VyY2UsIGNvbnN0IERp
Y3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB+Rm9u
dEZhY2UoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGb250RmFj
ZShKU0M6OkV4ZWNTdGF0ZSYsIENTU0ZvbnRTZWxlY3RvciYpOwogCi0gICAgdm9pZCBraWNrKENT
U0ZvbnRGYWNlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0YXRlQ2hhbmdlZChDU1NG
b250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMgb2xkU3RhdGUsIENTU0ZvbnRGYWNlOjpTdGF0
dXMgbmV3U3RhdGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUHJvbWlzZSgpOwogICAg
IHZvaWQgcmVqZWN0UHJvbWlzZShFeGNlcHRpb25Db2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiMDMxMWRmMmYwNzk2NWU0OThhZjVkNmM2MzJiOTAyZTc1MmFh
NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3Bw
CkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oIgorI2luY2x1ZGUgIkZvbnRGYWNlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisj
aW5jbHVkZSAiSlNET01Db3JlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSlNGb250RmFjZS5oIgor
I2luY2x1ZGUgIkpTRm9udEZhY2VTZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgRm9udEZhY2VTZXQ6OlByb21pc2UgY3JlYXRlUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgZXhl
YykKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIHJl
dHVybiBGb250RmFjZVNldDo6UHJvbWlzZShEZWZlcnJlZFdyYXBwZXIoJmV4ZWMsICZnbG9iYWxP
YmplY3QsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmZXhlYywgJmdsb2JhbE9iamVj
dCkpKTsKK30KKworRm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0KEpTQzo6RXhlY1N0YXRlJiBleGVj
U3RhdGUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+
JiBpbml0aWFsRmFjZXMpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwg
bV9iYWNraW5nKCp0aGlzKQorICAgICwgbV9wcm9taXNlKGNyZWF0ZVByb21pc2UoZXhlY1N0YXRl
KSkKK3sKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBpbml0aWFsRmFjZXMpCisgICAgICAgIGFkZChm
YWNlLmdldCgpKTsKK30KKworRm9udEZhY2VTZXQ6On5Gb250RmFjZVNldCgpCit7Cit9CisKK0Zv
bnRGYWNlU2V0OjpJdGVyYXRvcjo6SXRlcmF0b3IoRm9udEZhY2VTZXQmIHNldCkKKyAgICA6IG1f
dGFyZ2V0KHNldCkKK3sKK30KKworYm9vbCBGb250RmFjZVNldDo6SXRlcmF0b3I6Om5leHQoUmVm
UHRyPEZvbnRGYWNlPiYga2V5LCBSZWZQdHI8Rm9udEZhY2U+JiB2YWx1ZSkKK3sKKyAgICBpZiAo
bV9pbmRleCA9PSBtX3RhcmdldC0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBr
ZXkgPSBtX3RhcmdldC0+bV9iYWNraW5nW21faW5kZXgrK10ud3JhcHBlcigpOworICAgIHZhbHVl
ID0ga2V5OworICAgIHJldHVybiBmYWxzZTsKK30KKworRm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9t
aXNlOjpQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYgcHJvbWlzZSkKKyAgICA6IHByb21pc2UoV1RG
TW92ZShwcm9taXNlKSkKK3sKK30KKworRm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjp+UGVu
ZGluZ1Byb21pc2UoKQoreworfQorCitib29sIEZvbnRGYWNlU2V0OjpoYXMoRm9udEZhY2UqIGZh
Y2UpIGNvbnN0Cit7CisgICAgaWYgKCFmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIG1fYmFja2luZy5oYXMoZmFjZS0+YmFja2luZygpKTsKK30KKworc2l6ZV90IEZvbnRG
YWNlU2V0OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5nLnNpemUoKTsKK30K
KworRm9udEZhY2VTZXQmIEZvbnRGYWNlU2V0OjphZGQoRm9udEZhY2UqIGZhY2UpCit7CisgICAg
aWYgKGZhY2UgJiYgIW1fYmFja2luZy5oYXMoZmFjZS0+YmFja2luZygpKSkKKyAgICAgICAgbV9i
YWNraW5nLmFkZChmYWNlLT5iYWNraW5nKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworYm9v
bCBGb250RmFjZVNldDo6cmVtb3ZlKEZvbnRGYWNlKiBmYWNlKQoreworICAgIGlmICghZmFjZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBtX2JhY2tpbmcuaGFz
KGZhY2UtPmJhY2tpbmcoKSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgbV9iYWNraW5nLnJl
bW92ZShmYWNlLT5iYWNraW5nKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgRm9u
dEZhY2VTZXQ6OmNsZWFyKCkKK3sKKyAgICB3aGlsZSAobV9iYWNraW5nLnNpemUoKSkKKyAgICAg
ICAgbV9iYWNraW5nLnJlbW92ZShtX2JhY2tpbmdbMF0pOworfQorCit2b2lkIEZvbnRGYWNlU2V0
Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBhdXRvIG1hdGNoaW5n
RmFjZXMgPSBtX2JhY2tpbmcubWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0LCBlYyk7CisgICAgaWYg
KGVjKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1hdGNoaW5nRmFjZXMuc2l6ZSgpKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZShWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4oKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gZmFjZSA6IG1hdGNoaW5nRmFj
ZXMpCisgICAgICAgIGZhY2UuZ2V0KCkubG9hZCgpOworCisgICAgYXV0byBwZW5kaW5nUHJvbWlz
ZSA9IFBlbmRpbmdQcm9taXNlOjpjcmVhdGUoV1RGTW92ZShwcm9taXNlKSk7CisgICAgYm9vbCB3
YWl0aW5nID0gZmFsc2U7CisgICAgZm9yIChhdXRvIGZhY2UgOiBtYXRjaGluZ0ZhY2VzKSB7Cisg
ICAgICAgIHBlbmRpbmdQcm9taXNlLT5mYWNlcy5hcHBlbmQoZmFjZS5nZXQoKS53cmFwcGVyKCkp
OworICAgICAgICBpZiAoZmFjZS5nZXQoKS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVz
OjpGYWlsdXJlKSB7CisgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS5yZWplY3Qo
RE9NQ29yZUV4Y2VwdGlvbjo6Y3JlYXRlKEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihORVRXT1JL
X0VSUikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmFj
ZS5nZXQoKS5zdGF0dXMoKSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNzKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIHdhaXRpbmcgPSB0cnVlOworICAgICAgICBhdXRvJiB2
ZWMgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQoUmVmUHRyPEZvbnRGYWNlPihmYWNlLmdldCgpLndy
YXBwZXIoKSksIFZlY3RvcjxSZWY8UGVuZGluZ1Byb21pc2U+PigpKS5pdGVyYXRvci0+dmFsdWU7
CisgICAgICAgIHZlYy5hcHBlbmQocGVuZGluZ1Byb21pc2UuY29weVJlZigpKTsKKyAgICB9Cisg
ICAgaWYgKCF3YWl0aW5nKQorICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS5yZXNvbHZl
KHBlbmRpbmdQcm9taXNlLT5mYWNlcyk7Cit9CisKK2Jvb2wgRm9udEZhY2VTZXQ6OmNoZWNrKGNv
bnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIHJldHVybiBtX2JhY2tpbmcuY2hlY2soZmFtaWx5LCB0ZXh0LCBlYyk7Cit9CisK
K2F1dG8gRm9udEZhY2VTZXQ6OnByb21pc2UoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSkgLT4g
UHJvbWlzZSYKK3sKKyAgICBpZiAoIW1fcHJvbWlzZSkgeworICAgICAgICBtX3Byb21pc2UgPSBj
cmVhdGVQcm9taXNlKGV4ZWNTdGF0ZSk7CisgICAgICAgIGlmIChtX2JhY2tpbmcuc3RhdHVzKCkg
PT0gQ1NTRm9udEZhY2VTZXQ6OlN0YXR1czo6TG9hZGVkKQorICAgICAgICAgICAgZnVsZmlsbFBy
b21pc2UoKTsKKyAgICB9CisgICAgcmV0dXJuIG1fcHJvbWlzZS52YWx1ZSgpOworfQorICAgIAor
U3RyaW5nIEZvbnRGYWNlU2V0OjpzdGF0dXMoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9iYWNr
aW5nLnN0YXR1cygpKSB7CisgICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkaW5n
OgorICAgICAgICByZXR1cm4gU3RyaW5nKCJsb2FkaW5nIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ6CisgICAg
ICAgIHJldHVybiBTdHJpbmcoImxvYWRlZCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJs
b2FkZWQiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKworYm9vbCBGb250RmFj
ZVNldDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYmFja2luZy5zdGF0dXMoKSA9PSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ7
Cit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0ZWRMb2FkaW5nKCkKK3sKKyAgICAvLyBGSVhN
RTogRmlyZSBhICJsb2FkaW5nIiBldmVudCBhc3luY2hyb25vdXNseS4KK30KKwordm9pZCBGb250
RmFjZVNldDo6Y29tcGxldGVkTG9hZGluZygpCit7CisgICAgaWYgKG1fcHJvbWlzZSkKKyAgICAg
ICAgZnVsZmlsbFByb21pc2UoKTsKKyAgICBtX3Byb21pc2UgPSBOdWxsb3B0OworICAgIC8vIEZJ
WE1FOiBGaXJlIGEgImxvYWRpbmdkb25lIiBhbmQgcG9zc2libHkgYSAibG9hZGluZ2Vycm9yIiBl
dmVudCBhc3luY2hyb25vdXNseS4KK30KKwordm9pZCBGb250RmFjZVNldDo6ZnVsZmlsbFByb21p
c2UoKQoreworICAgIC8vIE5vcm1hbGx5LCBEZWZlcnJlZFdyYXBwZXI6OmNhbGxGdW5jdGlvbiBy
ZXNldHMgdGhlIHJlZmVyZW5jZSB0byB0aGUgcHJvbWlzZS4KKyAgICAvLyBIb3dldmVyLCBBUEkg
c2VtYW50aWNzIHJlcXVpcmUgb3VyIHByb21pc2UgdG8gbGl2ZSBmb3IgdGhlIGVudGlyZSBsaWZl
dGltZSBvZiB0aGUgRm9udEZhY2UuCisgICAgLy8gTGV0J3MgbWFrZSBzdXJlIGl0IHN0YXlzIGFs
aXZlLgorCisgICAgUHJvbWlzZSBndWFyZChtX3Byb21pc2UudmFsdWUoKSk7CisgICAgbV9wcm9t
aXNlLnZhbHVlKCkucmVzb2x2ZSgqdGhpcyk7CisgICAgbV9wcm9taXNlID0gZ3VhcmQ7Cit9CisK
K3ZvaWQgRm9udEZhY2VTZXQ6OmZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9u
dEZhY2U6OlN0YXR1cyBuZXdTdGF0dXMpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcGVuZGlu
Z1Byb21pc2VzLmZpbmQoZmFjZS53cmFwcGVyKCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Bl
bmRpbmdQcm9taXNlcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBw
ZW5kaW5nUHJvbWlzZSA6IGl0ZXJhdG9yLT52YWx1ZSkgeworICAgICAgICBpZiAobmV3U3RhdHVz
ID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlmIChwZW5k
aW5nUHJvbWlzZS0+aGFzT25lUmVmKCkpCisgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2Ut
PnByb21pc2UucmVzb2x2ZShwZW5kaW5nUHJvbWlzZS0+ZmFjZXMpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgQVNTRVJUKG5ld1N0YXR1cyA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpG
YWlsdXJlKTsKKyAgICAgICAgICAgIC8vIFRoZSBmaXJzdCByZXNvbHV0aW9uIHdpbnMsIHNvIHdl
IGNhbiBqdXN0IHJlamVjdCBlYXJseSBub3cuCisgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+
cHJvbWlzZS5yZWplY3QoRE9NQ29yZUV4Y2VwdGlvbjo6Y3JlYXRlKEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbihORVRXT1JLX0VSUikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fcGVuZGlu
Z1Byb21pc2VzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmYxOTQ2MzUxNDY2MjAwMTE5MTljNzBhZWRkOGI4NzFkM2JhM2U1Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC0w
LDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBGb250RmFjZVNldF9oCisjZGVmaW5lIEZvbnRGYWNlU2V0X2gKKworI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCisjaW5j
bHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2Ns
YXNzIEZvbnRGYWNlOworCitjbGFzcyBGb250RmFjZVNldCA6IHB1YmxpYyBSZWZDb3VudGVkPEZv
bnRGYWNlU2V0PiwgcHVibGljIENTU0ZvbnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxGb250RmFjZVNldD4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUs
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0
aWFsRmFjZXMpCisgICAgeworICAgICAgICBSZWY8Rm9udEZhY2VTZXQ+IHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgRm9udEZhY2VTZXQoZXhlY1N0YXRlLCBkb2N1bWVudCwgaW5pdGlhbEZhY2VzKSk7
CisgICAgICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICAgIHZpcnR1YWwgfkZvbnRGYWNlU2V0KCk7CisKKyAgICBib29sIGhhcyhG
b250RmFjZSopIGNvbnN0OworICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgRm9udEZhY2VT
ZXQmIGFkZChGb250RmFjZSopOworICAgIGJvb2wgcmVtb3ZlKEZvbnRGYWNlKik7CisgICAgdm9p
ZCBjbGVhcigpOworCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgbG9hZChmb250LCBTdHJpbmco
IiAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgV1RGTW92ZShwcm9taXNlKSwgZWMp
OyB9CisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBj
aGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjaGVj
ayhmb250LCBTdHJpbmcoIiAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgZWMpOyB9
CisgICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
RXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIFN0cmluZyBzdGF0dXMoKSBjb25zdDsKKworICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNvcmVFeGNlcHRpb24mPiBQcm9t
aXNlOworICAgIFByb21pc2UmIHByb21pc2UoSlNDOjpFeGVjU3RhdGUmKTsKKworICAgIGNsYXNz
IEl0ZXJhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEl0ZXJhdG9yKEZvbnRG
YWNlU2V0Jik7CisKKyAgICAgICAgdXNpbmcgS2V5ID0gUmVmUHRyPEZvbnRGYWNlPjsKKyAgICAg
ICAgdXNpbmcgVmFsdWUgPSBSZWZQdHI8Rm9udEZhY2U+OworCisgICAgICAgIGJvb2wgbmV4dChL
ZXkmIG5leHRLZXksIFZhbHVlJiBuZXh0VmFsdWUpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
UmVmPEZvbnRGYWNlU2V0PiBtX3RhcmdldDsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyAwIH07
CisgICAgfTsKKyAgICBJdGVyYXRvciBjcmVhdGVJdGVyYXRvcigpIHsgcmV0dXJuIEl0ZXJhdG9y
KCp0aGlzKTsgfQorCisgICAgdXNpbmcgUmVmQ291bnRlZDxGb250RmFjZVNldD46OnJlZjsKKyAg
ICB1c2luZyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0Pjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAg
c3RydWN0IFBlbmRpbmdQcm9taXNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ1Byb21pc2U+
IHsKKyAgICAgICAgdHlwZWRlZiBET01Qcm9taXNlPFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYs
IERPTUNvcmVFeGNlcHRpb24mPiBQcm9taXNlOworICAgICAgICBzdGF0aWMgUmVmPFBlbmRpbmdQ
cm9taXNlPiBjcmVhdGUoUHJvbWlzZSYmIHByb21pc2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpKTsK
KyAgICAgICAgfQorICAgICAgICB+UGVuZGluZ1Byb21pc2UoKTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIFBlbmRpbmdQcm9taXNlKFByb21pc2UmJik7CisKKyAgICBwdWJsaWM6CisgICAgICAg
IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiBmYWNlczsKKyAgICAgICAgUHJvbWlzZSBwcm9taXNl
OworICAgIH07CisKKyAgICBGb250RmFjZVNldChKU0M6OkV4ZWNTdGF0ZSYsIERvY3VtZW50Jiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+Jik7CisKKyAgICB2b2lkIGZ1bGZpbGxQcm9t
aXNlKCk7CisKKyAgICAvLyBDU1NGb250RmFjZVNldENsaWVudAorICAgIHZpcnR1YWwgdm9pZCBz
dGFydGVkTG9hZGluZygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZWRMb2Fk
aW5nKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZhY2VGaW5pc2hlZChDU1NGb250RmFj
ZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMpIG92ZXJyaWRlOworCisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIkZvbnRGYWNlU2V0IjsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBF
dmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGb250RmFjZVNldEV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICBDU1NGb250RmFjZVNldCBt
X2JhY2tpbmc7CisgICAgSGFzaE1hcDxSZWZQdHI8Rm9udEZhY2U+LCBWZWN0b3I8UmVmPFBlbmRp
bmdQcm9taXNlPj4+IG1fcGVuZGluZ1Byb21pc2VzOworICAgIE9wdGlvbmFsPFByb21pc2U+IG1f
cHJvbWlzZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2VTZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZmY2ODVkY2FjZDliNTJlYzI3MzU1ZTBkZGIzNTFkZjNlNTZmZTc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBGb250RmFjZVNldExvYWRTdGF0dXMgeworICAg
ICJsb2FkaW5nIiwKKyAgICAibG9hZGVkIgorfTsKKworWworICAgIENvbnN0cnVjdG9yQ2FsbFdp
dGg9U2NyaXB0U3RhdGUmRG9jdW1lbnQsCisgICAgQ29uc3RydWN0b3Ioc2VxdWVuY2U8Rm9udEZh
Y2U+IGluaXRpYWxGYWNlcykKK10gaW50ZXJmYWNlIEZvbnRGYWNlU2V0IDogRXZlbnRUYXJnZXQg
eworICAgIFtDdXN0b21dIE9iamVjdCBlbnRyaWVzKCk7CisgICAgLy8gZm9yRWFjaCgpOiBNYXli
ZSBpbXBsZW1lbnQgdGhpcyBpbiBKYXZhc2NyaXB0IG9uIHRvcCBvZiBrZXlzKCkuCisgICAgYm9v
bGVhbiBoYXMoRm9udEZhY2UgZm9udCk7CisgICAgW0N1c3RvbV0gT2JqZWN0IGtleXMoKTsKKyAg
ICBbQ3VzdG9tXSBPYmplY3QgdmFsdWVzKCk7CisgICAgLy8gQGl0ZXJhdG9yCisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgc2l6ZTsKKworICAgIEZvbnRGYWNlU2V0IGFkZChGb250RmFjZSBm
b250KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVdIGJvb2xlYW4gZGVsZXRlKEZvbnRGYWNl
IGZvbnQpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25sb2FkaW5nOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZG9uZTsKKyAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZ2Vycm9yOworCisgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gUHJvbWlzZSBsb2FkKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcg
dGV4dCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9u
dCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOworCisgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0
cmlidXRlIFByb21pc2UgcmVhZHk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0
TG9hZFN0YXR1cyBzdGF0dXM7Cit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCmluZGV4IDQ2OTAwZWNhMzI3MGVmM2MzMTRhOGMzY2RhYzEyMDk4OGVi
NWFlZDMuLjg1YjEwZmM5NWFiMDYxY2M5ZjgxOTgyMDY1N2M0ODkzZWQyZThlZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaApAQCAtMTQxLDYgKzE0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhsb2FkZW5kKSBcCiAgICAgbWFjcm8obG9hZGluZykgXAogICAgIG1hY3JvKGxv
YWRpbmdkb25lKSBcCisgICAgbWFjcm8obG9hZGluZ2Vycm9yKSBcCiAgICAgbWFjcm8obG9hZHN0
YXJ0KSBcCiAgICAgbWFjcm8obWFyaykgXAogICAgIG1hY3JvKG1lc3NhZ2UpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGFiNGZlZGJkNTcxYmUxNjM5MDNj
Y2FkYTIwNzQyNWQxNTU3NGNjMDQuLjQzMGI4YjcyMDIyODU1YzE3YjI1YTg1NjM2MzY1YmI1ZTcy
OWVkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtOSw3
ICs5LDcgQEAgRE9NQXBwbGljYXRpb25DYWNoZQogRE9NV2luZG93CiBFdmVudFNvdXJjZQogRmls
ZVJlYWRlcgotRm9udExvYWRlciBjb25kaXRpb25hbD1GT05UX0xPQURfRVZFTlRTCitGb250RmFj
ZVNldAogSURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCT3BlbkRC
UmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJSZXF1ZXN0IGNvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMmI1ZjY4MzM4MWEyOTA2NGM5NjJlNDg1ZmM5
ZDUxMmM3MzhlN2M5Li4yZjhlMWM4NzkxYzhkYWQyY2Q0ODVmZjU2YTk4NTEwY2MzYjBmNmRmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbRm9udCBMb2FkaW5nXSBJbXBsZW1lbnQgRm9u
dEZhY2VTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC90ZXh0L2ZvbnQtZmFjZS1zZXQtamF2YXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3JpcHQuaHRtbDogQWRk
ZWQuCisKIDIwMTYtMDItMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3Qgc2hvdWxkIG5v
dCBzZWFyY2ggcGhvdG8gY2hhaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9m
b250LWZhY2Utc2V0LWphdmFzY3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2ZvbnQtZmFjZS1zZXQtamF2YXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJm
OGU5MmY4MzdmMWVjYjgzY2EwZTJhNjFkMjI2OTE5ZWU0ODRjZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3JpcHQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNDMgQEAKK1BBU1MgbmV3IEZvbnRGYWNlU2V0KCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyBGb250RmFjZVNl
dChbXSkuc2l6ZSBpcyAwCitQQVNTIG5ldyBGb250RmFjZVNldChbZm9udEZhY2UxXSkuc2l6ZSBp
cyAxCitQQVNTIGZvbnRGYWNlU2V0LnN0YXR1cyBpcyAibG9hZGVkIgorUEFTUyBpdGVtLmRvbmUg
aXMgZmFsc2UKK1BBU1MgaXRlbS52YWx1ZSBpcyBbZm9udEZhY2UxLCBmb250RmFjZTFdCitQQVNT
IGl0ZW0uZG9uZSBpcyB0cnVlCitQQVNTIGl0ZW0uZG9uZSBpcyBmYWxzZQorUEFTUyBpdGVtLnZh
bHVlIGlzIGZvbnRGYWNlMQorUEFTUyBpdGVtLmRvbmUgaXMgdHJ1ZQorUEFTUyBpdGVtLmRvbmUg
aXMgZmFsc2UKK1BBU1MgaXRlbS52YWx1ZSBpcyBmb250RmFjZTEKK1BBU1MgaXRlbS5kb25lIGlz
IHRydWUKK1BBU1MgZm9udEZhY2VTZXQuYWRkKGZvbnRGYWNlMikgaXMgZm9udEZhY2VTZXQKK1BB
U1MgZm9udEZhY2VTZXQuc2l6ZSBpcyAyCitQQVNTIGZvbnRGYWNlU2V0LmRlbGV0ZShmb250RmFj
ZTEpIGlzIHRydWUKK1BBU1MgZm9udEZhY2VTZXQuZGVsZXRlKGZvbnRGYWNlMykgaXMgZmFsc2UK
K1BBU1MgZm9udEZhY2VTZXQuc2l6ZSBpcyAwCitQQVNTIGZvbnRGYWNlU2V0LnZhbHVlcygpLm5l
eHQoKS5kb25lIGlzIHRydWUKK1BBU1MgZm9udEZhY2VTZXQuY2hlY2soJ2dhcmJhZ2UnKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBm
b250RmFjZVNldC5jaGVjaygnMTZweCBnYXJiYWdlJykgaXMgdHJ1ZQorUEFTUyBmb250RmFjZVNl
dC5jaGVjaygnMTZweCBmYW1pbHkxJykgaXMgZmFsc2UKK1BBU1MgZm9udEZhY2VTZXQuc3RhdHVz
IGlzICJsb2FkZWQiCitQQVNTIGl0ZW0uY29kZSBpcyBpdGVtLlNZTlRBWF9FUlIKK1BBU1MgZm9u
dEZhY2VTZXQuY2hlY2soJzE2cHggZmFtaWx5MScpIGlzIGZhbHNlCitQQVNTIGl0ZW0gaXMgW10K
K1BBU1MgaXRlbS5jb2RlIGlzIGl0ZW0uTkVUV09SS19FUlIKK1BBU1MgZm9udEZhY2VTZXQuY2hl
Y2soJzE2cHggZmFtaWx5MycpIGlzIGZhbHNlCitQQVNTIGZvbnRGYWNlU2V0LnN0YXR1cyBpcyAi
bG9hZGluZyIKK1BBU1MgaXRlbSBpcyBbZm9udEZhY2UzXQorUEFTUyBmb250RmFjZVNldC5jaGVj
aygnMTZweCBmYW1pbHkzJykgaXMgdHJ1ZQorUEFTUyBmb250RmFjZVNldC5zdGF0dXMgaXMgImxv
YWRlZCIKK1BBU1MgZm9udEZhY2VTZXQuc3RhdHVzIGlzICJsb2FkZWQiCitQQVNTIGl0ZW0gaXMg
W2ZvbnRGYWNlM10KK1BBU1MgaXRlbSBpcyBbZm9udEZhY2UzLCBmb250RmFjZTRdCitQQVNTIGl0
ZW0gaXMgZm9udEZhY2VTZXQKK1BBU1MgZm9udEZhY2VTZXQuc3RhdHVzIGlzICJsb2FkZWQiCitQ
QVNTIGZvbnRGYWNlU2V0LnN0YXR1cyBpcyAibG9hZGluZyIKK1BBU1MgaXRlbSBpcyBmb250RmFj
ZVNldAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3Jp
cHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LWZhY2Utc2V0LWphdmFzY3JpcHQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMTgyN2U3ZDA3OGQyMDlmZmI1YzE3YmM5NzEyYTA4ZmM0OGFlOGMw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtZmFjZS1zZXQt
amF2YXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMTM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICB3
aW5kb3cuaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKwordmFyIGZvbnRGYWNlMSA9IG5l
dyBGb250RmFjZSgiZmFtaWx5MSIsICJ1cmwoJ2FzZGYnKSIsIHt9KTsKK3ZhciBmb250RmFjZTIg
PSBuZXcgRm9udEZhY2UoImZhbWlseTIiLCAidXJsKCdhc2RmJykiLCB7fSk7Cit2YXIgZm9udEZh
Y2UzID0gbmV3IEZvbnRGYWNlKCJmYW1pbHkzIiwgInVybCgnLi4vLi4vcmVzb3VyY2VzL0FoZW0u
dHRmJykiLCB7fSk7Cit2YXIgZm9udEZhY2U0ID0gbmV3IEZvbnRGYWNlKCJmYW1pbHkzIiwgInVy
bCgnLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmJykiLCB7J3dlaWdodCc6ICdib2xkJ30pOwordmFy
IGZvbnRGYWNlNSA9IG5ldyBGb250RmFjZSgiZmFtaWx5NSIsICJ1cmwoJy4uLy4uL3Jlc291cmNl
cy9BaGVtLm90ZicpIiwge30pOworCitzaG91bGRUaHJvdygibmV3IEZvbnRGYWNlU2V0KCkiKTsK
K3Nob3VsZEJlKCJuZXcgRm9udEZhY2VTZXQoW10pLnNpemUiLCAiMCIpOworc2hvdWxkQmUoIm5l
dyBGb250RmFjZVNldChbZm9udEZhY2UxXSkuc2l6ZSIsICIxIik7CisKK3ZhciBmb250RmFjZVNl
dCA9IG5ldyBGb250RmFjZVNldChbXSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZvbnRGYWNl
U2V0LnN0YXR1cyIsICJsb2FkZWQiKTsKK2ZvbnRGYWNlU2V0LmFkZChmb250RmFjZTEpOwordmFy
IGl0ZXJhdG9yID0gZm9udEZhY2VTZXQuZW50cmllcygpOwordmFyIGl0ZW0gPSBpdGVyYXRvci5u
ZXh0KCk7CitzaG91bGRCZUZhbHNlKCJpdGVtLmRvbmUiKTsKK3Nob3VsZEJlKCJpdGVtLnZhbHVl
IiwgIltmb250RmFjZTEsIGZvbnRGYWNlMV0iKTsKK2l0ZW0gPSBpdGVyYXRvci5uZXh0KCk7Citz
aG91bGRCZVRydWUoIml0ZW0uZG9uZSIpOworCitpdGVyYXRvciA9IGZvbnRGYWNlU2V0LmtleXMo
KTsKK2l0ZW0gPSBpdGVyYXRvci5uZXh0KCk7CitzaG91bGRCZUZhbHNlKCJpdGVtLmRvbmUiKTsK
K3Nob3VsZEJlKCJpdGVtLnZhbHVlIiwgImZvbnRGYWNlMSIpOworaXRlbSA9IGl0ZXJhdG9yLm5l
eHQoKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5kb25lIik7CisKK2l0ZXJhdG9yID0gZm9udEZhY2VT
ZXQudmFsdWVzKCk7CitpdGVtID0gaXRlcmF0b3IubmV4dCgpOworc2hvdWxkQmVGYWxzZSgiaXRl
bS5kb25lIik7CitzaG91bGRCZSgiaXRlbS52YWx1ZSIsICJmb250RmFjZTEiKTsKK2l0ZW0gPSBp
dGVyYXRvci5uZXh0KCk7CitzaG91bGRCZVRydWUoIml0ZW0uZG9uZSIpOworCitzaG91bGRCZSgi
Zm9udEZhY2VTZXQuYWRkKGZvbnRGYWNlMikiLCAiZm9udEZhY2VTZXQiKTsKK3Nob3VsZEJlKCJm
b250RmFjZVNldC5zaXplIiwgIjIiKTsKK3Nob3VsZEJlKCJmb250RmFjZVNldC5kZWxldGUoZm9u
dEZhY2UxKSIsICJ0cnVlIik7CitzaG91bGRCZSgiZm9udEZhY2VTZXQuZGVsZXRlKGZvbnRGYWNl
MykiLCAiZmFsc2UiKTsKK2ZvbnRGYWNlU2V0LmNsZWFyKCk7CitzaG91bGRCZSgiZm9udEZhY2VT
ZXQuc2l6ZSIsICIwIik7CitzaG91bGRCZVRydWUoImZvbnRGYWNlU2V0LnZhbHVlcygpLm5leHQo
KS5kb25lIik7CitzaG91bGRUaHJvdygiZm9udEZhY2VTZXQuY2hlY2soJ2dhcmJhZ2UnKSIpOwor
c2hvdWxkQmVUcnVlKCJmb250RmFjZVNldC5jaGVjaygnMTZweCBnYXJiYWdlJykiKTsKKworc2Vs
Zi5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2ZvbnRGYWNlU2V0LmFkZChmb250RmFjZTEpOworc2hv
dWxkQmVGYWxzZSgiZm9udEZhY2VTZXQuY2hlY2soJzE2cHggZmFtaWx5MScpIik7Cit2YXIgaXRl
bTsKK2ZvbnRGYWNlU2V0LmxvYWQoImdhcmJhZ2UiKS50aGVuKGZ1bmN0aW9uKGFyZykgeworICAg
IHRlc3RGYWlsZWQoIlNob3VsZCBub3QgYmUgYWJsZSB0byBwYXJzZSBnYXJiYWdlIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihhcmcpIHsKKyAgICBpdGVtID0gYXJnOworICAg
IHNob3VsZEJlKCJpdGVtLmNvZGUiLCAiaXRlbS5TWU5UQVhfRVJSIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZm9udEZhY2VTZXQuY2hlY2soJzE2cHggZmFtaWx5MScpIik7CisgICAgcmV0dXJuIGZv
bnRGYWNlU2V0LmxvYWQoIjE2cHggZ2FyYmFnZSIpOworfSkudGhlbihmdW5jdGlvbihhcmcpIHsK
KyAgICBpdGVtID0gYXJnOworICAgIHNob3VsZEJlKCJpdGVtIiwgIltdIik7CisgICAgcmV0dXJu
IGZvbnRGYWNlU2V0LmxvYWQoIjE2cHggZmFtaWx5MSIpOworfSwgZnVuY3Rpb24oYXJnKSB7Cisg
ICAgdGVzdEZhaWxlZCgiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHBhcnNlIGdhcmJhZ2UiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30pLnRoZW4oZnVuY3Rpb24oYXJnKSB7CisgICAgdGVzdEZhaWxl
ZCgiQm9ndXMgVVJMIHNob3VsZCBub3QgbG9hZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSwg
ZnVuY3Rpb24oYXJnKSB7CisgICAgaXRlbSA9IGFyZzsKKyAgICBzaG91bGRCZSgiaXRlbS5jb2Rl
IiwgIml0ZW0uTkVUV09SS19FUlIiKTsKKyAgICBmb250RmFjZVNldC5hZGQoZm9udEZhY2UzKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJmb250RmFjZVNldC5jaGVjaygnMTZweCBmYW1pbHkzJykiKTsK
KyAgICB2YXIgcmVzdWx0ID0gZm9udEZhY2VTZXQubG9hZCgiMTZweCBmYW1pbHkzIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmb250RmFjZVNldC5zdGF0dXMiLCAibG9hZGluZyIpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9KS50aGVuKGZ1bmN0aW9uKGFyZykgeworICAgIGl0ZW0gPSBh
cmc7CisgICAgc2hvdWxkQmUoIml0ZW0iLCAiW2ZvbnRGYWNlM10iKTsKKyAgICBzaG91bGRCZVRy
dWUoImZvbnRGYWNlU2V0LmNoZWNrKCcxNnB4IGZhbWlseTMnKSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZm9udEZhY2VTZXQuc3RhdHVzIiwgImxvYWRlZCIpOworICAgIHZhciByZXN1
bHQgPSBmb250RmFjZVNldC5sb2FkKCIxNnB4IGZhbWlseTMiKTsgLy8gVGVzdCB3aGVuIGl0J3Mg
aW4gdGhlIGNhY2hlLgorICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZm9udEZhY2VTZXQuc3Rh
dHVzIiwgImxvYWRlZCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9LCBmdW5jdGlvbihhcmcpIHsK
KyAgICB0ZXN0RmFpbGVkKCJSZWFsIFVSTCBzaG91bGQgbG9hZCIpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfSkudGhlbihmdW5jdGlvbihhcmcpIHsKKyAgICBpdGVtID0gYXJnOworICAgIHNob3Vs
ZEJlKCJpdGVtIiwgIltmb250RmFjZTNdIik7CisgICAgZm9udEZhY2VTZXQuYWRkKGZvbnRGYWNl
NCk7CisgICAgcmV0dXJuIGZvbnRGYWNlU2V0LmxvYWQoIjE2cHggZmFtaWx5MyIpOworfSwgZnVu
Y3Rpb24oYXJnKSB7CisgICAgdGVzdEZhaWxlZCgiUmVhbCBVUkwgc2hvdWxkIGxvYWQiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30pLnRoZW4oZnVuY3Rpb24oYXJnKSB7CisgICAgaXRlbSA9IGFy
ZzsKKyAgICBzaG91bGRCZSgiaXRlbSIsICJbZm9udEZhY2UzLCBmb250RmFjZTRdIik7CisgICAg
Zm9udEZhY2VTZXQuYWRkKGZvbnRGYWNlNCk7CisgICAgZm9udEZhY2VTZXQubG9hZCgiMTZweCBm
YW1pbHkzIik7CisgICAgcmV0dXJuIGZvbnRGYWNlU2V0LnJlYWR5OworfSwgZnVuY3Rpb24oYXJn
KSB7CisgICAgdGVzdEZhaWxlZCgiTXVsdGlwbGUgbWF0Y2hpbmcgZmFjZXMgc2hvdWxkIGxvYWQi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pLnRoZW4oZnVuY3Rpb24oYXJnKSB7CisgICAgaXRl
bSA9IGFyZzsKKyAgICBzaG91bGRCZSgiaXRlbSIsICJmb250RmFjZVNldCIpOworICAgIGZvbnRG
YWNlU2V0LmFkZChmb250RmFjZTUpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZm9udEZh
Y2VTZXQuc3RhdHVzIiwgImxvYWRlZCIpOworICAgIGZvbnRGYWNlU2V0LmxvYWQoIjE2cHggZmFt
aWx5NSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZm9udEZhY2VTZXQuc3RhdHVzIiwg
ImxvYWRpbmciKTsKKyAgICByZXR1cm4gZm9udEZhY2VTZXQucmVhZHk7Cit9LCBmdW5jdGlvbihh
cmcpIHsKKyAgICB0ZXN0RmFpbGVkKCJSZWFkeSBhdHRyaWJ1dGUgc2hvdWxkIG5ldmVyIGZhaWwi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pLnRoZW4oZnVuY3Rpb24oYXJnKSB7CisgICAgaXRl
bSA9IGFyZzsKKyAgICBzaG91bGRCZSgiaXRlbSIsICJmb250RmFjZVNldCIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfSwgZnVuY3Rpb24oYXJnKSB7CisgICAgdGVzdEZhaWxlZCgiUmVhZHkgYXR0
cmlidXRlIHNob3VsZCBuZXZlciBmYWlsIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZm9udEZhY2VTZXQuc3RhdHVzIiwgImxvYWRlZCIpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
Z2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4
IDlmMTVlNjEyOTBmNWE3ZTE3NWI4MzZhMDRlZGJjYjQyYjhkNmM4MDQuLjE1YTRhZWFhOTAwMjM2
ZDYxZDUwMWIzNDRiM2E3NzBkNGFkOWRmMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rv
bS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
CkBAIC0zNzgsNiArMzc4LDExIEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdGb250RmFjZScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpCiBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5oYXNPd25Qcm9w
ZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdGb250RmFjZScpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZScpLmNvbmZpZ3VyYWJsZSBp
cyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9u
dEZhY2VTZXQnKS52YWx1ZSBpcyBGb250RmFjZVNldAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykuaGFzT3duUHJvcGVydHkoJ2dldCcp
IGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
Rm9udEZhY2VTZXQnKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZVNldCcpLmVudW1lcmFi
bGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdGb250RmFjZVNldCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9ybURhdGEnKS52YWx1ZSBpcyBGb3JtRGF0YQog
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zvcm1EYXRhJyku
aGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9ybURhdGEnKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMg
ZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9qcy9kb20vZ2xvYmFs
LWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4
dAppbmRleCA3MzY2NGE0ODk5MjE0YjMwYWU3ODIxNDE4NmY2NTY5NTgzYjhmY2VjLi4wMTJiZjA4
Y2RjOWM4NWZhZWI0YzI5ZWVkYzc3ODIxMDc1N2VhYjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2pzL2RvbS9nbG9iYWwtY29u
c3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC0zNzMsNiArMzczLDExIEBAIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZScpLmhh
c093blByb3BlcnR5KCdnZXQnKSBpCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZScpLmVu
dW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdGb250RmFjZScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VTZXQnKS52YWx1ZSBpcyBGb250
RmFjZVNldAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zv
bnRGYWNlU2V0JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VTZXQnKS5oYXNPd25Qcm9w
ZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdGb250RmFjZVNldCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZVNldCcpLmNvbmZpZ3Vy
YWJsZSBpcyB0cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFs
LCAnRm9ybURhdGEnKS52YWx1ZSBpcyBGb3JtRGF0YQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zvcm1EYXRhJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlz
IGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9y
bURhdGEnKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9qcy9kb20vZ2xvYmFsLWNv
bnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCBlNDdhZWJmODI2MDA1NmE1
MDIxNjE2NTEwZjhiN2Y0ZjA3NWE0ZjUwLi5jNGU1YzRjYjUwYmZhNGU5OWYwNDhmYmNlOGVjNjFk
OGFiYmUwYmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvanMvZG9tL2ds
b2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhw
ZWN0ZWQudHh0CkBAIC0zNzgsNiArMzc4LDExIEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpCiBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5o
YXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZScpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZScpLmNvbmZp
Z3VyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnRm9udEZhY2VTZXQnKS52YWx1ZSBpcyBGb250RmFjZVNldAorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykuaGFzT3duUHJvcGVy
dHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnRm9udEZhY2VTZXQnKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZVNldCcp
LmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdGb250RmFjZVNldCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCiBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9ybURhdGEnKS52YWx1ZSBpcyBG
b3JtRGF0YQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zv
cm1EYXRhJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9ybURhdGEnKS5oYXNPd25Qcm9wZXJ0eSgn
c2V0JykgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tYXZl
cmlja3MvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbWF2ZXJpY2tzL2pzL2RvbS9nbG9iYWwtY29uc3Ry
dWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IDIzMWQ3NTg1MmE3Njg0MjViNjI1
ZGNiZjA5YmFmMTI3ZmMwNWI2YzQuLmU2MGU0NTUxMmVhODk2NjE5YzdiMjEzNDFjMmMyY2E4MmRj
YWI4YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tYXZlcmlja3MvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1hdmVyaWNrcy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9y
cy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMzc4LDYgKzM3OCwxMSBAQCBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5oYXNPd25Qcm9w
ZXJ0eSgnZ2V0JykgaQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ0ZvbnRGYWNlJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5lbnVtZXJhYmxl
IGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
Rm9udEZhY2UnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykudmFsdWUgaXMgRm9udEZhY2VTZXQK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZVNl
dCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykuaGFzT3duUHJvcGVydHkoJ3Nl
dCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFs
LCAnRm9udEZhY2VTZXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VTZXQnKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zvcm1E
YXRhJykudmFsdWUgaXMgRm9ybURhdGEKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdGb3JtRGF0YScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQog
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zvcm1EYXRhJyku
aGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMteW9zZW1pdGUvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMteW9zZW1pdGUvanMvZG9t
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggYjBiMTAw
MzlkMDJhMjBmNjllNTliZjg2NDNiNGI2NDc1MWQxMmNlMy4uNzc0NDc4ZWVkZTJlYzg5YmE2NmNm
ZjkzNTlkMDRiZGQ5NzBhMTg0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXlvc2VtaXRlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy15b3NlbWl0ZS9qcy9kb20vZ2xvYmFs
LWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtNDIzLDYgKzQyMywxMSBA
QCBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2Un
KS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNl
CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2Un
KS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykudmFsdWUgaXMg
Rm9udEZhY2VTZXQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdGb250RmFjZVNldCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykuaGFzT3du
UHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VTZXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VTZXQnKS5jb25m
aWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ0Zvcm1EYXRhJykudmFsdWUgaXMgRm9ybURhdGEKIFBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb3JtRGF0YScpLmhhc093blByb3BlcnR5KCdnZXQn
KSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J0Zvcm1EYXRhJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2Jh
bC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggNzgzM2MyMTJjMmM5
MmQzMzhlYjIzM2JkMTRkMGY1MmE2MDQwNWI1Ni4uYmRhNDE2NTk2NzE2Y2U4ZmU0ZmI1YmNkMWNh
NTdlMTE2YjQwZTA4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2Rv
bS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dApAQCAtNDIzLDYgKzQyMywxMSBAQCBQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0Jykg
aQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNl
JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5j
b25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykudmFsdWUgaXMgRm9udEZhY2VTZXQKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb250RmFjZVNldCcpLmhhc093blBy
b3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNl
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VT
ZXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VTZXQnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zvcm1EYXRhJykudmFsdWUg
aXMgRm9ybURhdGEKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdGb3JtRGF0YScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Zvcm1EYXRhJykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
anMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQKaW5kZXggZWYwMzAzODA3YzY4M2JjZTcyYTIxMTYxODMxYjc5Y2E0MTdk
ZTQ3MC4uNTQwZjlhNTg5MjNjZDVhMDlhZmY5Zjg0M2ZmZjFlM2FjNWVhZjk2ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0
dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9k
b20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMjk4LDYg
KzI5OCwxMSBAQCBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
Rm9udEZhY2UnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaQogUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlJykuaGFzT3duUHJvcGVydHkoJ3NldCcp
IGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
Rm9udEZhY2UnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2UnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0Jyku
dmFsdWUgaXMgRm9udEZhY2VTZXQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdGb250RmFjZVNldCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0ZvbnRGYWNlU2V0
JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VTZXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNl
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRm9udEZhY2VT
ZXQnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0Zvcm1EYXRhJykudmFsdWUgaXMgRm9ybURhdGEKIFBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdGb3JtRGF0YScpLmhhc093blByb3Bl
cnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0Zvcm1EYXRhJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCg==
</data>
<flag name="review"
          id="296343"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>