<?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>224277</bug_id>
          
          <creation_ts>2021-04-07 03:50:38 -0700</creation_ts>
          <short_desc>Refactor font loading to make it possible for Worker to implement it</short_desc>
          <delta_ts>2021-04-12 02:27:20 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>224178</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1747843</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 03:50:38 -0700</bug_when>
    <thetext>To support FontFace in OffscreenCanvas correctly, custom font loading needs to be possible on a Worker. Currently, custom font loading is tied to CachedFont, CachedResourceLoader and Document. It would be good to abstract this somewhat to make it easier to provide an alternative implementation of the loading portion that can be used by a Worker. I detailed a plan for this in bug 224178 and have a patch incoming so we can begin testing/discussion/review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747844</commentid>
    <comment_count>1</comment_count>
      <attachid>425379</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 04:31:34 -0700</bug_when>
    <thetext>Created attachment 425379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747852</commentid>
    <comment_count>2</comment_count>
      <attachid>425383</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 04:49:46 -0700</bug_when>
    <thetext>Created attachment 425383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747853</commentid>
    <comment_count>3</comment_count>
      <attachid>425384</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 04:57:58 -0700</bug_when>
    <thetext>Created attachment 425384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747854</commentid>
    <comment_count>4</comment_count>
      <attachid>425385</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 05:06:22 -0700</bug_when>
    <thetext>Created attachment 425385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747866</commentid>
    <comment_count>5</comment_count>
      <attachid>425389</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 06:09:28 -0700</bug_when>
    <thetext>Created attachment 425389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747914</commentid>
    <comment_count>6</comment_count>
      <attachid>425389</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 09:18:05 -0700</bug_when>
    <thetext>Comment on attachment 425389
Patch

Needs a slight refactor, I&apos;ve done some bad things with references here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747962</commentid>
    <comment_count>7</comment_count>
      <attachid>425418</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-07 10:40:59 -0700</bug_when>
    <thetext>Created attachment 425418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748038</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-07 13:15:11 -0700</bug_when>
    <thetext>Should fix those crashes before we review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748241</commentid>
    <comment_count>9</comment_count>
      <attachid>425485</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-08 02:21:43 -0700</bug_when>
    <thetext>Created attachment 425485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748263</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-08 04:19:44 -0700</bug_when>
    <thetext>Fixed. I&apos;d missed checking a result - took the opportunity to remove some unnecessary pointer use in the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748271</commentid>
    <comment_count>11</comment_count>
      <attachid>425498</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-08 04:50:03 -0700</bug_when>
    <thetext>Created attachment 425498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748272</commentid>
    <comment_count>12</comment_count>
      <attachid>425499</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-08 04:52:33 -0700</bug_when>
    <thetext>Created attachment 425499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748307</commentid>
    <comment_count>13</comment_count>
      <attachid>425499</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-08 08:49:01 -0700</bug_when>
    <thetext>Comment on attachment 425499
Patch

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

&gt; Source/WebCore/css/CSSFontFaceSource.h:53
&gt; +    CSSFontFaceSource(CSSFontFace&amp; owner, const String&amp; familyNameOrURI, CSSFontSelector&amp;, std::unique_ptr&lt;FontLoadRequest&gt;&amp;&amp;);

Since the argument can’t be null, consider using UniqueRef&amp;&amp; instead of unique_ptr&amp;&amp;.

&gt; Source/WebCore/css/CSSFontFaceSrcValue.h:70
&gt; +    std::unique_ptr&lt;FontLoadRequest&gt; fontLoadRequest(ScriptExecutionContext*, bool isSVG, bool isInitiatingElementInUserAgentShadowTree);

Since this never returns nullptr, consider returning UniqueRef instead of unique_ptr.

&gt; Source/WebCore/dom/Document.cpp:646
&gt; +    , m_fontLoadingTimer(*this, &amp;Document::fontLoadingTimerFired)

This is unfortunate, bloating the already huge Document class even more by adding back font function and data members  that were factored out into a separate object. Can we keep this code from CSSFontSelector in a separate object even if Document is the only client?

&gt; Source/WebCore/dom/ScriptExecutionContext.h:170
&gt; +    virtual std::unique_ptr&lt;FontLoadRequest&gt; fontLoadRequest(String&amp; url, bool isSVG, bool isInitiatingElementInUserAgentShadowTree, LoadedFromOpaqueSource);

A function like this that returns a heap alloca\ted object would normally be named createXXX.

&gt; Source/WebCore/loader/FontLoadRequest.h:41
&gt; +class FontLoadRequestClient {

Can we use a function for the font loaded call\back instead of a client class? Use WTF::CompletionHandler perhaps? We used to use classes for this but we have found we don’t need that in modern C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748672</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-09 02:33:56 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Comment on attachment 425499 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425499&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontFaceSource.h:53
&gt; &gt; +    CSSFontFaceSource(CSSFontFace&amp; owner, const String&amp; familyNameOrURI, CSSFontSelector&amp;, std::unique_ptr&lt;FontLoadRequest&gt;&amp;&amp;);
&gt; 
&gt; Since the argument can’t be null, consider using UniqueRef&amp;&amp; instead of
&gt; unique_ptr&amp;&amp;.

Sounds good.

&gt; &gt; Source/WebCore/css/CSSFontFaceSrcValue.h:70
&gt; &gt; +    std::unique_ptr&lt;FontLoadRequest&gt; fontLoadRequest(ScriptExecutionContext*, bool isSVG, bool isInitiatingElementInUserAgentShadowTree);
&gt; 
&gt; Since this never returns nullptr, consider returning UniqueRef instead of
&gt; unique_ptr.

This can be null as Document::fontLoadRequest can return nullptr.

&gt; &gt; Source/WebCore/dom/Document.cpp:646
&gt; &gt; +    , m_fontLoadingTimer(*this, &amp;Document::fontLoadingTimerFired)
&gt; 
&gt; This is unfortunate, bloating the already huge Document class even more by
&gt; adding back font function and data members  that were factored out into a
&gt; separate object. Can we keep this code from CSSFontSelector in a separate
&gt; object even if Document is the only client?

I&apos;ll try factoring this out into DocumentFontLoader or something like that.

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.h:170
&gt; &gt; +    virtual std::unique_ptr&lt;FontLoadRequest&gt; fontLoadRequest(String&amp; url, bool isSVG, bool isInitiatingElementInUserAgentShadowTree, LoadedFromOpaqueSource);
&gt; 
&gt; A function like this that returns a heap alloca\ted object would normally be
&gt; named createXXX.
&gt; 
&gt; &gt; Source/WebCore/loader/FontLoadRequest.h:41
&gt; &gt; +class FontLoadRequestClient {
&gt; 
&gt; Can we use a function for the font loaded call\back instead of a client
&gt; class? Use WTF::CompletionHandler perhaps? We used to use classes for this
&gt; but we have found we don’t need that in modern C++.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748675</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-09 02:59:53 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #14)
&gt; (In reply to Darin Adler from comment #13)
&gt; &gt; Comment on attachment 425499 [details]
&gt; &gt; &gt; Source/WebCore/loader/FontLoadRequest.h:41
&gt; &gt; &gt; +class FontLoadRequestClient {
&gt; &gt; 
&gt; &gt; Can we use a function for the font loaded call\back instead of a client
&gt; &gt; class? Use WTF::CompletionHandler perhaps? We used to use classes for this
&gt; &gt; but we have found we don’t need that in modern C++.
&gt; 
&gt; Sure.

So looking at implementing this, it&apos;s tricky without just having another setCompletionHandler function, which seems against how CompletionHandler is generally used elsewhere. The issue is that FontLoadRequest isn&apos;t expected to start loading on creation and the actual begin-loading trigger is handled externally to the request, so there&apos;s no call for which you could add a CompletionHandler argument.

Ideally, ScriptExecutionContext::beginLoadingFontSoon would have this argument, but this would then mean that Document (or DocumentFontLoader) would have to save a map of FontLoadRequest-&gt;CompletionHandler, which seems overkill compared to the current Client setup. I&apos;m open to suggestions, but it seems to me the client setup is actually quite convenient in this particular case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748697</commentid>
    <comment_count>16</comment_count>
      <attachid>425611</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-09 05:00:13 -0700</bug_when>
    <thetext>Created attachment 425611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748699</commentid>
    <comment_count>17</comment_count>
      <attachid>425613</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-09 05:10:14 -0700</bug_when>
    <thetext>Created attachment 425613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749020</commentid>
    <comment_count>18</comment_count>
      <attachid>425613</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-10 12:11:14 -0700</bug_when>
    <thetext>Comment on attachment 425613
Patch

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

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:240
&gt; -    return m_hasSVGFontFaceElement || is&lt;CachedSVGFont&gt;(m_font.get());
&gt; +    if (!m_hasSVGFontFaceElement || !is&lt;CachedFontLoadRequest&gt;(m_fontRequest.get()))
&gt; +        return false;
&gt; +
&gt; +    auto* cachedFontRequest = downcast&lt;CachedFontLoadRequest&gt;(m_fontRequest.get());
&gt; +    return is&lt;CachedSVGFont&gt;(cachedFontRequest-&gt;cachedFont());

I’d write it like this:

    return m_hasSVGFontFaceElement
        &amp;&amp; is&lt;CachedFontLoadRequest&gt;(m_fontRequest.get())
        &amp;&amp; is&lt;CachedSVGFont&gt;(downcast&lt;CachedFontLoadRequest&gt;(*m_fontRequest).cachedFont());

For me this seems easier to follow than the if statement and the local variable, and also it’s slightly nicer to use reference instead of pointers once we have null-checked something.

But also, when writing it like this, it becomes clear that the old logic used || and this new logic uses &amp;&amp;. Is this correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749150</commentid>
    <comment_count>19</comment_count>
      <attachid>425722</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-12 01:06:56 -0700</bug_when>
    <thetext>Created attachment 425722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749152</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-04-12 01:08:20 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #18)
&gt; Comment on attachment 425613 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425613&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontFaceSource.cpp:240
&gt; &gt; -    return m_hasSVGFontFaceElement || is&lt;CachedSVGFont&gt;(m_font.get());
&gt; &gt; +    if (!m_hasSVGFontFaceElement || !is&lt;CachedFontLoadRequest&gt;(m_fontRequest.get()))
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    auto* cachedFontRequest = downcast&lt;CachedFontLoadRequest&gt;(m_fontRequest.get());
&gt; &gt; +    return is&lt;CachedSVGFont&gt;(cachedFontRequest-&gt;cachedFont());
&gt; 
&gt; I’d write it like this:
&gt; 
&gt;     return m_hasSVGFontFaceElement
&gt;         &amp;&amp; is&lt;CachedFontLoadRequest&gt;(m_fontRequest.get())
&gt;         &amp;&amp;
&gt; is&lt;CachedSVGFont&gt;(downcast&lt;CachedFontLoadRequest&gt;(*m_fontRequest).
&gt; cachedFont());
&gt; 
&gt; For me this seems easier to follow than the if statement and the local
&gt; variable, and also it’s slightly nicer to use reference instead of pointers
&gt; once we have null-checked something.
&gt; 
&gt; But also, when writing it like this, it becomes clear that the old logic
&gt; used || and this new logic uses &amp;&amp;. Is this correct?

Well spotted, it isn&apos;t correct - fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749163</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-12 02:26:49 -0700</bug_when>
    <thetext>Committed r275817 (236387@main): &lt;https://commits.webkit.org/236387@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425722.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749164</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-12 02:27:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/76530313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425379</attachid>
            <date>2021-04-07 04:31:34 -0700</date>
            <delta_ts>2021-04-07 04:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210407123133.patch</filename>
            <type>text/plain</type>
            <size>45321</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uMTAyNDZjZjg3MWE0OGZhYTgzNGE0NTliM2ExMGVj
YjViYjI0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6IFVwZGF0ZSB0byBub3QgcmVxdWlyZSBEb2N1bWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKToKKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGlu
c3RlYWQgb2YgQ2FjaGVkRm9udC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNl
OjpDU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJj
ZTo6fkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU291cmNlOjpmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpp
c1NWR0ZvbnRGYWNlU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDogVXBkYXRlIHRv
IHVzZSBGb250TG9hZFJlcXVlc3QgYW5kCisgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2VTcmNWYWx1ZS5oOgorCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6IFJl
bW92ZSBEb2N1bWVudC1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNl
bGVjdG9yOjpDU1NGb250U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVj
dG9yOjp+Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Y2xlYXJGb250cyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDogQWRkIERvY3VtZW50LXNwZWNpZmljIGZvbnQtbG9hZGlu
ZyBjb2RlIGZyb20KKyAgICAgICAgICBDU1NGb250U2VsZWN0b3IgYW5kIENTU0ZvbnRGYWNlU3Jj
VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVzb2x2ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNw
ZW5kRm9udExvYWRpbmdUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpiZWdpbkxvYWRpbmdGb250
U29vbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bG9hZFBlbmRpbmdGb250cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExvYWRpbmdUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc3VtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IEFkZCBmdW5jdGlvbnMgdG8gaW5pdGlhdGUgZm9u
dCBsb2FkIHJlcXVlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YmVnaW5Mb2Fk
aW5nRm9udFNvb24pOgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVXBk
YXRlIGR1ZSB0byBvdGhlciBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN0b3BMb2FkaW5nKToKKworICAgICAgICAqIGxvYWRlci9Gb250TG9hZFJlcXVlc3QuaDog
QWRkZWQuIEFuIGludGVyZmFjZSB0byBtYW5hZ2UgZm9udCBsb2FkaW5nCisgICAgICAgICAgdGhh
dCBhYnN0cmFjdHMgc29tZSBvZiB0aGUgYmVoYXZpb3VyIG9mIENhY2hlZFJlc291cmNlLCBDYWNo
ZWRGb250IGFuZAorICAgICAgICAgIENhY2hlZEZvbnRDbGllbnQuCisgICAgICAgIChXZWJDb3Jl
OjpGb250TG9hZFJlcXVlc3RDbGllbnQ6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojppc0NhY2hlZEZvbnRDbGllbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZEZvbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZFNWR0ZvbnQgY29uc3QpOgorCisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOiBJbXBsZW1lbnQgRm9udExvYWRS
ZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnRDbGllbnQuaDogSW1wbGVtZW50IEZvbnRMb2FkUmVxdWVzdENsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnRDbGllbnQ6OmZvbnRMb2FkZWQpOgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDogVXBkYXRlIHR5cGUtY2FzdCB0cmFpdHMu
CisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDogUmVtb3ZlIG5vdy1y
ZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJH
bG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwogMjAyMS0wNC0wNSAgQ2hyaXMgTG9y
ZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlkaUNvbnRleHQgY2FjaGluZyBpcyBu
b3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDgxNzFhY2Nl
YTdlZjQ3Y2IxNTM5OTVlOTRhYThhMDExOWQ3YWUzNjAuLjA1Y2IzNDU5N2U1YTI0M2ZkNTA2Y2Y0
YThjYTc0MWRiYzdkNWM3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzYs
MTAgKzc2LDkgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYg
Zm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgU2MKICAgICAgICAgaWYgKCFpdGVtLmlz
TG9jYWwoKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byogc2V0dGluZ3MgPSBjb250ZXh0ID8g
JmNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkgOiBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBh
bGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+
ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKTsKLSAgICAgICAgICAgIGlmIChhbGxvd0Rv
d25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBpczxEb2N1bWVudD4oY29u
dGV4dCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PigqY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZv
bnQgPSBpdGVtLmNhY2hlZEZvbnQoJmRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGlu
Z0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQotICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJj
ZSgpLCBkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmNhY2hlZEZvbnQpOworICAgICAgICAgICAg
aWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIGZvbnRSZXF1ZXN0ID0gaXRlbS5mb250TG9hZFJlcXVlc3Qo
Y29udGV4dCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFk
b3dUcmVlKSkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250
RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmNvbnRleHQtPmNzc0ZvbnRT
ZWxlY3RvcigpLCAqZm9udFJlcXVlc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVsZW1lbnQgPyBtYWtlVW5pcXVlPENTU0Zv
bnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCAqZm9udEZhY2VFbGVtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggYmMzMjNjMmYy
ZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZC4uMDhhMDUwMzQxMzAxMzBhZmE3ZDk2YWE5
MzA2ODViNDg3MjBjMmI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
IgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250RGVz
Y3JpcHRpb24uaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTVkdGb250RWxlbWVudC5oIgpAQCAtNzIsMTkgKzczLDE5IEBAIENTU0ZvbnRG
YWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0
cmluZyYgZmFtaWx5TmFtCiB7CiB9CiAKLUNTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNv
dXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBD
U1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgQ2FjaGVkRm9udCYgZm9udCkKK0NTU0ZvbnRG
YWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0
cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgRm9u
dExvYWRSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFtaWx5TmFt
ZU9yVVJJKQogICAgICwgbV9mYWNlKG93bmVyKQogICAgICwgbV9mb250U2VsZWN0b3IobWFrZVdl
YWtQdHIoZm9udFNlbGVjdG9yKSkKLSAgICAsIG1fZm9udCgmZm9udCkKKyAgICAsIG1fZm9udFJl
cXVlc3QoJnJlcXVlc3QpCiB7CiAgICAgLy8gVGhpcyBtYXkgc3luY2hyb25vdXNseSBjYWxsIGZv
bnRMb2FkZWQoKS4KLSAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9mb250UmVx
dWVzdC0+c2V0Q2xpZW50KHRoaXMpOwogCi0gICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVu
ZGluZyAmJiBtX2ZvbnQtPmlzTG9hZGVkKCkpIHsKKyAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVz
OjpQZW5kaW5nICYmICFtX2ZvbnRSZXF1ZXN0LT5pc0xvYWRpbmcoKSkgewogICAgICAgICBzZXRT
dGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICAgICAgaWYgKCFzaG91bGRJZ25vcmVGb250TG9h
ZENvbXBsZXRpb25zKCkpIHsKLSAgICAgICAgICAgIGlmIChtX2ZvbnQtPmVycm9yT2NjdXJyZWQo
KSkKKyAgICAgICAgICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9jY3VycmVkKCkpCiAgICAg
ICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBAIC0xMDksOCAr
MTEwLDggQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNl
JiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW0KIAogQ1NTRm9udEZhY2VTb3VyY2U6On5D
U1NGb250RmFjZVNvdXJjZSgpCiB7Ci0gICAgaWYgKG1fZm9udCkKLSAgICAgICAgbV9mb250LT5y
ZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGlmIChtX2ZvbnRSZXF1ZXN0KQorICAgICAgICBtX2Zv
bnRSZXF1ZXN0LT5zZXRDbGllbnQobnVsbHB0cik7CiB9CiAKIGJvb2wgQ1NTRm9udEZhY2VTb3Vy
Y2U6OnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdApAQCAtMTIwLDI5ICsx
MjEsMjkgQEAgYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hvdWxkSWdub3JlRm9udExvYWRDb21w
bGV0aW9ucygpIGNvbnN0CiAKIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Om9wcG9ydHVuaXN0aWNh
bGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoKQogewotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0
dXM6OlBlbmRpbmcgJiYgbV9mb250ICYmIG1fZm9udC0+dXJsKCkucHJvdG9jb2xJc0RhdGEoKSAm
JiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQorICAgIGlmIChzdGF0dXMoKSA9PSBT
dGF0dXM6OlBlbmRpbmcgJiYgbV9mb250UmVxdWVzdCAmJiBtX2ZvbnRSZXF1ZXN0LT51cmwoKS5w
cm90b2NvbElzRGF0YSgpICYmIG1fZmFtaWx5TmFtZU9yVVJJLmxlbmd0aCgpIDwgTUIpCiAgICAg
ICAgIGxvYWQoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNo
ZWRGb250JiBsb2FkZWRGb250KQordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChG
b250TG9hZFJlcXVlc3QmIGZvbnRSZXF1ZXN0KQogewotICAgIEFTU0VSVF9VTlVTRUQobG9hZGVk
Rm9udCwgJmxvYWRlZEZvbnQgPT0gbV9mb250LmdldCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZv
bnRSZXF1ZXN0LCAmZm9udFJlcXVlc3QgPT0gbV9mb250UmVxdWVzdCk7CiAKICAgICBpZiAoc2hv
dWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWY8Q1NTRm9udEZhY2U+IHByb3RlY3RlZEZhY2UobV9mYWNlKTsKIAotICAgIC8vIElmIHRoZSBm
b250IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkgY2FsbGVkIGZy
b20gQ2FjaGVkRm9udDo6YWRkQ2xpZW50KCkuCisgICAgLy8gSWYgdGhlIGZvbnQgaXMgaW4gdGhl
IGNhY2hlLCB0aGlzIHdpbGwgYmUgc3luY2hyb25vdXNseSBjYWxsZWQgZnJvbSBGb250TG9hZFJl
cXVlc3Q6OmFkZENsaWVudCgpLgogICAgIGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OlBlbmRpbmcp
CiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwogICAgIGVsc2UgaWYgKG1fc3Rh
dHVzID09IFN0YXR1czo6RmFpbHVyZSkgewogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIG1heSBi
ZSBjYWxsZWQgdHdpY2UgaWYgbG9hZGluZyB3YXMgY2FuY2VsbGVkLgotICAgICAgICBBU1NFUlQo
bV9mb250LT5lcnJvck9jY3VycmVkKCkpOworICAgICAgICBBU1NFUlQobV9mb250UmVxdWVzdC0+
ZXJyb3JPY2N1cnJlZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2Zv
bnQtPmVycm9yT2NjdXJyZWQoKSB8fCAhbV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2Zh
bWlseU5hbWVPclVSSSkpCisgICAgaWYgKG1fZm9udFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSB8
fCAhbV9mb250UmVxdWVzdC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlOYW1lT3JVUkkp
KQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpGYWlsdXJlKTsKICAgICBlbHNlCiAgICAgICAg
IHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTU0LDkgKzE1NSwxMCBAQCB2b2lkIENT
U0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBzZXRTdGF0
dXMoU3RhdHVzOjpMb2FkaW5nKTsKIAotICAgIGlmIChtX2ZvbnQpIHsKKyAgICBpZiAobV9mb250
UmVxdWVzdCkgewogICAgICAgICBBU1NFUlQobV9mb250U2VsZWN0b3IpOwotICAgICAgICBtX2Zv
bnRTZWxlY3Rvci0+YmVnaW5Mb2FkaW5nRm9udFNvb24oKm1fZm9udCk7CisgICAgICAgIGlmIChh
dXRvKiBjb250ZXh0ID0gbV9mb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgICAgIGNvbnRleHQtPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnRSZXF1ZXN0
KTsKICAgICB9IGVsc2UgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAg
aWYgKG1faGFzU1ZHRm9udEZhY2VFbGVtZW50KSB7CkBAIC0xOTgsNyArMjAwLDcgQEAgUmVmUHRy
PEZvbnQ+IENTU0ZvbnRGYWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBib28KIAogICAgIGJvb2wgdXNlc0luRG9jdW1lbnRTVkdGb250ID0gbV9o
YXNTVkdGb250RmFjZUVsZW1lbnQ7CiAKLSAgICBpZiAoIW1fZm9udCAmJiAhdXNlc0luRG9jdW1l
bnRTVkdGb250KSB7CisgICAgaWYgKCFtX2ZvbnRSZXF1ZXN0ICYmICF1c2VzSW5Eb2N1bWVudFNW
R0ZvbnQpIHsKICAgICAgICAgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBp
ZiAoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTIxMCwxMiArMjEyLDEyIEBAIFJlZlB0cjxGb250PiBDU1NGb250
RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
Ym9vCiAgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHko
Zm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgJmZvbnRGYWNlRmVhdHVyZXMsIGZv
bnRGYWNlQ2FwYWJpbGl0aWVzLCB0cnVlKTsKICAgICB9CiAKLSAgICBpZiAobV9mb250KSB7Ci0g
ICAgICAgIGF1dG8gc3VjY2VzcyA9IG1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1p
bHlOYW1lT3JVUkkpOworICAgIGlmIChtX2ZvbnRSZXF1ZXN0KSB7CisgICAgICAgIGF1dG8gc3Vj
Y2VzcyA9IG1fZm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5TmFtZU9y
VVJJKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgICAg
ICBBU1NFUlQoc3RhdHVzKCkgPT0gU3RhdHVzOjpTdWNjZXNzKTsKLSAgICAgICAgYXV0byByZXN1
bHQgPSBtX2ZvbnQtPmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVS
SSwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250
RmFjZUNhcGFiaWxpdGllcyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9mb250UmVxdWVzdC0+
Y3JlYXRlRm9udChmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0
aWVzKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQpAQCAtMjMyLDcgKzIzNCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6
Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKIGJvb2wg
Q1NTRm9udEZhY2VTb3VyY2U6OmlzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBpczxDYWNoZWRTVkdGb250PihtX2ZvbnQu
Z2V0KCkpOworICAgIHJldHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBpczxDYWNoZWRT
VkdGb250PihtX2ZvbnRSZXF1ZXN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaAppbmRleCA1OTJjZTgzMWM1YTkyODYzZTA0ZWJkYjc2ZWYzYWMxOGY1MWMxM2Jk
Li45ZjU5MDNiZGVjODdlZjIwNjEwMWQ5Mjg2NTJjNjU3OGJmYmI2Y2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBDU1NGb250
RmFjZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRGb250Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKLSAgICBDU1NGb250
RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9y
VVJJLCBDU1NGb250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NT
Rm9udFNlbGVjdG9yJiwgRm9udExvYWRSZXF1ZXN0Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgU1ZHRm9u
dEZhY2VFbGVtZW50Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVy
LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3
PiYmKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwpAQCAtNzYsMjIgKzc2LDIy
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0gbnVsbHB0cik7CiAgICAgUmVm
UHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAgQ2FjaGVkRm9udCogY2FjaGVk
Rm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQotICAgIGJvb2wgcmVxdWlyZXNF
eHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250OyB9CisgICAgRm9udExvYWRS
ZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRSZXF1ZXN0OyB9
CisgICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2Zv
bnRSZXF1ZXN0OyB9CiAKICAgICBib29sIGlzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBib29sIHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25z
dDsKIAotICAgIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRT
dGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21TdHJpbmcgbV9mYW1pbHlOYW1lT3JVUkk7IC8vIFVS
SSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250IG5hbWUgZm9yIGxvY2FsLgogICAgIENTU0ZvbnRG
YWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNlLgogICAgIFdlYWtQdHI8Q1NTRm9u
dFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVz
dHJhdGUgbG9hZGluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2Zv
bnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVz
b3VyY2UuCisgICAgRm9udExvYWRSZXF1ZXN0KiBtX2ZvbnRSZXF1ZXN0IHsgbnVsbHB0ciB9OyAv
LyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVz
dC4KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAg
IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggNTM5ZmQ0ODg5NjllZmE2
ZmFkNWZlYTRkM2M4YTE3YjcyZjcxOWVlNS4uY2E5OTJhYzljNGU4YjhiNmVkM2E3NjdmZThiYTdj
MmNhYTZmMjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNw
cApAQCAtMjksMTAgKzI5LDExIEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDE5ICs3NywxNiBAQCBi
b29sIENTU0ZvbnRGYWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6
RnVuY3Rpb248Ym9vbCAoY29uc3QgQwogICAgIHJldHVybiBoYW5kbGVyKCptX2NhY2hlZEZvbnQp
OwogfQogCi1DYWNoZWRGb250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKQorRm9udExvYWRSZXF1ZXN0KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpm
b250TG9hZFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBpc1NW
RywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewogICAg
IGlmIChtX2NhY2hlZEZvbnQpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CiAK
LSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7Ci0gICAgb3B0aW9ucy5jb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVj
ayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7Ci0gICAg
b3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVlU291cmNlID0gbV9sb2FkZWRGcm9tT3BhcXVlU291cmNl
OworICAgIGF1dG8qIHJlcXVlc3QgPSBjb250ZXh0LT5mb250TG9hZFJlcXVlc3QobV9yZXNvdXJj
ZSwgaXNTVkcsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIG1fbG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgaWYgKGlzPENhY2hlZEZvbnQ+KHJlcXVlc3QpKQor
ICAgICAgICBtX2NhY2hlZEZvbnQgPSAmZG93bmNhc3Q8Q2FjaGVkRm9udD4oKnJlcXVlc3QpOwog
Ci0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwotICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1f
Y2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250
KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKTsKLSAgICByZXR1cm4g
bV9jYWNoZWRGb250LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBib29sIENTU0Zv
bnRGYWNlU3JjVmFsdWU6OmVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJiBvdGhlcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGM1ZGM1
OWZkOTZhMWJlMzI4MzYzNDRmZjE5ZDk1ODc3MjkyNmQ3YjQuLjc0OTFkZjY2NWM5ZWY3YmRiMmVm
ZDMwZjBlYjFhYjA2ZmM4ZGExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuaApAQCAtMzQsOCArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
YWNoZWRGb250OwotY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFz
cyBTVkdGb250RmFjZUVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBj
bGFzcyBDU1NGb250RmFjZVNyY1ZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291
cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBo
YW5kbGVyKSBjb25zdDsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqLCBi
b29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUp
OworICAgIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNo
YWRvd1RyZWUpOwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGMxMTU3
OGNmYzUwNDEyY2JhNmM1NTMwZjk0YmU4YWEzNjM0NDc1Y2MuLmFjZDJhMWNjMjRlMzRjMDU0ZDAz
NzgyMzQ4NzczN2NmZWM3ZmViNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCkBAIC02OCw3ICs2OCw2IEBAIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2ZvbnRDYWNoZShtYWtlUmVm
KGNvbnRleHQuZm9udENhY2hlKCkpKQogICAgICwgbV9jc3NGb250RmFjZVNldChDU1NGb250RmFj
ZVNldDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb250TW9kaWZpZWRPYnNlcnZlcihbdGhpc10g
eyBmb250TW9kaWZpZWQoKTsgfSkKLSAgICAsIG1fZm9udExvYWRpbmdUaW1lcigqdGhpcywgJkNT
U0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKQogICAgICwgbV91bmlxdWVJZCgr
K2ZvbnRTZWxlY3RvcklkKQogICAgICwgbV92ZXJzaW9uKDApCiB7CkBAIC05Myw3ICs5Miw3IEBA
IENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgTE9HKEZvbnRzLCAi
Q1NTRm9udFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAotICAgIHN0b3BMb2FkaW5nQW5kQ2xl
YXJGb250cygpOworICAgIGNsZWFyRm9udHMoKTsKICAgICBtX2ZvbnRDYWNoZS0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKIH0KIApAQCAtMzM2LDk0ICszMzUsMTMgQEAgRm9udFJhbmdlcyBDU1NGb250
U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3IKICAgICByZXR1cm4gRm9udFJhbmdlcyB7IFdURk1vdmUoZm9udCkgfTsKIH0KIAotdm9p
ZCBDU1NGb250U2VsZWN0b3I6OnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpCit2b2lkIENTU0Zv
bnRTZWxlY3Rvcjo6Y2xlYXJGb250cygpCiB7Ci0gICAgaWYgKG1faXNTdG9wcGVkKSB7Ci0gICAg
ICAgIEFTU0VSVCghbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpOwotICAgICAgICBBU1NF
UlQobV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGluZ1RpbWVyLnN0
b3AoKTsKLQotICAgIGlmIChpczxEb2N1bWVudD4obV9jb250ZXh0LmdldCgpKSkgewotICAgICAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLSAgICAg
ICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQu
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICAgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDog
bV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1l
bnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigpLgotICAgICAgICAgICAg
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsK
LSAgICAgICAgfQotICAgICAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuY2xlYXIoKTsKLSAgICB9
Ci0KICAgICBtX2Nzc0ZvbnRGYWNlU2V0LT5jbGVhcigpOwogICAgIG1fY2xpZW50cy5jbGVhcigp
OwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVk
Rm9udCYgZm9udCkKLXsKLSAgICBpZiAobV9pc1N0b3BwZWQgfHwgIWlzPERvY3VtZW50PihtX2Nv
bnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIG1fZm9udHNUb0JlZ2luTG9hZGlu
Zy5hcHBlbmQoJmZvbnQpOwotICAgIC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBjb3VudCBub3cs
IGluIG9yZGVyIHRvIHByZXZlbnQgZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRpc3BhdGNoZWQK
LSAgICAvLyBhZnRlciB0aGlzIGZvbnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBiZWZvcmUgaXQg
YmVnYW4gbG9hZGluZy4gQmFsYW5jZWQgYnkKLSAgICAvLyBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KSBpbiBmb250TG9hZGluZ1RpbWVyRmlyZWQoKSBhbmQgaW4gc3RvcExvYWRpbmdBbmRDbGVhckZv
bnRzKCkuCi0gICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5pbmNyZW1lbnRSZXF1
ZXN0Q291bnQoZm9udCk7Ci0KLSAgICBpZiAoIW1faXNGb250TG9hZGluZ1N1c3BlbmRlZCAmJiAh
bV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZm9udExvYWRpbmdUaW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OnN1c3BlbmRG
b250TG9hZGluZ1RpbWVyKCkKLXsKLSAgICBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb246OlBh
Z2VXaWxsQmVTdXNwZW5kZWQpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6bG9hZFBlbmRp
bmdGb250cygpCi17Ci0gICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCB8fCAhaXM8RG9j
dW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQpOwotCi0gICAgVmVjdG9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2FkaW5nOwotICAg
IGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpOwotCi0gICAg
Ly8gQ1NTRm9udFNlbGVjdG9yIGNvdWxkIGdldCBkZWxldGVkIHZpYSBiZWdpbkxvYWRJZk5lZWRl
ZCgpIG9yIGxvYWREb25lKCkgdW5sZXNzIHByb3RlY3RlZC4KLSAgICBSZWY8Q1NTRm9udFNlbGVj
dG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBj
YWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0g
ICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykgewotICAgICAg
ICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7Ci0g
ICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGlu
Z0ZvbnRTb29uKCkuCi0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVl
c3RDb3VudCgqZm9udEhhbmRsZSk7Ci0gICAgfQotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udExvYWRpbmdUaW1lckZpcmVkKCkKLXsKLSAgICBpZiAoIWlzPERvY3VtZW50PihtX2NvbnRl
eHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLSAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGxvYWRQZW5kaW5nRm9udHMoKTsKLQotICAgIC8vIEZJ
WE1FOiBVc2UgU3VicmVzb3VyY2VMb2FkZXIgaW5zdGVhZC4KLSAgICAvLyBDYWxsIEZyYW1lTG9h
ZGVyOjpsb2FkRG9uZSBiZWZvcmUgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlTG9hZERvbmUgdG8g
bWF0Y2ggdGhlIG9yZGVyIGluIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lLgotICAgIGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkubG9hZERvbmUoTG9hZENvbXBsZXRpb25UeXBl
OjpGaW5pc2gpOwotICAgIC8vIEVuc3VyZSB0aGF0IGlmIHRoZSByZXF1ZXN0IGNvdW50IHJlYWNo
ZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3aWxsIGtub3cgYWJvdXQgaXQuCi0gICAgLy8gTmV3
IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQgYWZ0ZXIgdGhlIGRvY3VtZW50
IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9yZSB3ZSBoYXZlIGRpc3BhdGNoZWQKLSAgICAvLyBk
aWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJhbWUuIE1ha2Ugc3VyZSB0aGUgZGVsZWdhdGUgaXMg
YWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tpbmcgZXhwbGljaXRseS4KLSAgICBpZiAoZG9jdW1l
bnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2hlY2tMb2Fk
Q29tcGxldGUoKTsKLX0KLQogc2l6ZV90IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250Q291
bnQoKQogewogICAgIGlmIChtX2lzU3RvcHBlZCkKQEAgLTQ0OSwyOSArMzY3LDQgQEAgUmVmUHRy
PEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHQKICAgICByZXR1cm4gZm9udDsKIH0KIAotdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OnN0b3AoKQotewotICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7Ci19Ci0KLXZv
aWQgQ1NTRm9udFNlbGVjdG9yOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAg
aWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9p
c0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3Rv
cCgpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6cmVzdW1lKCkKLXsKLSAgICBpZiAoIW1f
aXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2Zv
bnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7Ci0KLSAgICBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgPSBmYWxz
ZTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IGU0YWZmMjZh
YWFmZjA4Zjg2ODY3ZTA0NTU5ZmE0MWI0YmI3ZThmMzcuLjQzNDdlODVhMTU2MjM0YTkzY2ViZWQx
NDdjMjMyNmMyMWI1MWFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgpIGZp
bmFsOwogICAgIFJlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRp
b24mLCBzaXplX3QpIGZpbmFsOwogCi0gICAgdm9pZCBzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMo
KTsKKyAgICB2b2lkIGNsZWFyRm9udHMoKTsKICAgICB2b2lkIGVtcHR5Q2FjaGVzKCk7CiAgICAg
dm9pZCBidWlsZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGJ1aWxkQ29tcGxldGVkKCk7CkBAIC04MSw5
ICs4MSw2IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAotICAg
IHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYpOwotICAgIHZvaWQgc3VzcGVu
ZEZvbnRMb2FkaW5nVGltZXIoKTsKLQogICAgIEZvbnRGYWNlU2V0KiBmb250RmFjZVNldElmRXhp
c3RzKCk7CiAgICAgRm9udEZhY2VTZXQmIGZvbnRGYWNlU2V0KCk7CiAKQEAgLTExMCwxMiArMTA3
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvbnRTdHlsZVVwZGF0ZU5lZWRlZChDU1NGb250RmFj
ZSYpIGZpbmFsOwogCiAgICAgdm9pZCBmb250TW9kaWZpZWQoKTsKLSAgICB2b2lkIGZvbnRMb2Fk
aW5nVGltZXJGaXJlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgdm9pZCBzdG9w
KCkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwot
ICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJDU1NGb250U2VsZWN0b3IiX3M7IH0KIAogICAg
IHN0cnVjdCBQZW5kaW5nRm9udEZhY2VSdWxlIHsKQEAgLTEzMCwxNSArMTIzLDExIEBAIHByaXZh
dGU6CiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2Nzc0ZvbnRGYWNlU2V0OwogICAgIEhhc2hT
ZXQ8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwogCi0gICAgVmVjdG9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmc7CiAgICAgSGFz
aFNldDxSZWZQdHI8Q1NTRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zUG9zc2libHlUb1JlbW92
ZTsKICAgICBIYXNoU2V0PFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlv
bnNFbmNvdW50ZXJlZER1cmluZ0J1aWxkOwogCiAgICAgQ1NTRm9udEZhY2VTZXQ6OkZvbnRNb2Rp
ZmllZE9ic2VydmVyIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXI7CiAKLSAgICBUaW1lciBtX2ZvbnRM
b2FkaW5nVGltZXI7Ci0gICAgYm9vbCBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgeyBmYWxzZSB9
OwotCiAgICAgdW5zaWduZWQgbV91bmlxdWVJZDsKICAgICB1bnNpZ25lZCBtX3ZlcnNpb247CiAg
ICAgdW5zaWduZWQgbV9jb21wdXRpbmdSb290U3R5bGVGb250Q291bnQgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBlYjRmMjhiZDMzMDdlNDc0ZGJhN2EzZTI2YWE3Y2EwMDU2M2Y1
NjEyLi43MTZmMTkwOGVjOWYzMTM4Zjk2YTIxNTkyNzhjMjdlZDlkZGQ0ZmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTM3LDggKzM3LDExIEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRD
U1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUgIkNhY2hl
ZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJ
bml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCkBAIC03NCw2ICs3Nyw3
IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNFdmVudC5o
IgogI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC02MzksNiArNjQzLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwg
RG9jdW0KICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1
bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKICAgICAsIG1fc2hhcmVk
T2JqZWN0UG9vbENsZWFyVGltZXIoKnRoaXMsICZEb2N1bWVudDo6Y2xlYXJTaGFyZWRPYmplY3RQ
b29sKQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVjdG9yOjpjcmVhdGUoKnRoaXMp
KQorICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmZvbnRMb2FkaW5n
VGltZXJGaXJlZCkKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIoKnRoaXMs
ICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKICAgICAsIG1f
Y29va2llQ2FjaGVFeHBpcnlUaW1lcigqdGhpcywgJkRvY3VtZW50OjppbnZhbGlkYXRlRE9NQ29v
a2llQ2FjaGUpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHBhZ2UoKSA/ICZwYWdlKCktPnNvY2tl
dFByb3ZpZGVyKCkgOiBudWxscHRyKQpAQCAtNzU4LDcgKzc2Myw3IEBAIERvY3VtZW50Ojp+RG9j
dW1lbnQoKQogICAgIGV4dGVuc2lvblN0eWxlU2hlZXRzKCkuZGV0YWNoRnJvbURvY3VtZW50KCk7
CiAKICAgICBzdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOyAvLyBXZSBuZWVkIHRvIGRlc3Ry
b3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuCi0gICAgbV9mb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworICAg
IHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgLy8gSXQncyBwb3NzaWJsZSBmb3Ig
bXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2luZyB0aGUgc2FtZSBDYWNoZWRS
ZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8gbG9hZCB0aGUgaW5pdGlhbCBl
bXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGggdGhlIHNhbWUgRG9jdW1lbnRM
b2FkZXIpLgpAQCAtODA3LDcgKzgxMiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVm
KCkKICAgICAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiAgICAgICAgIG1f
cGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0geyB9OwogCi0gICAgICAgIG1fZm9udFNlbGVj
dG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICAgICAgc3RvcExvYWRpbmdBbmRD
bGVhckZvbnRzKCk7CiAKICAgICAgICAgZGV0YWNoUGFyc2VyKCk7CiAKQEAgLTIwNjIsNyArMjA2
Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGVUeXBlIHR5cGUp
CiAKICAgICAgICAgbV9pblN0eWxlUmVjYWxjID0gZmFsc2U7CiAKLSAgICAgICAgZm9udFNlbGVj
dG9yKCkubG9hZFBlbmRpbmdGb250cygpOworICAgICAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7CiAK
ICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAgICB1cGRhdGVSZW5kZXJUcmVl
KFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcxNywxMSBAQCB2b2lkIERvY3Vt
ZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKQogI2VuZGlmCiB9
CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCkKK3sKKyAgICBtX2Zv
bnRMb2FkaW5nVGltZXIuc3RvcCgpOworfQorCiBib29sIERvY3VtZW50OjpzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAogewogICAgIC8vIEJ5cGFzcyB0
aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5kIGl0IG5vdCB0aGUgbm9ybWFs
IHdvcmxkLgpAQCAtMjk5Nyw2ICszMDA3LDcyIEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0T3Bl
bigpCiAgICAgc2V0UmVhZHlTdGF0ZShMb2FkaW5nKTsKIH0KIAorRm9udExvYWRSZXF1ZXN0KiBE
b2N1bWVudDo6Zm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlz
SW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVT
b3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0g
aXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSA/IENvbnRlbnRTZWN1cml0
eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGlj
eUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CisgICAgb3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVl
U291cmNlID0gbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTsKKworICAgIENhY2hlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChjb21wbGV0ZVVSTCh1cmwpKSwgb3B0aW9ucyk7
CisgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9y
cygpLmNzcyk7CisgICAgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RGb250
KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKS5nZXQoKTsKK30KKwor
dm9pZCBEb2N1bWVudDo6YmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JiByZXF1
ZXN0KQoreworICAgIEFTU0VSVChpczxDYWNoZWRGb250PihyZXF1ZXN0KSk7CisgICAgYXV0byYg
Zm9udCA9IGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlcXVlc3QpOworCisgICAgbV9mb250c1RvQmVn
aW5Mb2FkaW5nLmFwcGVuZCgmZm9udCk7CisgICAgLy8gSW5jcmVtZW50IHRoZSByZXF1ZXN0IGNv
dW50IG5vdywgaW4gb3JkZXIgdG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZyb20gYmVpbmcgZGlz
cGF0Y2hlZAorICAgIC8vIGFmdGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IGJl
Zm9yZSBpdCBiZWdhbiBsb2FkaW5nLiBCYWxhbmNlZCBieQorICAgIC8vIGRlY3JlbWVudFJlcXVl
c3RDb3VudCgpIGluIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBzdG9wTG9hZGluZ0Fu
ZENsZWFyRm9udHMoKS4KKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1lbnRSZXF1
ZXN0Q291bnQoZm9udCk7CisKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fZm9udExvYWRp
bmdUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RhcnRPbmVT
aG90KDBfcyk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmxvYWRQZW5kaW5nRm9udHMoKQoreworICAg
IGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZvbnRzVG9CZWdpbkxvYWRpbmc7CisgICAgZm9u
dHNUb0JlZ2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGluZyk7CisKKyAgICBmb3Ig
KGF1dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7CisgICAgICAgIGZvbnRI
YW5kbGUtPmJlZ2luTG9hZElmTmVlZGVkKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgICAg
ICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250
U29vbigpLgorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0
Q291bnQoKmZvbnRIYW5kbGUpOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudDo6Zm9udExvYWRp
bmdUaW1lckZpcmVkKCkKK3sKKyAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7CisKKyAgICAvLyBGSVhN
RTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGluc3RlYWQuCisgICAgLy8gQ2FsbCBGcmFtZUxvYWRl
cjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWREb25lIHRvIG1h
dGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4KKyAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLT5sb2FkRG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkZpbmlzaCk7
CisgICAgLy8gRW5zdXJlIHRoYXQgaWYgdGhlIHJlcXVlc3QgY291bnQgcmVhY2hlcyB6ZXJvLCB0
aGUgZnJhbWUgbG9hZGVyIHdpbGwga25vdyBhYm91dCBpdC4KKyAgICAvLyBOZXcgZm9udCBsb2Fk
cyBtYXkgYmUgdHJpZ2dlcmVkIGJ5IGxheW91dCBhZnRlciB0aGUgZG9jdW1lbnQgbG9hZCBpcyBj
b21wbGV0ZSBidXQgYmVmb3JlIHdlIGhhdmUgZGlzcGF0Y2hlZAorICAgIC8vIGRpZEZpbmlzaExv
YWRpbmcgZm9yIHRoZSBmcmFtZS4gTWFrZSBzdXJlIHRoZSBkZWxlZ2F0ZSBpcyBhbHdheXMgZGlz
cGF0Y2hlZCBieSBjaGVja2luZyBleHBsaWNpdGx5LgorICAgIGlmIChmcmFtZSgpKQorICAgICAg
ICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOworfQorCit2b2lkIERvY3Vt
ZW50OjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQoreworICAgIG1fZm9udExvYWRpbmdUaW1l
ci5zdG9wKCk7CisgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2Fk
aW5nKSB7CisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJl
Z2luTG9hZGluZ0ZvbnRTb29uKCkuCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorICAgIG1fZm9udHNUb0Jl
Z2luTG9hZGluZy5jbGVhcigpOworICAgIG1fZm9udFNlbGVjdG9yLT5jbGVhckZvbnRzKCk7Cit9
CisKIEhUTUxCb2R5RWxlbWVudCogRG9jdW1lbnQ6OmJvZHkoKSBjb25zdAogewogICAgIGF1dG8q
IGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKQEAgLTU1MTYsNiArNTU5Miw4IEBAIHZvaWQg
RG9jdW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgbV92aXN1
YWxVcGRhdGVzQWxsb3dlZCA9IGZhbHNlOwogICAgIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9u
VGltZXIuc3RvcCgpOwogCisgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKKwogICAgIG1f
aXNTdXNwZW5kZWQgPSB0cnVlOwogfQogCkBAIC01NTQyLDYgKzU2MjAsOSBAQCB2b2lkIERvY3Vt
ZW50OjpyZXN1bWUoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAKICAgICBtX3Zpc3VhbFVw
ZGF0ZXNBbGxvd2VkID0gdHJ1ZTsKIAorICAgIGlmICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwor
CiAgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxZjlhODNiZmQyNjRhNGUxNDBlM2MxZjEzOGJmYWM0
ZjI1Nzk0MjhiLi40OWU4ODM4ZTI5ZDk3MGVmODJiNmUyZjIxMzYzYjUwNmE0MGNjNzg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMjgsNiArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKICNpbmNsdWRlICJDb2xvci5o
IgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKQEAgLTEwMiw2ICsxMDMsNyBAQCBjbGFzcyBD
U1NGb250U2VsZWN0b3I7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTU3R5
bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDYWNoZWRGb250Owog
Y2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBDYWNoZWRTY3JpcHQ7CkBAIC0xMzcsNiArMTM5LDcgQEAgY2xhc3MgRXh0ZW5zaW9uU3R5bGVT
aGVldHM7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGb250RmFj
ZVNldDsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKIGNsYXNzIEZvcm1Db250cm9sbGVyOwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKQEAgLTYzMyw2ICs2MzYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdXNwZW5kRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCk7
CiAgICAgdm9pZCByZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKTsKIAor
ICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKwogICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXcuZ2V0KCk7IH0KIAogICAgIGJv
b2wgcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUcmVl
QmVpbmdEZXN0cm95ZWQ7IH0KQEAgLTE2NDcsMTAgKzE2NTIsMTYgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBDU1NGb250U2VsZWN0b3IqIGNzc0ZvbnRT
ZWxlY3RvcigpIGZpbmFsIHsgcmV0dXJuIG1fZm9udFNlbGVjdG9yLnB0cigpOyB9CisgICAgRm9u
dExvYWRSZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoU3RyaW5nJiwgYm9vbCwgYm9vbCwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihG
b250TG9hZFJlcXVlc3QmKSBmaW5hbDsKIAogICAgIC8vIEZvbnRTZWxlY3RvckNsaWVudAogICAg
IHZvaWQgZm9udHNOZWVkVXBkYXRlKEZvbnRTZWxlY3RvciYpIGZpbmFsOwogCisgICAgdm9pZCBs
b2FkUGVuZGluZ0ZvbnRzKCk7CisgICAgdm9pZCBmb250TG9hZGluZ1RpbWVyRmlyZWQoKTsKKyAg
ICB2b2lkIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworCiAgICAgYm9vbCBpc0RvY3VtZW50
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAgLTE5ODIsNiArMTk5Myw4IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudEZvcklu
bmVyT3V0ZXJIVE1MOwogCiAgICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7
CisgICAgVGltZXIgbV9mb250TG9hZGluZ1RpbWVyOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwogCiAgICAgV2Vha0hh
c2hTZXQ8TWVkaWFQcm9kdWNlcj4gbV9hdWRpb1Byb2R1Y2VyczsKICAgICBXZWFrUHRyPFNwZWVj
aFJlY29nbml0aW9uPiBtX2FjdGl2ZVNwZWVjaFJlY29nbml0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM3NzM4MzFiODhjMmIwMmIw
NWJjMmZmYjZmMDUzZThkYWYxYTVmN2EuLjFmYTQwMjVkNjQ0MGU5ODIyZmFjNzZiOTZjNzQ5ZjZi
M2NjNDNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKQEAgLTIzMiw2ICsyMzIsMTEgQEAgRm9udENhY2hlJiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojpmb250Q2FjaGUoKQogICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpOwogfQog
CitGb250TG9hZFJlcXVlc3QqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVz
dChTdHJpbmcmLCBib29sLCBib29sLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIHJl
dHVybiBudWxscHRyOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvckVhY2hB
Y3RpdmVET01PYmplY3QoY29uc3QgRnVuY3Rpb248U2hvdWxkQ29udGludWUoQWN0aXZlRE9NT2Jq
ZWN0Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICAvLyBJdCBpcyBub3QgYWxsb3dlZCB0byBydW4g
YXJiaXRyYXJ5IHNjcmlwdCBvciBjb25zdHJ1Y3QgbmV3IEFjdGl2ZURPTU9iamVjdHMgd2hpbGUg
d2UgYXJlIGl0ZXJhdGluZyBvdmVyIEFjdGl2ZURPTU9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBlOGJmMGVmY2I2YmJhMTI2MGYwYTkw
Yjc5NzU0MzgxNmIwZGYxYmJiLi43ZDNjZGRkNjUzNmRlNTdkMWRhM2I2MzI5YTQ5ZWE1Mjg3OGM4
MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJE
T01UaW1lci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4
dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtNjYsNiArNjcsNyBAQCBj
bGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRU
YXJnZXQ7CiBjbGFzcyBGb250Q2FjaGU7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBN
ZXNzYWdlUG9ydDsKIGNsYXNzIFB1YmxpY1VSTE1hbmFnZXI7CiBjbGFzcyBSZWplY3RlZFByb21p
c2VUcmFja2VyOwpAQCAtMTY1LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRm9u
dENhY2hlJiBmb250Q2FjaGUoKTsKICAgICB2aXJ0dWFsIENTU0ZvbnRTZWxlY3RvciogY3NzRm9u
dFNlbGVjdG9yKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgRm9udExvYWRSZXF1
ZXN0KiBmb250TG9hZFJlcXVlc3QoU3RyaW5nJiB1cmwsIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0
aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSk7CisgICAgdmlydHVhbCB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKEZvbnRMb2FkUmVxdWVz
dCYpIHsgfQogCiAgICAgdm9pZCByZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjNGU0NmU4NzJjNmE2
ZDAyMzE3ZWIxODIxNTUyNTYzZmZlYTU1Y2ZhLi40ZDg1NTY0YzA0N2ZlOTQ2ZDEyZGEwM2Y3ZDcz
NDk5NDIyMjUzYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAg
ICAgY2FuY2VsQWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzKTsKIAogICAgIGlmIChh
dXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50LT5mb250
U2VsZWN0b3IoKS5zdXNwZW5kRm9udExvYWRpbmdUaW1lcigpOworICAgICAgICBkb2N1bWVudC0+
c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKIAogICAgIC8vIEFwcGNhY2hlIHVzZXMgUmVzb3Vy
Y2VIYW5kbGUgZGlyZWN0bHksIERvY3VtZW50TG9hZGVyIGRvZXNuJ3QgY291bnQgdGhlc2UgbG9h
ZHMuCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+c3RvcExvYWRpbmdJbkZyYW1lKCptX2Zy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NmI1MDRiMWNkNzk3NmEyOTUzNmVmYWYzZmIyZGZlODgxNzk1OTQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCkBAIC0wLDAgKzEsNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRm9udFRhZ2dlZFNldHRpbmdzLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZv
bnQ7CitjbGFzcyBGb250RGVzY3JpcHRpb247CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CitzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKK3VzaW5nIEZvbnRGZWF0dXJlU2V0dGlu
Z3MgPSBGb250VGFnZ2VkU2V0dGluZ3M8aW50PjsKKworY2xhc3MgRm9udExvYWRSZXF1ZXN0Q2xp
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZFJlcXVlc3RDbGllbnQoKSA9IGRl
ZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoRm9udExvYWRSZXF1ZXN0JikgeyB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRGb250Q2xpZW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KK307CisKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+Rm9udExvYWRSZXF1ZXN0KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBjb25zdCBV
UkwmIHVybCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwg
Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcykgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIHNldENsaWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNDYWNoZWRGb250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNDYWNoZWRTVkdGb250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZP
TlRMT0FEUkVRVUVTVENMSUVOVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIHsg
cmV0dXJuIGNsaWVudC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRk9OVExPQURSRVFVRVNUKFRvVmFs
dWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRv
VmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpG
b250TG9hZFJlcXVlc3QmIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QucHJlZGljYXRlOyB9IFwK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAppbmRleCA5NzQxOWVlZTc0MTlmODBhYWRhZmU4MjQ1NTkwZGZlZDY0
ZTk3NzJlLi40ZTBhODEyZjYzYWQ5YWMyNWI2NTc3MWJmNDA3ZWMyNWRjZWFmNzk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0xMzcsNiArMTM3LDIw
IEBAIEZvbnRQbGF0Zm9ybURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYKICAgICByZXR1cm4gZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgYm9sZCwgaXRhbGljLCBmb250
RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcyk7CiB9CiAKK3ZvaWQgQ2FjaGVkRm9u
dDo6c2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCogY2xpZW50KQoreworICAgIGlmICht
X2ZvbnRMb2FkUmVxdWVzdENsaWVudCA9PSBjbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkKKyAgICAgICAgcmVtb3ZlQ2xpZW50KGRvd25j
YXN0PENhY2hlZEZvbnRDbGllbnQ+KCptX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkpOworCisgICAg
aWYgKGNsaWVudCkKKyAgICAgICAgYWRkQ2xpZW50KGRvd25jYXN0PENhY2hlZEZvbnRDbGllbnQ+
KCpjbGllbnQpKTsKKworICAgIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50ID0gY2xpZW50OworfQor
CiB2b2lkIENhY2hlZEZvbnQ6OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKaW5kZXggNjI2Nzc4OGYxN2U1ZWI0MjBhNTk0NDg4NGM0NDVhMzBhMDdmOWY1Yy4u
NmU5NDRiNzFhY2Y3Yzk4MjhiOWM0NjExMzIwYjhjZGVkZjA0Y2YwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJU
ZXh0RmxhZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBzdHJ1
Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBG
b250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRG
ZWF0dXJlU2V0dGluZ3M7CiAKLWNsYXNzIENhY2hlZEZvbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2UgeworY2xhc3MgQ2FjaGVkRm9udCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSwgcHVibGljIEZv
bnRMb2FkUmVxdWVzdCB7CiBwdWJsaWM6CiAgICAgQ2FjaGVkRm9udChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXIqLCBUeXBlID0g
VHlwZTo6Rm9udFJlc291cmNlKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRGb250KCk7CkBAIC01MSwx
MSArNTIsMTggQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImKTsKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCi0gICAgdmlydHVhbCBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdy
YXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3Vz
dG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8Rm9u
dD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0
IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
KTsKKyAgICAvLyBGb250TG9hZFJlcXVlc3QKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIENhY2hlZFJlc291cmNlOjp1cmwoKTsgfQorICAgIGJvb2wgaXNMb2FkaW5n
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OmlzTG9hZGluZygpOyB9Cisg
ICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FjaGVkUmVzb3Vy
Y2U6OmVycm9yT2NjdXJyZWQoKTsgfQorCisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpIG92ZXJyaWRlOworICAgIFJlZlB0cjxGb250PiBj
cmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9u
dEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpIG92
ZXJyaWRlOworCisgICAgdm9pZCBzZXRDbGllbnQoRm9udExvYWRSZXF1ZXN0Q2xpZW50KikgZmlu
YWw7CiAKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21D
dXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMs
IGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJp
bGl0aWVzKTsKQEAgLTc2LDggKzg0LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFsbENsaWVu
dHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKKyAgICBib29sIGlzQ2FjaGVkRm9udCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkOwogICAgIGJv
b2wgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jlc291cmNlOworICAgIEZvbnRMb2FkUmVx
dWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogCkBAIC04Niw0ICs5NywxMyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FDSEVEX1JFU09VUkNFKENhY2hlZEZv
bnQsIENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3VyY2UpCituYW1lc3BhY2UgV1RGIHsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorY2xhc3MgVHlwZUNhc3RUcmFpdHM8Y29uc3Qg
V2ViQ29yZTo6Q2FjaGVkRm9udCwgQXJnVHlwZSwgZmFsc2UgLyogaXNCYXNlVHlwZSAqLz4gewor
cHVibGljOgorICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFyZ1R5cGUmIHNvdXJjZSkgeyByZXR1
cm4gaXNUeXBlKHNvdXJjZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSB7IHJldHVybiByZXNvdXJjZS50eXBlKCkgPT0g
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNvdXJjZTsgfQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGb250TG9hZFJlcXVlc3QmIHJlcXVlc3QpIHsg
cmV0dXJuIHJlcXVlc3QuaXNDYWNoZWRGb250KCk7IH0KK307Cit9CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCmluZGV4IDUwZTYzZjU5Y2EzNDQ3
YzIyYTk2ZmM5ZmM3MTYxOGQzMWI2ZDIwYzIuLmYyM2ExY2JkYTQxZDMwNmM5ODZkNmNiOGJlOWFj
ODJlNmJiODJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnRDbGllbnQuaApAQCAtMjUsMTggKzI1LDIyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVkRm9udDsKLQotY2xhc3MgQ2FjaGVkRm9u
dENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CitjbGFzcyBDYWNoZWRGb250
Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50LCBwdWJsaWMgRm9udExvYWRSZXF1
ZXN0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRGb250Q2xpZW50KCkgPSBk
ZWZhdWx0OwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBl
KCkgeyByZXR1cm4gRm9udFR5cGU7IH0KICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVz
b3VyY2VDbGllbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCYgZm9udCkgeyBGb250TG9hZFJlcXVlc3RD
bGllbnQ6OmZvbnRMb2FkZWQoZm9udCk7IH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzQ2FjaGVk
Rm9udENsaWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05UTE9BRFJFUVVFU1RD
TElFTlQoV2ViQ29yZTo6Q2FjaGVkRm9udENsaWVudCwgaXNDYWNoZWRGb250Q2xpZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAyZTFkNmJh
OGIxYzE3ZjgzMzE5NzY2ZGFmYzRhNGQ0YjI5ZDU5ZGFiLi45NDJlMTdlNTRjY2NlYTEwNDdlZDY5
M2VmMWU3Nzg2ZDllZTBiY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVu
dCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCisgICAgYm9vbCBpc0NhY2hlZFNWR0ZvbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKQEAg
LTU3LDQgKzU5LDEyIEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkU1ZHRm9udCwgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OlNWR0ZvbnRSZXNvdXJjZSkKK25hbWVzcGFjZSBXVEYgewordGVtcGxh
dGUgPHR5cGVuYW1lIEFyZ1R5cGU+CitjbGFzcyBUeXBlQ2FzdFRyYWl0czxjb25zdCBXZWJDb3Jl
OjpDYWNoZWRTVkdGb250LCBBcmdUeXBlLCBmYWxzZSAvKiBpc0Jhc2VUeXBlICovPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUoQXJnVHlwZSYgc291cmNlKSB7IHJldHVybiBp
c1R5cGUoc291cmNlKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIHsgcmV0dXJuIHJlc291cmNlLnR5cGUoKSA9PSBXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U1ZHRm9udFJlc291cmNlOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdCYgcmVxdWVzdCkgeyBy
ZXR1cm4gcmVxdWVzdC5pc0NhY2hlZFNWR0ZvbnQoKTsgfQorfTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODdmYzU4YzFiNDEzOGMxNzZi
OWIzYTZjMDE5MDdjZWMwZjk3YWU1OS4uNzc1MmFmOTU1MmI1NzQzNDZkNjI4ZDRmN2ZhOGY3NmMz
NjBkNDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKQEAgLTExMiw4ICsxMTIsNiBAQCBXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNj
b3BlKCkKICAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycyhsb2NrZXIpLnJl
bW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICB9CiAKLSAgICBpZiAobV9jc3NGb250U2Vs
ZWN0b3IpCi0gICAgICAgIG1fY3NzRm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9u
dHMoKTsKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9IG51bGxw
dHI7CiAK
</data>
<flag name="commit-queue"
          id="445321"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425383</attachid>
            <date>2021-04-07 04:49:46 -0700</date>
            <delta_ts>2021-04-07 05:04:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210407124944.patch</filename>
            <type>text/plain</type>
            <size>45508</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uMTAyNDZjZjg3MWE0OGZhYTgzNGE0NTliM2ExMGVj
YjViYjI0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6IFVwZGF0ZSB0byBub3QgcmVxdWlyZSBEb2N1bWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKToKKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGlu
c3RlYWQgb2YgQ2FjaGVkRm9udC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNl
OjpDU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJj
ZTo6fkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU291cmNlOjpmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpp
c1NWR0ZvbnRGYWNlU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDogVXBkYXRlIHRv
IHVzZSBGb250TG9hZFJlcXVlc3QgYW5kCisgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2VTcmNWYWx1ZS5oOgorCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6IFJl
bW92ZSBEb2N1bWVudC1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNl
bGVjdG9yOjpDU1NGb250U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVj
dG9yOjp+Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Y2xlYXJGb250cyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDogQWRkIERvY3VtZW50LXNwZWNpZmljIGZvbnQtbG9hZGlu
ZyBjb2RlIGZyb20KKyAgICAgICAgICBDU1NGb250U2VsZWN0b3IgYW5kIENTU0ZvbnRGYWNlU3Jj
VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVzb2x2ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNw
ZW5kRm9udExvYWRpbmdUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpiZWdpbkxvYWRpbmdGb250
U29vbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bG9hZFBlbmRpbmdGb250cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExvYWRpbmdUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc3VtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IEFkZCBmdW5jdGlvbnMgdG8gaW5pdGlhdGUgZm9u
dCBsb2FkIHJlcXVlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YmVnaW5Mb2Fk
aW5nRm9udFNvb24pOgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVXBk
YXRlIGR1ZSB0byBvdGhlciBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN0b3BMb2FkaW5nKToKKworICAgICAgICAqIGxvYWRlci9Gb250TG9hZFJlcXVlc3QuaDog
QWRkZWQuIEFuIGludGVyZmFjZSB0byBtYW5hZ2UgZm9udCBsb2FkaW5nCisgICAgICAgICAgdGhh
dCBhYnN0cmFjdHMgc29tZSBvZiB0aGUgYmVoYXZpb3VyIG9mIENhY2hlZFJlc291cmNlLCBDYWNo
ZWRGb250IGFuZAorICAgICAgICAgIENhY2hlZEZvbnRDbGllbnQuCisgICAgICAgIChXZWJDb3Jl
OjpGb250TG9hZFJlcXVlc3RDbGllbnQ6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojppc0NhY2hlZEZvbnRDbGllbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZEZvbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZFNWR0ZvbnQgY29uc3QpOgorCisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOiBJbXBsZW1lbnQgRm9udExvYWRS
ZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnRDbGllbnQuaDogSW1wbGVtZW50IEZvbnRMb2FkUmVxdWVzdENsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnRDbGllbnQ6OmZvbnRMb2FkZWQpOgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDogVXBkYXRlIHR5cGUtY2FzdCB0cmFpdHMu
CisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDogUmVtb3ZlIG5vdy1y
ZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJH
bG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwogMjAyMS0wNC0wNSAgQ2hyaXMgTG9y
ZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlkaUNvbnRleHQgY2FjaGluZyBpcyBu
b3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDgxNzFhY2Nl
YTdlZjQ3Y2IxNTM5OTVlOTRhYThhMDExOWQ3YWUzNjAuLjA1Y2IzNDU5N2U1YTI0M2ZkNTA2Y2Y0
YThjYTc0MWRiYzdkNWM3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzYs
MTAgKzc2LDkgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYg
Zm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgU2MKICAgICAgICAgaWYgKCFpdGVtLmlz
TG9jYWwoKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byogc2V0dGluZ3MgPSBjb250ZXh0ID8g
JmNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkgOiBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBh
bGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+
ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKTsKLSAgICAgICAgICAgIGlmIChhbGxvd0Rv
d25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBpczxEb2N1bWVudD4oY29u
dGV4dCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PigqY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZv
bnQgPSBpdGVtLmNhY2hlZEZvbnQoJmRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGlu
Z0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQotICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJj
ZSgpLCBkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmNhY2hlZEZvbnQpOworICAgICAgICAgICAg
aWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIGZvbnRSZXF1ZXN0ID0gaXRlbS5mb250TG9hZFJlcXVlc3Qo
Y29udGV4dCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFk
b3dUcmVlKSkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250
RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmNvbnRleHQtPmNzc0ZvbnRT
ZWxlY3RvcigpLCAqZm9udFJlcXVlc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVsZW1lbnQgPyBtYWtlVW5pcXVlPENTU0Zv
bnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCAqZm9udEZhY2VFbGVtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggYmMzMjNjMmYy
ZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZC4uMDhhMDUwMzQxMzAxMzBhZmE3ZDk2YWE5
MzA2ODViNDg3MjBjMmI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
IgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250RGVz
Y3JpcHRpb24uaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTVkdGb250RWxlbWVudC5oIgpAQCAtNzIsMTkgKzczLDE5IEBAIENTU0ZvbnRG
YWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0
cmluZyYgZmFtaWx5TmFtCiB7CiB9CiAKLUNTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNv
dXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBD
U1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgQ2FjaGVkRm9udCYgZm9udCkKK0NTU0ZvbnRG
YWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0
cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgRm9u
dExvYWRSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFtaWx5TmFt
ZU9yVVJJKQogICAgICwgbV9mYWNlKG93bmVyKQogICAgICwgbV9mb250U2VsZWN0b3IobWFrZVdl
YWtQdHIoZm9udFNlbGVjdG9yKSkKLSAgICAsIG1fZm9udCgmZm9udCkKKyAgICAsIG1fZm9udFJl
cXVlc3QoJnJlcXVlc3QpCiB7CiAgICAgLy8gVGhpcyBtYXkgc3luY2hyb25vdXNseSBjYWxsIGZv
bnRMb2FkZWQoKS4KLSAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9mb250UmVx
dWVzdC0+c2V0Q2xpZW50KHRoaXMpOwogCi0gICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVu
ZGluZyAmJiBtX2ZvbnQtPmlzTG9hZGVkKCkpIHsKKyAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVz
OjpQZW5kaW5nICYmICFtX2ZvbnRSZXF1ZXN0LT5pc0xvYWRpbmcoKSkgewogICAgICAgICBzZXRT
dGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICAgICAgaWYgKCFzaG91bGRJZ25vcmVGb250TG9h
ZENvbXBsZXRpb25zKCkpIHsKLSAgICAgICAgICAgIGlmIChtX2ZvbnQtPmVycm9yT2NjdXJyZWQo
KSkKKyAgICAgICAgICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9jY3VycmVkKCkpCiAgICAg
ICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBAIC0xMDksOCAr
MTEwLDggQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNl
JiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW0KIAogQ1NTRm9udEZhY2VTb3VyY2U6On5D
U1NGb250RmFjZVNvdXJjZSgpCiB7Ci0gICAgaWYgKG1fZm9udCkKLSAgICAgICAgbV9mb250LT5y
ZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGlmIChtX2ZvbnRSZXF1ZXN0KQorICAgICAgICBtX2Zv
bnRSZXF1ZXN0LT5zZXRDbGllbnQobnVsbHB0cik7CiB9CiAKIGJvb2wgQ1NTRm9udEZhY2VTb3Vy
Y2U6OnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdApAQCAtMTIwLDI5ICsx
MjEsMjkgQEAgYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hvdWxkSWdub3JlRm9udExvYWRDb21w
bGV0aW9ucygpIGNvbnN0CiAKIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Om9wcG9ydHVuaXN0aWNh
bGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoKQogewotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0
dXM6OlBlbmRpbmcgJiYgbV9mb250ICYmIG1fZm9udC0+dXJsKCkucHJvdG9jb2xJc0RhdGEoKSAm
JiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQorICAgIGlmIChzdGF0dXMoKSA9PSBT
dGF0dXM6OlBlbmRpbmcgJiYgbV9mb250UmVxdWVzdCAmJiBtX2ZvbnRSZXF1ZXN0LT51cmwoKS5w
cm90b2NvbElzRGF0YSgpICYmIG1fZmFtaWx5TmFtZU9yVVJJLmxlbmd0aCgpIDwgTUIpCiAgICAg
ICAgIGxvYWQoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNo
ZWRGb250JiBsb2FkZWRGb250KQordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChG
b250TG9hZFJlcXVlc3QmIGZvbnRSZXF1ZXN0KQogewotICAgIEFTU0VSVF9VTlVTRUQobG9hZGVk
Rm9udCwgJmxvYWRlZEZvbnQgPT0gbV9mb250LmdldCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZv
bnRSZXF1ZXN0LCAmZm9udFJlcXVlc3QgPT0gbV9mb250UmVxdWVzdCk7CiAKICAgICBpZiAoc2hv
dWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWY8Q1NTRm9udEZhY2U+IHByb3RlY3RlZEZhY2UobV9mYWNlKTsKIAotICAgIC8vIElmIHRoZSBm
b250IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkgY2FsbGVkIGZy
b20gQ2FjaGVkRm9udDo6YWRkQ2xpZW50KCkuCisgICAgLy8gSWYgdGhlIGZvbnQgaXMgaW4gdGhl
IGNhY2hlLCB0aGlzIHdpbGwgYmUgc3luY2hyb25vdXNseSBjYWxsZWQgZnJvbSBGb250TG9hZFJl
cXVlc3Q6OmFkZENsaWVudCgpLgogICAgIGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OlBlbmRpbmcp
CiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwogICAgIGVsc2UgaWYgKG1fc3Rh
dHVzID09IFN0YXR1czo6RmFpbHVyZSkgewogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIG1heSBi
ZSBjYWxsZWQgdHdpY2UgaWYgbG9hZGluZyB3YXMgY2FuY2VsbGVkLgotICAgICAgICBBU1NFUlQo
bV9mb250LT5lcnJvck9jY3VycmVkKCkpOworICAgICAgICBBU1NFUlQobV9mb250UmVxdWVzdC0+
ZXJyb3JPY2N1cnJlZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2Zv
bnQtPmVycm9yT2NjdXJyZWQoKSB8fCAhbV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2Zh
bWlseU5hbWVPclVSSSkpCisgICAgaWYgKG1fZm9udFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSB8
fCAhbV9mb250UmVxdWVzdC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlOYW1lT3JVUkkp
KQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpGYWlsdXJlKTsKICAgICBlbHNlCiAgICAgICAg
IHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTU0LDkgKzE1NSwxMCBAQCB2b2lkIENT
U0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBzZXRTdGF0
dXMoU3RhdHVzOjpMb2FkaW5nKTsKIAotICAgIGlmIChtX2ZvbnQpIHsKKyAgICBpZiAobV9mb250
UmVxdWVzdCkgewogICAgICAgICBBU1NFUlQobV9mb250U2VsZWN0b3IpOwotICAgICAgICBtX2Zv
bnRTZWxlY3Rvci0+YmVnaW5Mb2FkaW5nRm9udFNvb24oKm1fZm9udCk7CisgICAgICAgIGlmIChh
dXRvKiBjb250ZXh0ID0gbV9mb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgICAgIGNvbnRleHQtPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnRSZXF1ZXN0
KTsKICAgICB9IGVsc2UgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAg
aWYgKG1faGFzU1ZHRm9udEZhY2VFbGVtZW50KSB7CkBAIC0xOTgsNyArMjAwLDcgQEAgUmVmUHRy
PEZvbnQ+IENTU0ZvbnRGYWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBib28KIAogICAgIGJvb2wgdXNlc0luRG9jdW1lbnRTVkdGb250ID0gbV9o
YXNTVkdGb250RmFjZUVsZW1lbnQ7CiAKLSAgICBpZiAoIW1fZm9udCAmJiAhdXNlc0luRG9jdW1l
bnRTVkdGb250KSB7CisgICAgaWYgKCFtX2ZvbnRSZXF1ZXN0ICYmICF1c2VzSW5Eb2N1bWVudFNW
R0ZvbnQpIHsKICAgICAgICAgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBp
ZiAoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTIxMCwxMiArMjEyLDEyIEBAIFJlZlB0cjxGb250PiBDU1NGb250
RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
Ym9vCiAgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHko
Zm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgJmZvbnRGYWNlRmVhdHVyZXMsIGZv
bnRGYWNlQ2FwYWJpbGl0aWVzLCB0cnVlKTsKICAgICB9CiAKLSAgICBpZiAobV9mb250KSB7Ci0g
ICAgICAgIGF1dG8gc3VjY2VzcyA9IG1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1p
bHlOYW1lT3JVUkkpOworICAgIGlmIChtX2ZvbnRSZXF1ZXN0KSB7CisgICAgICAgIGF1dG8gc3Vj
Y2VzcyA9IG1fZm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5TmFtZU9y
VVJJKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgICAg
ICBBU1NFUlQoc3RhdHVzKCkgPT0gU3RhdHVzOjpTdWNjZXNzKTsKLSAgICAgICAgYXV0byByZXN1
bHQgPSBtX2ZvbnQtPmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVS
SSwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250
RmFjZUNhcGFiaWxpdGllcyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9mb250UmVxdWVzdC0+
Y3JlYXRlRm9udChmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0
aWVzKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQpAQCAtMjMyLDcgKzIzNCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6
Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKIGJvb2wg
Q1NTRm9udEZhY2VTb3VyY2U6OmlzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBpczxDYWNoZWRTVkdGb250PihtX2ZvbnQu
Z2V0KCkpOworICAgIHJldHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBpczxDYWNoZWRT
VkdGb250PihtX2ZvbnRSZXF1ZXN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaAppbmRleCA1OTJjZTgzMWM1YTkyODYzZTA0ZWJkYjc2ZWYzYWMxOGY1MWMxM2Jk
Li45ZjU5MDNiZGVjODdlZjIwNjEwMWQ5Mjg2NTJjNjU3OGJmYmI2Y2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBDU1NGb250
RmFjZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRGb250Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKLSAgICBDU1NGb250
RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9y
VVJJLCBDU1NGb250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NT
Rm9udFNlbGVjdG9yJiwgRm9udExvYWRSZXF1ZXN0Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgU1ZHRm9u
dEZhY2VFbGVtZW50Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVy
LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3
PiYmKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwpAQCAtNzYsMjIgKzc2LDIy
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0gbnVsbHB0cik7CiAgICAgUmVm
UHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAgQ2FjaGVkRm9udCogY2FjaGVk
Rm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQotICAgIGJvb2wgcmVxdWlyZXNF
eHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250OyB9CisgICAgRm9udExvYWRS
ZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRSZXF1ZXN0OyB9
CisgICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2Zv
bnRSZXF1ZXN0OyB9CiAKICAgICBib29sIGlzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBib29sIHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25z
dDsKIAotICAgIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRT
dGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21TdHJpbmcgbV9mYW1pbHlOYW1lT3JVUkk7IC8vIFVS
SSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250IG5hbWUgZm9yIGxvY2FsLgogICAgIENTU0ZvbnRG
YWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNlLgogICAgIFdlYWtQdHI8Q1NTRm9u
dFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVz
dHJhdGUgbG9hZGluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2Zv
bnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVz
b3VyY2UuCisgICAgRm9udExvYWRSZXF1ZXN0KiBtX2ZvbnRSZXF1ZXN0IHsgbnVsbHB0ciB9OyAv
LyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVz
dC4KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAg
IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggNTM5ZmQ0ODg5NjllZmE2
ZmFkNWZlYTRkM2M4YTE3YjcyZjcxOWVlNS4uY2E5OTJhYzljNGU4YjhiNmVkM2E3NjdmZThiYTdj
MmNhYTZmMjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNw
cApAQCAtMjksMTAgKzI5LDExIEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDE5ICs3NywxNiBAQCBi
b29sIENTU0ZvbnRGYWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6
RnVuY3Rpb248Ym9vbCAoY29uc3QgQwogICAgIHJldHVybiBoYW5kbGVyKCptX2NhY2hlZEZvbnQp
OwogfQogCi1DYWNoZWRGb250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKQorRm9udExvYWRSZXF1ZXN0KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpm
b250TG9hZFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBpc1NW
RywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewogICAg
IGlmIChtX2NhY2hlZEZvbnQpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CiAK
LSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7Ci0gICAgb3B0aW9ucy5jb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVj
ayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7Ci0gICAg
b3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVlU291cmNlID0gbV9sb2FkZWRGcm9tT3BhcXVlU291cmNl
OworICAgIGF1dG8qIHJlcXVlc3QgPSBjb250ZXh0LT5mb250TG9hZFJlcXVlc3QobV9yZXNvdXJj
ZSwgaXNTVkcsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIG1fbG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgaWYgKGlzPENhY2hlZEZvbnQ+KHJlcXVlc3QpKQor
ICAgICAgICBtX2NhY2hlZEZvbnQgPSAmZG93bmNhc3Q8Q2FjaGVkRm9udD4oKnJlcXVlc3QpOwog
Ci0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwotICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1f
Y2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250
KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKTsKLSAgICByZXR1cm4g
bV9jYWNoZWRGb250LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBib29sIENTU0Zv
bnRGYWNlU3JjVmFsdWU6OmVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJiBvdGhlcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGM1ZGM1
OWZkOTZhMWJlMzI4MzYzNDRmZjE5ZDk1ODc3MjkyNmQ3YjQuLjc0OTFkZjY2NWM5ZWY3YmRiMmVm
ZDMwZjBlYjFhYjA2ZmM4ZGExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuaApAQCAtMzQsOCArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
YWNoZWRGb250OwotY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFz
cyBTVkdGb250RmFjZUVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBj
bGFzcyBDU1NGb250RmFjZVNyY1ZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291
cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBo
YW5kbGVyKSBjb25zdDsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqLCBi
b29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUp
OworICAgIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNo
YWRvd1RyZWUpOwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGMxMTU3
OGNmYzUwNDEyY2JhNmM1NTMwZjk0YmU4YWEzNjM0NDc1Y2MuLmFjZDJhMWNjMjRlMzRjMDU0ZDAz
NzgyMzQ4NzczN2NmZWM3ZmViNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCkBAIC02OCw3ICs2OCw2IEBAIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2ZvbnRDYWNoZShtYWtlUmVm
KGNvbnRleHQuZm9udENhY2hlKCkpKQogICAgICwgbV9jc3NGb250RmFjZVNldChDU1NGb250RmFj
ZVNldDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb250TW9kaWZpZWRPYnNlcnZlcihbdGhpc10g
eyBmb250TW9kaWZpZWQoKTsgfSkKLSAgICAsIG1fZm9udExvYWRpbmdUaW1lcigqdGhpcywgJkNT
U0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKQogICAgICwgbV91bmlxdWVJZCgr
K2ZvbnRTZWxlY3RvcklkKQogICAgICwgbV92ZXJzaW9uKDApCiB7CkBAIC05Myw3ICs5Miw3IEBA
IENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgTE9HKEZvbnRzLCAi
Q1NTRm9udFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAotICAgIHN0b3BMb2FkaW5nQW5kQ2xl
YXJGb250cygpOworICAgIGNsZWFyRm9udHMoKTsKICAgICBtX2ZvbnRDYWNoZS0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKIH0KIApAQCAtMzM2LDk0ICszMzUsMTMgQEAgRm9udFJhbmdlcyBDU1NGb250
U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3IKICAgICByZXR1cm4gRm9udFJhbmdlcyB7IFdURk1vdmUoZm9udCkgfTsKIH0KIAotdm9p
ZCBDU1NGb250U2VsZWN0b3I6OnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpCit2b2lkIENTU0Zv
bnRTZWxlY3Rvcjo6Y2xlYXJGb250cygpCiB7Ci0gICAgaWYgKG1faXNTdG9wcGVkKSB7Ci0gICAg
ICAgIEFTU0VSVCghbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpOwotICAgICAgICBBU1NF
UlQobV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGluZ1RpbWVyLnN0
b3AoKTsKLQotICAgIGlmIChpczxEb2N1bWVudD4obV9jb250ZXh0LmdldCgpKSkgewotICAgICAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLSAgICAg
ICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQu
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICAgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDog
bV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1l
bnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigpLgotICAgICAgICAgICAg
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsK
LSAgICAgICAgfQotICAgICAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuY2xlYXIoKTsKLSAgICB9
Ci0KICAgICBtX2Nzc0ZvbnRGYWNlU2V0LT5jbGVhcigpOwogICAgIG1fY2xpZW50cy5jbGVhcigp
OwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVk
Rm9udCYgZm9udCkKLXsKLSAgICBpZiAobV9pc1N0b3BwZWQgfHwgIWlzPERvY3VtZW50PihtX2Nv
bnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIG1fZm9udHNUb0JlZ2luTG9hZGlu
Zy5hcHBlbmQoJmZvbnQpOwotICAgIC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBjb3VudCBub3cs
IGluIG9yZGVyIHRvIHByZXZlbnQgZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRpc3BhdGNoZWQK
LSAgICAvLyBhZnRlciB0aGlzIGZvbnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBiZWZvcmUgaXQg
YmVnYW4gbG9hZGluZy4gQmFsYW5jZWQgYnkKLSAgICAvLyBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KSBpbiBmb250TG9hZGluZ1RpbWVyRmlyZWQoKSBhbmQgaW4gc3RvcExvYWRpbmdBbmRDbGVhckZv
bnRzKCkuCi0gICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5pbmNyZW1lbnRSZXF1
ZXN0Q291bnQoZm9udCk7Ci0KLSAgICBpZiAoIW1faXNGb250TG9hZGluZ1N1c3BlbmRlZCAmJiAh
bV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZm9udExvYWRpbmdUaW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OnN1c3BlbmRG
b250TG9hZGluZ1RpbWVyKCkKLXsKLSAgICBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb246OlBh
Z2VXaWxsQmVTdXNwZW5kZWQpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6bG9hZFBlbmRp
bmdGb250cygpCi17Ci0gICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCB8fCAhaXM8RG9j
dW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQpOwotCi0gICAgVmVjdG9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2FkaW5nOwotICAg
IGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpOwotCi0gICAg
Ly8gQ1NTRm9udFNlbGVjdG9yIGNvdWxkIGdldCBkZWxldGVkIHZpYSBiZWdpbkxvYWRJZk5lZWRl
ZCgpIG9yIGxvYWREb25lKCkgdW5sZXNzIHByb3RlY3RlZC4KLSAgICBSZWY8Q1NTRm9udFNlbGVj
dG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBj
YWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0g
ICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykgewotICAgICAg
ICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7Ci0g
ICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGlu
Z0ZvbnRTb29uKCkuCi0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVl
c3RDb3VudCgqZm9udEhhbmRsZSk7Ci0gICAgfQotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udExvYWRpbmdUaW1lckZpcmVkKCkKLXsKLSAgICBpZiAoIWlzPERvY3VtZW50PihtX2NvbnRl
eHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLSAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGxvYWRQZW5kaW5nRm9udHMoKTsKLQotICAgIC8vIEZJ
WE1FOiBVc2UgU3VicmVzb3VyY2VMb2FkZXIgaW5zdGVhZC4KLSAgICAvLyBDYWxsIEZyYW1lTG9h
ZGVyOjpsb2FkRG9uZSBiZWZvcmUgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlTG9hZERvbmUgdG8g
bWF0Y2ggdGhlIG9yZGVyIGluIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lLgotICAgIGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkubG9hZERvbmUoTG9hZENvbXBsZXRpb25UeXBl
OjpGaW5pc2gpOwotICAgIC8vIEVuc3VyZSB0aGF0IGlmIHRoZSByZXF1ZXN0IGNvdW50IHJlYWNo
ZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3aWxsIGtub3cgYWJvdXQgaXQuCi0gICAgLy8gTmV3
IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQgYWZ0ZXIgdGhlIGRvY3VtZW50
IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9yZSB3ZSBoYXZlIGRpc3BhdGNoZWQKLSAgICAvLyBk
aWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJhbWUuIE1ha2Ugc3VyZSB0aGUgZGVsZWdhdGUgaXMg
YWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tpbmcgZXhwbGljaXRseS4KLSAgICBpZiAoZG9jdW1l
bnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2hlY2tMb2Fk
Q29tcGxldGUoKTsKLX0KLQogc2l6ZV90IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250Q291
bnQoKQogewogICAgIGlmIChtX2lzU3RvcHBlZCkKQEAgLTQ0OSwyOSArMzY3LDQgQEAgUmVmUHRy
PEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHQKICAgICByZXR1cm4gZm9udDsKIH0KIAotdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OnN0b3AoKQotewotICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7Ci19Ci0KLXZv
aWQgQ1NTRm9udFNlbGVjdG9yOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAg
aWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9p
c0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3Rv
cCgpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6cmVzdW1lKCkKLXsKLSAgICBpZiAoIW1f
aXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2Zv
bnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7Ci0KLSAgICBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgPSBmYWxz
ZTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IGU0YWZmMjZh
YWFmZjA4Zjg2ODY3ZTA0NTU5ZmE0MWI0YmI3ZThmMzcuLjQzNDdlODVhMTU2MjM0YTkzY2ViZWQx
NDdjMjMyNmMyMWI1MWFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgpIGZp
bmFsOwogICAgIFJlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRp
b24mLCBzaXplX3QpIGZpbmFsOwogCi0gICAgdm9pZCBzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMo
KTsKKyAgICB2b2lkIGNsZWFyRm9udHMoKTsKICAgICB2b2lkIGVtcHR5Q2FjaGVzKCk7CiAgICAg
dm9pZCBidWlsZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGJ1aWxkQ29tcGxldGVkKCk7CkBAIC04MSw5
ICs4MSw2IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAotICAg
IHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYpOwotICAgIHZvaWQgc3VzcGVu
ZEZvbnRMb2FkaW5nVGltZXIoKTsKLQogICAgIEZvbnRGYWNlU2V0KiBmb250RmFjZVNldElmRXhp
c3RzKCk7CiAgICAgRm9udEZhY2VTZXQmIGZvbnRGYWNlU2V0KCk7CiAKQEAgLTExMCwxMiArMTA3
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvbnRTdHlsZVVwZGF0ZU5lZWRlZChDU1NGb250RmFj
ZSYpIGZpbmFsOwogCiAgICAgdm9pZCBmb250TW9kaWZpZWQoKTsKLSAgICB2b2lkIGZvbnRMb2Fk
aW5nVGltZXJGaXJlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgdm9pZCBzdG9w
KCkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwot
ICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJDU1NGb250U2VsZWN0b3IiX3M7IH0KIAogICAg
IHN0cnVjdCBQZW5kaW5nRm9udEZhY2VSdWxlIHsKQEAgLTEzMCwxNSArMTIzLDExIEBAIHByaXZh
dGU6CiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2Nzc0ZvbnRGYWNlU2V0OwogICAgIEhhc2hT
ZXQ8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwogCi0gICAgVmVjdG9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmc7CiAgICAgSGFz
aFNldDxSZWZQdHI8Q1NTRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zUG9zc2libHlUb1JlbW92
ZTsKICAgICBIYXNoU2V0PFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlv
bnNFbmNvdW50ZXJlZER1cmluZ0J1aWxkOwogCiAgICAgQ1NTRm9udEZhY2VTZXQ6OkZvbnRNb2Rp
ZmllZE9ic2VydmVyIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXI7CiAKLSAgICBUaW1lciBtX2ZvbnRM
b2FkaW5nVGltZXI7Ci0gICAgYm9vbCBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgeyBmYWxzZSB9
OwotCiAgICAgdW5zaWduZWQgbV91bmlxdWVJZDsKICAgICB1bnNpZ25lZCBtX3ZlcnNpb247CiAg
ICAgdW5zaWduZWQgbV9jb21wdXRpbmdSb290U3R5bGVGb250Q291bnQgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBlYjRmMjhiZDMzMDdlNDc0ZGJhN2EzZTI2YWE3Y2EwMDU2M2Y1
NjEyLi42OTU0NWZiZmU2ZTE1MzI1ZDFkNjk3NWViNDU2NjlhOTllYzQxMDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTM3LDggKzM3LDExIEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRD
U1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUgIkNhY2hl
ZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJ
bml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCkBAIC03NCw2ICs3Nyw3
IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNFdmVudC5o
IgogI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC02MzksNiArNjQzLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwg
RG9jdW0KICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1
bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKICAgICAsIG1fc2hhcmVk
T2JqZWN0UG9vbENsZWFyVGltZXIoKnRoaXMsICZEb2N1bWVudDo6Y2xlYXJTaGFyZWRPYmplY3RQ
b29sKQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVjdG9yOjpjcmVhdGUoKnRoaXMp
KQorICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmZvbnRMb2FkaW5n
VGltZXJGaXJlZCkKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIoKnRoaXMs
ICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKICAgICAsIG1f
Y29va2llQ2FjaGVFeHBpcnlUaW1lcigqdGhpcywgJkRvY3VtZW50OjppbnZhbGlkYXRlRE9NQ29v
a2llQ2FjaGUpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHBhZ2UoKSA/ICZwYWdlKCktPnNvY2tl
dFByb3ZpZGVyKCkgOiBudWxscHRyKQpAQCAtNzU4LDcgKzc2Myw3IEBAIERvY3VtZW50Ojp+RG9j
dW1lbnQoKQogICAgIGV4dGVuc2lvblN0eWxlU2hlZXRzKCkuZGV0YWNoRnJvbURvY3VtZW50KCk7
CiAKICAgICBzdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOyAvLyBXZSBuZWVkIHRvIGRlc3Ry
b3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuCi0gICAgbV9mb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworICAg
IHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgLy8gSXQncyBwb3NzaWJsZSBmb3Ig
bXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2luZyB0aGUgc2FtZSBDYWNoZWRS
ZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8gbG9hZCB0aGUgaW5pdGlhbCBl
bXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGggdGhlIHNhbWUgRG9jdW1lbnRM
b2FkZXIpLgpAQCAtODA3LDcgKzgxMiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVm
KCkKICAgICAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiAgICAgICAgIG1f
cGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0geyB9OwogCi0gICAgICAgIG1fZm9udFNlbGVj
dG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICAgICAgc3RvcExvYWRpbmdBbmRD
bGVhckZvbnRzKCk7CiAKICAgICAgICAgZGV0YWNoUGFyc2VyKCk7CiAKQEAgLTIwNjIsNyArMjA2
Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGVUeXBlIHR5cGUp
CiAKICAgICAgICAgbV9pblN0eWxlUmVjYWxjID0gZmFsc2U7CiAKLSAgICAgICAgZm9udFNlbGVj
dG9yKCkubG9hZFBlbmRpbmdGb250cygpOworICAgICAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7CiAK
ICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAgICB1cGRhdGVSZW5kZXJUcmVl
KFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcxNywxMSBAQCB2b2lkIERvY3Vt
ZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKQogI2VuZGlmCiB9
CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCkKK3sKKyAgICBtX2Zv
bnRMb2FkaW5nVGltZXIuc3RvcCgpOworfQorCiBib29sIERvY3VtZW50OjpzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAogewogICAgIC8vIEJ5cGFzcyB0
aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5kIGl0IG5vdCB0aGUgbm9ybWFs
IHdvcmxkLgpAQCAtMjk5Nyw2ICszMDA3LDcyIEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0T3Bl
bigpCiAgICAgc2V0UmVhZHlTdGF0ZShMb2FkaW5nKTsKIH0KIAorRm9udExvYWRSZXF1ZXN0KiBE
b2N1bWVudDo6Zm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlz
SW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVT
b3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0g
aXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSA/IENvbnRlbnRTZWN1cml0
eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGlj
eUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CisgICAgb3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVl
U291cmNlID0gbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTsKKworICAgIENhY2hlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChjb21wbGV0ZVVSTCh1cmwpKSwgb3B0aW9ucyk7
CisgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9y
cygpLmNzcyk7CisgICAgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RGb250
KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKS5nZXQoKTsKK30KKwor
dm9pZCBEb2N1bWVudDo6YmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JiByZXF1
ZXN0KQoreworICAgIEFTU0VSVChpczxDYWNoZWRGb250PihyZXF1ZXN0KSk7CisgICAgYXV0byYg
Zm9udCA9IGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlcXVlc3QpOworCisgICAgbV9mb250c1RvQmVn
aW5Mb2FkaW5nLmFwcGVuZCgmZm9udCk7CisgICAgLy8gSW5jcmVtZW50IHRoZSByZXF1ZXN0IGNv
dW50IG5vdywgaW4gb3JkZXIgdG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZyb20gYmVpbmcgZGlz
cGF0Y2hlZAorICAgIC8vIGFmdGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IGJl
Zm9yZSBpdCBiZWdhbiBsb2FkaW5nLiBCYWxhbmNlZCBieQorICAgIC8vIGRlY3JlbWVudFJlcXVl
c3RDb3VudCgpIGluIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBzdG9wTG9hZGluZ0Fu
ZENsZWFyRm9udHMoKS4KKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1lbnRSZXF1
ZXN0Q291bnQoZm9udCk7CisKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fZm9udExvYWRp
bmdUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RhcnRPbmVT
aG90KDBfcyk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmxvYWRQZW5kaW5nRm9udHMoKQoreworICAg
IGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZvbnRzVG9CZWdpbkxvYWRpbmc7CisgICAgZm9u
dHNUb0JlZ2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGluZyk7CisKKyAgICBmb3Ig
KGF1dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7CisgICAgICAgIGZvbnRI
YW5kbGUtPmJlZ2luTG9hZElmTmVlZGVkKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgICAg
ICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250
U29vbigpLgorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0
Q291bnQoKmZvbnRIYW5kbGUpOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudDo6Zm9udExvYWRp
bmdUaW1lckZpcmVkKCkKK3sKKyAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7CisKKyAgICAvLyBGSVhN
RTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGluc3RlYWQuCisgICAgLy8gQ2FsbCBGcmFtZUxvYWRl
cjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWREb25lIHRvIG1h
dGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4KKyAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLT5sb2FkRG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkZpbmlzaCk7
CisgICAgLy8gRW5zdXJlIHRoYXQgaWYgdGhlIHJlcXVlc3QgY291bnQgcmVhY2hlcyB6ZXJvLCB0
aGUgZnJhbWUgbG9hZGVyIHdpbGwga25vdyBhYm91dCBpdC4KKyAgICAvLyBOZXcgZm9udCBsb2Fk
cyBtYXkgYmUgdHJpZ2dlcmVkIGJ5IGxheW91dCBhZnRlciB0aGUgZG9jdW1lbnQgbG9hZCBpcyBj
b21wbGV0ZSBidXQgYmVmb3JlIHdlIGhhdmUgZGlzcGF0Y2hlZAorICAgIC8vIGRpZEZpbmlzaExv
YWRpbmcgZm9yIHRoZSBmcmFtZS4gTWFrZSBzdXJlIHRoZSBkZWxlZ2F0ZSBpcyBhbHdheXMgZGlz
cGF0Y2hlZCBieSBjaGVja2luZyBleHBsaWNpdGx5LgorICAgIGlmIChmcmFtZSgpKQorICAgICAg
ICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOworfQorCit2b2lkIERvY3Vt
ZW50OjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQoreworICAgIG1fZm9udExvYWRpbmdUaW1l
ci5zdG9wKCk7CisgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2Fk
aW5nKSB7CisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJl
Z2luTG9hZGluZ0ZvbnRTb29uKCkuCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorICAgIG1fZm9udHNUb0Jl
Z2luTG9hZGluZy5jbGVhcigpOworICAgIG1fZm9udFNlbGVjdG9yLT5jbGVhckZvbnRzKCk7Cit9
CisKIEhUTUxCb2R5RWxlbWVudCogRG9jdW1lbnQ6OmJvZHkoKSBjb25zdAogewogICAgIGF1dG8q
IGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKQEAgLTU1MTYsNiArNTU5Miw4IEBAIHZvaWQg
RG9jdW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgbV92aXN1
YWxVcGRhdGVzQWxsb3dlZCA9IGZhbHNlOwogICAgIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9u
VGltZXIuc3RvcCgpOwogCisgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKKwogICAgIG1f
aXNTdXNwZW5kZWQgPSB0cnVlOwogfQogCkBAIC01NTQ0LDYgKzU2MjIsOSBAQCB2b2lkIERvY3Vt
ZW50OjpyZXN1bWUoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAKICAgICBtX2lzU3VzcGVu
ZGVkID0gZmFsc2U7CiAKKyAgICBpZiAoIW1fZm9udHNUb0JlZ2luTG9hZGluZy5pc0VtcHR5KCkp
CisgICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpICYmIHJlYXNvbiA9PSBSZWFzb25G
b3JTdXNwZW5zaW9uOjpCYWNrRm9yd2FyZENhY2hlKQogICAgICAgICBzZXRTZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbigmU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMWY5YTgzYmZkMjY0YTRl
MTQwZTNjMWYxMzhiZmFjNGYyNTc5NDI4Yi4uNDllODgzOGUyOWQ5NzBlZjgyYjZlMmYyMTM2M2I1
MDZhNDBjYzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYW52YXNCYXNlLmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCkBAIC0xMDIsNiAr
MTAzLDcgQEAgY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlv
bjsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OworY2xh
c3MgQ2FjaGVkRm9udDsKIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFJlc291
cmNlTG9hZGVyOwogY2xhc3MgQ2FjaGVkU2NyaXB0OwpAQCAtMTM3LDYgKzEzOSw3IEBAIGNsYXNz
IEV4dGVuc2lvblN0eWxlU2hlZXRzOwogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRmxvYXRSZWN0
OwogY2xhc3MgRm9udEZhY2VTZXQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBGb3Jt
Q29udHJvbGxlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVTZWxlY3Rpb247CkBAIC02MzMs
NiArNjM2LDggQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZERldmljZU1vdGlvbkFuZE9yaWVu
dGF0aW9uVXBkYXRlcygpOwogICAgIHZvaWQgcmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRp
b25VcGRhdGVzKCk7CiAKKyAgICB2b2lkIHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CisKICAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJWaWV3Lmdl
dCgpOyB9CiAKICAgICBib29sIHJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkOyB9CkBAIC0xNjQ3LDEwICsxNjUyLDE2IEBA
IHByaXZhdGU6CiAKICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgQ1NTRm9udFNl
bGVjdG9yKiBjc3NGb250U2VsZWN0b3IoKSBmaW5hbCB7IHJldHVybiBtX2ZvbnRTZWxlY3Rvci5w
dHIoKTsgfQorICAgIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KFN0cmluZyYsIGJv
b2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFsOworICAgIHZvaWQgYmVnaW5M
b2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7CiAKICAgICAvLyBGb250U2Vs
ZWN0b3JDbGllbnQKICAgICB2b2lkIGZvbnRzTmVlZFVwZGF0ZShGb250U2VsZWN0b3ImKSBmaW5h
bDsKIAorICAgIHZvaWQgbG9hZFBlbmRpbmdGb250cygpOworICAgIHZvaWQgZm9udExvYWRpbmdU
aW1lckZpcmVkKCk7CisgICAgdm9pZCBzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKwogICAg
IGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC0xOTgyLDYg
KzE5OTMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2RvY3Vt
ZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTDsKIAogICAgIFJlZjxDU1NGb250U2VsZWN0b3I+
IG1fZm9udFNlbGVjdG9yOworICAgIFRpbWVyIG1fZm9udExvYWRpbmdUaW1lcjsKKyAgICBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1fZm9udHNUb0JlZ2luTG9hZGlu
ZzsKIAogICAgIFdlYWtIYXNoU2V0PE1lZGlhUHJvZHVjZXI+IG1fYXVkaW9Qcm9kdWNlcnM7CiAg
ICAgV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvbj4gbV9hY3RpdmVTcGVlY2hSZWNvZ25pdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBj
NzczODMxYjg4YzJiMDJiMDViYzJmZmI2ZjA1M2U4ZGFmMWE1ZjdhLi4xZmE0MDI1ZDY0NDBlOTgy
MmZhYzc2Yjk2Yzc0OWY2YjNjYzQzZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yMzIsNiArMjMyLDExIEBAIEZvbnRDYWNoZSYgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9udENhY2hlKCkKICAgICByZXR1cm4gRm9udENhY2hlOjpz
aW5nbGV0b24oKTsKIH0KIAorRm9udExvYWRSZXF1ZXN0KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojpmb250TG9hZFJlcXVlc3QoU3RyaW5nJiwgYm9vbCwgYm9vbCwgTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojpmb3JFYWNoQWN0aXZlRE9NT2JqZWN0KGNvbnN0IEZ1bmN0aW9uPFNob3VsZENvbnRp
bnVlKEFjdGl2ZURPTU9iamVjdCYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgLy8gSXQgaXMgbm90
IGFsbG93ZWQgdG8gcnVuIGFyYml0cmFyeSBzY3JpcHQgb3IgY29uc3RydWN0IG5ldyBBY3RpdmVE
T01PYmplY3RzIHdoaWxlIHdlIGFyZSBpdGVyYXRpbmcgb3ZlciBBY3RpdmVET01PYmplY3RzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZThiZjBl
ZmNiNmJiYTEyNjBmMGE5MGI3OTc1NDM4MTZiMGRmMWJiYi4uN2QzY2RkZDY1MzZkZTU3ZDFkYTNi
NjMyOWE0OWVhNTI4NzhjODAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eUNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKQEAg
LTY2LDYgKzY3LDcgQEAgY2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91
cDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgRm9udENhY2hlOworY2xhc3MgRm9udExvYWRS
ZXF1ZXN0OwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwogY2xh
c3MgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjsKQEAgLTE2NSw2ICsxNjcsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIEZvbnRDYWNoZSYgZm9udENhY2hlKCk7CiAgICAgdmlydHVhbCBDU1NGb250
U2VsZWN0b3IqIGNzc0ZvbnRTZWxlY3RvcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlz
U1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRl
ZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxvYWRpbmdGb250U29v
bihGb250TG9hZFJlcXVlc3QmKSB7IH0KIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggYzRlNDZlODcyYzZhNmQwMjMxN2ViMTgyMTU1MjU2M2ZmZWE1NWNmYS4uNGQ4NTU2NGMwNDdm
ZTk0NmQxMmRhMDNmN2Q3MzQ5OTQyMjI1M2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RvcExvYWRpbmcoKQogICAgIGNhbmNlbEFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVy
cyk7CiAKICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQotICAgICAg
ICBkb2N1bWVudC0+Zm9udFNlbGVjdG9yKCkuc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKyAg
ICAgICAgZG9jdW1lbnQtPnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAKICAgICAvLyBBcHBj
YWNoZSB1c2VzIFJlc291cmNlSGFuZGxlIGRpcmVjdGx5LCBEb2N1bWVudExvYWRlciBkb2Vzbid0
IGNvdW50IHRoZXNlIGxvYWRzLgogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPnN0b3BMb2Fk
aW5nSW5GcmFtZSgqbV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTZiNTA0YjFjZDc5NzZhMjk1MzZlZmFmM2ZiMmRmZTg4MTc5NTk0Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3Qu
aApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5n
cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBGb250OworY2xhc3MgRm9udERlc2NyaXB0aW9uOworY2xhc3MgRm9udExv
YWRSZXF1ZXN0Oworc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7Cit1c2luZyBG
b250RmVhdHVyZVNldHRpbmdzID0gRm9udFRhZ2dlZFNldHRpbmdzPGludD47CisKK2NsYXNzIEZv
bnRMb2FkUmVxdWVzdENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Rm9udExvYWRSZXF1
ZXN0Q2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKEZvbnRM
b2FkUmVxdWVzdCYpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkRm9udENsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCitjbGFzcyBGb250TG9hZFJlcXVlc3Qgewor
cHVibGljOgorICAgIHZpcnR1YWwgfkZvbnRMb2FkUmVxdWVzdCgpID0gZGVmYXVsdDsKKworICAg
IHZpcnR1YWwgY29uc3QgVVJMJiB1cmwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TG9hZGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkkpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVh
dGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVS
SSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZl
YXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRm9udExvYWRSZXF1ZXN0Q2xpZW50KikgPSAw
OworCisgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkU1ZHRm9udCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19GT05UTE9BRFJFUVVFU1RDTElFTlQoVG9WYWx1ZVR5cGVOYW1lLCBwcmVk
aWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBc
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdENs
aWVudCYgY2xpZW50KSB7IHJldHVybiBjbGllbnQucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZPTlRM
T0FEUkVRVUVTVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0
LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOTc0MTllZWU3NDE5ZjgwYWFk
YWZlODI0NTU5MGRmZWQ2NGU5NzcyZS4uNGUwYTgxMmY2M2FkOWFjMjViNjU3NzFiZjQwN2VjMjVk
Y2VhZjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApA
QCAtMTM3LDYgKzEzNywyMCBAQCBGb250UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3Jt
RGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmCiAgICAgcmV0dXJuIGZv
bnRDdXN0b21QbGF0Zm9ybURhdGEuZm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGJv
bGQsIGl0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMpOwogfQog
Cit2b2lkIENhY2hlZEZvbnQ6OnNldENsaWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqIGNsaWVu
dCkKK3sKKyAgICBpZiAobV9mb250TG9hZFJlcXVlc3RDbGllbnQgPT0gY2xpZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9mb250TG9hZFJlcXVlc3RDbGllbnQpCisgICAgICAgIHJl
bW92ZUNsaWVudChkb3duY2FzdDxDYWNoZWRGb250Q2xpZW50PigqbV9mb250TG9hZFJlcXVlc3RD
bGllbnQpKTsKKworICAgIGlmIChjbGllbnQpCisgICAgICAgIGFkZENsaWVudChkb3duY2FzdDxD
YWNoZWRGb250Q2xpZW50PigqY2xpZW50KSk7CisKKyAgICBtX2ZvbnRMb2FkUmVxdWVzdENsaWVu
dCA9IGNsaWVudDsKK30KKwogdm9pZCBDYWNoZWRGb250OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7
CiAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDYyNjc3ODhmMTdlNWViNDIwYTU5NDQ4ODRj
NDQ1YTMwYTA3ZjlmNWMuLjZlOTQ0YjcxYWNmN2M5ODI4YjljNDYxMTMyMGI4Y2RlZGYwNGNmMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQz
LDcgKzQ0LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0
dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwogCi1jbGFzcyBDYWNoZWRGb250IDogcHVi
bGljIENhY2hlZFJlc291cmNlIHsKK2NsYXNzIENhY2hlZEZvbnQgOiBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2UsIHB1YmxpYyBGb250TG9hZFJlcXVlc3QgewogcHVibGljOgogICAgIENhY2hlZEZvbnQo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgQ29v
a2llSmFyKiwgVHlwZSA9IFR5cGU6OkZvbnRSZXNvdXJjZSk7CiAgICAgdmlydHVhbCB+Q2FjaGVk
Rm9udCgpOwpAQCAtNTEsMTEgKzUyLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJlZ2luTG9hZElm
TmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyJik7CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
OwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxh
dGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJl
U2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAotICAgIHZp
cnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllcyk7CisgICAgLy8gRm9udExvYWRSZXF1ZXN0CisgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYWNoZWRSZXNvdXJjZTo6dXJsKCk7IH0KKyAg
ICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhY2hlZFJlc291cmNlOjpp
c0xvYWRpbmcoKTsgfQorICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIENhY2hlZFJlc291cmNlOjplcnJvck9jY3VycmVkKCk7IH0KKworICAgIGJvb2wgZW5zdXJl
Q3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVk
Q2FwYWJpbGl0aWVzKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0Q2xpZW50KEZvbnRMb2FkUmVx
dWVzdENsaWVudCopIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBw
bGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJv
bGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgRm9udFNlbGVjdGlv
blNwZWNpZmllZENhcGFiaWxpdGllcyk7CkBAIC03Niw4ICs4NCwxMSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCisgICAgYm9vbCBpc0NhY2hl
ZEZvbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBib29sIG1fbG9hZElu
aXRpYXRlZDsKICAgICBib29sIG1faGFzQ3JlYXRlZEZvbnREYXRhV3JhcHBpbmdSZXNvdXJjZTsK
KyAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVs
bHB0ciB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApAQCAtODYsNCArOTcsMTMgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9S
RVNPVVJDRShDYWNoZWRGb250LCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlKQor
bmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK2NsYXNzIFR5cGVD
YXN0VHJhaXRzPGNvbnN0IFdlYkNvcmU6OkNhY2hlZEZvbnQsIEFyZ1R5cGUsIGZhbHNlIC8qIGlz
QmFzZVR5cGUgKi8+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBl
JiBzb3VyY2UpIHsgcmV0dXJuIGlzVHlwZShzb3VyY2UpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgeyByZXR1cm4gcmVz
b3VyY2UudHlwZSgpID09IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3Vy
Y2U7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9udExvYWRSZXF1
ZXN0JiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LmlzQ2FjaGVkRm9udCgpOyB9Cit9OworfQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaAppbmRl
eCA1MGU2M2Y1OWNhMzQ0N2MyMmE5NmZjOWZjNzE2MThkMzFiNmQyMGMyLi5mMjNhMWNiZGE0MWQz
MDZjOTg2ZDZjYjhiZTlhYzgyZTZiYjgyZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKQEAgLTI1LDE4ICsyNSwyMiBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUNsaWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENhY2hlZEZvbnQ7Ci0K
LWNsYXNzIENhY2hlZEZvbnRDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewor
Y2xhc3MgQ2FjaGVkRm9udENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHVi
bGljIEZvbnRMb2FkUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVk
Rm9udENsaWVudCgpID0gZGVmYXVsdDsKICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRU
eXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIEZvbnRUeXBlOyB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGV4cGVjdGVkVHlwZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9u
dCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQmIGZvbnQpIHsg
Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKGZvbnQpOyB9CisKK3ByaXZhdGU6Cisg
ICAgYm9vbCBpc0NhY2hlZEZvbnRDbGllbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
Rk9OVExPQURSRVFVRVNUQ0xJRU5UKFdlYkNvcmU6OkNhY2hlZEZvbnRDbGllbnQsIGlzQ2FjaGVk
Rm9udENsaWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmgKaW5kZXggMmUxZDZiYThiMWMxN2Y4MzMxOTc2NmRhZmM0YTRkNGIyOWQ1OWRhYi4uOTQyZTE3
ZTU0Y2NjZWExMDQ3ZWQ2OTNlZjFlNzc4NmQ5ZWUwYmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC00OSw2ICs0OSw4IEBAIHByaXZhdGU6CiAg
ICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZp
cnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAorICAgIGJvb2wgaXND
YWNoZWRTVkdGb250KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4g
bV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQ7CkBAIC01Nyw0ICs1OSwxMiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FDSEVEX1JFU09VUkNFKENhY2hl
ZFNWR0ZvbnQsIENhY2hlZFJlc291cmNlOjpUeXBlOjpTVkdGb250UmVzb3VyY2UpCituYW1lc3Bh
Y2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorY2xhc3MgVHlwZUNhc3RUcmFp
dHM8Y29uc3QgV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udCwgQXJnVHlwZSwgZmFsc2UgLyogaXNCYXNl
VHlwZSAqLz4geworcHVibGljOgorICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFyZ1R5cGUmIHNv
dXJjZSkgeyByZXR1cm4gaXNUeXBlKHNvdXJjZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSB7IHJldHVybiByZXNvdXJj
ZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNWR0ZvbnRSZXNvdXJj
ZTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGb250TG9hZFJlcXVl
c3QmIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QuaXNDYWNoZWRTVkdGb250KCk7IH0KK307Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg3
ZmM1OGMxYjQxMzhjMTc2YjliM2E2YzAxOTA3Y2VjMGY5N2FlNTkuLjc3NTJhZjk1NTJiNTc0MzQ2
ZDYyOGQ0ZjdmYThmNzZjMzYwZDQ4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xMTIsOCArMTEyLDYgQEAgV29ya2VyR2xvYmFsU2NvcGU6
On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAgICAgICAgIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRp
ZmllcnMobG9ja2VyKS5yZW1vdmUoY29udGV4dElkZW50aWZpZXIoKSk7CiAgICAgfQogCi0gICAg
aWYgKG1fY3NzRm9udFNlbGVjdG9yKQotICAgICAgICBtX2Nzc0ZvbnRTZWxlY3Rvci0+c3RvcExv
YWRpbmdBbmRDbGVhckZvbnRzKCk7CiAgICAgbV9wZXJmb3JtYW5jZSA9IG51bGxwdHI7CiAgICAg
bV9jcnlwdG8gPSBudWxscHRyOwogCg==
</data>
<flag name="commit-queue"
          id="445323"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425384</attachid>
            <date>2021-04-07 04:57:58 -0700</date>
            <delta_ts>2021-04-07 05:13:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210407125757.patch</filename>
            <type>text/plain</type>
            <size>48923</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uMTAyNDZjZjg3MWE0OGZhYTgzNGE0NTliM2ExMGVj
YjViYjI0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6IFVwZGF0ZSB0byBub3QgcmVxdWlyZSBEb2N1bWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKToKKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGlu
c3RlYWQgb2YgQ2FjaGVkRm9udC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNl
OjpDU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJj
ZTo6fkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU291cmNlOjpmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpp
c1NWR0ZvbnRGYWNlU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDogVXBkYXRlIHRv
IHVzZSBGb250TG9hZFJlcXVlc3QgYW5kCisgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2VTcmNWYWx1ZS5oOgorCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6IFJl
bW92ZSBEb2N1bWVudC1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNl
bGVjdG9yOjpDU1NGb250U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVj
dG9yOjp+Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Y2xlYXJGb250cyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDogQWRkIERvY3VtZW50LXNwZWNpZmljIGZvbnQtbG9hZGlu
ZyBjb2RlIGZyb20KKyAgICAgICAgICBDU1NGb250U2VsZWN0b3IgYW5kIENTU0ZvbnRGYWNlU3Jj
VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVzb2x2ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNw
ZW5kRm9udExvYWRpbmdUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpiZWdpbkxvYWRpbmdGb250
U29vbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bG9hZFBlbmRpbmdGb250cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExvYWRpbmdUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc3VtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IEFkZCBmdW5jdGlvbnMgdG8gaW5pdGlhdGUgZm9u
dCBsb2FkIHJlcXVlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YmVnaW5Mb2Fk
aW5nRm9udFNvb24pOgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVXBk
YXRlIGR1ZSB0byBvdGhlciBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN0b3BMb2FkaW5nKToKKworICAgICAgICAqIGxvYWRlci9Gb250TG9hZFJlcXVlc3QuaDog
QWRkZWQuIEFuIGludGVyZmFjZSB0byBtYW5hZ2UgZm9udCBsb2FkaW5nCisgICAgICAgICAgdGhh
dCBhYnN0cmFjdHMgc29tZSBvZiB0aGUgYmVoYXZpb3VyIG9mIENhY2hlZFJlc291cmNlLCBDYWNo
ZWRGb250IGFuZAorICAgICAgICAgIENhY2hlZEZvbnRDbGllbnQuCisgICAgICAgIChXZWJDb3Jl
OjpGb250TG9hZFJlcXVlc3RDbGllbnQ6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojppc0NhY2hlZEZvbnRDbGllbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZEZvbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZFNWR0ZvbnQgY29uc3QpOgorCisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOiBJbXBsZW1lbnQgRm9udExvYWRS
ZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnRDbGllbnQuaDogSW1wbGVtZW50IEZvbnRMb2FkUmVxdWVzdENsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnRDbGllbnQ6OmZvbnRMb2FkZWQpOgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDogVXBkYXRlIHR5cGUtY2FzdCB0cmFpdHMu
CisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDogUmVtb3ZlIG5vdy1y
ZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJH
bG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwogMjAyMS0wNC0wNSAgQ2hyaXMgTG9y
ZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlkaUNvbnRleHQgY2FjaGluZyBpcyBu
b3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFhMzkxODJkNDA2ZjYzMGE5MWU5
NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjJlOWIwOTNlZDk5ODMzY2RlZTY0MTljNGY0OWZjNmFlZmE2
NjA3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzc2LDYgKzc3Niw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsb2FkZXIvRW1wdHlDbGllbnRzLmgKICAg
ICBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCiAgICAgbG9hZGVyL0ZldGNoT3B0aW9u
cy5oCisgICAgbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCiAgICAgbG9hZGVyL0Zvcm1TdGF0ZS5o
CiAgICAgbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKICAgICBsb2FkZXIvRnJhbWVMb2FkUmVxdWVz
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNzUzMDJkYjBkMGM2ODIyMzFmNTYyZmU5MDhjOWViMTUxMWIzZjk2MS4uN2E1ZTli
ODZlZjRhMzFlOTFmODFkZDdjNDQ3NTE5YjQ5ZTM3Y2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA0Miw2ICsyMDQyLDcg
QEAKIAkJNjU2NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUVCMDlEMTUwOEQwMDBF
NjFENyAvKiBYTGlua05hbWVzLmggKi87IH07CiAJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAv
KiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU2RDM3MUEwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2
RDM3MzYwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcxRTBBREJBNURFMDBBNDU1NEQg
LyogRG9jdW1lbnRMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4
NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3M0EwQURCQTVERTAwQTQ1NTRE
IC8qIEZvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzNDMEFEQkE1REUw
MEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MjQwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3
M0UwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcyNjBBREJBNURFMDBBNDU1NEQg
LyogRnJhbWVMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTc2MSw2ICs5NzYyLDcgQEAKIAkJNjU2RDM3MUUwQURCQTVERTAw
QTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEb2N1bWVudExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udExvYWRSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBG
cmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjYwQURCQTVERTAwQTQ1
NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA4MTcxYWNjZWE3ZWY0
N2NiMTUzOTk1ZTk0YWE4YTAxMTlkN2FlMzYwLi4wNWNiMzQ1OTdlNWEyNDNmZDUwNmNmNGE4Y2E3
NDFkYmM3ZDVjNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc2LDEwICs3
Niw5IEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRG
YWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIFNjCiAgICAgICAgIGlmICghaXRlbS5pc0xvY2Fs
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8qIHNldHRpbmdzID0gY29udGV4dCA/ICZjb250
ZXh0LT5zZXR0aW5nc1ZhbHVlcygpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgYWxsb3dE
b3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25s
b2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCk7Ci0gICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9h
ZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkgJiYgaXM8RG9jdW1lbnQ+KGNvbnRleHQp
KSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4o
KmNvbnRleHQpOwotICAgICAgICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0g
aXRlbS5jYWNoZWRGb250KCZkb2N1bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVt
ZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNlID0g
bWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwg
ZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpjYWNoZWRGb250KTsKKyAgICAgICAgICAgIGlmIChh
bGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBmb250UmVxdWVzdCA9IGl0ZW0uZm9udExvYWRSZXF1ZXN0KGNvbnRl
eHQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJl
ZSkpCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VT
b3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksICpjb250ZXh0LT5jc3NGb250U2VsZWN0
b3IoKSwgKmZvbnRSZXF1ZXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBzb3VyY2UgPSAoZm9udEZhY2VFbGVtZW50ID8gbWFrZVVuaXF1ZTxDU1NGb250RmFj
ZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmZvbnRGYWNlRWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGJjMzIzYzJmMmVjMDFh
NzdhZDUwODMzMTEyZTE5NjAwMzA4YTczZWQuLjA4YTA1MDM0MTMwMTMwYWZhN2Q5NmFhOTMwNjg1
YjQ4NzIwYzJiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKICNp
bmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0
aW9uLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5j
bHVkZSAiU1ZHRm9udEVsZW1lbnQuaCIKQEAgLTcyLDE5ICs3MywxOSBAQCBDU1NGb250RmFjZVNv
dXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcm
IGZhbWlseU5hbQogewogfQogCi1DU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NTRm9u
dFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIENhY2hlZEZvbnQmIGZvbnQpCitDU1NGb250RmFjZVNv
dXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcm
IGZhbWlseU5hbWVPclVSSSwgQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIEZvbnRMb2Fk
UmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fZmFtaWx5TmFtZU9yVVJJKGZhbWlseU5hbWVPclVS
SSkKICAgICAsIG1fZmFjZShvd25lcikKICAgICAsIG1fZm9udFNlbGVjdG9yKG1ha2VXZWFrUHRy
KGZvbnRTZWxlY3RvcikpCi0gICAgLCBtX2ZvbnQoJmZvbnQpCisgICAgLCBtX2ZvbnRSZXF1ZXN0
KCZyZXF1ZXN0KQogewogICAgIC8vIFRoaXMgbWF5IHN5bmNocm9ub3VzbHkgY2FsbCBmb250TG9h
ZGVkKCkuCi0gICAgbV9mb250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9udFJlcXVlc3Qt
PnNldENsaWVudCh0aGlzKTsKIAotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcg
JiYgbV9mb250LT5pc0xvYWRlZCgpKSB7CisgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVu
ZGluZyAmJiAhbV9mb250UmVxdWVzdC0+aXNMb2FkaW5nKCkpIHsKICAgICAgICAgc2V0U3RhdHVz
KFN0YXR1czo6TG9hZGluZyk7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlRm9udExvYWRDb21w
bGV0aW9ucygpKSB7Ci0gICAgICAgICAgICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkpCisg
ICAgICAgICAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICAg
ICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTA5LDggKzExMCw4
IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3du
ZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiAKIENTU0ZvbnRGYWNlU291cmNlOjp+Q1NTRm9u
dEZhY2VTb3VyY2UoKQogewotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1fZm9udC0+cmVtb3Zl
Q2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkKKyAgICAgICAgbV9mb250UmVx
dWVzdC0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCiBib29sIENTU0ZvbnRGYWNlU291cmNlOjpz
aG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3QKQEAgLTEyMCwyOSArMTIxLDI5
IEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlv
bnMoKSBjb25zdAogCiB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0
YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCkKIHsKLSAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQ
ZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRhKCkgJiYgbV9m
YW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKKyAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVz
OjpQZW5kaW5nICYmIG1fZm9udFJlcXVlc3QgJiYgbV9mb250UmVxdWVzdC0+dXJsKCkucHJvdG9j
b2xJc0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQogICAgICAgICBs
b2FkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQoQ2FjaGVkRm9u
dCYgbG9hZGVkRm9udCkKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQoRm9udExv
YWRSZXF1ZXN0JiBmb250UmVxdWVzdCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGxvYWRlZEZvbnQs
ICZsb2FkZWRGb250ID09IG1fZm9udC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChmb250UmVx
dWVzdCwgJmZvbnRSZXF1ZXN0ID09IG1fZm9udFJlcXVlc3QpOwogCiAgICAgaWYgKHNob3VsZEln
bm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPENT
U0ZvbnRGYWNlPiBwcm90ZWN0ZWRGYWNlKG1fZmFjZSk7CiAKLSAgICAvLyBJZiB0aGUgZm9udCBp
cyBpbiB0aGUgY2FjaGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5IGNhbGxlZCBmcm9tIENh
Y2hlZEZvbnQ6OmFkZENsaWVudCgpLgorICAgIC8vIElmIHRoZSBmb250IGlzIGluIHRoZSBjYWNo
ZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkgY2FsbGVkIGZyb20gRm9udExvYWRSZXF1ZXN0
OjphZGRDbGllbnQoKS4KICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVzOjpQZW5kaW5nKQogICAg
ICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICBlbHNlIGlmIChtX3N0YXR1cyA9
PSBTdGF0dXM6OkZhaWx1cmUpIHsKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBtYXkgYmUgY2Fs
bGVkIHR3aWNlIGlmIGxvYWRpbmcgd2FzIGNhbmNlbGxlZC4KLSAgICAgICAgQVNTRVJUKG1fZm9u
dC0+ZXJyb3JPY2N1cnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZm9udFJlcXVlc3QtPmVycm9y
T2NjdXJyZWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9mb250LT5l
cnJvck9jY3VycmVkKCkgfHwgIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlO
YW1lT3JVUkkpKQorICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9jY3VycmVkKCkgfHwgIW1f
Zm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5TmFtZU9yVVJJKSkKICAg
ICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgZWxzZQogICAgICAgICBzZXRT
dGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTE1NCw5ICsxNTUsMTAgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgc2V0U3RhdHVzKFN0
YXR1czo6TG9hZGluZyk7CiAKLSAgICBpZiAobV9mb250KSB7CisgICAgaWYgKG1fZm9udFJlcXVl
c3QpIHsKICAgICAgICAgQVNTRVJUKG1fZm9udFNlbGVjdG9yKTsKLSAgICAgICAgbV9mb250U2Vs
ZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnQpOworICAgICAgICBpZiAoYXV0byog
Y29udGV4dCA9IG1fZm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAg
ICAgICAgICBjb250ZXh0LT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250UmVxdWVzdCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgIGlmICht
X2hhc1NWR0ZvbnRGYWNlRWxlbWVudCkgewpAQCAtMTk4LDcgKzIwMCw3IEBAIFJlZlB0cjxGb250
PiBDU1NGb250RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgYm9vCiAKICAgICBib29sIHVzZXNJbkRvY3VtZW50U1ZHRm9udCA9IG1faGFzU1ZH
Rm9udEZhY2VFbGVtZW50OwogCi0gICAgaWYgKCFtX2ZvbnQgJiYgIXVzZXNJbkRvY3VtZW50U1ZH
Rm9udCkgeworICAgIGlmICghbV9mb250UmVxdWVzdCAmJiAhdXNlc0luRG9jdW1lbnRTVkdGb250
KSB7CiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgaWYgKCFt
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yMTAsMTIgKzIxMiwxMiBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VT
b3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwog
ICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnRE
ZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksICZmb250RmFjZUZlYXR1cmVzLCBmb250RmFj
ZUNhcGFiaWxpdGllcywgdHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKG1fZm9udCkgewotICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5TmFt
ZU9yVVJJKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkgeworICAgICAgICBhdXRvIHN1Y2Nlc3Mg
PSBtX2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWlseU5hbWVPclVSSSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICAgICAgQVNT
RVJUKHN0YXR1cygpID09IFN0YXR1czo6U3VjY2Vzcyk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
bV9mb250LT5jcmVhdGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VD
YXBhYmlsaXRpZXMpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZm9udFJlcXVlc3QtPmNyZWF0
ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgc3ludGhldGljQm9sZCwg
c3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcyk7
CiAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
QEAgLTIzMiw3ICsyMzQsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogCiBib29sIENTU0Zv
bnRGYWNlU291cmNlOjppc1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9oYXNTVkdGb250RmFjZUVsZW1lbnQgfHwgaXM8Q2FjaGVkU1ZHRm9udD4obV9mb250LmdldCgp
KTsKKyAgICByZXR1cm4gbV9oYXNTVkdGb250RmFjZUVsZW1lbnQgfHwgaXM8Q2FjaGVkU1ZHRm9u
dD4obV9mb250UmVxdWVzdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmgKaW5kZXggNTkyY2U4MzFjNWE5Mjg2M2UwNGViZGI3NmVmM2FjMThmNTFjMTNiZC4uOWY1
OTAzYmRlYzg3ZWYyMDYxMDFkOTI4NjUyYzY1NzhiZmJiNmNhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgQ1NTRm9udEZhY2VT
b3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkRm9udENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2Um
IG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSk7Ci0gICAgQ1NTRm9udEZhY2VT
b3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwg
Q1NTRm9udFNlbGVjdG9yJiwgQ2FjaGVkRm9udCYpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENT
U0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRT
ZWxlY3RvciYsIEZvbnRMb2FkUmVxdWVzdCYpOwogICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0Zv
bnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFNWR0ZvbnRGYWNl
RWxlbWVudCYpOwogICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29u
c3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFJlZjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJik7
CiAgICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTb3VyY2UoKTsKQEAgLTc2LDIyICs3NiwyMiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsb2FkKERvY3VtZW50KiA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxG
b250PiBmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQo
KSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0KLSAgICBib29sIHJlcXVpcmVzRXh0ZXJu
YWxSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQorICAgIEZvbnRMb2FkUmVxdWVz
dCogZm9udExvYWRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9mb250UmVxdWVzdDsgfQorICAg
IGJvb2wgcmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250UmVx
dWVzdDsgfQogCiAgICAgYm9vbCBpc1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCYpIG92ZXJyaWRlOworICAgIHZvaWQgZm9u
dExvYWRlZChGb250TG9hZFJlcXVlc3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0U3RhdHVz
KFN0YXR1cyk7CiAKICAgICBBdG9tU3RyaW5nIG1fZmFtaWx5TmFtZU9yVVJJOyAvLyBVUkkgZm9y
IHJlbW90ZSwgYnVpbHQtaW4gZm9udCBuYW1lIGZvciBsb2NhbC4KICAgICBDU1NGb250RmFjZSYg
bV9mYWNlOyAvLyBPdXIgb3duaW5nIGZvbnQgZmFjZS4KICAgICBXZWFrUHRyPENTU0ZvbnRTZWxl
Y3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRl
IGxvYWRpbmcuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gbV9mb250OyAv
LyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byBvdXIgY2FjaGVkIHJlc291cmNl
LgorICAgIEZvbnRMb2FkUmVxdWVzdCogbV9mb250UmVxdWVzdCB7IG51bGxwdHIgfTsgLy8gQWxz
byBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDUzOWZkNDg4OTY5ZWZhNmZhZDVm
ZWE0ZDNjOGExN2I3MmY3MTllZTUuLmNhOTkyYWM5YzRlOGI4YjZlZDNhNzY3ZmU4YmE3YzJjYWE2
ZjI3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAg
LTI5LDEwICsyOSwxMSBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0SW5pdGlhdG9ycy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NiwxOSArNzcsMTYgQEAgYm9vbCBD
U1NGb250RmFjZVNyY1ZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0
aW9uPGJvb2wgKGNvbnN0IEMKICAgICByZXR1cm4gaGFuZGxlcigqbV9jYWNoZWRGb250KTsKIH0K
IAotQ2FjaGVkRm9udCogQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50
U2hhZG93VHJlZSkKK0ZvbnRMb2FkUmVxdWVzdCogQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Zm9udExv
YWRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wgaXNTVkcsIGJv
b2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKIHsKICAgICBpZiAo
bV9jYWNoZWRGb250KQogICAgICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogCi0gICAg
UmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwotICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5
UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sgOiBD
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrOwotICAgIG9wdGlv
bnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9IG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTsKKyAg
ICBhdXRvKiByZXF1ZXN0ID0gY29udGV4dC0+Zm9udExvYWRSZXF1ZXN0KG1fcmVzb3VyY2UsIGlz
U1ZHLCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBtX2xvYWRlZEZy
b21PcGFxdWVTb3VyY2UpOworICAgIGlmIChpczxDYWNoZWRGb250PihyZXF1ZXN0KSkKKyAgICAg
ICAgbV9jYWNoZWRGb250ID0gJmRvd25jYXN0PENhY2hlZEZvbnQ+KCpyZXF1ZXN0KTsKIAotICAg
IENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+
Y29tcGxldGVVUkwobV9yZXNvdXJjZSkpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEluaXRp
YXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2NhY2hl
ZEZvbnQgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZN
b3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVfb3IobnVsbHB0cik7Ci0gICAgcmV0dXJuIG1fY2Fj
aGVkRm9udC5nZXQoKTsKKyAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogYm9vbCBDU1NGb250RmFj
ZVNyY1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgb3RoZXIpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBjNWRjNTlmZDk2
YTFiZTMyODM2MzQ0ZmYxOWQ5NTg3NzI5MjZkN2I0Li43NDkxZGY2NjVjOWVmN2JkYjJlZmQzMGYw
ZWIxYWIwNmZjOGRhMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmgKQEAgLTM0LDggKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVk
Rm9udDsKLWNsYXNzIERvY3VtZW50OworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgU1ZH
Rm9udEZhY2VFbGVtZW50OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3Mg
Q1NTRm9udEZhY2VTcmNWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CkBA
IC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMo
Y29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxl
cikgY29uc3Q7CiAKLSAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KERvY3VtZW50KiwgYm9vbCBp
c1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAg
ICBGb250TG9hZFJlcXVlc3QqIGZvbnRMb2FkUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKTsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBjMTE1NzhjZmM1
MDQxMmNiYTZjNTUzMGY5NGJlOGFhMzYzNDQ3NWNjLi5hY2QyYTFjYzI0ZTM0YzA1NGQwMzc4MjM0
ODc3MzdjZmVjN2ZlYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApA
QCAtNjgsNyArNjgsNiBAQCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9mb250Q2FjaGUobWFrZVJlZihjb250
ZXh0LmZvbnRDYWNoZSgpKSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXQ6
OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIoW3RoaXNdIHsgZm9u
dE1vZGlmaWVkKCk7IH0pCi0gICAgLCBtX2ZvbnRMb2FkaW5nVGltZXIoKnRoaXMsICZDU1NGb250
U2VsZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fdW5pcXVlSWQoKytmb250
U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigwKQogewpAQCAtOTMsNyArOTIsNyBAQCBDU1NG
b250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IoKQogewogICAgIExPRyhGb250cywgIkNTU0Zv
bnRTZWxlY3RvciAlcCBkdG9yIiwgdGhpcyk7CiAKLSAgICBzdG9wTG9hZGluZ0FuZENsZWFyRm9u
dHMoKTsKKyAgICBjbGVhckZvbnRzKCk7CiAgICAgbV9mb250Q2FjaGUtPnJlbW92ZUNsaWVudCgq
dGhpcyk7CiB9CiAKQEAgLTMzNiw5NCArMzM1LDEzIEBAIEZvbnRSYW5nZXMgQ1NTRm9udFNlbGVj
dG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2Ny
CiAgICAgcmV0dXJuIEZvbnRSYW5nZXMgeyBXVEZNb3ZlKGZvbnQpIH07CiB9CiAKLXZvaWQgQ1NT
Rm9udFNlbGVjdG9yOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQordm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmNsZWFyRm9udHMoKQogewotICAgIGlmIChtX2lzU3RvcHBlZCkgewotICAgICAgICBB
U1NFUlQoIW1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgQVNTRVJUKG1f
Zm9udHNUb0JlZ2luTG9hZGluZy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
CiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7
Ci0KLSAgICBpZiAoaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpIHsKLSAgICAgICAgYXV0
byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0gICAgICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IG1fZm9u
dHNUb0JlZ2luTG9hZGluZykgewotICAgICAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVx
dWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KLSAgICAgICAgICAgIGNhY2hl
ZFJlc291cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7Ci0gICAgfQotCiAg
ICAgbV9jc3NGb250RmFjZVNldC0+Y2xlYXIoKTsKICAgICBtX2NsaWVudHMuY2xlYXIoKTsKIH0K
IAotdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQm
IGZvbnQpCi17Ci0gICAgaWYgKG1faXNTdG9wcGVkIHx8ICFpczxEb2N1bWVudD4obV9jb250ZXh0
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0KLSAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuYXBw
ZW5kKCZmb250KTsKLSAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291bnQgbm93LCBpbiBv
cmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNwYXRjaGVkCi0gICAg
Ly8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVmb3JlIGl0IGJlZ2Fu
IGxvYWRpbmcuIEJhbGFuY2VkIGJ5Ci0gICAgLy8gZGVjcmVtZW50UmVxdWVzdENvdW50KCkgaW4g
Zm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygp
LgotICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuaW5jcmVtZW50UmVxdWVzdENv
dW50KGZvbnQpOwotCi0gICAgaWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgJiYgIW1fZm9u
dExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdXNwZW5kRm9udExv
YWRpbmdUaW1lcigpCi17Ci0gICAgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlV2ls
bEJlU3VzcGVuZGVkKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OmxvYWRQZW5kaW5nRm9u
dHMoKQotewotICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgfHwgIWlzPERvY3VtZW50
PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIFZlY3RvcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGluZzsKLSAgICBmb250
c1RvQmVnaW5Mb2FkaW5nLnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsKLQotICAgIC8vIENT
U0ZvbnRTZWxlY3RvciBjb3VsZCBnZXQgZGVsZXRlZCB2aWEgYmVnaW5Mb2FkSWZOZWVkZWQoKSBv
ciBsb2FkRG9uZSgpIHVubGVzcyBwcm90ZWN0ZWQuCi0gICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVk
UmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGZv
ciAoYXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKLSAgICAgICAgZm9u
dEhhbmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwotICAgICAg
ICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250
U29vbigpLgotICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKmZvbnRIYW5kbGUpOwotICAgIH0KLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRM
b2FkaW5nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFpczxEb2N1bWVudD4obV9jb250ZXh0Lmdl
dCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKm1fY29udGV4dCk7Ci0gICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7Ci0KLSAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7Ci0KLSAgICAvLyBGSVhNRTog
VXNlIFN1YnJlc291cmNlTG9hZGVyIGluc3RlYWQuCi0gICAgLy8gQ2FsbCBGcmFtZUxvYWRlcjo6
bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWREb25lIHRvIG1hdGNo
IHRoZSBvcmRlciBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4KLSAgICBkb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWREb25lKExvYWRDb21wbGV0aW9uVHlwZTo6Rmlu
aXNoKTsKLSAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3VudCByZWFjaGVzIHpl
cm8sIHRoZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgotICAgIC8vIE5ldyBmb250
IGxvYWRzIG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBkb2N1bWVudCBsb2Fk
IGlzIGNvbXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCi0gICAgLy8gZGlkRmlu
aXNoTG9hZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVnYXRlIGlzIGFsd2F5
cyBkaXNwYXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCi0gICAgaWYgKGRvY3VtZW50LmZy
YW1lKCkpCi0gICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNoZWNrTG9hZENvbXBs
ZXRlKCk7Ci19Ci0KIHNpemVfdCBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udENvdW50KCkK
IHsKICAgICBpZiAobV9pc1N0b3BwZWQpCkBAIC00NDksMjkgKzM2Nyw0IEBAIFJlZlB0cjxGb250
PiBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9y
OjpzdG9wKCkKLXsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOwotfQotCi12b2lkIENT
U0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAgIGlmICht
X2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNGb250
TG9hZGluZ1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsK
LX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OnJlc3VtZSgpCi17Ci0gICAgaWYgKCFtX2lzRm9u
dExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9mb250c1Rv
QmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwotCi0gICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gZmFsc2U7Ci19
Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBlNGFmZjI2YWFhZmYw
OGY4Njg2N2UwNDU1OWZhNDFiNGJiN2U4ZjM3Li40MzQ3ZTg1YTE1NjIzNGE5M2NlYmVkMTQ3YzIz
MjZjMjFiNTFhZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBAIC02NCw3
ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmFsbGJhY2tGb250Q291bnQoKSBmaW5hbDsK
ICAgICBSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
c2l6ZV90KSBmaW5hbDsKIAotICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7Cisg
ICAgdm9pZCBjbGVhckZvbnRzKCk7CiAgICAgdm9pZCBlbXB0eUNhY2hlcygpOwogICAgIHZvaWQg
YnVpbGRTdGFydGVkKCk7CiAgICAgdm9pZCBidWlsZENvbXBsZXRlZCgpOwpAQCAtODEsOSArODEs
NiBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICB2b2lk
IGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKLSAgICB2b2lkIHN1c3BlbmRGb250
TG9hZGluZ1RpbWVyKCk7Ci0KICAgICBGb250RmFjZVNldCogZm9udEZhY2VTZXRJZkV4aXN0cygp
OwogICAgIEZvbnRGYWNlU2V0JiBmb250RmFjZVNldCgpOwogCkBAIC0xMTAsMTIgKzEwNyw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmb250U3R5bGVVcGRhdGVOZWVkZWQoQ1NTRm9udEZhY2UmKSBm
aW5hbDsKIAogICAgIHZvaWQgZm9udE1vZGlmaWVkKCk7Ci0gICAgdm9pZCBmb250TG9hZGluZ1Rp
bWVyRmlyZWQoKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZvaWQgc3RvcCgpIGZp
bmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2
b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiQ1NTRm9udFNlbGVjdG9yIl9zOyB9CiAKICAgICBzdHJ1
Y3QgUGVuZGluZ0ZvbnRGYWNlUnVsZSB7CkBAIC0xMzAsMTUgKzEyMywxMSBAQCBwcml2YXRlOgog
ICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NGb250RmFjZVNldDsKICAgICBIYXNoU2V0PEZv
bnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsKIAotICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwogICAgIEhhc2hTZXQ8
UmVmUHRyPENTU0ZvbnRGYWNlPj4gbV9jc3NDb25uZWN0aW9uc1Bvc3NpYmx5VG9SZW1vdmU7CiAg
ICAgSGFzaFNldDxSZWZQdHI8U3R5bGVSdWxlRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zRW5j
b3VudGVyZWREdXJpbmdCdWlsZDsKIAogICAgIENTU0ZvbnRGYWNlU2V0OjpGb250TW9kaWZpZWRP
YnNlcnZlciBtX2ZvbnRNb2RpZmllZE9ic2VydmVyOwogCi0gICAgVGltZXIgbV9mb250TG9hZGlu
Z1RpbWVyOwotICAgIGJvb2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKLQog
ICAgIHVuc2lnbmVkIG1fdW5pcXVlSWQ7CiAgICAgdW5zaWduZWQgbV92ZXJzaW9uOwogICAgIHVu
c2lnbmVkIG1fY29tcHV0aW5nUm9vdFN0eWxlRm9udENvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggZWI0ZjI4YmQzMzA3ZTQ3NGRiYTdhM2UyNmFhN2NhMDA1NjNmNTYxMi4u
Njk1NDVmYmZlNmUxNTMyNWQxZDY5NzVlYjQ1NjY5YTk5ZWM0MTA5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC0zNyw4ICszNywxMSBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRp
b24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDYWNoZWRGcmFt
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycy5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgpAQCAtNzQsNiArNzcsNyBAQAog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvY3VzRXZlbnQuaCIKICNp
bmNsdWRlICJGb250RmFjZVNldC5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgpAQCAtNjM5LDYgKzY0Myw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3Vt
CiAgICAgLCBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6
OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQpCiAgICAgLCBtX3NoYXJlZE9iamVj
dFBvb2xDbGVhclRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmNsZWFyU2hhcmVkT2JqZWN0UG9vbCkK
ICAgICAsIG1fZm9udFNlbGVjdG9yKENTU0ZvbnRTZWxlY3Rvcjo6Y3JlYXRlKCp0aGlzKSkKKyAg
ICAsIG1fZm9udExvYWRpbmdUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpmb250TG9hZGluZ1RpbWVy
RmlyZWQpCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKCp0aGlzLCAmRG9j
dW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCiAgICAgLCBtX2Nvb2tp
ZUNhY2hlRXhwaXJ5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNh
Y2hlKQogICAgICwgbV9zb2NrZXRQcm92aWRlcihwYWdlKCkgPyAmcGFnZSgpLT5zb2NrZXRQcm92
aWRlcigpIDogbnVsbHB0cikKQEAgLTc1OCw3ICs3NjMsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50
KCkKICAgICBleHRlbnNpb25TdHlsZVNoZWV0cygpLmRldGFjaEZyb21Eb2N1bWVudCgpOwogCiAg
ICAgc3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2ZXIoKTsgLy8gV2UgbmVlZCB0byBkZXN0cm95IENT
U0ZvbnRTZWxlY3RvciBiZWZvcmUgZGVzdHJveWluZyBtX2NhY2hlZFJlc291cmNlTG9hZGVyLgot
ICAgIG1fZm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICBzdG9w
TG9hZGluZ0FuZENsZWFyRm9udHMoKTsKIAogICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIG11bHRp
cGxlIERvY3VtZW50cyB0byBlbmQgdXAgcmVmZXJlbmNpbmcgdGhlIHNhbWUgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgKGUuZy4sIFNWR0ltYWdlcwogICAgIC8vIGxvYWQgdGhlIGluaXRpYWwgZW1wdHkg
ZG9jdW1lbnQgYW5kIHRoZSBTVkdEb2N1bWVudCB3aXRoIHRoZSBzYW1lIERvY3VtZW50TG9hZGVy
KS4KQEAgLTgwNyw3ICs4MTIsNyBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAg
ICAgICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogICAgICAgICBtX3BlbmRp
bmdSZW5kZXJUcmVlVGV4dFVwZGF0ZSA9IHsgfTsKIAotICAgICAgICBtX2ZvbnRTZWxlY3Rvci0+
c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CisgICAgICAgIHN0b3BMb2FkaW5nQW5kQ2xlYXJG
b250cygpOwogCiAgICAgICAgIGRldGFjaFBhcnNlcigpOwogCkBAIC0yMDYyLDcgKzIwNjcsNyBA
QCB2b2lkIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSB0eXBlKQogCiAg
ICAgICAgIG1faW5TdHlsZVJlY2FsYyA9IGZhbHNlOwogCi0gICAgICAgIGZvbnRTZWxlY3Rvcigp
LmxvYWRQZW5kaW5nRm9udHMoKTsKKyAgICAgICAgbG9hZFBlbmRpbmdGb250cygpOwogCiAgICAg
ICAgIGlmIChzdHlsZVVwZGF0ZSkgewogICAgICAgICAgICAgdXBkYXRlUmVuZGVyVHJlZShXVEZN
b3ZlKHN0eWxlVXBkYXRlKSk7CkBAIC0yNzEyLDYgKzI3MTcsMTEgQEAgdm9pZCBEb2N1bWVudDo6
cmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCkKICNlbmRpZgogfQogCit2
b2lkIERvY3VtZW50OjpzdXNwZW5kRm9udExvYWRpbmdUaW1lcigpCit7CisgICAgbV9mb250TG9h
ZGluZ1RpbWVyLnN0b3AoKTsKK30KKwogYm9vbCBEb2N1bWVudDo6c2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QKIHsKICAgICAvLyBCeXBhc3MgdGhpcyBw
b2xpY3kgd2hlbiB0aGUgd29ybGQgaXMga25vd24sIGFuZCBpdCBub3QgdGhlIG5vcm1hbCB3b3Js
ZC4KQEAgLTI5OTcsNiArMzAwNyw3MiBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQog
ICAgIHNldFJlYWR5U3RhdGUoTG9hZGluZyk7CiB9CiAKK0ZvbnRMb2FkUmVxdWVzdCogRG9jdW1l
bnQ6OmZvbnRMb2FkUmVxdWVzdChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRp
YXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVlU291cmNl
IGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCit7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9w
dGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpOworICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5p
dGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uOjpEb1BvbGljeUNoZWNrOworICAgIG9wdGlvbnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSA9IGxvYWRlZEZyb21PcGFxdWVTb3VyY2U7CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoY29tcGxldGVVUkwodXJsKSksIG9wdGlvbnMpOworICAg
IHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5j
c3MpOworICAgIHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Rm9udChXVEZN
b3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVfb3IobnVsbHB0cikuZ2V0KCk7Cit9CisKK3ZvaWQg
RG9jdW1lbnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKEZvbnRMb2FkUmVxdWVzdCYgcmVxdWVzdCkK
K3sKKyAgICBBU1NFUlQoaXM8Q2FjaGVkRm9udD4ocmVxdWVzdCkpOworICAgIGF1dG8mIGZvbnQg
PSBkb3duY2FzdDxDYWNoZWRGb250PihyZXF1ZXN0KTsKKworICAgIG1fZm9udHNUb0JlZ2luTG9h
ZGluZy5hcHBlbmQoJmZvbnQpOworICAgIC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBjb3VudCBu
b3csIGluIG9yZGVyIHRvIHByZXZlbnQgZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRpc3BhdGNo
ZWQKKyAgICAvLyBhZnRlciB0aGlzIGZvbnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBiZWZvcmUg
aXQgYmVnYW4gbG9hZGluZy4gQmFsYW5jZWQgYnkKKyAgICAvLyBkZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKSBpbiBmb250TG9hZGluZ1RpbWVyRmlyZWQoKSBhbmQgaW4gc3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKCkuCisgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+aW5jcmVtZW50UmVxdWVzdENv
dW50KGZvbnQpOworCisgICAgaWYgKCFtX2lzU3VzcGVuZGVkICYmICFtX2ZvbnRMb2FkaW5nVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgw
X3MpOworfQorCit2b2lkIERvY3VtZW50Ojpsb2FkUGVuZGluZ0ZvbnRzKCkKK3sKKyAgICBpZiAo
bV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2FkaW5nOworICAgIGZvbnRzVG9C
ZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpOworCisgICAgZm9yIChhdXRv
JiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykgeworICAgICAgICBmb250SGFuZGxl
LT5iZWdpbkxvYWRJZk5lZWRlZChtX2NhY2hlZFJlc291cmNlTG9hZGVyKTsKKyAgICAgICAgLy8g
QmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24o
KS4KKyAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50
KCpmb250SGFuZGxlKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmZvbnRMb2FkaW5nVGlt
ZXJGaXJlZCgpCit7CisgICAgbG9hZFBlbmRpbmdGb250cygpOworCisgICAgLy8gRklYTUU6IFVz
ZSBTdWJyZXNvdXJjZUxvYWRlciBpbnN0ZWFkLgorICAgIC8vIENhbGwgRnJhbWVMb2FkZXI6Omxv
YWREb25lIGJlZm9yZSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VMb2FkRG9uZSB0byBtYXRjaCB0
aGUgb3JkZXIgaW4gU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUuCisgICAgbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlci0+bG9hZERvbmUoTG9hZENvbXBsZXRpb25UeXBlOjpGaW5pc2gpOworICAg
IC8vIEVuc3VyZSB0aGF0IGlmIHRoZSByZXF1ZXN0IGNvdW50IHJlYWNoZXMgemVybywgdGhlIGZy
YW1lIGxvYWRlciB3aWxsIGtub3cgYWJvdXQgaXQuCisgICAgLy8gTmV3IGZvbnQgbG9hZHMgbWF5
IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQgYWZ0ZXIgdGhlIGRvY3VtZW50IGxvYWQgaXMgY29tcGxl
dGUgYnV0IGJlZm9yZSB3ZSBoYXZlIGRpc3BhdGNoZWQKKyAgICAvLyBkaWRGaW5pc2hMb2FkaW5n
IGZvciB0aGUgZnJhbWUuIE1ha2Ugc3VyZSB0aGUgZGVsZWdhdGUgaXMgYWx3YXlzIGRpc3BhdGNo
ZWQgYnkgY2hlY2tpbmcgZXhwbGljaXRseS4KKyAgICBpZiAoZnJhbWUoKSkKKyAgICAgICAgZnJh
bWUoKS0+bG9hZGVyKCkuY2hlY2tMb2FkQ29tcGxldGUoKTsKK30KKwordm9pZCBEb2N1bWVudDo6
c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkKK3sKKyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3Rv
cCgpOworICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IG1fZm9udHNUb0JlZ2luTG9hZGluZykg
eworICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxv
YWRpbmdGb250U29vbigpLgorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOworICAgIH0KKyAgICBtX2ZvbnRzVG9CZWdpbkxv
YWRpbmcuY2xlYXIoKTsKKyAgICBtX2ZvbnRTZWxlY3Rvci0+Y2xlYXJGb250cygpOworfQorCiBI
VE1MQm9keUVsZW1lbnQqIERvY3VtZW50Ojpib2R5KCkgY29uc3QKIHsKICAgICBhdXRvKiBlbGVt
ZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CkBAIC01NTE2LDYgKzU1OTIsOCBAQCB2b2lkIERvY3Vt
ZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIG1fdmlzdWFsVXBk
YXRlc0FsbG93ZWQgPSBmYWxzZTsKICAgICBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVy
LnN0b3AoKTsKIAorICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7CisKICAgICBtX2lzU3Vz
cGVuZGVkID0gdHJ1ZTsKIH0KIApAQCAtNTU0NCw2ICs1NjIyLDkgQEAgdm9pZCBEb2N1bWVudDo6
cmVzdW1lKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogCiAgICAgbV9pc1N1c3BlbmRlZCA9
IGZhbHNlOwogCisgICAgaWYgKCFtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQorICAg
ICAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKSAmJiByZWFzb24gPT0gUmVhc29uRm9yU3Vz
cGVuc2lvbjo6QmFja0ZvcndhcmRDYWNoZSkKICAgICAgICAgc2V0U2VydmljZVdvcmtlckNvbm5l
Y3Rpb24oJlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNv
bm5lY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFmOWE4M2JmZDI2NGE0ZTE0MGUz
YzFmMTM4YmZhYzRmMjU3OTQyOGIuLjQ5ZTg4MzhlMjlkOTcwZWY4MmI2ZTJmMjEzNjNiNTA2YTQw
Y2M3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oIgorI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FudmFzQmFzZS5oIgogI2luY2x1
ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgpAQCAtMTAyLDYgKzEwMyw3
IEBAIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBj
bGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENh
Y2hlZEZvbnQ7CiBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIENhY2hlZFNjcmlwdDsKQEAgLTEzNyw2ICsxMzksNyBAQCBjbGFzcyBFeHRl
bnNpb25TdHlsZVNoZWV0czsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNs
YXNzIEZvbnRGYWNlU2V0OworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgRm9ybUNvbnRy
b2xsZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwpAQCAtNjMzLDYgKzYz
Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmREZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlv
blVwZGF0ZXMoKTsKICAgICB2b2lkIHJlc3VtZURldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBk
YXRlcygpOwogCisgICAgdm9pZCBzdXNwZW5kRm9udExvYWRpbmdUaW1lcigpOworCiAgICAgUmVu
ZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVmlldy5nZXQoKTsg
fQogCiAgICAgYm9vbCByZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZDsgfQpAQCAtMTY0NywxMCArMTY1MiwxNiBAQCBwcml2
YXRlOgogCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIENTU0ZvbnRTZWxlY3Rv
ciogY3NzRm9udFNlbGVjdG9yKCkgZmluYWwgeyByZXR1cm4gbV9mb250U2VsZWN0b3IucHRyKCk7
IH0KKyAgICBGb250TG9hZFJlcXVlc3QqIGZvbnRMb2FkUmVxdWVzdChTdHJpbmcmLCBib29sLCBi
b29sLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luTG9hZGlu
Z0ZvbnRTb29uKEZvbnRMb2FkUmVxdWVzdCYpIGZpbmFsOwogCiAgICAgLy8gRm9udFNlbGVjdG9y
Q2xpZW50CiAgICAgdm9pZCBmb250c05lZWRVcGRhdGUoRm9udFNlbGVjdG9yJikgZmluYWw7CiAK
KyAgICB2b2lkIGxvYWRQZW5kaW5nRm9udHMoKTsKKyAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJG
aXJlZCgpOworICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CisKICAgICBib29s
IGlzRG9jdW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwpAQCAtMTk4Miw2ICsxOTkz
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbV9kb2N1bWVudEZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUw7CiAKICAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBtX2Zv
bnRTZWxlY3RvcjsKKyAgICBUaW1lciBtX2ZvbnRMb2FkaW5nVGltZXI7CisgICAgVmVjdG9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmc7CiAK
ICAgICBXZWFrSGFzaFNldDxNZWRpYVByb2R1Y2VyPiBtX2F1ZGlvUHJvZHVjZXJzOwogICAgIFdl
YWtQdHI8U3BlZWNoUmVjb2duaXRpb24+IG1fYWN0aXZlU3BlZWNoUmVjb2duaXRpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzc3Mzgz
MWI4OGMyYjAyYjA1YmMyZmZiNmYwNTNlOGRhZjFhNWY3YS4uMWZhNDAyNWQ2NDQwZTk4MjJmYWM3
NmI5NmM3NDlmNmIzY2M0M2QxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcApAQCAtMjMyLDYgKzIzMiwxMSBAQCBGb250Q2FjaGUmIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSgpCiAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCk7CiB9CiAKK0ZvbnRMb2FkUmVxdWVzdCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9u
dExvYWRSZXF1ZXN0KFN0cmluZyYsIGJvb2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2Up
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Zm9yRWFjaEFjdGl2ZURPTU9iamVjdChjb25zdCBGdW5jdGlvbjxTaG91bGRDb250aW51ZShB
Y3RpdmVET01PYmplY3QmKT4mIGFwcGx5KSBjb25zdAogewogICAgIC8vIEl0IGlzIG5vdCBhbGxv
d2VkIHRvIHJ1biBhcmJpdHJhcnkgc2NyaXB0IG9yIGNvbnN0cnVjdCBuZXcgQWN0aXZlRE9NT2Jq
ZWN0cyB3aGlsZSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIgQWN0aXZlRE9NT2JqZWN0cy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGU4YmYwZWZjYjZi
YmExMjYwZjBhOTBiNzk3NTQzODE2YjBkZjFiYmIuLjdkM2NkZGQ2NTM2ZGU1N2QxZGEzYjYzMjlh
NDllYTUyODc4YzgwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgog
I2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC02Niw2
ICs2Nyw3IEBAIGNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBFdmVudExvb3BUYXNrR3JvdXA7CiBj
bGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEZvbnRDYWNoZTsKK2NsYXNzIEZvbnRMb2FkUmVxdWVz
dDsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgUHVibGljVVJMTWFuYWdlcjsKIGNsYXNzIFJl
amVjdGVkUHJvbWlzZVRyYWNrZXI7CkBAIC0xNjUsNiArMTY3LDggQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwogICAgIHZpcnR1YWwgQ1NTRm9udFNlbGVj
dG9yKiBjc3NGb250U2VsZWN0b3IoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBG
b250TG9hZFJlcXVlc3QqIGZvbnRMb2FkUmVxdWVzdChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywg
Ym9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9t
T3BhcXVlU291cmNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9u
dExvYWRSZXF1ZXN0JikgeyB9CiAKICAgICB2b2lkIHJlZigpIHsgcmVmU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGM0
ZTQ2ZTg3MmM2YTZkMDIzMTdlYjE4MjE1NTI1NjNmZmVhNTVjZmEuLjRkODU1NjRjMDQ3ZmU5NDZk
MTJkYTAzZjdkNzM0OTk0MjIyNTNjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcApAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BM
b2FkaW5nKCkKICAgICBjYW5jZWxBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMpOwog
CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZG9j
dW1lbnQtPmZvbnRTZWxlY3RvcigpLnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CisgICAgICAg
IGRvY3VtZW50LT5zdXNwZW5kRm9udExvYWRpbmdUaW1lcigpOwogCiAgICAgLy8gQXBwY2FjaGUg
dXNlcyBSZXNvdXJjZUhhbmRsZSBkaXJlY3RseSwgRG9jdW1lbnRMb2FkZXIgZG9lc24ndCBjb3Vu
dCB0aGVzZSBsb2Fkcy4KICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5zdG9wTG9hZGluZ0lu
RnJhbWUoKm1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRM
b2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk2YjUwNGIxY2Q3OTc2YTI5NTM2ZWZhZjNmYjJkZmU4ODE3OTU5NDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmgKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250VGFnZ2VkU2V0dGluZ3MuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRm9udDsKK2NsYXNzIEZvbnREZXNjcmlwdGlvbjsKK2NsYXNzIEZvbnRMb2FkUmVx
dWVzdDsKK3N0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwordXNpbmcgRm9udEZl
YXR1cmVTZXR0aW5ncyA9IEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+OworCitjbGFzcyBGb250TG9h
ZFJlcXVlc3RDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZvbnRMb2FkUmVxdWVzdENs
aWVudCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChGb250TG9hZFJl
cXVlc3QmKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEZvbnRDbGllbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorfTsKKworY2xhc3MgRm9udExvYWRSZXF1ZXN0IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0
dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRp
bmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJl
U2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCopID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZFNWR0ZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRk9OVExPQURSRVFVRVNUQ0xJRU5UKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRl
KSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGb250TG9hZFJlcXVlc3RDbGllbnQm
IGNsaWVudCkgeyByZXR1cm4gY2xpZW50LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05UTE9BRFJF
UVVFU1QoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdCYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC5wcmVk
aWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDk3NDE5ZWVlNzQxOWY4MGFhZGFmZTgy
NDU1OTBkZmVkNjRlOTc3MmUuLjRlMGE4MTJmNjNhZDlhYzI1YjY1NzcxYmY0MDdlYzI1ZGNlYWY3
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTEz
Nyw2ICsxMzcsMjAgQEAgRm9udFBsYXRmb3JtRGF0YSBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFG
cm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJgogICAgIHJldHVybiBmb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBib2xkLCBp
dGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKTsKIH0KIAordm9p
ZCBDYWNoZWRGb250OjpzZXRDbGllbnQoRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBjbGllbnQpCit7
CisgICAgaWYgKG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50ID09IGNsaWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50KQorICAgICAgICByZW1vdmVD
bGllbnQoZG93bmNhc3Q8Q2FjaGVkRm9udENsaWVudD4oKm1fZm9udExvYWRSZXF1ZXN0Q2xpZW50
KSk7CisKKyAgICBpZiAoY2xpZW50KQorICAgICAgICBhZGRDbGllbnQoZG93bmNhc3Q8Q2FjaGVk
Rm9udENsaWVudD4oKmNsaWVudCkpOworCisgICAgbV9mb250TG9hZFJlcXVlc3RDbGllbnQgPSBj
bGllbnQ7Cit9CisKIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQoKQogewogICAg
IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCA2MjY3Nzg4ZjE3ZTVlYjQyMGE1OTQ0ODg0YzQ0NWEz
MGEwN2Y5ZjVjLi42ZTk0NGI3MWFjZjdjOTgyOGI5YzQ2MTEzMjBiOGNkZWRmMDRjZjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlRleHRGbGFncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0
NCw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAotY2xhc3MgQ2FjaGVkRm9udCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CitjbGFzcyBDYWNoZWRGb250IDogcHVibGljIENhY2hlZFJlc291cmNl
LCBwdWJsaWMgRm9udExvYWRSZXF1ZXN0IHsKIHB1YmxpYzoKICAgICBDYWNoZWRGb250KENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUph
ciosIFR5cGUgPSBUeXBlOjpGb250UmVzb3VyY2UpOwogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnQo
KTsKQEAgLTUxLDExICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbkxvYWRJZk5lZWRl
ZChDYWNoZWRSZXNvdXJjZUxvYWRlciYpOwogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
biwgYm9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3Jt
RGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRp
bmdzJiwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyk7CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXMpOworICAgIC8vIEZvbnRMb2FkUmVxdWVzdAorICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OnVybCgpOyB9CisgICAgYm9v
bCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYWNoZWRSZXNvdXJjZTo6aXNMb2Fk
aW5nKCk7IH0KKyAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBD
YWNoZWRSZXNvdXJjZTo6ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGlj
LCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllcykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldENsaWVudChGb250TG9hZFJlcXVlc3RD
bGllbnQqKSBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZv
cm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBi
b29sIGl0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXMpOwpAQCAtNzYsOCArODQsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIAorICAgIGJvb2wgaXNDYWNoZWRGb250
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgYm9vbCBtX2xvYWRJbml0aWF0
ZWQ7CiAgICAgYm9vbCBtX2hhc0NyZWF0ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2U7CisgICAg
Rm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIg
fTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CiAKQEAgLTg2LDQgKzk3LDEzIEBAIHByaXZhdGU6CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQUNIRURfUkVTT1VS
Q0UoQ2FjaGVkRm9udCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNvdXJjZSkKK25hbWVz
cGFjZSBXVEYgewordGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CitjbGFzcyBUeXBlQ2FzdFRy
YWl0czxjb25zdCBXZWJDb3JlOjpDYWNoZWRGb250LCBBcmdUeXBlLCBmYWxzZSAvKiBpc0Jhc2VU
eXBlICovPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUoQXJnVHlwZSYgc291
cmNlKSB7IHJldHVybiBpc1R5cGUoc291cmNlKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIHsgcmV0dXJuIHJlc291cmNl
LnR5cGUoKSA9PSBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOyB9
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdCYg
cmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC5pc0NhY2hlZEZvbnQoKTsgfQorfTsKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKaW5kZXggNTBl
NjNmNTljYTM0NDdjMjJhOTZmYzlmYzcxNjE4ZDMxYjZkMjBjMi4uZjIzYTFjYmRhNDFkMzA2Yzk4
NmQ2Y2I4YmU5YWM4MmU2YmI4MmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udENsaWVudC5oCkBAIC0yNSwxOCArMjUsMjIgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDYWNoZWRGb250OwotCi1jbGFz
cyBDYWNoZWRGb250Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKK2NsYXNz
IENhY2hlZEZvbnRDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBG
b250TG9hZFJlcXVlc3RDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnRD
bGllbnQoKSA9IGRlZmF1bHQ7CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBl
eHBlY3RlZFR5cGUoKSB7IHJldHVybiBGb250VHlwZTsgfQogICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBleHBl
Y3RlZFR5cGUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250JiBmb250KSB7IEZvbnRM
b2FkUmVxdWVzdENsaWVudDo6Zm9udExvYWRlZChmb250KTsgfQorCitwcml2YXRlOgorICAgIGJv
b2wgaXNDYWNoZWRGb250Q2xpZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZPTlRM
T0FEUkVRVUVTVENMSUVOVChXZWJDb3JlOjpDYWNoZWRGb250Q2xpZW50LCBpc0NhY2hlZEZvbnRD
bGllbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmlu
ZGV4IDJlMWQ2YmE4YjFjMTdmODMzMTk3NjZkYWZjNGE0ZDRiMjlkNTlkYWIuLjk0MmUxN2U1NGNj
Y2VhMTA0N2VkNjkzZWYxZTc3ODZkOWVlMGJjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNDksNiArNDksOCBAQCBwcml2YXRlOgogICAgIFNW
R0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZv
bnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKKyAgICBib29sIGlzQ2FjaGVk
U1ZHRm9udCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0
ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50OwpAQCAtNTcsNCArNTksMTIgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9SRVNPVVJDRShDYWNoZWRTVkdG
b250LCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U1ZHRm9udFJlc291cmNlKQorbmFtZXNwYWNlIFdU
RiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK2NsYXNzIFR5cGVDYXN0VHJhaXRzPGNv
bnN0IFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQsIEFyZ1R5cGUsIGZhbHNlIC8qIGlzQmFzZVR5cGUg
Ki8+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJiBzb3VyY2Up
IHsgcmV0dXJuIGlzVHlwZShzb3VyY2UpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgeyByZXR1cm4gcmVzb3VyY2UudHlw
ZSgpID09IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpUeXBlOjpTVkdGb250UmVzb3VyY2U7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0JiBy
ZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LmlzQ2FjaGVkU1ZHRm9udCgpOyB9Cit9OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4N2ZjNThj
MWI0MTM4YzE3NmI5YjNhNmMwMTkwN2NlYzBmOTdhZTU5Li43NzUyYWY5NTUyYjU3NDM0NmQ2Mjhk
NGY3ZmE4Zjc2YzM2MGQ0OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtMTEyLDggKzExMiw2IEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+V29y
a2VyR2xvYmFsU2NvcGUoKQogICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJz
KGxvY2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIH0KIAotICAgIGlmICht
X2Nzc0ZvbnRTZWxlY3RvcikKLSAgICAgICAgbV9jc3NGb250U2VsZWN0b3ItPnN0b3BMb2FkaW5n
QW5kQ2xlYXJGb250cygpOwogICAgIG1fcGVyZm9ybWFuY2UgPSBudWxscHRyOwogICAgIG1fY3J5
cHRvID0gbnVsbHB0cjsKIAo=
</data>
<flag name="commit-queue"
          id="445325"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425385</attachid>
            <date>2021-04-07 05:06:22 -0700</date>
            <delta_ts>2021-04-07 06:22:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210407130620.patch</filename>
            <type>text/plain</type>
            <size>49820</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uMTAyNDZjZjg3MWE0OGZhYTgzNGE0NTliM2ExMGVj
YjViYjI0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6IFVwZGF0ZSB0byBub3QgcmVxdWlyZSBEb2N1bWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKToKKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGlu
c3RlYWQgb2YgQ2FjaGVkRm9udC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNl
OjpDU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJj
ZTo6fkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU291cmNlOjpmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpp
c1NWR0ZvbnRGYWNlU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDogVXBkYXRlIHRv
IHVzZSBGb250TG9hZFJlcXVlc3QgYW5kCisgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2VTcmNWYWx1ZS5oOgorCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6IFJl
bW92ZSBEb2N1bWVudC1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNl
bGVjdG9yOjpDU1NGb250U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVj
dG9yOjp+Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Y2xlYXJGb250cyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDogQWRkIERvY3VtZW50LXNwZWNpZmljIGZvbnQtbG9hZGlu
ZyBjb2RlIGZyb20KKyAgICAgICAgICBDU1NGb250U2VsZWN0b3IgYW5kIENTU0ZvbnRGYWNlU3Jj
VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVzb2x2ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNw
ZW5kRm9udExvYWRpbmdUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpiZWdpbkxvYWRpbmdGb250
U29vbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bG9hZFBlbmRpbmdGb250cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udExvYWRpbmdUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc3VtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IEFkZCBmdW5jdGlvbnMgdG8gaW5pdGlhdGUgZm9u
dCBsb2FkIHJlcXVlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Zm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YmVnaW5Mb2Fk
aW5nRm9udFNvb24pOgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVXBk
YXRlIGR1ZSB0byBvdGhlciBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN0b3BMb2FkaW5nKToKKworICAgICAgICAqIGxvYWRlci9Gb250TG9hZFJlcXVlc3QuaDog
QWRkZWQuIEFuIGludGVyZmFjZSB0byBtYW5hZ2UgZm9udCBsb2FkaW5nCisgICAgICAgICAgdGhh
dCBhYnN0cmFjdHMgc29tZSBvZiB0aGUgYmVoYXZpb3VyIG9mIENhY2hlZFJlc291cmNlLCBDYWNo
ZWRGb250IGFuZAorICAgICAgICAgIENhY2hlZEZvbnRDbGllbnQuCisgICAgICAgIChXZWJDb3Jl
OjpGb250TG9hZFJlcXVlc3RDbGllbnQ6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojppc0NhY2hlZEZvbnRDbGllbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZEZvbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Ojppc0NhY2hlZFNWR0ZvbnQgY29uc3QpOgorCisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOiBJbXBsZW1lbnQgRm9udExvYWRS
ZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnRDbGllbnQuaDogSW1wbGVtZW50IEZvbnRMb2FkUmVxdWVzdENsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnRDbGllbnQ6OmZvbnRMb2FkZWQpOgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDogVXBkYXRlIHR5cGUtY2FzdCB0cmFpdHMu
CisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDogUmVtb3ZlIG5vdy1y
ZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJH
bG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwogMjAyMS0wNC0wNSAgQ2hyaXMgTG9y
ZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlkaUNvbnRleHQgY2FjaGluZyBpcyBu
b3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFhMzkxODJkNDA2ZjYzMGE5MWU5
NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjJlOWIwOTNlZDk5ODMzY2RlZTY0MTljNGY0OWZjNmFlZmE2
NjA3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzc2LDYgKzc3Niw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsb2FkZXIvRW1wdHlDbGllbnRzLmgKICAg
ICBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCiAgICAgbG9hZGVyL0ZldGNoT3B0aW9u
cy5oCisgICAgbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCiAgICAgbG9hZGVyL0Zvcm1TdGF0ZS5o
CiAgICAgbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKICAgICBsb2FkZXIvRnJhbWVMb2FkUmVxdWVz
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNzUzMDJkYjBkMGM2ODIyMzFmNTYyZmU5MDhjOWViMTUxMWIzZjk2MS4uN2VhNmQ0
Y2QzOThkYzEzZDUwNmZhNDhmZmQ0ZjA3ZDY2OGY5YWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA0Miw2ICsyMDQyLDcg
QEAKIAkJNjU2NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUVCMDlEMTUwOEQwMDBF
NjFENyAvKiBYTGlua05hbWVzLmggKi87IH07CiAJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAv
KiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU2RDM3MUEwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2
RDM3MzYwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcxRTBBREJBNURFMDBBNDU1NEQg
LyogRG9jdW1lbnRMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4
NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3M0EwQURCQTVERTAwQTQ1NTRE
IC8qIEZvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzNDMEFEQkE1REUw
MEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MjQwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3
M0UwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcyNjBBREJBNURFMDBBNDU1NEQg
LyogRnJhbWVMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTc2MSw2ICs5NzYyLDcgQEAKIAkJNjU2RDM3MUUwQURCQTVERTAw
QTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEb2N1bWVudExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udExvYWRSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBG
cmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjYwQURCQTVERTAwQTQ1
NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNzU4NSw2ICsyNzU4Nyw3IEBACiAJCQkJQ0VCQjhDMzIyMDc4NkRDQjAw
MDM5NTQ3IC8qIEZldGNoSWRpb21zLmNwcCAqLywKIAkJCQlDRUJCOEMzMTIwNzg2RENCMDAwMzk1
NDcgLyogRmV0Y2hJZGlvbXMuaCAqLywKIAkJCQk0MUFENzUzOTFDRUY2QkNFMDBBMzE0ODYgLyog
RmV0Y2hPcHRpb25zLmggKi8sCisJCQkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRM
b2FkUmVxdWVzdC5oICovLAogCQkJCTY1NkQzNzIzMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3Rh
dGUuY3BwICovLAogCQkJCTY1NkQzNzIyMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCAq
LywKIAkJCQk0MTg4NUI5MjExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwICov
LApAQCAtMzI0MjYsNiArMzI0MjksNyBAQAogCQkJCTFDMjRFRUE1MUM3MjlDRTQwMDgwRjhGQyAv
KiBGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMxMkFDMkIxRUU3NzhBRTAwNzlF
MEEwIC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MkVFM0E3MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNTMyRjI1NjA1N0NEMDAyOEM1OTIgLyogRm9u
dExvYWRUaW1pbmdPdmVycmlkZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0NTY4MDgxMkI5MERB
NjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEy
MkEyNEU5MDAyRDE0NDAgLyogRm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA4MTcxYWNjZWE3ZWY0N2NiMTUzOTk1ZTk0YWE4
YTAxMTlkN2FlMzYwLi4wNWNiMzQ1OTdlNWEyNDNmZDUwNmNmNGE4Y2E3NDFkYmM3ZDVjNzg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc2LDEwICs3Niw5IEBAIHZvaWQgQ1NT
Rm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxp
c3QmIHNyY0xpc3QsIFNjCiAgICAgICAgIGlmICghaXRlbS5pc0xvY2FsKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0IGF1dG8qIHNldHRpbmdzID0gY29udGV4dCA/ICZjb250ZXh0LT5zZXR0aW5nc1Zh
bHVlcygpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9IGZv
dW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFyeUZv
bnRzRW5hYmxlZCk7Ci0gICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlz
U3VwcG9ydGVkRm9ybWF0KCkgJiYgaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwotICAg
ICAgICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250
KCZkb2N1bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgZG9jdW1lbnQuZm9udFNl
bGVjdG9yKCksICpjYWNoZWRGb250KTsKKyAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5n
ICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBmb250UmVxdWVzdCA9IGl0ZW0uZm9udExvYWRSZXF1ZXN0KGNvbnRleHQsIGZvdW5kU1ZHRm9u
dCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCisgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNl
LCBpdGVtLnJlc291cmNlKCksICpjb250ZXh0LT5jc3NGb250U2VsZWN0b3IoKSwgKmZvbnRSZXF1
ZXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzb3VyY2Ug
PSAoZm9udEZhY2VFbGVtZW50ID8gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZh
Y2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmZvbnRGYWNlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGJjMzIzYzJmMmVjMDFhNzdhZDUwODMzMTEyZTE5
NjAwMzA4YTczZWQuLjA4YTA1MDM0MTMwMTMwYWZhN2Q5NmFhOTMwNjg1YjQ4NzIwYzJiODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVk
ZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHRm9udEVs
ZW1lbnQuaCIKQEAgLTcyLDE5ICs3MywxOSBAQCBDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZh
Y2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbQogewog
fQogCi1DU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93
bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NTRm9udFNlbGVjdG9yJiBmb250
U2VsZWN0b3IsIENhY2hlZEZvbnQmIGZvbnQpCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZh
Y2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVS
SSwgQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIEZvbnRMb2FkUmVxdWVzdCYgcmVxdWVz
dCkKICAgICA6IG1fZmFtaWx5TmFtZU9yVVJJKGZhbWlseU5hbWVPclVSSSkKICAgICAsIG1fZmFj
ZShvd25lcikKICAgICAsIG1fZm9udFNlbGVjdG9yKG1ha2VXZWFrUHRyKGZvbnRTZWxlY3Rvcikp
Ci0gICAgLCBtX2ZvbnQoJmZvbnQpCisgICAgLCBtX2ZvbnRSZXF1ZXN0KCZyZXF1ZXN0KQogewog
ICAgIC8vIFRoaXMgbWF5IHN5bmNocm9ub3VzbHkgY2FsbCBmb250TG9hZGVkKCkuCi0gICAgbV9m
b250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9udFJlcXVlc3QtPnNldENsaWVudCh0aGlz
KTsKIAotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9mb250LT5pc0xv
YWRlZCgpKSB7CisgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVuZGluZyAmJiAhbV9mb250
UmVxdWVzdC0+aXNMb2FkaW5nKCkpIHsKICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGlu
Zyk7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpKSB7Ci0g
ICAgICAgICAgICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICBpZiAo
bV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIHNldFN0YXR1
cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNl
dFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTA5LDggKzExMCw4IEBAIENTU0ZvbnRGYWNl
U291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmlu
ZyYgZmFtaWx5TmFtCiAKIENTU0ZvbnRGYWNlU291cmNlOjp+Q1NTRm9udEZhY2VTb3VyY2UoKQog
ewotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1fZm9udC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
KyAgICBpZiAobV9mb250UmVxdWVzdCkKKyAgICAgICAgbV9mb250UmVxdWVzdC0+c2V0Q2xpZW50
KG51bGxwdHIpOwogfQogCiBib29sIENTU0ZvbnRGYWNlU291cmNlOjpzaG91bGRJZ25vcmVGb250
TG9hZENvbXBsZXRpb25zKCkgY29uc3QKQEAgLTEyMCwyOSArMTIxLDI5IEBAIGJvb2wgQ1NTRm9u
dEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdAogCiB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxM
b2FkaW5nKCkKIHsKLSAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9u
dCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRhKCkgJiYgbV9mYW1pbHlOYW1lT3JVUkku
bGVuZ3RoKCkgPCBNQikKKyAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYmIG1f
Zm9udFJlcXVlc3QgJiYgbV9mb250UmVxdWVzdC0+dXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiBt
X2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQogICAgICAgICBsb2FkKCk7CiB9CiAKLXZv
aWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQoQ2FjaGVkRm9udCYgbG9hZGVkRm9udCkK
K3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQoRm9udExvYWRSZXF1ZXN0JiBmb250
UmVxdWVzdCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGxvYWRlZEZvbnQsICZsb2FkZWRGb250ID09
IG1fZm9udC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChmb250UmVxdWVzdCwgJmZvbnRSZXF1
ZXN0ID09IG1fZm9udFJlcXVlc3QpOwogCiAgICAgaWYgKHNob3VsZElnbm9yZUZvbnRMb2FkQ29t
cGxldGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPENTU0ZvbnRGYWNlPiBwcm90
ZWN0ZWRGYWNlKG1fZmFjZSk7CiAKLSAgICAvLyBJZiB0aGUgZm9udCBpcyBpbiB0aGUgY2FjaGUs
IHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5IGNhbGxlZCBmcm9tIENhY2hlZEZvbnQ6OmFkZENs
aWVudCgpLgorICAgIC8vIElmIHRoZSBmb250IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJl
IHN5bmNocm9ub3VzbHkgY2FsbGVkIGZyb20gRm9udExvYWRSZXF1ZXN0OjphZGRDbGllbnQoKS4K
ICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVzOjpQZW5kaW5nKQogICAgICAgICBzZXRTdGF0dXMo
U3RhdHVzOjpMb2FkaW5nKTsKICAgICBlbHNlIGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1
cmUpIHsKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIHR3aWNlIGlmIGxv
YWRpbmcgd2FzIGNhbmNlbGxlZC4KLSAgICAgICAgQVNTRVJUKG1fZm9udC0+ZXJyb3JPY2N1cnJl
ZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZm9udFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkg
fHwgIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlOYW1lT3JVUkkpKQorICAg
IGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9jY3VycmVkKCkgfHwgIW1fZm9udFJlcXVlc3QtPmVu
c3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5TmFtZU9yVVJJKSkKICAgICAgICAgc2V0U3RhdHVz
KFN0YXR1czo6RmFpbHVyZSk7CiAgICAgZWxzZQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpT
dWNjZXNzKTsKQEAgLTE1NCw5ICsxNTUsMTAgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9h
ZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7
CiAKLSAgICBpZiAobV9mb250KSB7CisgICAgaWYgKG1fZm9udFJlcXVlc3QpIHsKICAgICAgICAg
QVNTRVJUKG1fZm9udFNlbGVjdG9yKTsKLSAgICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9h
ZGluZ0ZvbnRTb29uKCptX2ZvbnQpOworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IG1fZm9u
dFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgICAgICBjb250ZXh0
LT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250UmVxdWVzdCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgIGlmIChtX2hhc1NWR0ZvbnRGYWNl
RWxlbWVudCkgewpAQCAtMTk4LDcgKzIwMCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNv
dXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAK
ICAgICBib29sIHVzZXNJbkRvY3VtZW50U1ZHRm9udCA9IG1faGFzU1ZHRm9udEZhY2VFbGVtZW50
OwogCi0gICAgaWYgKCFtX2ZvbnQgJiYgIXVzZXNJbkRvY3VtZW50U1ZHRm9udCkgeworICAgIGlm
ICghbV9mb250UmVxdWVzdCAmJiAhdXNlc0luRG9jdW1lbnRTVkdGb250KSB7CiAgICAgICAgIGlm
IChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgaWYgKCFtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MTAsMTIgKzIxMiwxMiBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogICAgICAgICByZXR1cm4g
Rm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9m
YW1pbHlOYW1lT3JVUkksICZmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcywg
dHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKG1fZm9udCkgewotICAgICAgICBhdXRvIHN1Y2Nlc3Mg
PSBtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5TmFtZU9yVVJJKTsKKyAgICBp
ZiAobV9mb250UmVxdWVzdCkgeworICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnRSZXF1ZXN0
LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWlseU5hbWVPclVSSSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICAgICAgQVNTRVJUKHN0YXR1cygpID09
IFN0YXR1czo6U3VjY2Vzcyk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9mb250LT5jcmVhdGVG
b250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIHN5bnRoZXRpY0JvbGQsIHN5
bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMpOwor
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZm9udFJlcXVlc3QtPmNyZWF0ZUZvbnQoZm9udERlc2Ny
aXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGlj
LCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcyk7CiAgICAgICAgIEFTU0VS
VChyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTIzMiw3ICsyMzQs
NyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogCiBib29sIENTU0ZvbnRGYWNlU291cmNlOjpp
c1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9oYXNTVkdGb250RmFj
ZUVsZW1lbnQgfHwgaXM8Q2FjaGVkU1ZHRm9udD4obV9mb250LmdldCgpKTsKKyAgICByZXR1cm4g
bV9oYXNTVkdGb250RmFjZUVsZW1lbnQgfHwgaXM8Q2FjaGVkU1ZHRm9udD4obV9mb250UmVxdWVz
dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggNTky
Y2U4MzFjNWE5Mjg2M2UwNGViZGI3NmVmM2FjMThmNTFjMTNiZC4uOWY1OTAzYmRlYzg3ZWYyMDYx
MDFkOTI4NjUyYzY1NzhiZmJiNmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgQ1NTRm9udEZhY2VTb3VyY2UgZmluYWwgOiBw
dWJsaWMgQ2FjaGVkRm9udENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBT
dHJpbmcmIGZhbWlseU5hbWVPclVSSSk7Ci0gICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZh
Y2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NTRm9udFNlbGVjdG9y
JiwgQ2FjaGVkRm9udCYpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYsIEZvbnRM
b2FkUmVxdWVzdCYpOwogICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwg
Y29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFNWR0ZvbnRGYWNlRWxlbWVudCYpOwogICAg
IENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1p
bHlOYW1lT3JVUkksIFJlZjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJik7CiAgICAgdmlydHVhbCB+
Q1NTRm9udEZhY2VTb3VyY2UoKTsKQEAgLTc2LDIyICs3NiwyMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2FkKERvY3VtZW50KiA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxGb250PiBmb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzKTsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnQuZ2V0KCk7IH0KLSAgICBib29sIHJlcXVpcmVzRXh0ZXJuYWxSZXNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udDsgfQorICAgIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1
ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9mb250UmVxdWVzdDsgfQorICAgIGJvb2wgcmVxdWlyZXNF
eHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250UmVxdWVzdDsgfQogCiAgICAg
Ym9vbCBpc1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBz
aG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvbnRM
b2FkZWQoQ2FjaGVkRm9udCYpIG92ZXJyaWRlOworICAgIHZvaWQgZm9udExvYWRlZChGb250TG9h
ZFJlcXVlc3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyk7CiAKICAg
ICBBdG9tU3RyaW5nIG1fZmFtaWx5TmFtZU9yVVJJOyAvLyBVUkkgZm9yIHJlbW90ZSwgYnVpbHQt
aW4gZm9udCBuYW1lIGZvciBsb2NhbC4KICAgICBDU1NGb250RmFjZSYgbV9mYWNlOyAvLyBPdXIg
b3duaW5nIGZvbnQgZmFjZS4KICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2Vs
ZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCi0gICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gbV9mb250OyAvLyBBbHNvIGZvciByZW1v
dGUgZm9udHMsIGEgcG9pbnRlciB0byBvdXIgY2FjaGVkIHJlc291cmNlLgorICAgIEZvbnRMb2Fk
UmVxdWVzdCogbV9mb250UmVxdWVzdCB7IG51bGxwdHIgfTsgLy8gQWxzbyBmb3IgcmVtb3RlIGZv
bnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU3JjVmFsdWUuY3BwCmluZGV4IDUzOWZkNDg4OTY5ZWZhNmZhZDVmZWE0ZDNjOGExN2I3MmY3
MTllZTUuLmNhOTkyYWM5YzRlOGI4YjZlZDNhNzY3ZmU4YmE3YzJjYWE2ZjI3ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTI5LDEwICsyOSwxMSBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9y
cy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03NiwxOSArNzcsMTYgQEAgYm9vbCBDU1NGb250RmFjZVNyY1Zh
bHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0
IEMKICAgICByZXR1cm4gaGFuZGxlcigqbV9jYWNoZWRGb250KTsKIH0KIAotQ2FjaGVkRm9udCog
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
aXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKK0Zv
bnRMb2FkUmVxdWVzdCogQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Zm9udExvYWRSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5n
RWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKIHsKICAgICBpZiAobV9jYWNoZWRGb250KQog
ICAgICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogCi0gICAgUmVzb3VyY2VMb2FkZXJP
cHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpOwotICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
biA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrOwotICAgIG9wdGlvbnMubG9hZGVkRnJvbU9w
YXF1ZVNvdXJjZSA9IG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTsKKyAgICBhdXRvKiByZXF1ZXN0
ID0gY29udGV4dC0+Zm9udExvYWRSZXF1ZXN0KG1fcmVzb3VyY2UsIGlzU1ZHLCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2Up
OworICAgIGlmIChpczxDYWNoZWRGb250PihyZXF1ZXN0KSkKKyAgICAgICAgbV9jYWNoZWRGb250
ID0gJmRvd25jYXN0PENhY2hlZEZvbnQ+KCpyZXF1ZXN0KTsKIAotICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxldGVVUkwobV9y
ZXNvdXJjZSkpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVu
dC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBp
c1NWRykudmFsdWVfb3IobnVsbHB0cik7Ci0gICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsK
KyAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjplcXVh
bHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBjNWRjNTlmZDk2YTFiZTMyODM2MzQ0ZmYx
OWQ5NTg3NzI5MjZkN2I0Li43NDkxZGY2NjVjOWVmN2JkYjJlZmQzMGYwZWIxYWIwNmZjOGRhMWJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTM0LDggKzM0
LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkRm9udDsKLWNsYXNzIERv
Y3VtZW50OworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50
OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgQ1NTRm9udEZhY2VTcmNW
YWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CkBAIC02Niw3ICs2Nyw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKLSAg
ICBDYWNoZWRGb250KiBjYWNoZWRGb250KERvY3VtZW50KiwgYm9vbCBpc1NWRywgYm9vbCBpc0lu
aXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBGb250TG9hZFJlcXVl
c3QqIGZvbnRMb2FkUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgYm9vbCBpc1NWRywg
Ym9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIGJv
b2wgZXF1YWxzKGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBjMTE1NzhjZmM1MDQxMmNiYTZjNTUzMGY5
NGJlOGFhMzYzNDQ3NWNjLi5hY2QyYTFjYzI0ZTM0YzA1NGQwMzc4MjM0ODc3MzdjZmVjN2ZlYjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNjgsNyArNjgsNiBA
QCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogICAgICwgbV9mb250Q2FjaGUobWFrZVJlZihjb250ZXh0LmZvbnRDYWNoZSgp
KSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIoW3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0p
Ci0gICAgLCBtX2ZvbnRMb2FkaW5nVGltZXIoKnRoaXMsICZDU1NGb250U2VsZWN0b3I6OmZvbnRM
b2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fdW5pcXVlSWQoKytmb250U2VsZWN0b3JJZCkKICAg
ICAsIG1fdmVyc2lvbigwKQogewpAQCAtOTMsNyArOTIsNyBAQCBDU1NGb250U2VsZWN0b3I6On5D
U1NGb250U2VsZWN0b3IoKQogewogICAgIExPRyhGb250cywgIkNTU0ZvbnRTZWxlY3RvciAlcCBk
dG9yIiwgdGhpcyk7CiAKLSAgICBzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICBjbGVh
ckZvbnRzKCk7CiAgICAgbV9mb250Q2FjaGUtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKQEAg
LTMzNiw5NCArMzM1LDEzIEBAIEZvbnRSYW5nZXMgQ1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2Vz
Rm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyCiAgICAgcmV0dXJuIEZv
bnRSYW5nZXMgeyBXVEZNb3ZlKGZvbnQpIH07CiB9CiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpz
dG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQordm9pZCBDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9u
dHMoKQogewotICAgIGlmIChtX2lzU3RvcHBlZCkgewotICAgICAgICBBU1NFUlQoIW1fZm9udExv
YWRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9h
ZGluZy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgbV9pc1N0b3Bw
ZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7Ci0KLSAgICBpZiAoaXM8
RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpIHsKLSAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0gICAgICAgIENhY2hlZFJlc291cmNlTG9h
ZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVy
KCk7Ci0gICAgICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IG1fZm9udHNUb0JlZ2luTG9hZGlu
ZykgewotICAgICAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4g
YmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KLSAgICAgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVy
LmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9mb250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7Ci0gICAgfQotCiAgICAgbV9jc3NGb250RmFj
ZVNldC0+Y2xlYXIoKTsKICAgICBtX2NsaWVudHMuY2xlYXIoKTsKIH0KIAotdm9pZCBDU1NGb250
U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmIGZvbnQpCi17Ci0gICAg
aWYgKG1faXNTdG9wcGVkIHx8ICFpczxEb2N1bWVudD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1f
Y29udGV4dCk7Ci0KLSAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuYXBwZW5kKCZmb250KTsKLSAg
ICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50
IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNwYXRjaGVkCi0gICAgLy8gYWZ0ZXIgdGhpcyBm
b250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVmb3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFu
Y2VkIGJ5Ci0gICAgLy8gZGVjcmVtZW50UmVxdWVzdENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1l
ckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpLgotICAgIGRvY3VtZW50
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuaW5jcmVtZW50UmVxdWVzdENvdW50KGZvbnQpOwotCi0g
ICAgaWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgJiYgIW1fZm9udExvYWRpbmdUaW1lci5p
c0FjdGl2ZSgpKQotICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7
Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdXNwZW5kRm9udExvYWRpbmdUaW1lcigpCi17
Ci0gICAgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkKTsK
LX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OmxvYWRQZW5kaW5nRm9udHMoKQotewotICAgIGlm
IChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgfHwgIWlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0
KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGluZzsKLSAgICBmb250c1RvQmVnaW5Mb2FkaW5n
LnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsKLQotICAgIC8vIENTU0ZvbnRTZWxlY3RvciBj
b3VsZCBnZXQgZGVsZXRlZCB2aWEgYmVnaW5Mb2FkSWZOZWVkZWQoKSBvciBsb2FkRG9uZSgpIHVu
bGVzcyBwcm90ZWN0ZWQuCi0gICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIg
PSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGZvciAoYXV0byYgZm9udEhh
bmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKLSAgICAgICAgZm9udEhhbmRsZS0+YmVnaW5M
b2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwotICAgICAgICAvLyBCYWxhbmNlcyBp
bmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigpLgotICAgICAg
ICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUp
OwotICAgIH0KLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJl
ZCgpCi17Ci0gICAgaWYgKCFpczxEb2N1bWVudD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29u
dGV4dCk7Ci0gICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0K
LSAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7Ci0KLSAgICAvLyBGSVhNRTogVXNlIFN1YnJlc291cmNl
TG9hZGVyIGluc3RlYWQuCi0gICAgLy8gQ2FsbCBGcmFtZUxvYWRlcjo6bG9hZERvbmUgYmVmb3Jl
IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWREb25lIHRvIG1hdGNoIHRoZSBvcmRlciBpbiBT
dWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4KLSAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLmxvYWREb25lKExvYWRDb21wbGV0aW9uVHlwZTo6RmluaXNoKTsKLSAgICAvLyBF
bnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3VudCByZWFjaGVzIHplcm8sIHRoZSBmcmFtZSBs
b2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgotICAgIC8vIE5ldyBmb250IGxvYWRzIG1heSBiZSB0
cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBkb2N1bWVudCBsb2FkIGlzIGNvbXBsZXRlIGJ1
dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCi0gICAgLy8gZGlkRmluaXNoTG9hZGluZyBmb3Ig
dGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVnYXRlIGlzIGFsd2F5cyBkaXNwYXRjaGVkIGJ5
IGNoZWNraW5nIGV4cGxpY2l0bHkuCi0gICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAg
IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRlKCk7Ci19Ci0KIHNp
emVfdCBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udENvdW50KCkKIHsKICAgICBpZiAobV9p
c1N0b3BwZWQpCkBAIC00NDksMjkgKzM2Nyw0IEBAIFJlZlB0cjxGb250PiBDU1NGb250U2VsZWN0
b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0CiAg
ICAgcmV0dXJuIGZvbnQ7CiB9CiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdG9wKCkKLXsKLSAg
ICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAgIGlmIChtX2lzRm9udExvYWRpbmdT
dXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNGb250TG9hZGluZ1N1c3BlbmRl
ZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBDU1NG
b250U2VsZWN0b3I6OnJlc3VtZSgpCi17Ci0gICAgaWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5k
ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwot
Ci0gICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gZmFsc2U7Ci19Ci0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBlNGFmZjI2YWFhZmYwOGY4Njg2N2UwNDU1OWZh
NDFiNGJiN2U4ZjM3Li40MzQ3ZTg1YTE1NjIzNGE5M2NlYmVkMTQ3YzIzMjZjMjFiNTFhZTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKICAgICBzaXplX3QgZmFsbGJhY2tGb250Q291bnQoKSBmaW5hbDsKICAgICBSZWZQdHI8Rm9u
dD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsK
IAotICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CisgICAgdm9pZCBjbGVhckZv
bnRzKCk7CiAgICAgdm9pZCBlbXB0eUNhY2hlcygpOwogICAgIHZvaWQgYnVpbGRTdGFydGVkKCk7
CiAgICAgdm9pZCBidWlsZENvbXBsZXRlZCgpOwpAQCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICB2b2lkIGJlZ2luTG9hZGluZ0Zv
bnRTb29uKENhY2hlZEZvbnQmKTsKLSAgICB2b2lkIHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7
Ci0KICAgICBGb250RmFjZVNldCogZm9udEZhY2VTZXRJZkV4aXN0cygpOwogICAgIEZvbnRGYWNl
U2V0JiBmb250RmFjZVNldCgpOwogCkBAIC0xMTAsMTIgKzEwNyw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmb250U3R5bGVVcGRhdGVOZWVkZWQoQ1NTRm9udEZhY2UmKSBmaW5hbDsKIAogICAgIHZv
aWQgZm9udE1vZGlmaWVkKCk7Ci0gICAgdm9pZCBmb250TG9hZGluZ1RpbWVyRmlyZWQoKTsKIAog
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIHZvaWQg
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZp
bmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiQ1NTRm9udFNlbGVjdG9yIl9zOyB9CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0ZvbnRG
YWNlUnVsZSB7CkBAIC0xMzAsMTUgKzEyMywxMSBAQCBwcml2YXRlOgogICAgIFJlZjxDU1NGb250
RmFjZVNldD4gbV9jc3NGb250RmFjZVNldDsKICAgICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVu
dCo+IG1fY2xpZW50czsKIAotICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRG
b250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwogICAgIEhhc2hTZXQ8UmVmUHRyPENTU0ZvbnRG
YWNlPj4gbV9jc3NDb25uZWN0aW9uc1Bvc3NpYmx5VG9SZW1vdmU7CiAgICAgSGFzaFNldDxSZWZQ
dHI8U3R5bGVSdWxlRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zRW5jb3VudGVyZWREdXJpbmdC
dWlsZDsKIAogICAgIENTU0ZvbnRGYWNlU2V0OjpGb250TW9kaWZpZWRPYnNlcnZlciBtX2ZvbnRN
b2RpZmllZE9ic2VydmVyOwogCi0gICAgVGltZXIgbV9mb250TG9hZGluZ1RpbWVyOwotICAgIGJv
b2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKLQogICAgIHVuc2lnbmVkIG1f
dW5pcXVlSWQ7CiAgICAgdW5zaWduZWQgbV92ZXJzaW9uOwogICAgIHVuc2lnbmVkIG1fY29tcHV0
aW5nUm9vdFN0eWxlRm9udENvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZWI0ZjI4YmQzMzA3ZTQ3NGRiYTdhM2UyNmFhN2NhMDA1NjNmNTYxMi4uNjk1NDVmYmZlNmUxNTMy
NWQxZDY5NzVlYjQ1NjY5YTk5ZWM0MTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0z
Nyw4ICszNywxMSBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2lu
Y2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDYWNoZWRGcmFtZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgogI2luY2x1
ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgpAQCAtNzQsNiArNzcsNyBAQAogI2luY2x1ZGUgIkZvY3Vz
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvY3VzRXZlbnQuaCIKICNpbmNsdWRlICJGb250RmFj
ZVNldC5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZvcm1Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpA
QCAtNjM5LDYgKzY0Myw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3VtCiAgICAgLCBtX3Zpc3Vh
bFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNT
dXBwcmVzc2lvblRpbWVyRmlyZWQpCiAgICAgLCBtX3NoYXJlZE9iamVjdFBvb2xDbGVhclRpbWVy
KCp0aGlzLCAmRG9jdW1lbnQ6OmNsZWFyU2hhcmVkT2JqZWN0UG9vbCkKICAgICAsIG1fZm9udFNl
bGVjdG9yKENTU0ZvbnRTZWxlY3Rvcjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZm9udExvYWRp
bmdUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpmb250TG9hZGluZ1RpbWVyRmlyZWQpCiAgICAgLCBt
X2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29j
aWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCiAgICAgLCBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGlt
ZXIoKnRoaXMsICZEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKQogICAgICwgbV9z
b2NrZXRQcm92aWRlcihwYWdlKCkgPyAmcGFnZSgpLT5zb2NrZXRQcm92aWRlcigpIDogbnVsbHB0
cikKQEAgLTc1OCw3ICs3NjMsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBleHRlbnNp
b25TdHlsZVNoZWV0cygpLmRldGFjaEZyb21Eb2N1bWVudCgpOwogCiAgICAgc3R5bGVTY29wZSgp
LmNsZWFyUmVzb2x2ZXIoKTsgLy8gV2UgbmVlZCB0byBkZXN0cm95IENTU0ZvbnRTZWxlY3RvciBi
ZWZvcmUgZGVzdHJveWluZyBtX2NhY2hlZFJlc291cmNlTG9hZGVyLgotICAgIG1fZm9udFNlbGVj
dG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICBzdG9wTG9hZGluZ0FuZENsZWFy
Rm9udHMoKTsKIAogICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIG11bHRpcGxlIERvY3VtZW50cyB0
byBlbmQgdXAgcmVmZXJlbmNpbmcgdGhlIHNhbWUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgKGUuZy4s
IFNWR0ltYWdlcwogICAgIC8vIGxvYWQgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQgYW5kIHRo
ZSBTVkdEb2N1bWVudCB3aXRoIHRoZSBzYW1lIERvY3VtZW50TG9hZGVyKS4KQEAgLTgwNyw3ICs4
MTIsNyBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIG1fYXNzb2Np
YXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogICAgICAgICBtX3BlbmRpbmdSZW5kZXJUcmVlVGV4
dFVwZGF0ZSA9IHsgfTsKIAotICAgICAgICBtX2ZvbnRTZWxlY3Rvci0+c3RvcExvYWRpbmdBbmRD
bGVhckZvbnRzKCk7CisgICAgICAgIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAg
ICAgIGRldGFjaFBhcnNlcigpOwogCkBAIC0yMDYyLDcgKzIwNjcsNyBAQCB2b2lkIERvY3VtZW50
OjpyZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSB0eXBlKQogCiAgICAgICAgIG1faW5TdHls
ZVJlY2FsYyA9IGZhbHNlOwogCi0gICAgICAgIGZvbnRTZWxlY3RvcigpLmxvYWRQZW5kaW5nRm9u
dHMoKTsKKyAgICAgICAgbG9hZFBlbmRpbmdGb250cygpOwogCiAgICAgICAgIGlmIChzdHlsZVVw
ZGF0ZSkgewogICAgICAgICAgICAgdXBkYXRlUmVuZGVyVHJlZShXVEZNb3ZlKHN0eWxlVXBkYXRl
KSk7CkBAIC0yNzEyLDYgKzI3MTcsMTEgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lRGV2aWNlTW90
aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCkKICNlbmRpZgogfQogCit2b2lkIERvY3VtZW50Ojpz
dXNwZW5kRm9udExvYWRpbmdUaW1lcigpCit7CisgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3Ao
KTsKK30KKwogYm9vbCBEb2N1bWVudDo6c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5KCkgY29uc3QKIHsKICAgICAvLyBCeXBhc3MgdGhpcyBwb2xpY3kgd2hlbiB0aGUg
d29ybGQgaXMga25vd24sIGFuZCBpdCBub3QgdGhlIG5vcm1hbCB3b3JsZC4KQEAgLTI5OTcsNiAr
MzAwNyw3MiBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAgIHNldFJlYWR5U3Rh
dGUoTG9hZGluZyk7CiB9CiAKK0ZvbnRMb2FkUmVxdWVzdCogRG9jdW1lbnQ6OmZvbnRMb2FkUmVx
dWVzdChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5V
c2VyQWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFx
dWVTb3VyY2UpCit7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgIG9wdGlv
bnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJ
blVzZXJBZ2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpT
a2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGlj
eUNoZWNrOworICAgIG9wdGlvbnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9IGxvYWRlZEZyb21P
cGFxdWVTb3VyY2U7CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QoY29tcGxldGVVUkwodXJsKSksIG9wdGlvbnMpOworICAgIHJlcXVlc3Quc2V0SW5p
dGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOworICAgIHJldHVy
biBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBp
c1NWRykudmFsdWVfb3IobnVsbHB0cikuZ2V0KCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmJlZ2lu
TG9hZGluZ0ZvbnRTb29uKEZvbnRMb2FkUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQo
aXM8Q2FjaGVkRm9udD4ocmVxdWVzdCkpOworICAgIGF1dG8mIGZvbnQgPSBkb3duY2FzdDxDYWNo
ZWRGb250PihyZXF1ZXN0KTsKKworICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5hcHBlbmQoJmZv
bnQpOworICAgIC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBjb3VudCBub3csIGluIG9yZGVyIHRv
IHByZXZlbnQgZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRpc3BhdGNoZWQKKyAgICAvLyBhZnRl
ciB0aGlzIGZvbnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBiZWZvcmUgaXQgYmVnYW4gbG9hZGlu
Zy4gQmFsYW5jZWQgYnkKKyAgICAvLyBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBmb250TG9h
ZGluZ1RpbWVyRmlyZWQoKSBhbmQgaW4gc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkuCisgICAg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KGZvbnQpOworCisg
ICAgaWYgKCFtX2lzU3VzcGVuZGVkICYmICFtX2ZvbnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSkK
KyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQorCit2b2lk
IERvY3VtZW50Ojpsb2FkUGVuZGluZ0ZvbnRzKCkKK3sKKyAgICBpZiAobV9pc1N1c3BlbmRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2FkaW5nOworICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dh
cChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpOworCisgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDog
Zm9udHNUb0JlZ2luTG9hZGluZykgeworICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5l
ZWRlZChtX2NhY2hlZFJlc291cmNlTG9hZGVyKTsKKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVt
ZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsK
KyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCgpCit7Cisg
ICAgbG9hZFBlbmRpbmdGb250cygpOworCisgICAgLy8gRklYTUU6IFVzZSBTdWJyZXNvdXJjZUxv
YWRlciBpbnN0ZWFkLgorICAgIC8vIENhbGwgRnJhbWVMb2FkZXI6OmxvYWREb25lIGJlZm9yZSBG
cmFtZUxvYWRlcjo6c3VicmVzb3VyY2VMb2FkRG9uZSB0byBtYXRjaCB0aGUgb3JkZXIgaW4gU3Vi
cmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUuCisgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+
bG9hZERvbmUoTG9hZENvbXBsZXRpb25UeXBlOjpGaW5pc2gpOworICAgIC8vIEVuc3VyZSB0aGF0
IGlmIHRoZSByZXF1ZXN0IGNvdW50IHJlYWNoZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3aWxs
IGtub3cgYWJvdXQgaXQuCisgICAgLy8gTmV3IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJlZCBi
eSBsYXlvdXQgYWZ0ZXIgdGhlIGRvY3VtZW50IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9yZSB3
ZSBoYXZlIGRpc3BhdGNoZWQKKyAgICAvLyBkaWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJhbWUu
IE1ha2Ugc3VyZSB0aGUgZGVsZWdhdGUgaXMgYWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tpbmcg
ZXhwbGljaXRseS4KKyAgICBpZiAoZnJhbWUoKSkKKyAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCku
Y2hlY2tMb2FkQ29tcGxldGUoKTsKK30KKwordm9pZCBEb2N1bWVudDo6c3RvcExvYWRpbmdBbmRD
bGVhckZvbnRzKCkKK3sKKyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOworICAgIGZvciAo
YXV0byYgZm9udEhhbmRsZSA6IG1fZm9udHNUb0JlZ2luTG9hZGluZykgeworICAgICAgICAvLyBC
YWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigp
LgorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KmZvbnRIYW5kbGUpOworICAgIH0KKyAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuY2xlYXIoKTsK
KyAgICBtX2ZvbnRTZWxlY3Rvci0+Y2xlYXJGb250cygpOworfQorCiBIVE1MQm9keUVsZW1lbnQq
IERvY3VtZW50Ojpib2R5KCkgY29uc3QKIHsKICAgICBhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnRF
bGVtZW50KCk7CkBAIC01NTE2LDYgKzU1OTIsOCBAQCB2b2lkIERvY3VtZW50OjpzdXNwZW5kKFJl
YXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIG1fdmlzdWFsVXBkYXRlc0FsbG93ZWQgPSBm
YWxzZTsKICAgICBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyLnN0b3AoKTsKIAorICAg
IG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7CisKICAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsK
IH0KIApAQCAtNTU0NCw2ICs1NjIyLDkgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lKFJlYXNvbkZv
clN1c3BlbnNpb24gcmVhc29uKQogCiAgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwogCisgICAg
aWYgKCFtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQorICAgICAgICBtX2ZvbnRMb2Fk
aW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2Vydmlj
ZVdvcmtlckVuYWJsZWQoKSAmJiByZWFzb24gPT0gUmVhc29uRm9yU3VzcGVuc2lvbjo6QmFja0Zv
cndhcmRDYWNoZSkKICAgICAgICAgc2V0U2VydmljZVdvcmtlckNvbm5lY3Rpb24oJlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDFmOWE4M2JmZDI2NGE0ZTE0MGUzYzFmMTM4YmZhYzRmMjU3
OTQyOGIuLjQ5ZTg4MzhlMjlkOTcwZWY4MmI2ZTJmMjEzNjNiNTA2YTQwY2M3ODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FudmFzQmFzZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAj
aW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgpAQCAtMTAyLDYgKzEwMyw3IEBAIGNsYXNzIENTU0Zv
bnRTZWxlY3RvcjsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NTdHlsZVNo
ZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENhY2hlZEZvbnQ7CiBjbGFz
cyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENh
Y2hlZFNjcmlwdDsKQEAgLTEzNyw2ICsxMzksNyBAQCBjbGFzcyBFeHRlbnNpb25TdHlsZVNoZWV0
czsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZvbnRGYWNlU2V0
OworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgRm9ybUNvbnRyb2xsZXI7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwpAQCAtNjMzLDYgKzYzNiw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN1c3BlbmREZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKTsKICAg
ICB2b2lkIHJlc3VtZURldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygpOwogCisgICAg
dm9pZCBzdXNwZW5kRm9udExvYWRpbmdUaW1lcigpOworCiAgICAgUmVuZGVyVmlldyogcmVuZGVy
VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVmlldy5nZXQoKTsgfQogCiAgICAgYm9vbCBy
ZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclRyZWVCZWlu
Z0Rlc3Ryb3llZDsgfQpAQCAtMTY0NywxMCArMTY1MiwxNiBAQCBwcml2YXRlOgogCiAgICAgLy8g
U2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVj
dG9yKCkgZmluYWwgeyByZXR1cm4gbV9mb250U2VsZWN0b3IucHRyKCk7IH0KKyAgICBGb250TG9h
ZFJlcXVlc3QqIGZvbnRMb2FkUmVxdWVzdChTdHJpbmcmLCBib29sLCBib29sLCBMb2FkZWRGcm9t
T3BhcXVlU291cmNlKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKEZvbnRM
b2FkUmVxdWVzdCYpIGZpbmFsOwogCiAgICAgLy8gRm9udFNlbGVjdG9yQ2xpZW50CiAgICAgdm9p
ZCBmb250c05lZWRVcGRhdGUoRm9udFNlbGVjdG9yJikgZmluYWw7CiAKKyAgICB2b2lkIGxvYWRQ
ZW5kaW5nRm9udHMoKTsKKyAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpOworICAgIHZv
aWQgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CisKICAgICBib29sIGlzRG9jdW1lbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwpAQCAtMTk4Miw2ICsxOTkzLDggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbV9kb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJP
dXRlckhUTUw7CiAKICAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsKKyAg
ICBUaW1lciBtX2ZvbnRMb2FkaW5nVGltZXI7CisgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZEZvbnQ+PiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmc7CiAKICAgICBXZWFrSGFzaFNl
dDxNZWRpYVByb2R1Y2VyPiBtX2F1ZGlvUHJvZHVjZXJzOwogICAgIFdlYWtQdHI8U3BlZWNoUmVj
b2duaXRpb24+IG1fYWN0aXZlU3BlZWNoUmVjb2duaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzc3MzgzMWI4OGMyYjAyYjA1YmMy
ZmZiNmYwNTNlOGRhZjFhNWY3YS4uMWZhNDAyNWQ2NDQwZTk4MjJmYWM3NmI5NmM3NDlmNmIzY2M0
M2QxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cApAQCAtMjMyLDYgKzIzMiwxMSBAQCBGb250Q2FjaGUmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmZvbnRDYWNoZSgpCiAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7CiB9CiAKK0Zv
bnRMb2FkUmVxdWVzdCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9udExvYWRSZXF1ZXN0KFN0
cmluZyYsIGJvb2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9yRWFjaEFjdGl2
ZURPTU9iamVjdChjb25zdCBGdW5jdGlvbjxTaG91bGRDb250aW51ZShBY3RpdmVET01PYmplY3Qm
KT4mIGFwcGx5KSBjb25zdAogewogICAgIC8vIEl0IGlzIG5vdCBhbGxvd2VkIHRvIHJ1biBhcmJp
dHJhcnkgc2NyaXB0IG9yIGNvbnN0cnVjdCBuZXcgQWN0aXZlRE9NT2JqZWN0cyB3aGlsZSB3ZSBh
cmUgaXRlcmF0aW5nIG92ZXIgQWN0aXZlRE9NT2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGU4YmYwZWZjYjZiYmExMjYwZjBhOTBiNzk3
NTQzODE2YjBkZjFiYmIuLjdkM2NkZGQ2NTM2ZGU1N2QxZGEzYjYzMjlhNDllYTUyODc4YzgwMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkRPTVRp
bWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC02Niw2ICs2Nyw3IEBAIGNsYXNz
IEV2ZW50UXVldWU7CiBjbGFzcyBFdmVudExvb3BUYXNrR3JvdXA7CiBjbGFzcyBFdmVudFRhcmdl
dDsKIGNsYXNzIEZvbnRDYWNoZTsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogY2xhc3MgUHVibGljVVJMTWFuYWdlcjsKIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRy
YWNrZXI7CkBAIC0xNjUsNiArMTY3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBGb250Q2Fj
aGUmIGZvbnRDYWNoZSgpOwogICAgIHZpcnR1YWwgQ1NTRm9udFNlbGVjdG9yKiBjc3NGb250U2Vs
ZWN0b3IoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBGb250TG9hZFJlcXVlc3Qq
IGZvbnRMb2FkUmVxdWVzdChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0Jikg
eyB9CiAKICAgICB2b2lkIHJlZigpIHsgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAg
ICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGM0ZTQ2ZTg3MmM2YTZkMDIz
MTdlYjE4MjE1NTI1NjNmZmVhNTVjZmEuLjRkODU1NjRjMDQ3ZmU5NDZkMTJkYTAzZjdkNzM0OTk0
MjIyNTNjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAt
MzM4LDcgKzMzOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAgICBj
YW5jZWxBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMpOwogCiAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxl
Y3RvcigpLnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CisgICAgICAgIGRvY3VtZW50LT5zdXNw
ZW5kRm9udExvYWRpbmdUaW1lcigpOwogCiAgICAgLy8gQXBwY2FjaGUgdXNlcyBSZXNvdXJjZUhh
bmRsZSBkaXJlY3RseSwgRG9jdW1lbnRMb2FkZXIgZG9lc24ndCBjb3VudCB0aGVzZSBsb2Fkcy4K
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5zdG9wTG9hZGluZ0luRnJhbWUoKm1fZnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YjUw
NGIxY2Q3OTc2YTI5NTM2ZWZhZjNmYjJkZmU4ODE3OTU5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmgKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJGb250VGFnZ2VkU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9udDsK
K2NsYXNzIEZvbnREZXNjcmlwdGlvbjsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKK3N0cnVjdCBG
b250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwordXNpbmcgRm9udEZlYXR1cmVTZXR0aW5ncyA9
IEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+OworCitjbGFzcyBGb250TG9hZFJlcXVlc3RDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgfkZvbnRMb2FkUmVxdWVzdENsaWVudCgpID0gZGVmYXVs
dDsKKyAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChGb250TG9hZFJlcXVlc3QmKSB7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEZvbnRDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorfTsKKworY2xhc3MgRm9udExvYWRSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5Gb250TG9hZFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJ
KSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9s
ZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCopID0gMDsKKworICAgIHZpcnR1YWwgYm9v
bCBpc0NhY2hlZEZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0NhY2hlZFNWR0ZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRk9OVExP
QURSRVFVRVNUQ0xJRU5UKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpGb250TG9hZFJlcXVlc3RDbGllbnQmIGNsaWVudCkgeyByZXR1
cm4gY2xpZW50LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisK
KyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05UTE9BRFJFUVVFU1QoVG9WYWx1ZVR5
cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1
ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRM
b2FkUmVxdWVzdCYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC5wcmVkaWNhdGU7IH0gXAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCmluZGV4IDk3NDE5ZWVlNzQxOWY4MGFhZGFmZTgyNDU1OTBkZmVkNjRlOTc3
MmUuLjRlMGE4MTJmNjNhZDlhYzI1YjY1NzcxYmY0MDdlYzI1ZGNlYWY3OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTEzNyw2ICsxMzcsMjAgQEAg
Rm9udFBsYXRmb3JtRGF0YSBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJgogICAgIHJldHVybiBmb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBib2xkLCBpdGFsaWMsIGZvbnRGYWNl
RmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKTsKIH0KIAordm9pZCBDYWNoZWRGb250Ojpz
ZXRDbGllbnQoRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKG1fZm9u
dExvYWRSZXF1ZXN0Q2xpZW50ID09IGNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50KQorICAgICAgICByZW1vdmVDbGllbnQoZG93bmNhc3Q8
Q2FjaGVkRm9udENsaWVudD4oKm1fZm9udExvYWRSZXF1ZXN0Q2xpZW50KSk7CisKKyAgICBpZiAo
Y2xpZW50KQorICAgICAgICBhZGRDbGllbnQoZG93bmNhc3Q8Q2FjaGVkRm9udENsaWVudD4oKmNs
aWVudCkpOworCisgICAgbV9mb250TG9hZFJlcXVlc3RDbGllbnQgPSBjbGllbnQ7Cit9CisKIHZv
aWQgQ2FjaGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQoKQogewogICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAppbmRleCA2MjY3Nzg4ZjE3ZTVlYjQyMGE1OTQ0ODg0YzQ0NWEzMGEwN2Y5ZjVjLi42ZTk0
NGI3MWFjZjdjOTgyOGI5YzQ2MTEzMjBiOGNkZWRmMDRjZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRm9udC5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIlRleHRG
bGFncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBAIHN0cnVjdCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKIAotY2xhc3MgQ2FjaGVkRm9udCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7
CitjbGFzcyBDYWNoZWRGb250IDogcHVibGljIENhY2hlZFJlc291cmNlLCBwdWJsaWMgRm9udExv
YWRSZXF1ZXN0IHsKIHB1YmxpYzoKICAgICBDYWNoZWRGb250KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciosIFR5cGUgPSBUeXBl
OjpGb250UmVzb3VyY2UpOwogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnQoKTsKQEAgLTUxLDExICs1
MiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJj
ZUxvYWRlciYpOwogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBp
bmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21E
YXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllcyk7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBj
cmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9u
dEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwor
ICAgIC8vIEZvbnRMb2FkUmVxdWVzdAorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OnVybCgpOyB9CisgICAgYm9vbCBpc0xvYWRpbmcoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBDYWNoZWRSZXNvdXJjZTo6aXNMb2FkaW5nKCk7IH0KKyAgICBi
b29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYWNoZWRSZXNvdXJjZTo6
ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZvbnQ+IGNyZWF0
ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJ
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVh
dHVyZVNldHRpbmdzJiwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcykgb3ZlcnJp
ZGU7CisKKyAgICB2b2lkIHNldENsaWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqKSBmaW5hbDsK
IAogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3Rv
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29u
c3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRp
ZXMpOwpAQCAtNzYsOCArODQsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWxsQ2xpZW50c1Jl
bW92ZWQoKSBvdmVycmlkZTsKIAorICAgIGJvb2wgaXNDYWNoZWRGb250KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgYm9vbCBtX2xvYWRJbml0aWF0ZWQ7CiAgICAgYm9vbCBt
X2hhc0NyZWF0ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2U7CisgICAgRm9udExvYWRSZXF1ZXN0
Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGE7CiAKQEAgLTg2LDQgKzk3LDEzIEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkRm9udCwg
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNvdXJjZSkKK25hbWVzcGFjZSBXVEYgewordGVt
cGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CitjbGFzcyBUeXBlQ2FzdFRyYWl0czxjb25zdCBXZWJD
b3JlOjpDYWNoZWRGb250LCBBcmdUeXBlLCBmYWxzZSAvKiBpc0Jhc2VUeXBlICovPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUoQXJnVHlwZSYgc291cmNlKSB7IHJldHVybiBp
c1R5cGUoc291cmNlKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIHsgcmV0dXJuIHJlc291cmNlLnR5cGUoKSA9PSBXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdCYgcmVxdWVzdCkgeyByZXR1
cm4gcmVxdWVzdC5pc0NhY2hlZEZvbnQoKTsgfQorfTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKaW5kZXggNTBlNjNmNTljYTM0NDdjMjJh
OTZmYzlmYzcxNjE4ZDMxYjZkMjBjMi4uZjIzYTFjYmRhNDFkMzA2Yzk4NmQ2Y2I4YmU5YWM4MmU2
YmI4MmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENs
aWVudC5oCkBAIC0yNSwxOCArMjUsMjIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
YWNoZWRGb250LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBDYWNoZWRGb250OwotCi1jbGFzcyBDYWNoZWRGb250Q2xp
ZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKK2NsYXNzIENhY2hlZEZvbnRDbGll
bnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBGb250TG9hZFJlcXVlc3RD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnRDbGllbnQoKSA9IGRlZmF1
bHQ7CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7
IHJldHVybiBGb250VHlwZTsgfQogICAgIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJj
ZUNsaWVudFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250JiBmb250KSB7IEZvbnRMb2FkUmVxdWVzdENsaWVu
dDo6Zm9udExvYWRlZChmb250KTsgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXNDYWNoZWRGb250
Q2xpZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZPTlRMT0FEUkVRVUVTVENMSUVO
VChXZWJDb3JlOjpDYWNoZWRGb250Q2xpZW50LCBpc0NhY2hlZEZvbnRDbGllbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDJlMWQ2YmE4YjFj
MTdmODMzMTk3NjZkYWZjNGE0ZDRiMjlkNTlkYWIuLjk0MmUxN2U1NGNjY2VhMTA0N2VkNjkzZWYx
ZTc3ODZkOWVlMGJjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaApAQCAtNDksNiArNDksOCBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBt
YXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKKyAgICBib29sIGlzQ2FjaGVkU1ZHRm9udCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29u
dmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwpAQCAtNTcs
NCArNTksMTIgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9SRVNPVVJDRShDYWNoZWRTVkdGb250LCBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6U1ZHRm9udFJlc291cmNlKQorbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQXJnVHlwZT4KK2NsYXNzIFR5cGVDYXN0VHJhaXRzPGNvbnN0IFdlYkNvcmU6OkNh
Y2hlZFNWR0ZvbnQsIEFyZ1R5cGUsIGZhbHNlIC8qIGlzQmFzZVR5cGUgKi8+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJiBzb3VyY2UpIHsgcmV0dXJuIGlzVHlw
ZShzb3VyY2UpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkgeyByZXR1cm4gcmVzb3VyY2UudHlwZSgpID09IFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpUeXBlOjpTVkdGb250UmVzb3VyY2U7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KSB7IHJldHVy
biByZXF1ZXN0LmlzQ2FjaGVkU1ZHRm9udCgpOyB9Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4N2ZjNThjMWI0MTM4YzE3NmI5YjNh
NmMwMTkwN2NlYzBmOTdhZTU5Li43NzUyYWY5NTUyYjU3NDM0NmQ2MjhkNGY3ZmE4Zjc2YzM2MGQ0
OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtMTEyLDggKzExMiw2IEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUo
KQogICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKGxvY2tlcikucmVtb3Zl
KGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIH0KIAotICAgIGlmIChtX2Nzc0ZvbnRTZWxlY3Rv
cikKLSAgICAgICAgbV9jc3NGb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygp
OwogICAgIG1fcGVyZm9ybWFuY2UgPSBudWxscHRyOwogICAgIG1fY3J5cHRvID0gbnVsbHB0cjsK
IAo=
</data>
<flag name="commit-queue"
          id="445330"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425389</attachid>
            <date>2021-04-07 06:09:28 -0700</date>
            <delta_ts>2021-04-07 10:40:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210407140926.patch</filename>
            <type>text/plain</type>
            <size>51007</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uZWQ0NjBlMmM2OThlMTg3Yzk1NDU4OWIxMjE1Mjk1
Y2ZlYTdiYzdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6IE5ldyBmaWxlIEZvbnRMb2FkUmVxdWVzdC5oCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
LmNwcDogVXBkYXRlIHRvIG5vdCByZXF1aXJlIERvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDogVXBkYXRlIHRvIHVzZSBGb250TG9hZFJlcXVlc3QgaW5zdGVhZCBvZiBDYWNo
ZWRGb250LgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjp+Q1NTRm9udEZh
Y2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6Om9wcG9ydHVu
aXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZh
Y2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmZv
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmlzU1ZHRm9udEZhY2VT
b3VyY2UgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorCisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOiBVcGRhdGUgdG8gdXNlIEZvbnRMb2Fk
UmVxdWVzdCBhbmQKKyAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGluc3RlYWQgb2Yg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNyY1Zh
bHVlOjpmb250TG9hZFJlcXVlc3QpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVl
Lmg6CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDogUmVtb3ZlIERvY3VtZW50
LXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OkNTU0Zv
bnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6On5DU1NGb250
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpjbGVhckZvbnRz
KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOiBBZGQgRG9jdW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGNvZGUgZnJvbQor
ICAgICAgICAgIENTU0ZvbnRTZWxlY3RvciBhbmQgQ1NTRm9udEZhY2VTcmNWYWx1ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXNv
bHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGlu
Z1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpmb250TG9hZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpsb2FkUGVuZGluZ0ZvbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpmb250TG9hZGluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzdW1lKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcDogQWRkIGZ1bmN0aW9ucyB0byBpbml0aWF0ZSBmb250IGxvYWQgcmVxdWVz
dHMuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb250TG9hZFJl
cXVlc3QpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpiZWdpbkxvYWRpbmdGb250U29vbik6
CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOiBVcGRhdGUgZHVlIHRvIG90
aGVyIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRp
bmcpOgorCisgICAgICAgICogbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oOiBBZGRlZC4gQW4gaW50
ZXJmYWNlIHRvIG1hbmFnZSBmb250IGxvYWRpbmcKKyAgICAgICAgICB0aGF0IGFic3RyYWN0cyBz
b21lIG9mIHRoZSBiZWhhdmlvdXIgb2YgQ2FjaGVkUmVzb3VyY2UsIENhY2hlZEZvbnQgYW5kCisg
ICAgICAgICAgQ2FjaGVkRm9udENsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkUmVx
dWVzdENsaWVudDo6Zm9udExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9hZFJlcXVl
c3RDbGllbnQ6OmlzQ2FjaGVkRm9udENsaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250TG9hZFJlcXVlc3Q6OmlzQ2FjaGVkRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250TG9hZFJlcXVlc3Q6OmlzQ2FjaGVkU1ZHRm9udCBjb25zdCk6CisKKyAgICAgICAgKiBsb2Fk
ZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaDogVXBkYXRlIHRvIGltcGxlbWVudAorICAg
ICAgICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudDo6Zm9udExvYWRlZCBpbnN0ZWFkIG9mIENhY2hl
ZEZvbnRDbGllbnQ6OmZvbnRMb2FkZWQuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHA6IEltcGxlbWVudCBGb250TG9hZFJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpzZXRDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Lmg6CisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oOiBJbXBsZW1l
bnQgRm9udExvYWRSZXF1ZXN0Q2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udENs
aWVudDo6Zm9udExvYWRlZCk6CisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5oOiBVcGRhdGUgdHlwZS1jYXN0IHRyYWl0cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwOiBSZW1vdmUgbm93LXJlZHVuZGFudCBDU1NGb250U2VsZWN0b3IgY2Fs
bC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2Nv
cGUpOgorCiAyMDIxLTA0LTA1ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBCaWRpQ29udGV4dCBjYWNoaW5nIGlzIG5vdCB0aHJlYWQtc2FmZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggYWEzOTE4MmQ0MDZmNjMwYTkxZTk3NGExODIwNTIzZjgxMzI5ZDUzMy4uMmU5YjA5
M2VkOTk4MzNjZGVlNjQxOWM0ZjQ5ZmM2YWVmYTY2MDdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzYsNiArNzc2LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGxvYWRlci9FbXB0eUNsaWVudHMuaAogICAgIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50LmgKICAgICBsb2FkZXIvRmV0Y2hPcHRpb25zLmgKKyAgICBsb2FkZXIvRm9udExvYWRSZXF1
ZXN0LmgKICAgICBsb2FkZXIvRm9ybVN0YXRlLmgKICAgICBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
aAogICAgIGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTMwMmRiMGQwYzY4MjIzMWY1
NjJmZTkwOGM5ZWIxNTExYjNmOTYxLi43ZWE2ZDRjZDM5OGRjMTNkNTA2ZmE0OGZmZDRmMDdkNjY4
ZjlhZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yMDQyLDYgKzIwNDIsNyBAQAogCQk2NTY1ODIwMjA5RDE1MDhEMDAwRTYx
RDcgLyogWExpbmtOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCAqLzsgfTsK
IAkJNjU2RDM3MzIwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcxQTBBREJBNURF
MDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczNjBBREJBNURFMDBBNDU1NEQgLyogRG9j
dW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTY1ODQzNjg2MEFFMDFC
NzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9h
ZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2NTZEMzczQTBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcyMjBBREJBNURFMDBBNDU1
NEQgLyogRm9ybVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNjU2RDM3M0MwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcyNDBBREJB
NURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczRTBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVM
b2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NkQzNzI2MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NzYxLDYgKzk3
NjIsNyBAQAogCQk2NTZEMzcxRTBBREJBNURFMDBBNDU1NEQgLyogRG9jdW1lbnRMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzIyMEFEQkE1REUwMEE0NTU0RCAvKiBGb3Jt
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1TdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZEMzcyMzBBREJBNURFMDBBNDU1NEQgLyog
Rm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3Jt
U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTg0MzY4NTBBRTAxQjc0
MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250TG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MjQwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTZEMzcyNjBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI3MEFEQkE1REUwMEE0NTU0RCAvKiBS
ZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NTg1LDYgKzI3NTg3
LDcgQEAKIAkJCQlDRUJCOEMzMjIwNzg2RENCMDAwMzk1NDcgLyogRmV0Y2hJZGlvbXMuY3BwICov
LAogCQkJCUNFQkI4QzMxMjA3ODZEQ0IwMDAzOTU0NyAvKiBGZXRjaElkaW9tcy5oICovLAogCQkJ
CTQxQUQ3NTM5MUNFRjZCQ0UwMEEzMTQ4NiAvKiBGZXRjaE9wdGlvbnMuaCAqLywKKwkJCQk2NTg0
MzY4NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggKi8sCiAJCQkJNjU2RDM3
MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8sCiAJCQkJNjU2RDM3MjIwQURC
QTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICovLAogCQkJCTQxODg1QjkyMTFCNkZEQTYwMDMz
ODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgKi8sCkBAIC0zMjQyNiw2ICszMjQyOSw3IEBACiAJ
CQkJMUMyNEVFQTUxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQzEyQUMyQjFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyRUUzQTcxNzU3NkU1NTAwRUVFOENG
IC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1ODQzNjg2MEFF
MDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NEE1MzJGMjU2MDU3Q0QwMDI4QzU5MiAvKiBGb250TG9hZFRpbWluZ092ZXJyaWRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODQ1NjgwODEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCBp
biBIZWFkZXJzICovLAogCQkJCUI1MzIwRDZCMTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZv
cm1EYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4
IDgxNzFhY2NlYTdlZjQ3Y2IxNTM5OTVlOTRhYThhMDExOWQ3YWUzNjAuLjA1Y2IzNDU5N2U1YTI0
M2ZkNTA2Y2Y0YThjYTc0MWRiYzdkNWM3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cApAQCAtNzYsMTAgKzc2LDkgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NG
b250RmFjZSYgZm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgU2MKICAgICAgICAgaWYg
KCFpdGVtLmlzTG9jYWwoKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byogc2V0dGluZ3MgPSBj
b250ZXh0ID8gJmNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkgOiBudWxscHRyOwogICAgICAgICAg
ICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBz
ZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKTsKLSAgICAgICAgICAgIGlm
IChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBpczxEb2N1
bWVudD4oY29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PigqY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQq
IGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoJmRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlz
SW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQotICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRl
bS5yZXNvdXJjZSgpLCBkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmNhY2hlZEZvbnQpOworICAg
ICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZvbnRSZXF1ZXN0ID0gaXRlbS5mb250TG9h
ZFJlcXVlc3QoY29udGV4dCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKSkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1
ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmNvbnRleHQt
PmNzc0ZvbnRTZWxlY3RvcigpLCAqZm9udFJlcXVlc3QpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVsZW1lbnQgPyBtYWtlVW5p
cXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCAqZm9udEZh
Y2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXgg
YmMzMjNjMmYyZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZC4uMDhhMDUwMzQxMzAxMzBh
ZmE3ZDk2YWE5MzA2ODViNDg3MjBjMmI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNj
cmlwdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRl
ICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTVkdGb250RWxlbWVudC5oIgpAQCAtNzIsMTkgKzczLDE5IEBA
IENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIs
IGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiB7CiB9CiAKLUNTU0ZvbnRGYWNlU291cmNlOjpDU1NG
b250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFt
ZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgQ2FjaGVkRm9udCYgZm9udCkK
K0NTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIs
IGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxl
Y3RvciwgRm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9mYW1pbHlOYW1lT3JVUkko
ZmFtaWx5TmFtZU9yVVJJKQogICAgICwgbV9mYWNlKG93bmVyKQogICAgICwgbV9mb250U2VsZWN0
b3IobWFrZVdlYWtQdHIoZm9udFNlbGVjdG9yKSkKLSAgICAsIG1fZm9udCgmZm9udCkKKyAgICAs
IG1fZm9udFJlcXVlc3QoJnJlcXVlc3QpCiB7CiAgICAgLy8gVGhpcyBtYXkgc3luY2hyb25vdXNs
eSBjYWxsIGZvbnRMb2FkZWQoKS4KLSAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CisgICAg
bV9mb250UmVxdWVzdC0+c2V0Q2xpZW50KHRoaXMpOwogCi0gICAgaWYgKHN0YXR1cygpID09IFN0
YXR1czo6UGVuZGluZyAmJiBtX2ZvbnQtPmlzTG9hZGVkKCkpIHsKKyAgICBpZiAoc3RhdHVzKCkg
PT0gU3RhdHVzOjpQZW5kaW5nICYmICFtX2ZvbnRSZXF1ZXN0LT5pc0xvYWRpbmcoKSkgewogICAg
ICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICAgICAgaWYgKCFzaG91bGRJZ25v
cmVGb250TG9hZENvbXBsZXRpb25zKCkpIHsKLSAgICAgICAgICAgIGlmIChtX2ZvbnQtPmVycm9y
T2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9jY3VycmVk
KCkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBA
IC0xMDksOCArMTEwLDggQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENT
U0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW0KIAogQ1NTRm9udEZhY2VT
b3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSgpCiB7Ci0gICAgaWYgKG1fZm9udCkKLSAgICAgICAg
bV9mb250LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGlmIChtX2ZvbnRSZXF1ZXN0KQorICAg
ICAgICBtX2ZvbnRSZXF1ZXN0LT5zZXRDbGllbnQobnVsbHB0cik7CiB9CiAKIGJvb2wgQ1NTRm9u
dEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdApAQCAt
MTIwLDI5ICsxMjEsMjkgQEAgYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hvdWxkSWdub3JlRm9u
dExvYWRDb21wbGV0aW9ucygpIGNvbnN0CiAKIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Om9wcG9y
dHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoKQogewotICAgIGlmIChzdGF0dXMo
KSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9mb250ICYmIG1fZm9udC0+dXJsKCkucHJvdG9jb2xJ
c0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQorICAgIGlmIChzdGF0
dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9mb250UmVxdWVzdCAmJiBtX2ZvbnRSZXF1ZXN0
LT51cmwoKS5wcm90b2NvbElzRGF0YSgpICYmIG1fZmFtaWx5TmFtZU9yVVJJLmxlbmd0aCgpIDwg
TUIpCiAgICAgICAgIGxvYWQoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExv
YWRlZChDYWNoZWRGb250JiBsb2FkZWRGb250KQordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9u
dExvYWRlZChGb250TG9hZFJlcXVlc3QmIGZvbnRSZXF1ZXN0KQogewotICAgIEFTU0VSVF9VTlVT
RUQobG9hZGVkRm9udCwgJmxvYWRlZEZvbnQgPT0gbV9mb250LmdldCgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGZvbnRSZXF1ZXN0LCAmZm9udFJlcXVlc3QgPT0gbV9mb250UmVxdWVzdCk7CiAKICAg
ICBpZiAoc2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpKQogICAgICAgICByZXR1cm47
CiAKICAgICBSZWY8Q1NTRm9udEZhY2U+IHByb3RlY3RlZEZhY2UobV9mYWNlKTsKIAotICAgIC8v
IElmIHRoZSBmb250IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkg
Y2FsbGVkIGZyb20gQ2FjaGVkRm9udDo6YWRkQ2xpZW50KCkuCisgICAgLy8gSWYgdGhlIGZvbnQg
aXMgaW4gdGhlIGNhY2hlLCB0aGlzIHdpbGwgYmUgc3luY2hyb25vdXNseSBjYWxsZWQgZnJvbSBG
b250TG9hZFJlcXVlc3Q6OmFkZENsaWVudCgpLgogICAgIGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6
OlBlbmRpbmcpCiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwogICAgIGVsc2Ug
aWYgKG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSkgewogICAgICAgICAvLyBUaGlzIGZ1bmN0
aW9uIG1heSBiZSBjYWxsZWQgdHdpY2UgaWYgbG9hZGluZyB3YXMgY2FuY2VsbGVkLgotICAgICAg
ICBBU1NFUlQobV9mb250LT5lcnJvck9jY3VycmVkKCkpOworICAgICAgICBBU1NFUlQobV9mb250
UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChtX2ZvbnQtPmVycm9yT2NjdXJyZWQoKSB8fCAhbV9mb250LT5lbnN1cmVDdXN0b21Gb250
RGF0YShtX2ZhbWlseU5hbWVPclVSSSkpCisgICAgaWYgKG1fZm9udFJlcXVlc3QtPmVycm9yT2Nj
dXJyZWQoKSB8fCAhbV9mb250UmVxdWVzdC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlO
YW1lT3JVUkkpKQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpGYWlsdXJlKTsKICAgICBlbHNl
CiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTU0LDkgKzE1NSwxMCBA
QCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAg
ICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKIAotICAgIGlmIChtX2ZvbnQpIHsKKyAgICBp
ZiAobV9mb250UmVxdWVzdCkgewogICAgICAgICBBU1NFUlQobV9mb250U2VsZWN0b3IpOwotICAg
ICAgICBtX2ZvbnRTZWxlY3Rvci0+YmVnaW5Mb2FkaW5nRm9udFNvb24oKm1fZm9udCk7CisgICAg
ICAgIGlmIChhdXRvKiBjb250ZXh0ID0gbV9mb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKKyAgICAgICAgICAgIGNvbnRleHQtPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2Zv
bnRSZXF1ZXN0KTsKICAgICB9IGVsc2UgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
ICAgICAgICAgaWYgKG1faGFzU1ZHRm9udEZhY2VFbGVtZW50KSB7CkBAIC0xOTgsNyArMjAwLDcg
QEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28KIAogICAgIGJvb2wgdXNlc0luRG9jdW1lbnRTVkdG
b250ID0gbV9oYXNTVkdGb250RmFjZUVsZW1lbnQ7CiAKLSAgICBpZiAoIW1fZm9udCAmJiAhdXNl
c0luRG9jdW1lbnRTVkdGb250KSB7CisgICAgaWYgKCFtX2ZvbnRSZXF1ZXN0ICYmICF1c2VzSW5E
b2N1bWVudFNWR0ZvbnQpIHsKICAgICAgICAgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAg
ICAgICAgICBpZiAoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMCwxMiArMjEyLDEyIEBAIFJlZlB0cjxGb250
PiBDU1NGb250RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgYm9vCiAgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRG
b3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgJmZvbnRGYWNlRmVh
dHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzLCB0cnVlKTsKICAgICB9CiAKLSAgICBpZiAobV9m
b250KSB7Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IG1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERh
dGEobV9mYW1pbHlOYW1lT3JVUkkpOworICAgIGlmIChtX2ZvbnRSZXF1ZXN0KSB7CisgICAgICAg
IGF1dG8gc3VjY2VzcyA9IG1fZm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFt
aWx5TmFtZU9yVVJJKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsK
IAogICAgICAgICBBU1NFUlQoc3RhdHVzKCkgPT0gU3RhdHVzOjpTdWNjZXNzKTsKLSAgICAgICAg
YXV0byByZXN1bHQgPSBtX2ZvbnQtPmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWls
eU5hbWVPclVSSSwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1
cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9mb250
UmVxdWVzdC0+Y3JlYXRlRm9udChmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBz
eW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNl
Q2FwYWJpbGl0aWVzKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpAQCAtMjMyLDcgKzIzNCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFj
ZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9v
CiAKIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OmlzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdAog
ewotICAgIHJldHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBpczxDYWNoZWRTVkdGb250
PihtX2ZvbnQuZ2V0KCkpOworICAgIHJldHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBp
czxDYWNoZWRTVkdGb250PihtX2ZvbnRSZXF1ZXN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA1OTJjZTgzMWM1YTkyODYzZTA0ZWJkYjc2ZWYzYWMx
OGY1MWMxM2JkLi45ZjU5MDNiZGVjODdlZjIwNjEwMWQ5Mjg2NTJjNjU3OGJmYmI2Y2EwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFz
cyBDU1NGb250RmFjZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRGb250Q2xpZW50IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NGb250RmFjZVNvdXJj
ZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKLSAg
ICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9u
dEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVP
clVSSSwgQ1NTRm9udFNlbGVjdG9yJiwgRm9udExvYWRSZXF1ZXN0Jik7CiAgICAgQ1NTRm9udEZh
Y2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVS
SSwgU1ZHRm9udEZhY2VFbGVtZW50Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZh
Y2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpTQzo6QXJyYXlC
dWZmZXJWaWV3PiYmKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwpAQCAtNzYs
MjIgKzc2LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0gbnVsbHB0cik7
CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5n
cyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAgQ2FjaGVkRm9u
dCogY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQotICAgIGJvb2wg
cmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250OyB9CisgICAg
Rm9udExvYWRSZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRS
ZXF1ZXN0OyB9CisgICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnRSZXF1ZXN0OyB9CiAKICAgICBib29sIGlzU1ZHRm9udEZhY2VTb3VyY2UoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlv
bnMoKSBjb25zdDsKIAotICAgIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21TdHJpbmcgbV9mYW1pbHlOYW1lT3JV
Ukk7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250IG5hbWUgZm9yIGxvY2FsLgogICAg
IENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNlLgogICAgIFdlYWtQ
dHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywg
dG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRG
b250PiBtX2ZvbnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIG91ciBj
YWNoZWQgcmVzb3VyY2UuCisgICAgRm9udExvYWRSZXF1ZXN0KiBtX2ZvbnRSZXF1ZXN0IHsgbnVs
bHB0ciB9OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3Vy
Y2UgcmVxdWVzdC4KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggNTM5ZmQ0
ODg5NjllZmE2ZmFkNWZlYTRkM2M4YTE3YjcyZjcxOWVlNS4uY2E5OTJhYzljNGU4YjhiNmVkM2E3
NjdmZThiYTdjMmNhYTZmMjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmNwcApAQCAtMjksMTAgKzI5LDExIEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiRm9udExvYWRS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDE5ICs3
NywxNiBAQCBib29sIENTU0ZvbnRGYWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNv
bnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQwogICAgIHJldHVybiBoYW5kbGVyKCptX2Nh
Y2hlZEZvbnQpOwogfQogCi1DYWNoZWRGb250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRG
b250KERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVt
ZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorRm9udExvYWRSZXF1ZXN0KiBDU1NGb250RmFjZVNy
Y1ZhbHVlOjpmb250TG9hZFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Ym9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVl
KQogewogICAgIGlmIChtX2NhY2hlZEZvbnQpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZEZvbnQu
Z2V0KCk7CiAKLSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291
cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7Ci0gICAgb3B0aW9ucy5j
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaXNJbml0aWF0aW5nRWxlbWVudEluVXNl
ckFnZW50U2hhZG93VHJlZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQ
b2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2s7Ci0gICAgb3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVlU291cmNlID0gbV9sb2FkZWRGcm9tT3Bh
cXVlU291cmNlOworICAgIGF1dG8qIHJlcXVlc3QgPSBjb250ZXh0LT5mb250TG9hZFJlcXVlc3Qo
bV9yZXNvdXJjZSwgaXNTVkcsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgaWYgKGlzPENhY2hlZEZvbnQ+KHJl
cXVlc3QpKQorICAgICAgICBtX2NhY2hlZEZvbnQgPSAmZG93bmNhc3Q8Q2FjaGVkRm9udD4oKnJl
cXVlc3QpOwogCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwotICAgIHJl
cXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3Mp
OwotICAgIG1fY2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJl
cXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKTsKLSAg
ICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBi
b29sIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVl
JiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmlu
ZGV4IGM1ZGM1OWZkOTZhMWJlMzI4MzYzNDRmZjE5ZDk1ODc3MjkyNmQ3YjQuLjc0OTFkZjY2NWM5
ZWY3YmRiMmVmZDMwZjBlYjFhYjA2ZmM4ZGExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuaApAQCAtMzQsOCArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDYWNoZWRGb250OwotY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250TG9hZFJlcXVl
c3Q7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogCiBjbGFzcyBDU1NGb250RmFjZVNyY1ZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVl
IHsKIHB1YmxpYzoKQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmF2ZXJz
ZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291
cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9j
dW1lbnQqLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNo
YWRvd1RyZWUpOworICAgIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VT
cmNWYWx1ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmlu
ZGV4IGMxMTU3OGNmYzUwNDEyY2JhNmM1NTMwZjk0YmU4YWEzNjM0NDc1Y2MuLmFjZDJhMWNjMjRl
MzRjMDU0ZDAzNzgyMzQ4NzczN2NmZWM3ZmViNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCkBAIC02OCw3ICs2OCw2IEBAIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNl
bGVjdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2ZvbnRDYWNo
ZShtYWtlUmVmKGNvbnRleHQuZm9udENhY2hlKCkpKQogICAgICwgbV9jc3NGb250RmFjZVNldChD
U1NGb250RmFjZVNldDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb250TW9kaWZpZWRPYnNlcnZl
cihbdGhpc10geyBmb250TW9kaWZpZWQoKTsgfSkKLSAgICAsIG1fZm9udExvYWRpbmdUaW1lcigq
dGhpcywgJkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKQogICAgICwgbV91
bmlxdWVJZCgrK2ZvbnRTZWxlY3RvcklkKQogICAgICwgbV92ZXJzaW9uKDApCiB7CkBAIC05Myw3
ICs5Miw3IEBAIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgTE9H
KEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAotICAgIHN0b3BMb2Fk
aW5nQW5kQ2xlYXJGb250cygpOworICAgIGNsZWFyRm9udHMoKTsKICAgICBtX2ZvbnRDYWNoZS0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIApAQCAtMzM2LDk0ICszMzUsMTMgQEAgRm9udFJhbmdl
cyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3IKICAgICByZXR1cm4gRm9udFJhbmdlcyB7IFdURk1vdmUoZm9udCkgfTsK
IH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6OnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpCit2
b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Y2xlYXJGb250cygpCiB7Ci0gICAgaWYgKG1faXNTdG9wcGVk
KSB7Ci0gICAgICAgIEFTU0VSVCghbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpOwotICAg
ICAgICBBU1NFUlQobV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGlu
Z1RpbWVyLnN0b3AoKTsKLQotICAgIGlmIChpczxEb2N1bWVudD4obV9jb250ZXh0LmdldCgpKSkg
ewotICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0
KTsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0g
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICAgICAgZm9yIChhdXRvJiBmb250
SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAgICAgICAvLyBCYWxhbmNl
cyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigpLgotICAg
ICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250
SGFuZGxlKTsKLSAgICAgICAgfQotICAgICAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuY2xlYXIo
KTsKLSAgICB9Ci0KICAgICBtX2Nzc0ZvbnRGYWNlU2V0LT5jbGVhcigpOwogICAgIG1fY2xpZW50
cy5jbGVhcigpOwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2FkaW5nRm9udFNv
b24oQ2FjaGVkRm9udCYgZm9udCkKLXsKLSAgICBpZiAobV9pc1N0b3BwZWQgfHwgIWlzPERvY3Vt
ZW50PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIG1fZm9udHNUb0Jl
Z2luTG9hZGluZy5hcHBlbmQoJmZvbnQpOwotICAgIC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBj
b3VudCBub3csIGluIG9yZGVyIHRvIHByZXZlbnQgZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRp
c3BhdGNoZWQKLSAgICAvLyBhZnRlciB0aGlzIGZvbnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBi
ZWZvcmUgaXQgYmVnYW4gbG9hZGluZy4gQmFsYW5jZWQgYnkKLSAgICAvLyBkZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKSBpbiBmb250TG9hZGluZ1RpbWVyRmlyZWQoKSBhbmQgaW4gc3RvcExvYWRpbmdB
bmRDbGVhckZvbnRzKCkuCi0gICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQoZm9udCk7Ci0KLSAgICBpZiAoIW1faXNGb250TG9hZGluZ1N1c3Bl
bmRlZCAmJiAhbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZm9udExv
YWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6
OnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCkKLXsKLSAgICBzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
bG9hZFBlbmRpbmdGb250cygpCi17Ci0gICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCB8
fCAhaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQpOwotCi0gICAg
VmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2Fk
aW5nOwotICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcp
OwotCi0gICAgLy8gQ1NTRm9udFNlbGVjdG9yIGNvdWxkIGdldCBkZWxldGVkIHZpYSBiZWdpbkxv
YWRJZk5lZWRlZCgpIG9yIGxvYWREb25lKCkgdW5sZXNzIHByb3RlY3RlZC4KLSAgICBSZWY8Q1NT
Rm9udFNlbGVjdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIENhY2hlZFJlc291cmNl
TG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7Ci0gICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykg
ewotICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxv
YWRlcik7Ci0gICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJl
Z2luTG9hZGluZ0ZvbnRTb29uKCkuCi0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLmRlY3Jl
bWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7Ci0gICAgfQotfQotCi12b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKCkKLXsKLSAgICBpZiAoIWlzPERvY3VtZW50
PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLSAgICBSZWY8Q1NTRm9udFNlbGVj
dG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGxvYWRQZW5kaW5nRm9udHMoKTsKLQot
ICAgIC8vIEZJWE1FOiBVc2UgU3VicmVzb3VyY2VMb2FkZXIgaW5zdGVhZC4KLSAgICAvLyBDYWxs
IEZyYW1lTG9hZGVyOjpsb2FkRG9uZSBiZWZvcmUgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlTG9h
ZERvbmUgdG8gbWF0Y2ggdGhlIG9yZGVyIGluIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25l
LgotICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkubG9hZERvbmUoTG9hZENvbXBs
ZXRpb25UeXBlOjpGaW5pc2gpOwotICAgIC8vIEVuc3VyZSB0aGF0IGlmIHRoZSByZXF1ZXN0IGNv
dW50IHJlYWNoZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3aWxsIGtub3cgYWJvdXQgaXQuCi0g
ICAgLy8gTmV3IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQgYWZ0ZXIgdGhl
IGRvY3VtZW50IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9yZSB3ZSBoYXZlIGRpc3BhdGNoZWQK
LSAgICAvLyBkaWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJhbWUuIE1ha2Ugc3VyZSB0aGUgZGVs
ZWdhdGUgaXMgYWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tpbmcgZXhwbGljaXRseS4KLSAgICBp
ZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCku
Y2hlY2tMb2FkQ29tcGxldGUoKTsKLX0KLQogc2l6ZV90IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJh
Y2tGb250Q291bnQoKQogewogICAgIGlmIChtX2lzU3RvcHBlZCkKQEAgLTQ0OSwyOSArMzY3LDQg
QEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHQKICAgICByZXR1cm4gZm9udDsKIH0KIAotdm9pZCBD
U1NGb250U2VsZWN0b3I6OnN0b3AoKQotewotICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7
Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24p
Ci17Ci0gICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBtX2ZvbnRMb2FkaW5n
VGltZXIuc3RvcCgpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6cmVzdW1lKCkKLXsKLSAg
ICBpZiAoIW1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKCFtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBtX2ZvbnRMb2Fk
aW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci0KLSAgICBtX2lzRm9udExvYWRpbmdTdXNwZW5k
ZWQgPSBmYWxzZTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4
IGU0YWZmMjZhYWFmZjA4Zjg2ODY3ZTA0NTU5ZmE0MWI0YmI3ZThmMzcuLjQzNDdlODVhMTU2MjM0
YTkzY2ViZWQxNDdjMjMyNmMyMWI1MWFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBmYWxsYmFja0ZvbnRD
b3VudCgpIGZpbmFsOwogICAgIFJlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25zdCBGb250
RGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogCi0gICAgdm9pZCBzdG9wTG9hZGluZ0FuZENs
ZWFyRm9udHMoKTsKKyAgICB2b2lkIGNsZWFyRm9udHMoKTsKICAgICB2b2lkIGVtcHR5Q2FjaGVz
KCk7CiAgICAgdm9pZCBidWlsZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGJ1aWxkQ29tcGxldGVkKCk7
CkBAIC04MSw5ICs4MSw2IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KIAotICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYpOwotICAgIHZv
aWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKLQogICAgIEZvbnRGYWNlU2V0KiBmb250RmFj
ZVNldElmRXhpc3RzKCk7CiAgICAgRm9udEZhY2VTZXQmIGZvbnRGYWNlU2V0KCk7CiAKQEAgLTEx
MCwxMiArMTA3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvbnRTdHlsZVVwZGF0ZU5lZWRlZChD
U1NGb250RmFjZSYpIGZpbmFsOwogCiAgICAgdm9pZCBmb250TW9kaWZpZWQoKTsKLSAgICB2b2lk
IGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAg
dm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24p
IGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJDU1NGb250U2VsZWN0b3IiX3M7
IH0KIAogICAgIHN0cnVjdCBQZW5kaW5nRm9udEZhY2VSdWxlIHsKQEAgLTEzMCwxNSArMTIzLDEx
IEBAIHByaXZhdGU6CiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2Nzc0ZvbnRGYWNlU2V0Owog
ICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwogCi0gICAgVmVjdG9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmc7
CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NTRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zUG9zc2li
bHlUb1JlbW92ZTsKICAgICBIYXNoU2V0PFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4+IG1fY3Nz
Q29ubmVjdGlvbnNFbmNvdW50ZXJlZER1cmluZ0J1aWxkOwogCiAgICAgQ1NTRm9udEZhY2VTZXQ6
OkZvbnRNb2RpZmllZE9ic2VydmVyIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXI7CiAKLSAgICBUaW1l
ciBtX2ZvbnRMb2FkaW5nVGltZXI7Ci0gICAgYm9vbCBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQg
eyBmYWxzZSB9OwotCiAgICAgdW5zaWduZWQgbV91bmlxdWVJZDsKICAgICB1bnNpZ25lZCBtX3Zl
cnNpb247CiAgICAgdW5zaWduZWQgbV9jb21wdXRpbmdSb290U3R5bGVGb250Q291bnQgeyAwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlYjRmMjhiZDMzMDdlNDc0ZGJhN2EzZTI2YWE3
Y2EwMDU2M2Y1NjEyLi5jYTdlOTVmZDBlMzJiY2NmZWQyNDY4ZWY3Y2M2ZGVjNTNjYTBlZGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM3LDggKzM3LDExIEBACiAjaW5jbHVkZSAiQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRl
ICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1
ZGUgIkNhY2hlZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCkBAIC03
NCw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9j
dXNFdmVudC5oIgogI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisjaW5jbHVkZSAiRm9udExvYWRS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC02MzksNiArNjQzLDcgQEAgRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBV
UkwmIHVybCwgRG9jdW0KICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRo
aXMsICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKICAgICAs
IG1fc2hhcmVkT2JqZWN0UG9vbENsZWFyVGltZXIoKnRoaXMsICZEb2N1bWVudDo6Y2xlYXJTaGFy
ZWRPYmplY3RQb29sKQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVjdG9yOjpjcmVh
dGUoKnRoaXMpKQorICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmZv
bnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGlt
ZXIoKnRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkK
ICAgICAsIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcigqdGhpcywgJkRvY3VtZW50OjppbnZhbGlk
YXRlRE9NQ29va2llQ2FjaGUpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHBhZ2UoKSA/ICZwYWdl
KCktPnNvY2tldFByb3ZpZGVyKCkgOiBudWxscHRyKQpAQCAtNzU4LDcgKzc2Myw3IEBAIERvY3Vt
ZW50Ojp+RG9jdW1lbnQoKQogICAgIGV4dGVuc2lvblN0eWxlU2hlZXRzKCkuZGV0YWNoRnJvbURv
Y3VtZW50KCk7CiAKICAgICBzdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOyAvLyBXZSBuZWVk
IHRvIGRlc3Ryb3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXIuCi0gICAgbV9mb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250
cygpOworICAgIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgLy8gSXQncyBwb3Nz
aWJsZSBmb3IgbXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2luZyB0aGUgc2Ft
ZSBDYWNoZWRSZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8gbG9hZCB0aGUg
aW5pdGlhbCBlbXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGggdGhlIHNhbWUg
RG9jdW1lbnRMb2FkZXIpLgpAQCAtODA3LDcgKzgxMiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92
ZWRMYXN0UmVmKCkKICAgICAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiAg
ICAgICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0geyB9OwogCi0gICAgICAgIG1f
Zm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICAgICAgc3RvcExv
YWRpbmdBbmRDbGVhckZvbnRzKCk7CiAKICAgICAgICAgZGV0YWNoUGFyc2VyKCk7CiAKQEAgLTIw
NjIsNyArMjA2Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGVU
eXBlIHR5cGUpCiAKICAgICAgICAgbV9pblN0eWxlUmVjYWxjID0gZmFsc2U7CiAKLSAgICAgICAg
Zm9udFNlbGVjdG9yKCkubG9hZFBlbmRpbmdGb250cygpOworICAgICAgICBsb2FkUGVuZGluZ0Zv
bnRzKCk7CiAKICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAgICB1cGRhdGVS
ZW5kZXJUcmVlKFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcxNywxMSBAQCB2
b2lkIERvY3VtZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKQog
I2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCkKK3sK
KyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOworfQorCiBib29sIERvY3VtZW50OjpzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAogewogICAgIC8v
IEJ5cGFzcyB0aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5kIGl0IG5vdCB0
aGUgbm9ybWFsIHdvcmxkLgpAQCAtMjk5Nyw2ICszMDA3LDcyIEBAIHZvaWQgRG9jdW1lbnQ6Omlt
cGxpY2l0T3BlbigpCiAgICAgc2V0UmVhZHlTdGF0ZShMb2FkaW5nKTsKIH0KIAorRm9udExvYWRS
ZXF1ZXN0KiBEb2N1bWVudDo6Zm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZH
LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZy
b21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uID0gaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSA/IENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CisgICAgb3B0aW9ucy5sb2FkZWRG
cm9tT3BhcXVlU291cmNlID0gbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTsKKworICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChjb21wbGV0ZVVSTCh1cmwpKSwg
b3B0aW9ucyk7CisgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycygpLmNzcyk7CisgICAgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJl
cXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKS5nZXQo
KTsKK30KKwordm9pZCBEb2N1bWVudDo6YmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIEFTU0VSVChpczxDYWNoZWRGb250PihyZXF1ZXN0KSk7Cisg
ICAgYXV0byYgZm9udCA9IGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlcXVlc3QpOworCisgICAgbV9m
b250c1RvQmVnaW5Mb2FkaW5nLmFwcGVuZCgmZm9udCk7CisgICAgLy8gSW5jcmVtZW50IHRoZSBy
ZXF1ZXN0IGNvdW50IG5vdywgaW4gb3JkZXIgdG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZyb20g
YmVpbmcgZGlzcGF0Y2hlZAorICAgIC8vIGFmdGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1ZXN0
ZWQgYnV0IGJlZm9yZSBpdCBiZWdhbiBsb2FkaW5nLiBCYWxhbmNlZCBieQorICAgIC8vIGRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpIGluIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBzdG9w
TG9hZGluZ0FuZENsZWFyRm9udHMoKS4KKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQoZm9udCk7CisKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1f
Zm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmxvYWRQZW5kaW5nRm9udHMo
KQoreworICAgIGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZvbnRzVG9CZWdpbkxvYWRpbmc7
CisgICAgZm9udHNUb0JlZ2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGluZyk7CisK
KyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7CisgICAg
ICAgIGZvbnRIYW5kbGUtPmJlZ2luTG9hZElmTmVlZGVkKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIp
OworICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxv
YWRpbmdGb250U29vbigpLgorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudDo6
Zm9udExvYWRpbmdUaW1lckZpcmVkKCkKK3sKKyAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7CisKKyAg
ICAvLyBGSVhNRTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGluc3RlYWQuCisgICAgLy8gQ2FsbCBG
cmFtZUxvYWRlcjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWRE
b25lIHRvIG1hdGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4K
KyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5sb2FkRG9uZShMb2FkQ29tcGxldGlvblR5cGU6
OkZpbmlzaCk7CisgICAgLy8gRW5zdXJlIHRoYXQgaWYgdGhlIHJlcXVlc3QgY291bnQgcmVhY2hl
cyB6ZXJvLCB0aGUgZnJhbWUgbG9hZGVyIHdpbGwga25vdyBhYm91dCBpdC4KKyAgICAvLyBOZXcg
Zm9udCBsb2FkcyBtYXkgYmUgdHJpZ2dlcmVkIGJ5IGxheW91dCBhZnRlciB0aGUgZG9jdW1lbnQg
bG9hZCBpcyBjb21wbGV0ZSBidXQgYmVmb3JlIHdlIGhhdmUgZGlzcGF0Y2hlZAorICAgIC8vIGRp
ZEZpbmlzaExvYWRpbmcgZm9yIHRoZSBmcmFtZS4gTWFrZSBzdXJlIHRoZSBkZWxlZ2F0ZSBpcyBh
bHdheXMgZGlzcGF0Y2hlZCBieSBjaGVja2luZyBleHBsaWNpdGx5LgorICAgIGlmIChmcmFtZSgp
KQorICAgICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOworfQorCit2
b2lkIERvY3VtZW50OjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQoreworICAgIG1fZm9udExv
YWRpbmdUaW1lci5zdG9wKCk7CisgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogbV9mb250c1Rv
QmVnaW5Mb2FkaW5nKSB7CisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3Vu
dCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorICAgIG1f
Zm9udHNUb0JlZ2luTG9hZGluZy5jbGVhcigpOworICAgIG1fZm9udFNlbGVjdG9yLT5jbGVhckZv
bnRzKCk7Cit9CisKIEhUTUxCb2R5RWxlbWVudCogRG9jdW1lbnQ6OmJvZHkoKSBjb25zdAogewog
ICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKQEAgLTU1MTYsMTMgKzU1OTIs
MTcgQEAgdm9pZCBEb2N1bWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikK
ICAgICBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkID0gZmFsc2U7CiAgICAgbV92aXN1YWxVcGRhdGVz
U3VwcHJlc3Npb25UaW1lci5zdG9wKCk7CiAKKyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgp
OworCiAgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc3Vt
ZShSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1faXNTdXNwZW5kZWQp
CisgICAgaWYgKCFtX2lzU3VzcGVuZGVkKSB7CisgICAgICAgIEFTU0VSVChtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuaXNFbXB0eSgpIHx8IG1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGZvciAoYXV0byogZWxlbWVudCA6IGNvcHlUb1Zl
Y3RvcihtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxlbWVudHMpKQogICAgICAgICBlbGVt
ZW50LT5yZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCk7CkBAIC01NTQ0LDYgKzU2MjQsOSBA
QCB2b2lkIERvY3VtZW50OjpyZXN1bWUoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAKICAg
ICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CiAKKyAgICBpZiAoIW1fZm9udHNUb0JlZ2luTG9hZGlu
Zy5pc0VtcHR5KCkpCisgICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9z
KTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpICYmIHJlYXNv
biA9PSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpCYWNrRm9yd2FyZENhY2hlKQogICAgICAgICBzZXRT
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigmU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24o
KS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMWY5
YTgzYmZkMjY0YTRlMTQwZTNjMWYxMzhiZmFjNGYyNTc5NDI4Yi4uNDllODgzOGUyOWQ5NzBlZjgy
YjZlMmYyMTM2M2I1MDZhNDBjYzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYW52
YXNCYXNlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgi
CkBAIC0xMDIsNiArMTAzLDcgQEAgY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwogY2xhc3MgQ1NTU3R5
bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRDU1NTdHls
ZVNoZWV0OworY2xhc3MgQ2FjaGVkRm9udDsKIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ2FjaGVkU2NyaXB0OwpAQCAtMTM3LDYgKzEz
OSw3IEBAIGNsYXNzIEV4dGVuc2lvblN0eWxlU2hlZXRzOwogY2xhc3MgRmxvYXRRdWFkOwogY2xh
c3MgRmxvYXRSZWN0OwogY2xhc3MgRm9udEZhY2VTZXQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7
CiBjbGFzcyBGb3JtQ29udHJvbGxlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVTZWxlY3Rp
b247CkBAIC02MzMsNiArNjM2LDggQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZERldmljZU1v
dGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygpOwogICAgIHZvaWQgcmVzdW1lRGV2aWNlTW90aW9u
QW5kT3JpZW50YXRpb25VcGRhdGVzKCk7CiAKKyAgICB2b2lkIHN1c3BlbmRGb250TG9hZGluZ1Rp
bWVyKCk7CisKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJWaWV3LmdldCgpOyB9CiAKICAgICBib29sIHJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkOyB9CkBAIC0xNjQ3LDEw
ICsxNjUyLDE2IEBAIHByaXZhdGU6CiAKICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAg
ICAgQ1NTRm9udFNlbGVjdG9yKiBjc3NGb250U2VsZWN0b3IoKSBmaW5hbCB7IHJldHVybiBtX2Zv
bnRTZWxlY3Rvci5wdHIoKTsgfQorICAgIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1ZXN0
KFN0cmluZyYsIGJvb2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFsOworICAg
IHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7CiAKICAg
ICAvLyBGb250U2VsZWN0b3JDbGllbnQKICAgICB2b2lkIGZvbnRzTmVlZFVwZGF0ZShGb250U2Vs
ZWN0b3ImKSBmaW5hbDsKIAorICAgIHZvaWQgbG9hZFBlbmRpbmdGb250cygpOworICAgIHZvaWQg
Zm9udExvYWRpbmdUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdG9wTG9hZGluZ0FuZENsZWFyRm9u
dHMoKTsKKwogICAgIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7
CkBAIC0xOTgyLDYgKzE5OTMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBtX2RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTDsKIAogICAgIFJlZjxDU1NG
b250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOworICAgIFRpbWVyIG1fZm9udExvYWRpbmdUaW1l
cjsKKyAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1fZm9udHNU
b0JlZ2luTG9hZGluZzsKIAogICAgIFdlYWtIYXNoU2V0PE1lZGlhUHJvZHVjZXI+IG1fYXVkaW9Q
cm9kdWNlcnM7CiAgICAgV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvbj4gbV9hY3RpdmVTcGVlY2hS
ZWNvZ25pdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAppbmRleCBjNzczODMxYjg4YzJiMDJiMDViYzJmZmI2ZjA1M2U4ZGFmMWE1ZjdhLi4xZmE0
MDI1ZDY0NDBlOTgyMmZhYzc2Yjk2Yzc0OWY2YjNjYzQzZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yMzIsNiArMjMyLDExIEBAIEZv
bnRDYWNoZSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9udENhY2hlKCkKICAgICByZXR1cm4g
Rm9udENhY2hlOjpzaW5nbGV0b24oKTsKIH0KIAorRm9udExvYWRSZXF1ZXN0KiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojpmb250TG9hZFJlcXVlc3QoU3RyaW5nJiwgYm9vbCwgYm9vbCwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpmb3JFYWNoQWN0aXZlRE9NT2JqZWN0KGNvbnN0IEZ1bmN0aW9u
PFNob3VsZENvbnRpbnVlKEFjdGl2ZURPTU9iamVjdCYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAg
Ly8gSXQgaXMgbm90IGFsbG93ZWQgdG8gcnVuIGFyYml0cmFyeSBzY3JpcHQgb3IgY29uc3RydWN0
IG5ldyBBY3RpdmVET01PYmplY3RzIHdoaWxlIHdlIGFyZSBpdGVyYXRpbmcgb3ZlciBBY3RpdmVE
T01PYmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
aW5kZXggZThiZjBlZmNiNmJiYTEyNjBmMGE5MGI3OTc1NDM4MTZiMGRmMWJiYi4uN2QzY2RkZDY1
MzZkZTU3ZDFkYTNiNjMyOWE0OWVhNTI4NzhjODAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
VHlwZXMuaCIKQEAgLTY2LDYgKzY3LDcgQEAgY2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEV2ZW50
TG9vcFRhc2tHcm91cDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgRm9udENhY2hlOworY2xh
c3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBQdWJsaWNVUkxN
YW5hZ2VyOwogY2xhc3MgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjsKQEAgLTE2NSw2ICsxNjcsOCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZvbnRDYWNoZSYgZm9udENhY2hlKCk7CiAgICAgdmly
dHVhbCBDU1NGb250U2VsZWN0b3IqIGNzc0ZvbnRTZWxlY3RvcigpIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB2aXJ0dWFsIEZvbnRMb2FkUmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KFN0cmluZyYg
dXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxv
YWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3QmKSB7IH0KIAogICAgIHZvaWQgcmVmKCkgeyBy
ZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggYzRlNDZlODcyYzZhNmQwMjMxN2ViMTgyMTU1MjU2M2ZmZWE1NWNmYS4u
NGQ4NTU2NGMwNDdmZTk0NmQxMmRhMDNmN2Q3MzQ5OTQyMjI1M2M1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIGNhbmNlbEFsbChtX211bHRpcGFydFN1YnJl
c291cmNlTG9hZGVycyk7CiAKICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpKQotICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9yKCkuc3VzcGVuZEZvbnRMb2FkaW5n
VGltZXIoKTsKKyAgICAgICAgZG9jdW1lbnQtPnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAK
ICAgICAvLyBBcHBjYWNoZSB1c2VzIFJlc291cmNlSGFuZGxlIGRpcmVjdGx5LCBEb2N1bWVudExv
YWRlciBkb2Vzbid0IGNvdW50IHRoZXNlIGxvYWRzLgogICAgIG1fYXBwbGljYXRpb25DYWNoZUhv
c3QtPnN0b3BMb2FkaW5nSW5GcmFtZSgqbV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9u
dExvYWRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZiNTA0YjFjZDc5NzZhMjk1MzZlZmFmM2ZiMmRm
ZTg4MTc5NTk0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250
TG9hZFJlcXVlc3QuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnRU
YWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250OworY2xhc3MgRm9udERlc2NyaXB0aW9uOwor
Y2xhc3MgRm9udExvYWRSZXF1ZXN0Oworc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBh
YmlsaXRpZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGlu
Z3M7Cit1c2luZyBGb250RmVhdHVyZVNldHRpbmdzID0gRm9udFRhZ2dlZFNldHRpbmdzPGludD47
CisKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Rm9udExvYWRSZXF1ZXN0Q2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBmb250
TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ2FjaGVk
Rm9udENsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCitjbGFzcyBGb250TG9h
ZFJlcXVlc3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZvbnRMb2FkUmVxdWVzdCgpID0gZGVm
YXVsdDsKKworICAgIHZpcnR1YWwgY29uc3QgVVJMJiB1cmwoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzTG9hZGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JP
Y2N1cnJlZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywg
Y29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmls
aXRpZXMpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRm9udExvYWRSZXF1ZXN0
Q2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkRm9udCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkU1ZHRm9udCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNkZWZp
bmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05UTE9BRFJFUVVFU1RDTElFTlQoVG9WYWx1ZVR5
cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1
ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRM
b2FkUmVxdWVzdENsaWVudCYgY2xpZW50KSB7IHJldHVybiBjbGllbnQucHJlZGljYXRlOyB9IFwK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0ZPTlRMT0FEUkVRVUVTVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KSB7IHJl
dHVybiByZXF1ZXN0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNs
aWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50
cy5oCmluZGV4IGJkZDRlZWJlYjM4Y2Y2YmY1ZDgyNjA4NmZlODA2OTgyOWI5ZGE2MGIuLjhhNmY4
NTJiZTQ0MzUyYWMxN2EwZDMyNmIzMmU4MDRkNTNmNjAzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5oCkBAIC0xMzcsOCArMTM3
LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmb250TG9hZGVkKENh
Y2hlZEZvbnQmIHJlc291cmNlKSBmaW5hbAorICAgIHZvaWQgZm9udExvYWRlZChGb250TG9hZFJl
cXVlc3QmIHJlcXVlc3QpIGZpbmFsCiAgICAgeworICAgICAgICBBU1NFUlQoaXM8Q2FjaGVkRm9u
dD4ocmVxdWVzdCkpOworICAgICAgICBDYWNoZWRGb250JiByZXNvdXJjZSA9IGRvd25jYXN0PENh
Y2hlZEZvbnQ+KHJlcXVlc3QpOwogICAgICAgICBBU1NFUlQob3duZWRSZXNvdXJjZSgpID09ICZy
ZXNvdXJjZSk7CiAgICAgICAgIHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA5NzQxOWVlZTc0MTlm
ODBhYWRhZmU4MjQ1NTkwZGZlZDY0ZTk3NzJlLi40ZTBhODEyZjYzYWQ5YWMyNWI2NTc3MWJmNDA3
ZWMyNWRjZWFmNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCkBAIC0xMzcsNiArMTM3LDIwIEBAIEZvbnRQbGF0Zm9ybURhdGEgQ2FjaGVkRm9udDo6cGxh
dGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYKICAgICByZXR1
cm4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlv
biwgYm9sZCwgaXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcyk7
CiB9CiAKK3ZvaWQgQ2FjaGVkRm9udDo6c2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCog
Y2xpZW50KQoreworICAgIGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCA9PSBjbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkKKyAgICAg
ICAgcmVtb3ZlQ2xpZW50KGRvd25jYXN0PENhY2hlZEZvbnRDbGllbnQ+KCptX2ZvbnRMb2FkUmVx
dWVzdENsaWVudCkpOworCisgICAgaWYgKGNsaWVudCkKKyAgICAgICAgYWRkQ2xpZW50KGRvd25j
YXN0PENhY2hlZEZvbnRDbGllbnQ+KCpjbGllbnQpKTsKKworICAgIG1fZm9udExvYWRSZXF1ZXN0
Q2xpZW50ID0gY2xpZW50OworfQorCiB2b2lkIENhY2hlZEZvbnQ6OmFsbENsaWVudHNSZW1vdmVk
KCkKIHsKICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggNjI2Nzc4OGYxN2U1ZWI0MjBhNTk0
NDg4NGM0NDVhMzBhMDdmOWY1Yy4uNmU5NDRiNzFhY2Y3Yzk4MjhiOWM0NjExMzIwYjhjZGVkZjA0
Y2YwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250TG9hZFJl
cXVlc3QuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDMsNyArNDQsNyBAQCBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdn
ZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKLWNsYXNzIENhY2hlZEZvbnQg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworY2xhc3MgQ2FjaGVkRm9udCA6IHB1YmxpYyBDYWNo
ZWRSZXNvdXJjZSwgcHVibGljIEZvbnRMb2FkUmVxdWVzdCB7CiBwdWJsaWM6CiAgICAgQ2FjaGVk
Rm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25z
dCBDb29raWVKYXIqLCBUeXBlID0gVHlwZTo6Rm9udFJlc291cmNlKTsKICAgICB2aXJ0dWFsIH5D
YWNoZWRGb250KCk7CkBAIC01MSwxMSArNTIsMTggQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5M
b2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImKTsKICAgICBib29sIHN0aWxsTmVlZHNM
b2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCi0gICAg
dmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0
YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udEZl
YXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0g
ICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
LCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKKyAgICAvLyBGb250TG9hZFJlcXVlc3QKKyAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhY2hlZFJlc291cmNlOjp1cmwoKTsg
fQorICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FjaGVkUmVzb3Vy
Y2U6OmlzTG9hZGluZygpOyB9CisgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQoKTsgfQorCisgICAgYm9vbCBl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXMpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRDbGllbnQoRm9udExv
YWRSZXF1ZXN0Q2xpZW50KikgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1E
YXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2Vs
ZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKQEAgLTc2LDggKzg0LDExIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKKyAgICBib29sIGlz
Q2FjaGVkRm9udCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIGJvb2wgbV9s
b2FkSW5pdGlhdGVkOwogICAgIGJvb2wgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jlc291
cmNlOworICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQg
eyBudWxscHRyIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCkBAIC04Niw0ICs5NywxMyBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FD
SEVEX1JFU09VUkNFKENhY2hlZEZvbnQsIENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3Vy
Y2UpCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorY2xhc3Mg
VHlwZUNhc3RUcmFpdHM8Y29uc3QgV2ViQ29yZTo6Q2FjaGVkRm9udCwgQXJnVHlwZSwgZmFsc2Ug
LyogaXNCYXNlVHlwZSAqLz4geworcHVibGljOgorICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFy
Z1R5cGUmIHNvdXJjZSkgeyByZXR1cm4gaXNUeXBlKHNvdXJjZSk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSB7IHJldHVy
biByZXNvdXJjZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRS
ZXNvdXJjZTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGb250TG9h
ZFJlcXVlc3QmIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QuaXNDYWNoZWRGb250KCk7IH0KK307
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5o
CmluZGV4IDUwZTYzZjU5Y2EzNDQ3YzIyYTk2ZmM5ZmM3MTYxOGQzMWI2ZDIwYzIuLjI2MDJmYmVk
ZGQ0NzI3OWMxMjEwMmMzNDFkODNjM2IzZWUzODE4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaApAQCAtMjUsMTggKzI1LDIxIEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVkRm9u
dDsKLQotY2xhc3MgQ2FjaGVkRm9udENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CitjbGFzcyBDYWNoZWRGb250Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50
LCBwdWJsaWMgRm9udExvYWRSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
YWNoZWRGb250Q2xpZW50KCkgPSBkZWZhdWx0OwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNs
aWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gRm9udFR5cGU7IH0KICAgICBDYWNoZWRS
ZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNo
ZWRGb250JikgeyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc0NhY2hlZEZvbnRDbGllbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRk9OVExPQURSRVFVRVNUQ0xJRU5UKFdlYkNvcmU6
OkNhY2hlZEZvbnRDbGllbnQsIGlzQ2FjaGVkRm9udENsaWVudCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMmUxZDZiYThiMWMxN2Y4MzMxOTc2
NmRhZmM0YTRkNGIyOWQ1OWRhYi4uOTQyZTE3ZTU0Y2NjZWExMDQ3ZWQ2OTNlZjFlNzc4NmQ5ZWUw
YmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBA
IC00OSw2ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlh
bGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsK
ICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYg
cmVtb3RlVVJJKTsKIAorICAgIGJvb2wgaXNDYWNoZWRTVkdGb250KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250
OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNW
R0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CkBAIC01Nyw0ICs1OSwxMiBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQ0FDSEVEX1JFU09VUkNFKENhY2hlZFNWR0ZvbnQsIENhY2hlZFJlc291cmNlOjpUeXBl
OjpTVkdGb250UmVzb3VyY2UpCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBB
cmdUeXBlPgorY2xhc3MgVHlwZUNhc3RUcmFpdHM8Y29uc3QgV2ViQ29yZTo6Q2FjaGVkU1ZHRm9u
dCwgQXJnVHlwZSwgZmFsc2UgLyogaXNCYXNlVHlwZSAqLz4geworcHVibGljOgorICAgIHN0YXRp
YyBib29sIGlzT2ZUeXBlKEFyZ1R5cGUmIHNvdXJjZSkgeyByZXR1cm4gaXNUeXBlKHNvdXJjZSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKSB7IHJldHVybiByZXNvdXJjZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OlR5cGU6OlNWR0ZvbnRSZXNvdXJjZTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpGb250TG9hZFJlcXVlc3QmIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3Qu
aXNDYWNoZWRTVkdGb250KCk7IH0KK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg3ZmM1OGMxYjQxMzhjMTc2YjliM2E2YzAxOTA3Y2Vj
MGY5N2FlNTkuLjc3NTJhZjk1NTJiNTc0MzQ2ZDYyOGQ0ZjdmYThmNzZjMzYwZDQ4YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xMTIsOCAr
MTEyLDYgQEAgV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAgICAgICAg
IGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKS5yZW1vdmUoY29udGV4dElk
ZW50aWZpZXIoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fY3NzRm9udFNlbGVjdG9yKQotICAgICAg
ICBtX2Nzc0ZvbnRTZWxlY3Rvci0+c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CiAgICAgbV9w
ZXJmb3JtYW5jZSA9IG51bGxwdHI7CiAgICAgbV9jcnlwdG8gPSBudWxscHRyOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425418</attachid>
            <date>2021-04-07 10:40:59 -0700</date>
            <delta_ts>2021-04-08 02:21:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210407184058.patch</filename>
            <type>text/plain</type>
            <size>51660</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uZjQ4Y2QyYTI3YTU3MDVlMzNlM2Y2OTIxOTRhOWMw
OGFiYWM2NjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6IE5ldyBmaWxlcyBGb250TG9hZFJlcXVlc3QuaCBhbmQgQ2FjaGVkRm9udExv
YWRSZXF1ZXN0LmgKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOiBVcGRhdGUgdG8gbm90IHJlcXVpcmUg
RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOiBVcGRhdGUgdG8gdXNlIEZv
bnRMb2FkUmVxdWVzdCBpbnN0ZWFkIG9mIENhY2hlZEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTb3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSBjb25zdCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGFuZAorICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZiBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250
U2VsZWN0b3IuY3BwOiBSZW1vdmUgRG9jdW1lbnQtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9udHMpOgorICAgICAgICAqIGNzcy9DU1NGb250U2Vs
ZWN0b3IuaDoKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IEFkZCBEb2N1bWVudC1zcGVj
aWZpYyBmb250LWxvYWRpbmcgY29kZSBmcm9tCisgICAgICAgICAgQ1NTRm9udFNlbGVjdG9yIGFu
ZCBDU1NGb250RmFjZVNyY1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YmVnaW5Mb2FkaW5nRm9udFNvb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmxvYWRQ
ZW5kaW5nRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvbnRMb2FkaW5nVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBBZGQgZnVuY3Rpb25z
IHRvIGluaXRpYXRlIGZvbnQgbG9hZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6IFVwZGF0ZSBkdWUgdG8gb3RoZXIgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKKyAgICAgICAgKiBsb2FkZXIvRm9u
dExvYWRSZXF1ZXN0Lmg6IEFkZGVkLiBBbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGZvbnQgbG9hZGlu
ZworICAgICAgICAgIHRoYXQgYWJzdHJhY3RzIHNvbWUgb2YgdGhlIGJlaGF2aW91ciBvZiBDYWNo
ZWRSZXNvdXJjZSwgQ2FjaGVkRm9udCBhbmQKKyAgICAgICAgICBDYWNoZWRGb250Q2xpZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdENsaWVudDo6aXNDYWNoZWRGb250TG9hZFJl
cXVlc3QgY29uc3QpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVx
dWVzdC5oOiBBZGRlZC4gQW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICBGb250TG9hZFJl
cXVlc3QgZm9yIENhY2hlZEZvbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDogUmVtb3ZlIG5vdy1yZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwog
MjAyMS0wNC0wNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlk
aUNvbnRleHQgY2FjaGluZyBpcyBub3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IGFhMzkxODJkNDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjU1YWY3ZGM5NTI2MTFh
ZTVjNGFjMTYzZTcxZGFkOTg1ZmY2ODk1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzc2LDYg
Kzc3Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKICAgICBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCiAg
ICAgbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisgICAgbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgbG9hZGVyL0Zvcm1TdGF0ZS5oCiAgICAgbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKICAgICBs
b2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCkBAIC04MjgsNiArODI5LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmgKIAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWRGb250TG9hZFJlcXVlc3QuaAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZVBvbGljeS5oCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1MzAyZGIw
ZDBjNjgyMjMxZjU2MmZlOTA4YzllYjE1MTFiM2Y5NjEuLmZlYWQxMzdlZmViYzE5OWUxMTcwNzEx
YTJmYTc1YWEzYTgxMWViNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDIsNiArMjA0Miw3IEBACiAJCTY1NjU4MjAyMDlE
MTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFQjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1l
cy5oICovOyB9OwogCQk2NTZEMzczMjBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQz
NzFBMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzM2MEFEQkE1REUwMEE0
NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MUUwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQz
IC8qIEZvbnRMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzIyMEFE
QkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczQzBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVM
b2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzNFMEFEQkE1REUwMEE0NTU0
RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MjYwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI4OTMsNiArMjg5NCw3IEBACiAJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVz
b3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTIzRDI3OTAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTE4
MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5MkYw
ODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzRjE5OTUw
MDgyNDVFNTkwMDFFOUFCQyAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1ODc4NjQ5MDJERTNBOUEwMUVBNDEy
MiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVQ
b2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZVBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFC
QyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Yx
OTk4QzA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5NTVBNDEwM0Q3MjkzMjAwODYzNUNF
IC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTc2MSw2ICs5NzYzLDcgQEAKIAkJNjU2RDM3MUUwQURCQTVERTAw
QTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEb2N1bWVudExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udExvYWRSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBG
cmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjYwQURCQTVERTAwQTQ1
NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjg1MSw2ICsxNjg1NCw3IEBACiAJCUY1NUIzREFDMTI1MUYxMkQwMDNF
RjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlZWtJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU4Nzg0RjAw
MkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1cnNvck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NTRD
MDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZVZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTg1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRm9udExv
YWRSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVQ
b2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCUY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1NMS2V5
R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1cnNvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAg
LTI1OTM3LDYgKzI1OTQxLDcgQEAKIAkJCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyogQ2Fj
aGVkRm9udC5jcHAgKi8sCiAJCQkJQkM2NEI0Q0EwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZv
bnQuaCAqLywKIAkJCQkxQUVGNEU2NjE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVu
dC5oICovLAorCQkJCTg1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJl
cXVlc3QuaCAqLywKIAkJCQlCQ0IxNkMwMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2Uu
Y3BwICovLAogCQkJCUJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICov
LAogCQkJCTMxOUZCRDVEMTVEMkY0NDQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oICov
LApAQCAtMjc1ODUsNiArMjc1OTAsNyBAQAogCQkJCUNFQkI4QzMyMjA3ODZEQ0IwMDAzOTU0NyAv
KiBGZXRjaElkaW9tcy5jcHAgKi8sCiAJCQkJQ0VCQjhDMzEyMDc4NkRDQjAwMDM5NTQ3IC8qIEZl
dGNoSWRpb21zLmggKi8sCiAJCQkJNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNoT3B0
aW9ucy5oICovLAorCQkJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVl
c3QuaCAqLywKIAkJCQk2NTZEMzcyMzBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmNwcCAq
LywKIAkJCQk2NTZEMzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8sCiAJCQkJ
NDE4ODVCOTIxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLywKQEAgLTMx
NjE0LDYgKzMxNjIwLDcgQEAKIAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYy
QjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMw
MEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0YxOTk1
MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8q
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDI2LDYgKzMyNDMz
LDcgQEAKIAkJCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDJFRTNBNzE3NTc2RTU1
MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0QTUzMkYyNTYwNTdDRDAwMjhDNTkyIC8qIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0
cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUzMjBENkIxMjJBMjRFOTAwMkQxNDQwIC8qIEZv
bnRQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKaW5kZXggODE3MWFjY2VhN2VmNDdjYjE1Mzk5NWU5NGFhOGEwMTE5ZDdhZTM2MC4uYzg5YmE0
MzVmMzBmMmIxMzY2NjM4NTNlMTAwYjFhOTUyNjdjMmY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCkBAIC03NiwxMCArNzYsOSBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBTYwogICAg
ICAgICBpZiAoIWl0ZW0uaXNMb2NhbCgpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvKiBzZXR0
aW5ncyA9IGNvbnRleHQgPyAmY29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKSA6IG51bGxwdHI7CiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQpOwotICAgICAg
ICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYm
IGlzPERvY3VtZW50Pihjb250ZXh0KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoQ2Fj
aGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udCgmZG9jdW1lbnQsIGZvdW5kU1ZH
Rm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRG
YWNlLCBpdGVtLnJlc291cmNlKCksIGRvY3VtZW50LmZvbnRTZWxlY3RvcigpLCAqY2FjaGVkRm9u
dCk7CisgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVk
Rm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBmb250UmVxdWVzdCA9IGl0ZW0u
Zm9udExvYWRSZXF1ZXN0KGNvbnRleHQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVu
dEluVXNlckFnZW50U2hhZG93VHJlZSkpCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1h
a2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksICpj
b250ZXh0LT5jc3NGb250U2VsZWN0b3IoKSwgV1RGTW92ZShmb250UmVxdWVzdCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVs
ZW1lbnQgPyBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNv
dXJjZSgpLCAqZm9udEZhY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKaW5kZXggYmMzMjNjMmYyZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZC4u
NjQ0NTdkZmMzYzAzYzcyZTk1ZjcxOGY4NmU5ZjUyMWU5OWIwODE5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDU1NGb250RmFjZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgotI2luY2x1ZGUg
IkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250TG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJDYWNoZWRTVkdGb250LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
b250LmgiCkBAIC03MiwxOSArNzIsMTkgQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW0KIHsKIH0K
IAotQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYgZm9udFNl
bGVjdG9yLCBDYWNoZWRGb250JiBmb250KQorQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkks
IENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiYmIHJlcXVlc3QpCiAgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1pbHlOYW1lT3JV
UkkpCiAgICAgLCBtX2ZhY2Uob3duZXIpCiAgICAgLCBtX2ZvbnRTZWxlY3RvcihtYWtlV2Vha1B0
cihmb250U2VsZWN0b3IpKQotICAgICwgbV9mb250KCZmb250KQorICAgICwgbV9mb250UmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpKQogewogICAgIC8vIFRoaXMgbWF5IHN5bmNocm9ub3VzbHkgY2Fs
bCBmb250TG9hZGVkKCkuCi0gICAgbV9mb250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9u
dFJlcXVlc3QtPnNldENsaWVudCh0aGlzKTsKIAotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6
OlBlbmRpbmcgJiYgbV9mb250LT5pc0xvYWRlZCgpKSB7CisgICAgaWYgKHN0YXR1cygpID09IFN0
YXR1czo6UGVuZGluZyAmJiAhbV9mb250UmVxdWVzdC0+aXNMb2FkaW5nKCkpIHsKICAgICAgICAg
c2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlRm9u
dExvYWRDb21wbGV0aW9ucygpKSB7Ci0gICAgICAgICAgICBpZiAobV9mb250LT5lcnJvck9jY3Vy
cmVkKCkpCisgICAgICAgICAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTA5
LDggKzEwOSw4IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiAKIENTU0ZvbnRGYWNlU291cmNl
Ojp+Q1NTRm9udEZhY2VTb3VyY2UoKQogewotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1fZm9u
dC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkKKyAgICAgICAg
bV9mb250UmVxdWVzdC0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCiBib29sIENTU0ZvbnRGYWNl
U291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3QKQEAgLTEyMCwy
OSArMTIwLDI5IEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoKSBjb25zdAogCiB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCkKIHsKLSAgICBpZiAoc3RhdHVzKCkgPT0g
U3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRh
KCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKKyAgICBpZiAoc3RhdHVzKCkg
PT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udFJlcXVlc3QgJiYgbV9mb250UmVxdWVzdC0+dXJs
KCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQog
ICAgICAgICBsb2FkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQo
Q2FjaGVkRm9udCYgbG9hZGVkRm9udCkKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2Fk
ZWQoRm9udExvYWRSZXF1ZXN0JiBmb250UmVxdWVzdCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGxv
YWRlZEZvbnQsICZsb2FkZWRGb250ID09IG1fZm9udC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChmb250UmVxdWVzdCwgJmZvbnRSZXF1ZXN0ID09IG1fZm9udFJlcXVlc3QuZ2V0KCkpOwogCiAg
ICAgaWYgKHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVmPENTU0ZvbnRGYWNlPiBwcm90ZWN0ZWRGYWNlKG1fZmFjZSk7CiAKLSAgICAv
LyBJZiB0aGUgZm9udCBpcyBpbiB0aGUgY2FjaGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5
IGNhbGxlZCBmcm9tIENhY2hlZEZvbnQ6OmFkZENsaWVudCgpLgorICAgIC8vIElmIHRoZSBmb250
IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkgY2FsbGVkIGZyb20g
Rm9udExvYWRSZXF1ZXN0OjphZGRDbGllbnQoKS4KICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVz
OjpQZW5kaW5nKQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICBlbHNl
IGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUpIHsKICAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBtYXkgYmUgY2FsbGVkIHR3aWNlIGlmIGxvYWRpbmcgd2FzIGNhbmNlbGxlZC4KLSAgICAg
ICAgQVNTRVJUKG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZm9u
dFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkgfHwgIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9u
dERhdGEobV9mYW1pbHlOYW1lT3JVUkkpKQorICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9j
Y3VycmVkKCkgfHwgIW1fZm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5
TmFtZU9yVVJJKSkKICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgZWxz
ZQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTE1NCw5ICsxNTQsMTAg
QEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAg
ICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAKLSAgICBpZiAobV9mb250KSB7CisgICAg
aWYgKG1fZm9udFJlcXVlc3QpIHsKICAgICAgICAgQVNTRVJUKG1fZm9udFNlbGVjdG9yKTsKLSAg
ICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnQpOworICAg
ICAgICBpZiAoYXV0byogY29udGV4dCA9IG1fZm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCisgICAgICAgICAgICBjb250ZXh0LT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9m
b250UmVxdWVzdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CiAgICAgICAgIGlmIChtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCkgewpAQCAtMTk4LDcgKzE5OSw3
IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKICAgICBib29sIHVzZXNJbkRvY3VtZW50U1ZH
Rm9udCA9IG1faGFzU1ZHRm9udEZhY2VFbGVtZW50OwogCi0gICAgaWYgKCFtX2ZvbnQgJiYgIXVz
ZXNJbkRvY3VtZW50U1ZHRm9udCkgeworICAgIGlmICghbV9mb250UmVxdWVzdCAmJiAhdXNlc0lu
RG9jdW1lbnRTVkdGb250KSB7CiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAg
ICAgICAgICAgaWYgKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTAsMTIgKzIxMSwxMiBAQCBSZWZQdHI8Rm9u
dD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGJvbwogICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250
Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksICZmb250RmFjZUZl
YXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcywgdHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKG1f
Zm9udCkgewotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnRE
YXRhKG1fZmFtaWx5TmFtZU9yVVJJKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkgeworICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2Zh
bWlseU5hbWVPclVSSSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7
CiAKICAgICAgICAgQVNTRVJUKHN0YXR1cygpID09IFN0YXR1czo6U3VjY2Vzcyk7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9mb250LT5jcmVhdGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1p
bHlOYW1lT3JVUkksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZm9u
dFJlcXVlc3QtPmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFj
ZUNhcGFiaWxpdGllcyk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTIzMiw3ICsyMzMsMTEgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRG
YWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBi
b28KIAogYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faGFzU1ZHRm9udEZhY2VFbGVtZW50IHx8IGlzPENhY2hlZFNWR0Zv
bnQ+KG1fZm9udC5nZXQoKSk7CisgICAgaWYgKCFtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCAh
aXM8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PihtX2ZvbnRSZXF1ZXN0LmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byogY2FjaGVkRm9udFJlcXVlc3QgPSBkb3duY2FzdDxD
YWNoZWRGb250TG9hZFJlcXVlc3Q+KG1fZm9udFJlcXVlc3QuZ2V0KCkpOworICAgIHJldHVybiBp
czxDYWNoZWRTVkdGb250PihjYWNoZWRGb250UmVxdWVzdC0+Y2FjaGVkRm9udCgpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA1OTJjZTgzMWM1YTky
ODYzZTA0ZWJkYjc2ZWYzYWMxOGY1MWMxM2JkLi42MTA3ODkzZWVlNDkwMjZmYjIyYjUxMmE2NmI5
Mzk0YjIxZWFiZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MjUsOCArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGll
bnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkZvbnRM
b2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgpAQCAtNDcsMTEgKzQ2LDExIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKLWNsYXNzIENTU0ZvbnRGYWNlU291
cmNlIGZpbmFsIDogcHVibGljIENhY2hlZEZvbnRDbGllbnQgeworY2xhc3MgQ1NTRm9udEZhY2VT
b3VyY2UgZmluYWwgOiBwdWJsaWMgRm9udExvYWRSZXF1ZXN0Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKLSAgICBDU1NGb250
RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9y
VVJJLCBDU1NGb250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NT
Rm9udFNlbGVjdG9yJiwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4mJik7CiAgICAg
Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWls
eU5hbWVPclVSSSwgU1ZHRm9udEZhY2VFbGVtZW50Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiYmKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgp
OwpAQCAtNzYsMjIgKzc1LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0g
bnVsbHB0cik7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAg
Q2FjaGVkRm9udCogY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQot
ICAgIGJvb2wgcmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250
OyB9CisgICAgRm9udExvYWRSZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CisgICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CiAKICAgICBib29sIGlz
U1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIHNob3VsZEln
bm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdDsKIAotICAgIHZvaWQgZm9udExvYWRlZChD
YWNoZWRGb250Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVz
dCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21T
dHJpbmcgbV9mYW1pbHlOYW1lT3JVUkk7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250
IG5hbWUgZm9yIGxvY2FsLgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcg
Zm9udCBmYWNlLgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3Rvcjsg
Ly8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250
cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCisgICAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRz
LCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
clZpZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuY3BwCmluZGV4IDUzOWZkNDg4OTY5ZWZhNmZhZDVmZWE0ZDNjOGExN2I3MmY3MTll
ZTUuLjllM2U5YjUyYjg3NzRjOWI5NDA2NWEzNzJkYjM3YWNiZDJiNDJmMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTI5LDEwICsyOSwxMSBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03NiwxOSArNzcsMTYgQEAgYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVl
Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IEMK
ICAgICByZXR1cm4gaGFuZGxlcigqbV9jYWNoZWRGb250KTsKIH0KIAotQ2FjaGVkRm9udCogQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNT
VkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKK3N0ZDo6
dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2Fk
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBib29sIGlzU1ZHLCBib29s
IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7CiAgICAgaWYgKG1f
Y2FjaGVkRm9udCkKLSAgICAgICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PihtX2NhY2hlZEZvbnQuZ2V0
KCkpOwogCi0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwotICAgIG9wdGlvbnMuY29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJB
Z2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9s
aWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNr
OwotICAgIG9wdGlvbnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9IG1fbG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZTsKKyAgICBhdXRvIHJlcXVlc3QgPSBjb250ZXh0LT5mb250TG9hZFJlcXVlc3QobV9y
ZXNvdXJjZSwgaXNTVkcsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUs
IG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgaWYgKGlzPENhY2hlZEZvbnRMb2FkUmVx
dWVzdD4ocmVxdWVzdC5nZXQoKSkpCisgICAgICAgIG1fY2FjaGVkRm9udCA9IGRvd25jYXN0PENh
Y2hlZEZvbnRMb2FkUmVxdWVzdD4ocmVxdWVzdC5nZXQoKSktPmNhY2hlZEZvbnQoKTsKIAotICAg
IENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+
Y29tcGxldGVVUkwobV9yZXNvdXJjZSkpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEluaXRp
YXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2NhY2hl
ZEZvbnQgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZN
b3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVfb3IobnVsbHB0cik7Ci0gICAgcmV0dXJuIG1fY2Fj
aGVkRm9udC5nZXQoKTsKKyAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogYm9vbCBDU1NGb250RmFj
ZVNyY1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgb3RoZXIpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBjNWRjNTlmZDk2
YTFiZTMyODM2MzQ0ZmYxOWQ5NTg3NzI5MjZkN2I0Li5jYmUxNDExZTQ2YzRlZDc2ZTcxMWJjMzQx
ZTY1OTkwM2Y1MGZhYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmgKQEAgLTM0LDggKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVk
Rm9udDsKLWNsYXNzIERvY3VtZW50OworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgU1ZH
Rm9udEZhY2VFbGVtZW50OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3Mg
Q1NTRm9udEZhY2VTcmNWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CkBA
IC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMo
Y29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxl
cikgY29uc3Q7CiAKLSAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KERvY3VtZW50KiwgYm9vbCBp
c1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSk7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NGb250RmFj
ZVNyY1ZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAK
aW5kZXggYzExNTc4Y2ZjNTA0MTJjYmE2YzU1MzBmOTRiZThhYTM2MzQ0NzVjYy4uYWNkMmExY2My
NGUzNGMwNTRkMDM3ODIzNDg3NzM3Y2ZlYzdmZWI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAKQEAgLTY4LDcgKzY4LDYgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250
U2VsZWN0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fZm9udENh
Y2hlKG1ha2VSZWYoY29udGV4dC5mb250Q2FjaGUoKSkpCiAgICAgLCBtX2Nzc0ZvbnRGYWNlU2V0
KENTU0ZvbnRGYWNlU2V0OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2ZvbnRNb2RpZmllZE9ic2Vy
dmVyKFt0aGlzXSB7IGZvbnRNb2RpZmllZCgpOyB9KQotICAgICwgbV9mb250TG9hZGluZ1RpbWVy
KCp0aGlzLCAmQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGluZ1RpbWVyRmlyZWQpCiAgICAgLCBt
X3VuaXF1ZUlkKCsrZm9udFNlbGVjdG9ySWQpCiAgICAgLCBtX3ZlcnNpb24oMCkKIHsKQEAgLTkz
LDcgKzkyLDcgQEAgQ1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKIHsKICAgICBM
T0coRm9udHMsICJDU1NGb250U2VsZWN0b3IgJXAgZHRvciIsIHRoaXMpOwogCi0gICAgc3RvcExv
YWRpbmdBbmRDbGVhckZvbnRzKCk7CisgICAgY2xlYXJGb250cygpOwogICAgIG1fZm9udENhY2hl
LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCkBAIC0zMzYsOTQgKzMzNSwxMyBAQCBGb250UmFu
Z2VzIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcgogICAgIHJldHVybiBGb250UmFuZ2VzIHsgV1RGTW92ZShmb250KSB9
OwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkK
K3ZvaWQgQ1NTRm9udFNlbGVjdG9yOjpjbGVhckZvbnRzKCkKIHsKLSAgICBpZiAobV9pc1N0b3Bw
ZWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX2ZvbnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0g
ICAgICAgIEFTU0VSVChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICBtX2ZvbnRMb2Fk
aW5nVGltZXIuc3RvcCgpOwotCi0gICAgaWYgKGlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkp
KSB7Ci0gICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRl
eHQpOwotICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIg
PSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgICAgICBmb3IgKGF1dG8mIGZv
bnRIYW5kbGUgOiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKLSAgICAgICAgICAgIC8vIEJhbGFu
Y2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCi0g
ICAgICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKmZv
bnRIYW5kbGUpOwotICAgICAgICB9Ci0gICAgICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5jbGVh
cigpOwotICAgIH0KLQogICAgIG1fY3NzRm9udEZhY2VTZXQtPmNsZWFyKCk7CiAgICAgbV9jbGll
bnRzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRpbmdGb250
U29vbihDYWNoZWRGb250JiBmb250KQotewotICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhaXM8RG9j
dW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQpOwotCi0gICAgbV9mb250c1Rv
QmVnaW5Mb2FkaW5nLmFwcGVuZCgmZm9udCk7Ci0gICAgLy8gSW5jcmVtZW50IHRoZSByZXF1ZXN0
IGNvdW50IG5vdywgaW4gb3JkZXIgdG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZyb20gYmVpbmcg
ZGlzcGF0Y2hlZAotICAgIC8vIGFmdGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0
IGJlZm9yZSBpdCBiZWdhbiBsb2FkaW5nLiBCYWxhbmNlZCBieQotICAgIC8vIGRlY3JlbWVudFJl
cXVlc3RDb3VudCgpIGluIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBzdG9wTG9hZGlu
Z0FuZENsZWFyRm9udHMoKS4KLSAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmlu
Y3JlbWVudFJlcXVlc3RDb3VudChmb250KTsKLQotICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3Vz
cGVuZGVkICYmICFtX2ZvbnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9mb250
TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rv
cjo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKQotewotICAgIHN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbjo6UGFnZVdpbGxCZVN1c3BlbmRlZCk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9y
Ojpsb2FkUGVuZGluZ0ZvbnRzKCkKLXsKLSAgICBpZiAobV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVk
IHx8ICFpczxEb2N1bWVudD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0KLSAg
ICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZvbnRzVG9CZWdpbkxv
YWRpbmc7Ci0gICAgZm9udHNUb0JlZ2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGlu
Zyk7Ci0KLSAgICAvLyBDU1NGb250U2VsZWN0b3IgY291bGQgZ2V0IGRlbGV0ZWQgdmlhIGJlZ2lu
TG9hZElmTmVlZGVkKCkgb3IgbG9hZERvbmUoKSB1bmxlc3MgcHJvdGVjdGVkLgotICAgIFJlZjxD
U1NGb250U2VsZWN0b3I+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotCi0gICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKLSAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5n
KSB7Ci0gICAgICAgIGZvbnRIYW5kbGUtPmJlZ2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNl
TG9hZGVyKTsKLSAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4g
YmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVj
cmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ1NTRm9u
dFNlbGVjdG9yOjpmb250TG9hZGluZ1RpbWVyRmlyZWQoKQotewotICAgIGlmICghaXM8RG9jdW1l
bnQ+KG1fY29udGV4dC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQpOwotICAgIFJlZjxDU1NGb250U2Vs
ZWN0b3I+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotCi0gICAgbG9hZFBlbmRpbmdGb250cygpOwot
Ci0gICAgLy8gRklYTUU6IFVzZSBTdWJyZXNvdXJjZUxvYWRlciBpbnN0ZWFkLgotICAgIC8vIENh
bGwgRnJhbWVMb2FkZXI6OmxvYWREb25lIGJlZm9yZSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VM
b2FkRG9uZSB0byBtYXRjaCB0aGUgb3JkZXIgaW4gU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURv
bmUuCi0gICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5sb2FkRG9uZShMb2FkQ29t
cGxldGlvblR5cGU6OkZpbmlzaCk7Ci0gICAgLy8gRW5zdXJlIHRoYXQgaWYgdGhlIHJlcXVlc3Qg
Y291bnQgcmVhY2hlcyB6ZXJvLCB0aGUgZnJhbWUgbG9hZGVyIHdpbGwga25vdyBhYm91dCBpdC4K
LSAgICAvLyBOZXcgZm9udCBsb2FkcyBtYXkgYmUgdHJpZ2dlcmVkIGJ5IGxheW91dCBhZnRlciB0
aGUgZG9jdW1lbnQgbG9hZCBpcyBjb21wbGV0ZSBidXQgYmVmb3JlIHdlIGhhdmUgZGlzcGF0Y2hl
ZAotICAgIC8vIGRpZEZpbmlzaExvYWRpbmcgZm9yIHRoZSBmcmFtZS4gTWFrZSBzdXJlIHRoZSBk
ZWxlZ2F0ZSBpcyBhbHdheXMgZGlzcGF0Y2hlZCBieSBjaGVja2luZyBleHBsaWNpdGx5LgotICAg
IGlmIChkb2N1bWVudC5mcmFtZSgpKQotICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIo
KS5jaGVja0xvYWRDb21wbGV0ZSgpOwotfQotCiBzaXplX3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxs
YmFja0ZvbnRDb3VudCgpCiB7CiAgICAgaWYgKG1faXNTdG9wcGVkKQpAQCAtNDQ5LDI5ICszNjcs
NCBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgIHJldHVybiBmb250OwogfQogCi12b2lk
IENTU0ZvbnRTZWxlY3Rvcjo6c3RvcCgpCi17Ci0gICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3Ao
KTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lv
bikKLXsKLSAgICBpZiAobV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRp
bmdUaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpyZXN1bWUoKQotewot
ICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIW1fZm9udHNUb0JlZ2luTG9hZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIG1fZm9udExv
YWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKLQotICAgIG1faXNGb250TG9hZGluZ1N1c3Bl
bmRlZCA9IGZhbHNlOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5k
ZXggZTRhZmYyNmFhYWZmMDhmODY4NjdlMDQ1NTlmYTQxYjRiYjdlOGYzNy4uNDM0N2U4NWExNTYy
MzRhOTNjZWJlZDE0N2MyMzI2YzIxYjUxYWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZhbGxiYWNrRm9u
dENvdW50KCkgZmluYWw7CiAgICAgUmVmUHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CiAKLSAgICB2b2lkIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpOworICAgIHZvaWQgY2xlYXJGb250cygpOwogICAgIHZvaWQgZW1wdHlDYWNo
ZXMoKTsKICAgICB2b2lkIGJ1aWxkU3RhcnRlZCgpOwogICAgIHZvaWQgYnVpbGRDb21wbGV0ZWQo
KTsKQEAgLTgxLDkgKzgxLDYgQEAgcHVibGljOgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQo
KTsgfQogCi0gICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250Jik7Ci0gICAg
dm9pZCBzdXNwZW5kRm9udExvYWRpbmdUaW1lcigpOwotCiAgICAgRm9udEZhY2VTZXQqIGZvbnRG
YWNlU2V0SWZFeGlzdHMoKTsKICAgICBGb250RmFjZVNldCYgZm9udEZhY2VTZXQoKTsKIApAQCAt
MTEwLDEyICsxMDcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9udFN0eWxlVXBkYXRlTmVlZGVk
KENTU0ZvbnRGYWNlJikgZmluYWw7CiAKICAgICB2b2lkIGZvbnRNb2RpZmllZCgpOwotICAgIHZv
aWQgZm9udExvYWRpbmdUaW1lckZpcmVkKCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKLSAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lv
bikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkNTU0ZvbnRTZWxlY3RvciJf
czsgfQogCiAgICAgc3RydWN0IFBlbmRpbmdGb250RmFjZVJ1bGUgewpAQCAtMTMwLDE1ICsxMjMs
MTEgQEAgcHJpdmF0ZToKICAgICBSZWY8Q1NTRm9udEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VTZXQ7
CiAgICAgSGFzaFNldDxGb250U2VsZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKLSAgICBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1fZm9udHNUb0JlZ2luTG9hZGlu
ZzsKICAgICBIYXNoU2V0PFJlZlB0cjxDU1NGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlvbnNQb3Nz
aWJseVRvUmVtb3ZlOwogICAgIEhhc2hTZXQ8UmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPj4gbV9j
c3NDb25uZWN0aW9uc0VuY291bnRlcmVkRHVyaW5nQnVpbGQ7CiAKICAgICBDU1NGb250RmFjZVNl
dDo6Rm9udE1vZGlmaWVkT2JzZXJ2ZXIgbV9mb250TW9kaWZpZWRPYnNlcnZlcjsKIAotICAgIFRp
bWVyIG1fZm9udExvYWRpbmdUaW1lcjsKLSAgICBib29sIG1faXNGb250TG9hZGluZ1N1c3BlbmRl
ZCB7IGZhbHNlIH07Ci0KICAgICB1bnNpZ25lZCBtX3VuaXF1ZUlkOwogICAgIHVuc2lnbmVkIG1f
dmVyc2lvbjsKICAgICB1bnNpZ25lZCBtX2NvbXB1dGluZ1Jvb3RTdHlsZUZvbnRDb3VudCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGViNGYyOGJkMzMwN2U0NzRkYmE3YTNlMjZh
YTdjYTAwNTYzZjU2MTIuLmU1MzkwYzZhYTk3OWRlNWEyYzcyODVlYmQ2M2Y2NjMwMGY2MGE3YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzcsOCArMzcsMTEgQEAKICNpbmNsdWRlICJD
U1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1
ZGUgIkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250TG9hZFJlcXVl
c3QuaCIKICNpbmNsdWRlICJDYWNoZWRGcmFtZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgpAQCAtNzQsNiArNzcsNyBAQAogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkZvY3VzRXZlbnQuaCIKICNpbmNsdWRlICJGb250RmFjZVNldC5oIgorI2luY2x1
ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNjM5LDYgKzY0Myw3
IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0
aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3VtCiAgICAgLCBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVz
c2lvblRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVy
RmlyZWQpCiAgICAgLCBtX3NoYXJlZE9iamVjdFBvb2xDbGVhclRpbWVyKCp0aGlzLCAmRG9jdW1l
bnQ6OmNsZWFyU2hhcmVkT2JqZWN0UG9vbCkKICAgICAsIG1fZm9udFNlbGVjdG9yKENTU0ZvbnRT
ZWxlY3Rvcjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZm9udExvYWRpbmdUaW1lcigqdGhpcywg
JkRvY3VtZW50Ojpmb250TG9hZGluZ1RpbWVyRmlyZWQpCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZv
cm1Db250cm9sc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9s
c1RpbWVyRmlyZWQpCiAgICAgLCBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIoKnRoaXMsICZEb2N1
bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKQogICAgICwgbV9zb2NrZXRQcm92aWRlcihw
YWdlKCkgPyAmcGFnZSgpLT5zb2NrZXRQcm92aWRlcigpIDogbnVsbHB0cikKQEAgLTc1OCw3ICs3
NjMsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBleHRlbnNpb25TdHlsZVNoZWV0cygp
LmRldGFjaEZyb21Eb2N1bWVudCgpOwogCiAgICAgc3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2ZXIo
KTsgLy8gV2UgbmVlZCB0byBkZXN0cm95IENTU0ZvbnRTZWxlY3RvciBiZWZvcmUgZGVzdHJveWlu
ZyBtX2NhY2hlZFJlc291cmNlTG9hZGVyLgotICAgIG1fZm9udFNlbGVjdG9yLT5zdG9wTG9hZGlu
Z0FuZENsZWFyRm9udHMoKTsKKyAgICBzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKIAogICAg
IC8vIEl0J3MgcG9zc2libGUgZm9yIG11bHRpcGxlIERvY3VtZW50cyB0byBlbmQgdXAgcmVmZXJl
bmNpbmcgdGhlIHNhbWUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgKGUuZy4sIFNWR0ltYWdlcwogICAg
IC8vIGxvYWQgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQgYW5kIHRoZSBTVkdEb2N1bWVudCB3
aXRoIHRoZSBzYW1lIERvY3VtZW50TG9hZGVyKS4KQEAgLTgwNyw3ICs4MTIsNyBAQCB2b2lkIERv
Y3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9s
cy5jbGVhcigpOwogICAgICAgICBtX3BlbmRpbmdSZW5kZXJUcmVlVGV4dFVwZGF0ZSA9IHsgfTsK
IAotICAgICAgICBtX2ZvbnRTZWxlY3Rvci0+c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7Cisg
ICAgICAgIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgICAgIGRldGFjaFBhcnNl
cigpOwogCkBAIC0yMDYyLDcgKzIwNjcsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNvbHZlU3R5bGUo
UmVzb2x2ZVN0eWxlVHlwZSB0eXBlKQogCiAgICAgICAgIG1faW5TdHlsZVJlY2FsYyA9IGZhbHNl
OwogCi0gICAgICAgIGZvbnRTZWxlY3RvcigpLmxvYWRQZW5kaW5nRm9udHMoKTsKKyAgICAgICAg
bG9hZFBlbmRpbmdGb250cygpOwogCiAgICAgICAgIGlmIChzdHlsZVVwZGF0ZSkgewogICAgICAg
ICAgICAgdXBkYXRlUmVuZGVyVHJlZShXVEZNb3ZlKHN0eWxlVXBkYXRlKSk7CkBAIC0yNzEyLDYg
KzI3MTcsMTEgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRp
b25VcGRhdGVzKCkKICNlbmRpZgogfQogCit2b2lkIERvY3VtZW50OjpzdXNwZW5kRm9udExvYWRp
bmdUaW1lcigpCit7CisgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKK30KKwogYm9vbCBE
b2N1bWVudDo6c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3QKIHsKICAgICAvLyBCeXBhc3MgdGhpcyBwb2xpY3kgd2hlbiB0aGUgd29ybGQgaXMga25vd24s
IGFuZCBpdCBub3QgdGhlIG5vcm1hbCB3b3JsZC4KQEAgLTI5OTcsNiArMzAwNyw3MyBAQCB2b2lk
IERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAgIHNldFJlYWR5U3RhdGUoTG9hZGluZyk7CiB9
CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IERvY3VtZW50Ojpmb250TG9hZFJl
cXVlc3QoU3RyaW5nJiB1cmwsIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQoreworICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKKyAgICBvcHRp
b25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBpc0luaXRpYXRpbmdFbGVtZW50
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6
U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xp
Y3lDaGVjazsKKyAgICBvcHRpb25zLmxvYWRlZEZyb21PcGFxdWVTb3VyY2UgPSBsb2FkZWRGcm9t
T3BhcXVlU291cmNlOworCisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0KGNvbXBsZXRlVVJMKHVybCkpLCBvcHRpb25zKTsKKyAgICByZXF1ZXN0LnNldElu
aXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWNoZWRGb250TG9hZFJlcXVlc3Q+KG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRy
KS5nZXQoKSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKEZvbnRM
b2FkUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoaXM8Q2FjaGVkRm9udExvYWRSZXF1
ZXN0PihyZXF1ZXN0KSk7CisgICAgYXV0byogZm9udCA9IGRvd25jYXN0PENhY2hlZEZvbnRMb2Fk
UmVxdWVzdD4ocmVxdWVzdCkuY2FjaGVkRm9udCgpOworCisgICAgQVNTRVJUKGZvbnQpOworICAg
IG1fZm9udHNUb0JlZ2luTG9hZGluZy5hcHBlbmQoZm9udCk7CisgICAgLy8gSW5jcmVtZW50IHRo
ZSByZXF1ZXN0IGNvdW50IG5vdywgaW4gb3JkZXIgdG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZy
b20gYmVpbmcgZGlzcGF0Y2hlZAorICAgIC8vIGFmdGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1
ZXN0ZWQgYnV0IGJlZm9yZSBpdCBiZWdhbiBsb2FkaW5nLiBCYWxhbmNlZCBieQorICAgIC8vIGRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBz
dG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKS4KKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5p
bmNyZW1lbnRSZXF1ZXN0Q291bnQoKmZvbnQpOworCisgICAgaWYgKCFtX2lzU3VzcGVuZGVkICYm
ICFtX2ZvbnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9mb250TG9hZGluZ1Rp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQorCit2b2lkIERvY3VtZW50Ojpsb2FkUGVuZGluZ0Zv
bnRzKCkKK3sKKyAgICBpZiAobV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2Fk
aW5nOworICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcp
OworCisgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykgewor
ICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChtX2NhY2hlZFJlc291cmNlTG9h
ZGVyKTsKKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVn
aW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVj
cmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1l
bnQ6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCgpCit7CisgICAgbG9hZFBlbmRpbmdGb250cygpOwor
CisgICAgLy8gRklYTUU6IFVzZSBTdWJyZXNvdXJjZUxvYWRlciBpbnN0ZWFkLgorICAgIC8vIENh
bGwgRnJhbWVMb2FkZXI6OmxvYWREb25lIGJlZm9yZSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VM
b2FkRG9uZSB0byBtYXRjaCB0aGUgb3JkZXIgaW4gU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURv
bmUuCisgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+bG9hZERvbmUoTG9hZENvbXBsZXRpb25U
eXBlOjpGaW5pc2gpOworICAgIC8vIEVuc3VyZSB0aGF0IGlmIHRoZSByZXF1ZXN0IGNvdW50IHJl
YWNoZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3aWxsIGtub3cgYWJvdXQgaXQuCisgICAgLy8g
TmV3IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQgYWZ0ZXIgdGhlIGRvY3Vt
ZW50IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9yZSB3ZSBoYXZlIGRpc3BhdGNoZWQKKyAgICAv
LyBkaWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJhbWUuIE1ha2Ugc3VyZSB0aGUgZGVsZWdhdGUg
aXMgYWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tpbmcgZXhwbGljaXRseS4KKyAgICBpZiAoZnJh
bWUoKSkKKyAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCkuY2hlY2tMb2FkQ29tcGxldGUoKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkKK3sKKyAgICBtX2Zv
bnRMb2FkaW5nVGltZXIuc3RvcCgpOworICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IG1fZm9u
dHNUb0JlZ2luTG9hZGluZykgeworICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0
Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigpLgorICAgICAgICBtX2NhY2hlZFJlc291
cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOworICAgIH0KKyAg
ICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuY2xlYXIoKTsKKyAgICBtX2ZvbnRTZWxlY3Rvci0+Y2xl
YXJGb250cygpOworfQorCiBIVE1MQm9keUVsZW1lbnQqIERvY3VtZW50Ojpib2R5KCkgY29uc3QK
IHsKICAgICBhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CkBAIC01NTE2LDEzICs1
NTkzLDE3IEBAIHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFz
b24pCiAgICAgbV92aXN1YWxVcGRhdGVzQWxsb3dlZCA9IGZhbHNlOwogICAgIG1fdmlzdWFsVXBk
YXRlc1N1cHByZXNzaW9uVGltZXIuc3RvcCgpOwogCisgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0
b3AoKTsKKwogICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwogfQogCiB2b2lkIERvY3VtZW50Ojpy
ZXN1bWUoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiB7Ci0gICAgaWYgKCFtX2lzU3VzcGVu
ZGVkKQorICAgIGlmICghbV9pc1N1c3BlbmRlZCkgeworICAgICAgICBBU1NFUlQobV9mb250c1Rv
QmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSB8fCBtX2ZvbnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSk7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBjb3B5
VG9WZWN0b3IobV9kb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzKSkKICAgICAgICAg
ZWxlbWVudC0+cmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpOwpAQCAtNTU0NCw2ICs1NjI1
LDkgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQog
CiAgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwogCisgICAgaWYgKCFtX2ZvbnRzVG9CZWdpbkxv
YWRpbmcuaXNFbXB0eSgpKQorICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RhcnRPbmVTaG90
KDBfcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKSAmJiBy
ZWFzb24gPT0gUmVhc29uRm9yU3VzcGVuc2lvbjo6QmFja0ZvcndhcmRDYWNoZSkKICAgICAgICAg
c2V0U2VydmljZVdvcmtlckNvbm5lY3Rpb24oJlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDFmOWE4M2JmZDI2NGE0ZTE0MGUzYzFmMTM4YmZhYzRmMjU3OTQyOGIuLmY2MzhhYWJlMmQ0MWFj
Y2IyY2FmYzM5NzhhZDA3NjVlNGYwNzRiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
Q2FudmFzQmFzZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9k
ZS5oIgpAQCAtMTAyLDYgKzEwMyw3IEBAIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKIGNsYXNzIENT
U1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NT
U3R5bGVTaGVldDsKK2NsYXNzIENhY2hlZEZvbnQ7CiBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENhY2hlZFNjcmlwdDsKQEAgLTEzNyw2
ICsxMzksNyBAQCBjbGFzcyBFeHRlbnNpb25TdHlsZVNoZWV0czsKIGNsYXNzIEZsb2F0UXVhZDsK
IGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZvbnRGYWNlU2V0OworY2xhc3MgRm9udExvYWRSZXF1
ZXN0OwogY2xhc3MgRm9ybUNvbnRyb2xsZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lU2Vs
ZWN0aW9uOwpAQCAtNjMzLDYgKzYzNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmREZXZp
Y2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKTsKICAgICB2b2lkIHJlc3VtZURldmljZU1v
dGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygpOwogCisgICAgdm9pZCBzdXNwZW5kRm9udExvYWRp
bmdUaW1lcigpOworCiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyVmlldy5nZXQoKTsgfQogCiAgICAgYm9vbCByZW5kZXJUcmVlQmVpbmdEZXN0cm95
ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZDsgfQpAQCAtMTY0
NywxMCArMTY1MiwxNiBAQCBwcml2YXRlOgogCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAogICAgIENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgZmluYWwgeyByZXR1cm4g
bV9mb250U2VsZWN0b3IucHRyKCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1
ZXN0PiBmb250TG9hZFJlcXVlc3QoU3RyaW5nJiwgYm9vbCwgYm9vbCwgTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJl
cXVlc3QmKSBmaW5hbDsKIAogICAgIC8vIEZvbnRTZWxlY3RvckNsaWVudAogICAgIHZvaWQgZm9u
dHNOZWVkVXBkYXRlKEZvbnRTZWxlY3RvciYpIGZpbmFsOwogCisgICAgdm9pZCBsb2FkUGVuZGlu
Z0ZvbnRzKCk7CisgICAgdm9pZCBmb250TG9hZGluZ1RpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHN0
b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworCiAgICAgYm9vbCBpc0RvY3VtZW50KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAgLTE5ODIsNiArMTk5Myw4IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJI
VE1MOwogCiAgICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7CisgICAgVGlt
ZXIgbV9mb250TG9hZGluZ1RpbWVyOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwogCiAgICAgV2Vha0hhc2hTZXQ8TWVk
aWFQcm9kdWNlcj4gbV9hdWRpb1Byb2R1Y2VyczsKICAgICBXZWFrUHRyPFNwZWVjaFJlY29nbml0
aW9uPiBtX2FjdGl2ZVNwZWVjaFJlY29nbml0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM3NzM4MzFiODhjMmIwMmIwNWJjMmZmYjZm
MDUzZThkYWYxYTVmN2EuLmU3NTBhNjI3YWI2MGJjOTNmZGI1Zjc1ODU5ODNlNmRhNTQ5ZWJiNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVycm9yRXZl
bnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3Qu
aCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC0yMzIsNiArMjMz
LDExIEBAIEZvbnRDYWNoZSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9udENhY2hlKCkKICAg
ICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEZv
bnRMb2FkUmVxdWVzdD4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9udExvYWRSZXF1ZXN0KFN0
cmluZyYsIGJvb2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9yRWFjaEFjdGl2
ZURPTU9iamVjdChjb25zdCBGdW5jdGlvbjxTaG91bGRDb250aW51ZShBY3RpdmVET01PYmplY3Qm
KT4mIGFwcGx5KSBjb25zdAogewogICAgIC8vIEl0IGlzIG5vdCBhbGxvd2VkIHRvIHJ1biBhcmJp
dHJhcnkgc2NyaXB0IG9yIGNvbnN0cnVjdCBuZXcgQWN0aXZlRE9NT2JqZWN0cyB3aGlsZSB3ZSBh
cmUgaXRlcmF0aW5nIG92ZXIgQWN0aXZlRE9NT2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGU4YmYwZWZjYjZiYmExMjYwZjBhOTBiNzk3
NTQzODE2YjBkZjFiYmIuLmM5OThiMTJmMjljYzY5NjhiOWM5NjY1YjA2NWZkMTJkNzhkNTdiODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkRPTVRp
bWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC02Niw2ICs2Nyw3IEBAIGNsYXNz
IEV2ZW50UXVldWU7CiBjbGFzcyBFdmVudExvb3BUYXNrR3JvdXA7CiBjbGFzcyBFdmVudFRhcmdl
dDsKIGNsYXNzIEZvbnRDYWNoZTsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogY2xhc3MgUHVibGljVVJMTWFuYWdlcjsKIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRy
YWNrZXI7CkBAIC0xNjUsNiArMTY3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBGb250Q2Fj
aGUmIGZvbnRDYWNoZSgpOwogICAgIHZpcnR1YWwgQ1NTRm9udFNlbGVjdG9yKiBjc3NGb250U2Vs
ZWN0b3IoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udExvYWRSZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU3RyaW5nJiB1cmwsIGJvb2wgaXNTVkcs
IGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSk7CisgICAgdmlydHVhbCB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKEZv
bnRMb2FkUmVxdWVzdCYpIHsgfQogCiAgICAgdm9pZCByZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBj
NGU0NmU4NzJjNmE2ZDAyMzE3ZWIxODIxNTUyNTYzZmZlYTU1Y2ZhLi40ZDg1NTY0YzA0N2ZlOTQ2
ZDEyZGEwM2Y3ZDczNDk5NDIyMjUzYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9w
TG9hZGluZygpCiAgICAgY2FuY2VsQWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzKTsK
IAogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCi0gICAgICAgIGRv
Y3VtZW50LT5mb250U2VsZWN0b3IoKS5zdXNwZW5kRm9udExvYWRpbmdUaW1lcigpOworICAgICAg
ICBkb2N1bWVudC0+c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKIAogICAgIC8vIEFwcGNhY2hl
IHVzZXMgUmVzb3VyY2VIYW5kbGUgZGlyZWN0bHksIERvY3VtZW50TG9hZGVyIGRvZXNuJ3QgY291
bnQgdGhlc2UgbG9hZHMuCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+c3RvcExvYWRpbmdJ
bkZyYW1lKCptX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250
TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMjA4ZTI4MzgwODc2MWU3ZjBmOTk4OGU4ZDQ3M2I2OWMxYWRjMzQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRm9udFRhZ2dlZFNldHRpbmdzLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEZvbnQ7CitjbGFzcyBGb250RGVzY3JpcHRpb247CitjbGFzcyBGb250TG9hZFJl
cXVlc3Q7CitzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKK3VzaW5nIEZvbnRG
ZWF0dXJlU2V0dGluZ3MgPSBGb250VGFnZ2VkU2V0dGluZ3M8aW50PjsKKworY2xhc3MgRm9udExv
YWRSZXF1ZXN0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZFJlcXVlc3RD
bGllbnQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoRm9udExvYWRS
ZXF1ZXN0JikgeyB9Cit9OworCitjbGFzcyBGb250TG9hZFJlcXVlc3QgeworcHVibGljOgorICAg
IHZpcnR1YWwgfkZvbnRMb2FkUmVxdWVzdCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgY29u
c3QgVVJMJiB1cmwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5n
cyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBzZXRDbGllbnQoRm9udExvYWRSZXF1ZXN0Q2xpZW50KikgPSAwOworCisgICAgdmly
dHVhbCBib29sIGlzQ2FjaGVkRm9udExvYWRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0ZPTlRMT0FEUkVRVUVTVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KSB7
IHJldHVybiByZXF1ZXN0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExv
YWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRS
ZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMyYmM0MTdkODIwYjE3ZTNmYzNiMDA0ZjQ0ZGMyOTVhNjFh
MTI4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250TG9hZFJlcXVlc3QuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRGb250TG9hZFJlcXVlc3QgZmluYWwg
OiBwdWJsaWMgRm9udExvYWRSZXF1ZXN0LCBwdWJsaWMgQ2FjaGVkRm9udENsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2FjaGVkRm9udExvYWRSZXF1
ZXN0KENhY2hlZEZvbnQqIGZvbnQpCisgICAgICAgIDogbV9mb250KGZvbnQpCisgICAgeworICAg
ICAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgfQorCisgICAgfkNhY2hlZEZvbnRM
b2FkUmVxdWVzdCgpCisgICAgeworICAgICAgICBpZiAobV9mb250KQorICAgICAgICAgICAgbV9m
b250LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIH0KKworICAgIENhY2hlZEZvbnQqIGNhY2hl
ZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZm9udC0+dXJsKCk7IH0KKyAg
ICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZm9udC0+aXNMb2FkaW5n
KCk7IH0KKyAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Zv
bnQtPmVycm9yT2NjdXJyZWQoKTsgfQorCisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpIGZpbmFsIHsgcmV0dXJuIG1fZm9udC0+ZW5zdXJl
Q3VzdG9tRm9udERhdGEocmVtb3RlVVJJKTsgfQorICAgIFJlZlB0cjxGb250PiBjcmVhdGVGb250
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3Qg
Rm9udEZlYXR1cmVTZXR0aW5ncyYgc2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBh
YmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9u
dC0+Y3JlYXRlRm9udChkZXNjcmlwdGlvbiwgcmVtb3RlVVJJLCBzeW50aGV0aWNCb2xkLCBzeW50
aGV0aWNJdGFsaWMsIHNldHRpbmdzLCBjYXBhYmlsaXRpZXMpOworICAgIH0KKworICAgIHZvaWQg
c2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCogY2xpZW50KSBmaW5hbAorICAgIHsKKyAg
ICAgICAgbV9mb250TG9hZFJlcXVlc3RDbGllbnQgPSBjbGllbnQ7CisgICAgfQorCisgICAgYm9v
bCBpc0NhY2hlZEZvbnRMb2FkUmVxdWVzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250JiBmb250KSBmaW5hbAorICAgIHsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChmb250LCAmZm9udCA9PSBtX2ZvbnQuZ2V0KCkpOworICAgICAg
ICBpZiAobV9mb250TG9hZFJlcXVlc3RDbGllbnQpCisgICAgICAgICAgICBtX2ZvbnRMb2FkUmVx
dWVzdENsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CisgICAgfQorCisgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkRm9udD4gbV9mb250OworICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCog
bV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRk9OVExPQURSRVFVRVNUKFdlYkNv
cmU6OkNhY2hlZEZvbnRMb2FkUmVxdWVzdCwgaXNDYWNoZWRGb250TG9hZFJlcXVlc3QoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODdmYzU4
YzFiNDEzOGMxNzZiOWIzYTZjMDE5MDdjZWMwZjk3YWU1OS4uNzc1MmFmOTU1MmI1NzQzNDZkNjI4
ZDRmN2ZhOGY3NmMzNjBkNDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAKQEAgLTExMiw4ICsxMTIsNiBAQCBXb3JrZXJHbG9iYWxTY29wZTo6fldv
cmtlckdsb2JhbFNjb3BlKCkKICAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVy
cyhsb2NrZXIpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICB9CiAKLSAgICBpZiAo
bV9jc3NGb250U2VsZWN0b3IpCi0gICAgICAgIG1fY3NzRm9udFNlbGVjdG9yLT5zdG9wTG9hZGlu
Z0FuZENsZWFyRm9udHMoKTsKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2Ny
eXB0byA9IG51bGxwdHI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425485</attachid>
            <date>2021-04-08 02:21:43 -0700</date>
            <delta_ts>2021-04-08 04:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210408102141.patch</filename>
            <type>text/plain</type>
            <size>51674</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uZjQ4Y2QyYTI3YTU3MDVlMzNlM2Y2OTIxOTRhOWMw
OGFiYWM2NjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6IE5ldyBmaWxlcyBGb250TG9hZFJlcXVlc3QuaCBhbmQgQ2FjaGVkRm9udExv
YWRSZXF1ZXN0LmgKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOiBVcGRhdGUgdG8gbm90IHJlcXVpcmUg
RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOiBVcGRhdGUgdG8gdXNlIEZv
bnRMb2FkUmVxdWVzdCBpbnN0ZWFkIG9mIENhY2hlZEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTb3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSBjb25zdCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGFuZAorICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZiBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250
U2VsZWN0b3IuY3BwOiBSZW1vdmUgRG9jdW1lbnQtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9udHMpOgorICAgICAgICAqIGNzcy9DU1NGb250U2Vs
ZWN0b3IuaDoKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IEFkZCBEb2N1bWVudC1zcGVj
aWZpYyBmb250LWxvYWRpbmcgY29kZSBmcm9tCisgICAgICAgICAgQ1NTRm9udFNlbGVjdG9yIGFu
ZCBDU1NGb250RmFjZVNyY1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YmVnaW5Mb2FkaW5nRm9udFNvb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmxvYWRQ
ZW5kaW5nRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvbnRMb2FkaW5nVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBBZGQgZnVuY3Rpb25z
IHRvIGluaXRpYXRlIGZvbnQgbG9hZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6IFVwZGF0ZSBkdWUgdG8gb3RoZXIgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKKyAgICAgICAgKiBsb2FkZXIvRm9u
dExvYWRSZXF1ZXN0Lmg6IEFkZGVkLiBBbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGZvbnQgbG9hZGlu
ZworICAgICAgICAgIHRoYXQgYWJzdHJhY3RzIHNvbWUgb2YgdGhlIGJlaGF2aW91ciBvZiBDYWNo
ZWRSZXNvdXJjZSwgQ2FjaGVkRm9udCBhbmQKKyAgICAgICAgICBDYWNoZWRGb250Q2xpZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdENsaWVudDo6aXNDYWNoZWRGb250TG9hZFJl
cXVlc3QgY29uc3QpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVx
dWVzdC5oOiBBZGRlZC4gQW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICBGb250TG9hZFJl
cXVlc3QgZm9yIENhY2hlZEZvbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDogUmVtb3ZlIG5vdy1yZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwog
MjAyMS0wNC0wNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlk
aUNvbnRleHQgY2FjaGluZyBpcyBub3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IGFhMzkxODJkNDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjU1YWY3ZGM5NTI2MTFh
ZTVjNGFjMTYzZTcxZGFkOTg1ZmY2ODk1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzc2LDYg
Kzc3Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKICAgICBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCiAg
ICAgbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisgICAgbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgbG9hZGVyL0Zvcm1TdGF0ZS5oCiAgICAgbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKICAgICBs
b2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCkBAIC04MjgsNiArODI5LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmgKIAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWRGb250TG9hZFJlcXVlc3QuaAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZVBvbGljeS5oCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1MzAyZGIw
ZDBjNjgyMjMxZjU2MmZlOTA4YzllYjE1MTFiM2Y5NjEuLmZlYWQxMzdlZmViYzE5OWUxMTcwNzEx
YTJmYTc1YWEzYTgxMWViNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDIsNiArMjA0Miw3IEBACiAJCTY1NjU4MjAyMDlE
MTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFQjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1l
cy5oICovOyB9OwogCQk2NTZEMzczMjBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQz
NzFBMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzM2MEFEQkE1REUwMEE0
NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MUUwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQz
IC8qIEZvbnRMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzIyMEFE
QkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczQzBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVM
b2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzNFMEFEQkE1REUwMEE0NTU0
RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MjYwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI4OTMsNiArMjg5NCw3IEBACiAJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVz
b3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTIzRDI3OTAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTE4
MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5MkYw
ODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzRjE5OTUw
MDgyNDVFNTkwMDFFOUFCQyAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1ODc4NjQ5MDJERTNBOUEwMUVBNDEy
MiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVQ
b2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZVBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFC
QyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Yx
OTk4QzA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5NTVBNDEwM0Q3MjkzMjAwODYzNUNF
IC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTc2MSw2ICs5NzYzLDcgQEAKIAkJNjU2RDM3MUUwQURCQTVERTAw
QTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEb2N1bWVudExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udExvYWRSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBG
cmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjYwQURCQTVERTAwQTQ1
NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjg1MSw2ICsxNjg1NCw3IEBACiAJCUY1NUIzREFDMTI1MUYxMkQwMDNF
RjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlZWtJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU4Nzg0RjAw
MkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1cnNvck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NTRD
MDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZVZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTg1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRm9udExv
YWRSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVQ
b2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCUY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1NMS2V5
R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1cnNvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAg
LTI1OTM3LDYgKzI1OTQxLDcgQEAKIAkJCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyogQ2Fj
aGVkRm9udC5jcHAgKi8sCiAJCQkJQkM2NEI0Q0EwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZv
bnQuaCAqLywKIAkJCQkxQUVGNEU2NjE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVu
dC5oICovLAorCQkJCTg1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJl
cXVlc3QuaCAqLywKIAkJCQlCQ0IxNkMwMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2Uu
Y3BwICovLAogCQkJCUJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICov
LAogCQkJCTMxOUZCRDVEMTVEMkY0NDQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oICov
LApAQCAtMjc1ODUsNiArMjc1OTAsNyBAQAogCQkJCUNFQkI4QzMyMjA3ODZEQ0IwMDAzOTU0NyAv
KiBGZXRjaElkaW9tcy5jcHAgKi8sCiAJCQkJQ0VCQjhDMzEyMDc4NkRDQjAwMDM5NTQ3IC8qIEZl
dGNoSWRpb21zLmggKi8sCiAJCQkJNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNoT3B0
aW9ucy5oICovLAorCQkJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVl
c3QuaCAqLywKIAkJCQk2NTZEMzcyMzBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmNwcCAq
LywKIAkJCQk2NTZEMzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8sCiAJCQkJ
NDE4ODVCOTIxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLywKQEAgLTMx
NjE0LDYgKzMxNjIwLDcgQEAKIAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYy
QjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMw
MEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0YxOTk1
MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8q
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDI2LDYgKzMyNDMz
LDcgQEAKIAkJCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDJFRTNBNzE3NTc2RTU1
MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0QTUzMkYyNTYwNTdDRDAwMjhDNTkyIC8qIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0
cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUzMjBENkIxMjJBMjRFOTAwMkQxNDQwIC8qIEZv
bnRQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKaW5kZXggODE3MWFjY2VhN2VmNDdjYjE1Mzk5NWU5NGFhOGEwMTE5ZDdhZTM2MC4uYzg5YmE0
MzVmMzBmMmIxMzY2NjM4NTNlMTAwYjFhOTUyNjdjMmY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCkBAIC03NiwxMCArNzYsOSBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBTYwogICAg
ICAgICBpZiAoIWl0ZW0uaXNMb2NhbCgpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvKiBzZXR0
aW5ncyA9IGNvbnRleHQgPyAmY29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKSA6IG51bGxwdHI7CiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQpOwotICAgICAg
ICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYm
IGlzPERvY3VtZW50Pihjb250ZXh0KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoQ2Fj
aGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udCgmZG9jdW1lbnQsIGZvdW5kU1ZH
Rm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRG
YWNlLCBpdGVtLnJlc291cmNlKCksIGRvY3VtZW50LmZvbnRTZWxlY3RvcigpLCAqY2FjaGVkRm9u
dCk7CisgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVk
Rm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBmb250UmVxdWVzdCA9IGl0ZW0u
Zm9udExvYWRSZXF1ZXN0KGNvbnRleHQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVu
dEluVXNlckFnZW50U2hhZG93VHJlZSkpCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1h
a2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksICpj
b250ZXh0LT5jc3NGb250U2VsZWN0b3IoKSwgV1RGTW92ZShmb250UmVxdWVzdCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVs
ZW1lbnQgPyBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNv
dXJjZSgpLCAqZm9udEZhY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKaW5kZXggYmMzMjNjMmYyZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZC4u
NjQ0NTdkZmMzYzAzYzcyZTk1ZjcxOGY4NmU5ZjUyMWU5OWIwODE5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDU1NGb250RmFjZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgotI2luY2x1ZGUg
IkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250TG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJDYWNoZWRTVkdGb250LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
b250LmgiCkBAIC03MiwxOSArNzIsMTkgQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW0KIHsKIH0K
IAotQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYgZm9udFNl
bGVjdG9yLCBDYWNoZWRGb250JiBmb250KQorQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkks
IENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiYmIHJlcXVlc3QpCiAgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1pbHlOYW1lT3JV
UkkpCiAgICAgLCBtX2ZhY2Uob3duZXIpCiAgICAgLCBtX2ZvbnRTZWxlY3RvcihtYWtlV2Vha1B0
cihmb250U2VsZWN0b3IpKQotICAgICwgbV9mb250KCZmb250KQorICAgICwgbV9mb250UmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpKQogewogICAgIC8vIFRoaXMgbWF5IHN5bmNocm9ub3VzbHkgY2Fs
bCBmb250TG9hZGVkKCkuCi0gICAgbV9mb250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9u
dFJlcXVlc3QtPnNldENsaWVudCh0aGlzKTsKIAotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6
OlBlbmRpbmcgJiYgbV9mb250LT5pc0xvYWRlZCgpKSB7CisgICAgaWYgKHN0YXR1cygpID09IFN0
YXR1czo6UGVuZGluZyAmJiAhbV9mb250UmVxdWVzdC0+aXNMb2FkaW5nKCkpIHsKICAgICAgICAg
c2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlRm9u
dExvYWRDb21wbGV0aW9ucygpKSB7Ci0gICAgICAgICAgICBpZiAobV9mb250LT5lcnJvck9jY3Vy
cmVkKCkpCisgICAgICAgICAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTA5
LDggKzEwOSw4IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiAKIENTU0ZvbnRGYWNlU291cmNl
Ojp+Q1NTRm9udEZhY2VTb3VyY2UoKQogewotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1fZm9u
dC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkKKyAgICAgICAg
bV9mb250UmVxdWVzdC0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCiBib29sIENTU0ZvbnRGYWNl
U291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3QKQEAgLTEyMCwy
OSArMTIwLDI5IEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoKSBjb25zdAogCiB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCkKIHsKLSAgICBpZiAoc3RhdHVzKCkgPT0g
U3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRh
KCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKKyAgICBpZiAoc3RhdHVzKCkg
PT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udFJlcXVlc3QgJiYgbV9mb250UmVxdWVzdC0+dXJs
KCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQog
ICAgICAgICBsb2FkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQo
Q2FjaGVkRm9udCYgbG9hZGVkRm9udCkKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2Fk
ZWQoRm9udExvYWRSZXF1ZXN0JiBmb250UmVxdWVzdCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGxv
YWRlZEZvbnQsICZsb2FkZWRGb250ID09IG1fZm9udC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChmb250UmVxdWVzdCwgJmZvbnRSZXF1ZXN0ID09IG1fZm9udFJlcXVlc3QuZ2V0KCkpOwogCiAg
ICAgaWYgKHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVmPENTU0ZvbnRGYWNlPiBwcm90ZWN0ZWRGYWNlKG1fZmFjZSk7CiAKLSAgICAv
LyBJZiB0aGUgZm9udCBpcyBpbiB0aGUgY2FjaGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5
IGNhbGxlZCBmcm9tIENhY2hlZEZvbnQ6OmFkZENsaWVudCgpLgorICAgIC8vIElmIHRoZSBmb250
IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkgY2FsbGVkIGZyb20g
Rm9udExvYWRSZXF1ZXN0OjphZGRDbGllbnQoKS4KICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVz
OjpQZW5kaW5nKQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICBlbHNl
IGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUpIHsKICAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBtYXkgYmUgY2FsbGVkIHR3aWNlIGlmIGxvYWRpbmcgd2FzIGNhbmNlbGxlZC4KLSAgICAg
ICAgQVNTRVJUKG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZm9u
dFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkgfHwgIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9u
dERhdGEobV9mYW1pbHlOYW1lT3JVUkkpKQorICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9j
Y3VycmVkKCkgfHwgIW1fZm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5
TmFtZU9yVVJJKSkKICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgZWxz
ZQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTE1NCw5ICsxNTQsMTAg
QEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAg
ICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAKLSAgICBpZiAobV9mb250KSB7CisgICAg
aWYgKG1fZm9udFJlcXVlc3QpIHsKICAgICAgICAgQVNTRVJUKG1fZm9udFNlbGVjdG9yKTsKLSAg
ICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnQpOworICAg
ICAgICBpZiAoYXV0byogY29udGV4dCA9IG1fZm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCisgICAgICAgICAgICBjb250ZXh0LT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9m
b250UmVxdWVzdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CiAgICAgICAgIGlmIChtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCkgewpAQCAtMTk4LDcgKzE5OSw3
IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKICAgICBib29sIHVzZXNJbkRvY3VtZW50U1ZH
Rm9udCA9IG1faGFzU1ZHRm9udEZhY2VFbGVtZW50OwogCi0gICAgaWYgKCFtX2ZvbnQgJiYgIXVz
ZXNJbkRvY3VtZW50U1ZHRm9udCkgeworICAgIGlmICghbV9mb250UmVxdWVzdCAmJiAhdXNlc0lu
RG9jdW1lbnRTVkdGb250KSB7CiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAg
ICAgICAgICAgaWYgKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTAsMTIgKzIxMSwxMiBAQCBSZWZQdHI8Rm9u
dD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGJvbwogICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250
Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksICZmb250RmFjZUZl
YXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcywgdHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKG1f
Zm9udCkgewotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnRE
YXRhKG1fZmFtaWx5TmFtZU9yVVJJKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkgeworICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2Zh
bWlseU5hbWVPclVSSSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7
CiAKICAgICAgICAgQVNTRVJUKHN0YXR1cygpID09IFN0YXR1czo6U3VjY2Vzcyk7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9mb250LT5jcmVhdGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1p
bHlOYW1lT3JVUkksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZm9u
dFJlcXVlc3QtPmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFj
ZUNhcGFiaWxpdGllcyk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTIzMiw3ICsyMzMsMTEgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRG
YWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBi
b28KIAogYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faGFzU1ZHRm9udEZhY2VFbGVtZW50IHx8IGlzPENhY2hlZFNWR0Zv
bnQ+KG1fZm9udC5nZXQoKSk7CisgICAgaWYgKCFtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCAh
aXM8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PihtX2ZvbnRSZXF1ZXN0LmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byogY2FjaGVkRm9udFJlcXVlc3QgPSBkb3duY2FzdDxD
YWNoZWRGb250TG9hZFJlcXVlc3Q+KG1fZm9udFJlcXVlc3QuZ2V0KCkpOworICAgIHJldHVybiBp
czxDYWNoZWRTVkdGb250PihjYWNoZWRGb250UmVxdWVzdC0+Y2FjaGVkRm9udCgpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA1OTJjZTgzMWM1YTky
ODYzZTA0ZWJkYjc2ZWYzYWMxOGY1MWMxM2JkLi42MTA3ODkzZWVlNDkwMjZmYjIyYjUxMmE2NmI5
Mzk0YjIxZWFiZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MjUsOCArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGll
bnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkZvbnRM
b2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgpAQCAtNDcsMTEgKzQ2LDExIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKLWNsYXNzIENTU0ZvbnRGYWNlU291
cmNlIGZpbmFsIDogcHVibGljIENhY2hlZEZvbnRDbGllbnQgeworY2xhc3MgQ1NTRm9udEZhY2VT
b3VyY2UgZmluYWwgOiBwdWJsaWMgRm9udExvYWRSZXF1ZXN0Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKLSAgICBDU1NGb250
RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9y
VVJJLCBDU1NGb250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NT
Rm9udFNlbGVjdG9yJiwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4mJik7CiAgICAg
Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWls
eU5hbWVPclVSSSwgU1ZHRm9udEZhY2VFbGVtZW50Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiYmKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgp
OwpAQCAtNzYsMjIgKzc1LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0g
bnVsbHB0cik7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAg
Q2FjaGVkRm9udCogY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQot
ICAgIGJvb2wgcmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250
OyB9CisgICAgRm9udExvYWRSZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CisgICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CiAKICAgICBib29sIGlz
U1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIHNob3VsZEln
bm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdDsKIAotICAgIHZvaWQgZm9udExvYWRlZChD
YWNoZWRGb250Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVz
dCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21T
dHJpbmcgbV9mYW1pbHlOYW1lT3JVUkk7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250
IG5hbWUgZm9yIGxvY2FsLgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcg
Zm9udCBmYWNlLgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3Rvcjsg
Ly8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250
cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCisgICAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRz
LCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
clZpZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuY3BwCmluZGV4IDUzOWZkNDg4OTY5ZWZhNmZhZDVmZWE0ZDNjOGExN2I3MmY3MTll
ZTUuLjIzOWVlNDAwNDFkZDE3ZDhhNzA4YjhiMjZmODEzMGVkZTc1MzdjMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTI5LDEwICsyOSwxMSBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03NiwxOSArNzcsMTYgQEAgYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVl
Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IEMK
ICAgICByZXR1cm4gaGFuZGxlcigqbV9jYWNoZWRGb250KTsKIH0KIAotQ2FjaGVkRm9udCogQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNT
VkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKK3N0ZDo6
dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2Fk
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBib29sIGlzU1ZHLCBib29s
IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7CiAgICAgaWYgKG1f
Y2FjaGVkRm9udCkKLSAgICAgICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PigqbV9jYWNoZWRGb250KTsK
IAotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKLSAgICBvcHRpb25zLmNvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRT
aGFkb3dUcmVlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNo
ZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKLSAg
ICBvcHRpb25zLmxvYWRlZEZyb21PcGFxdWVTb3VyY2UgPSBtX2xvYWRlZEZyb21PcGFxdWVTb3Vy
Y2U7CisgICAgYXV0byByZXF1ZXN0ID0gY29udGV4dC0+Zm9udExvYWRSZXF1ZXN0KG1fcmVzb3Vy
Y2UsIGlzU1ZHLCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBtX2xv
YWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIGlmIChpczxDYWNoZWRGb250TG9hZFJlcXVlc3Q+
KHJlcXVlc3QuZ2V0KCkpKQorICAgICAgICBtX2NhY2hlZEZvbnQgPSAmZG93bmNhc3Q8Q2FjaGVk
Rm9udExvYWRSZXF1ZXN0PihyZXF1ZXN0LmdldCgpKS0+Y2FjaGVkRm9udCgpOwogCi0gICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21w
bGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwotICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9y
KGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1fY2FjaGVkRm9u
dCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUo
cmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKTsKLSAgICByZXR1cm4gbV9jYWNoZWRG
b250LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBib29sIENTU0ZvbnRGYWNlU3Jj
VmFsdWU6OmVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJiBvdGhlcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGM1ZGM1OWZkOTZhMWJl
MzI4MzYzNDRmZjE5ZDk1ODc3MjkyNmQ3YjQuLmNiZTE0MTFlNDZjNGVkNzZlNzExYmMzNDFlNjU5
OTAzZjUwZmFiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApA
QCAtMzQsOCArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRGb250
OwotY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBTVkdGb250
RmFjZUVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBDU1NG
b250RmFjZVNyY1ZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKQEAgLTY2
LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25z
dCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBj
b25zdDsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqLCBib29sIGlzU1ZH
LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0ZvbnRGYWNlU3Jj
VmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRl
eCBjMTE1NzhjZmM1MDQxMmNiYTZjNTUzMGY5NGJlOGFhMzYzNDQ3NWNjLi5hY2QyYTFjYzI0ZTM0
YzA1NGQwMzc4MjM0ODc3MzdjZmVjN2ZlYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcApAQCAtNjgsNyArNjgsNiBAQCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxl
Y3RvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9mb250Q2FjaGUo
bWFrZVJlZihjb250ZXh0LmZvbnRDYWNoZSgpKSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NT
Rm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIo
W3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0pCi0gICAgLCBtX2ZvbnRMb2FkaW5nVGltZXIoKnRo
aXMsICZDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fdW5p
cXVlSWQoKytmb250U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigwKQogewpAQCAtOTMsNyAr
OTIsNyBAQCBDU1NGb250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IoKQogewogICAgIExPRyhG
b250cywgIkNTU0ZvbnRTZWxlY3RvciAlcCBkdG9yIiwgdGhpcyk7CiAKLSAgICBzdG9wTG9hZGlu
Z0FuZENsZWFyRm9udHMoKTsKKyAgICBjbGVhckZvbnRzKCk7CiAgICAgbV9mb250Q2FjaGUtPnJl
bW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKQEAgLTMzNiw5NCArMzM1LDEzIEBAIEZvbnRSYW5nZXMg
Q1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyCiAgICAgcmV0dXJuIEZvbnRSYW5nZXMgeyBXVEZNb3ZlKGZvbnQpIH07CiB9
CiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQordm9p
ZCBDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9udHMoKQogewotICAgIGlmIChtX2lzU3RvcHBlZCkg
ewotICAgICAgICBBU1NFUlQoIW1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAg
ICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9hZGluZy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRpbmdU
aW1lci5zdG9wKCk7Ci0KLSAgICBpZiAoaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpIHsK
LSAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7
Ci0gICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZm9udEhh
bmRsZSA6IG1fZm9udHNUb0JlZ2luTG9hZGluZykgewotICAgICAgICAgICAgLy8gQmFsYW5jZXMg
aW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KLSAgICAg
ICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhh
bmRsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7
Ci0gICAgfQotCiAgICAgbV9jc3NGb250RmFjZVNldC0+Y2xlYXIoKTsKICAgICBtX2NsaWVudHMu
Y2xlYXIoKTsKIH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29u
KENhY2hlZEZvbnQmIGZvbnQpCi17Ci0gICAgaWYgKG1faXNTdG9wcGVkIHx8ICFpczxEb2N1bWVu
dD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0KLSAgICBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuYXBwZW5kKCZmb250KTsKLSAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291
bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNw
YXRjaGVkCi0gICAgLy8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVm
b3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFuY2VkIGJ5Ci0gICAgLy8gZGVjcmVtZW50UmVxdWVz
dENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpLgotICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuaW5jcmVt
ZW50UmVxdWVzdENvdW50KGZvbnQpOwotCi0gICAgaWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5k
ZWQgJiYgIW1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2ZvbnRMb2Fk
aW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpz
dXNwZW5kRm9udExvYWRpbmdUaW1lcigpCi17Ci0gICAgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5z
aW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6Omxv
YWRQZW5kaW5nRm9udHMoKQotewotICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgfHwg
IWlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIFZl
Y3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGlu
ZzsKLSAgICBmb250c1RvQmVnaW5Mb2FkaW5nLnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsK
LQotICAgIC8vIENTU0ZvbnRTZWxlY3RvciBjb3VsZCBnZXQgZGVsZXRlZCB2aWEgYmVnaW5Mb2Fk
SWZOZWVkZWQoKSBvciBsb2FkRG9uZSgpIHVubGVzcyBwcm90ZWN0ZWQuCi0gICAgUmVmPENTU0Zv
bnRTZWxlY3Rvcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZUxv
YWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpOwotICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsK
LSAgICAgICAgZm9udEhhbmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpOwotICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdp
bkxvYWRpbmdGb250U29vbigpLgotICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOwotICAgIH0KLX0KLQotdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFpczxEb2N1bWVudD4o
bV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0gICAgUmVmPENTU0ZvbnRTZWxlY3Rv
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7Ci0KLSAg
ICAvLyBGSVhNRTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGluc3RlYWQuCi0gICAgLy8gQ2FsbCBG
cmFtZUxvYWRlcjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWRE
b25lIHRvIG1hdGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4K
LSAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWREb25lKExvYWRDb21wbGV0
aW9uVHlwZTo6RmluaXNoKTsKLSAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3Vu
dCByZWFjaGVzIHplcm8sIHRoZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgotICAg
IC8vIE5ldyBmb250IGxvYWRzIG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBk
b2N1bWVudCBsb2FkIGlzIGNvbXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCi0g
ICAgLy8gZGlkRmluaXNoTG9hZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVn
YXRlIGlzIGFsd2F5cyBkaXNwYXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCi0gICAgaWYg
KGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNo
ZWNrTG9hZENvbXBsZXRlKCk7Ci19Ci0KIHNpemVfdCBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNr
Rm9udENvdW50KCkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCkBAIC00NDksMjkgKzM2Nyw0IEBA
IFJlZlB0cjxGb250PiBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKLXZvaWQgQ1NT
Rm9udFNlbGVjdG9yOjpzdG9wKCkKLXsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOwot
fQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQot
ewotICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGluZ1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OnJlc3VtZSgpCi17Ci0gICAg
aWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mb250TG9hZGlu
Z1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwotCi0gICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVk
ID0gZmFsc2U7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBl
NGFmZjI2YWFhZmYwOGY4Njg2N2UwNDU1OWZhNDFiNGJiN2U4ZjM3Li40MzQ3ZTg1YTE1NjIzNGE5
M2NlYmVkMTQ3YzIzMjZjMjFiNTFhZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmFsbGJhY2tGb250Q291
bnQoKSBmaW5hbDsKICAgICBSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKIAotICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKCk7CisgICAgdm9pZCBjbGVhckZvbnRzKCk7CiAgICAgdm9pZCBlbXB0eUNhY2hlcygp
OwogICAgIHZvaWQgYnVpbGRTdGFydGVkKCk7CiAgICAgdm9pZCBidWlsZENvbXBsZXRlZCgpOwpA
QCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAKLSAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKLSAgICB2b2lk
IHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7Ci0KICAgICBGb250RmFjZVNldCogZm9udEZhY2VT
ZXRJZkV4aXN0cygpOwogICAgIEZvbnRGYWNlU2V0JiBmb250RmFjZVNldCgpOwogCkBAIC0xMTAs
MTIgKzEwNyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb250U3R5bGVVcGRhdGVOZWVkZWQoQ1NT
Rm9udEZhY2UmKSBmaW5hbDsKIAogICAgIHZvaWQgZm9udE1vZGlmaWVkKCk7Ci0gICAgdm9pZCBm
b250TG9hZGluZ1RpbWVyRmlyZWQoKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBm
aW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQ1NTRm9udFNlbGVjdG9yIl9zOyB9
CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0ZvbnRGYWNlUnVsZSB7CkBAIC0xMzAsMTUgKzEyMywxMSBA
QCBwcml2YXRlOgogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NGb250RmFjZVNldDsKICAg
ICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsKIAotICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwog
ICAgIEhhc2hTZXQ8UmVmUHRyPENTU0ZvbnRGYWNlPj4gbV9jc3NDb25uZWN0aW9uc1Bvc3NpYmx5
VG9SZW1vdmU7CiAgICAgSGFzaFNldDxSZWZQdHI8U3R5bGVSdWxlRm9udEZhY2U+PiBtX2Nzc0Nv
bm5lY3Rpb25zRW5jb3VudGVyZWREdXJpbmdCdWlsZDsKIAogICAgIENTU0ZvbnRGYWNlU2V0OjpG
b250TW9kaWZpZWRPYnNlcnZlciBtX2ZvbnRNb2RpZmllZE9ic2VydmVyOwogCi0gICAgVGltZXIg
bV9mb250TG9hZGluZ1RpbWVyOwotICAgIGJvb2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKLQogICAgIHVuc2lnbmVkIG1fdW5pcXVlSWQ7CiAgICAgdW5zaWduZWQgbV92ZXJz
aW9uOwogICAgIHVuc2lnbmVkIG1fY29tcHV0aW5nUm9vdFN0eWxlRm9udENvdW50IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWI0ZjI4YmQzMzA3ZTQ3NGRiYTdhM2UyNmFhN2Nh
MDA1NjNmNTYxMi4uODQwNjgxOTg4NTQ0ZjA3Yjg4NGQ5YTZhODdiNDgzMmVjMDdmZDA5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNyw4ICszNywxMSBAQAogI2luY2x1ZGUgIkNTU1N0
eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hlZEZvbnRMb2FkUmVxdWVzdC5o
IgogI2luY2x1ZGUgIkNhY2hlZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCkBAIC03NCw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRm9jdXNFdmVudC5oIgogI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisjaW5jbHVkZSAi
Rm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC02MzksNiArNjQzLDcgQEAg
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCwgRG9jdW0KICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9u
VGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJl
ZCkKICAgICAsIG1fc2hhcmVkT2JqZWN0UG9vbENsZWFyVGltZXIoKnRoaXMsICZEb2N1bWVudDo6
Y2xlYXJTaGFyZWRPYmplY3RQb29sKQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVj
dG9yOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9j
dW1lbnQ6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNv
bnRyb2xzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGlt
ZXJGaXJlZCkKICAgICAsIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcigqdGhpcywgJkRvY3VtZW50
OjppbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHBhZ2Uo
KSA/ICZwYWdlKCktPnNvY2tldFByb3ZpZGVyKCkgOiBudWxscHRyKQpAQCAtNzU4LDcgKzc2Myw3
IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGV4dGVuc2lvblN0eWxlU2hlZXRzKCkuZGV0
YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICBzdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOyAv
LyBXZSBuZWVkIHRvIGRlc3Ryb3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuCi0gICAgbV9mb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpOworICAgIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgLy8g
SXQncyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2lu
ZyB0aGUgc2FtZSBDYWNoZWRSZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8g
bG9hZCB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGgg
dGhlIHNhbWUgRG9jdW1lbnRMb2FkZXIpLgpAQCAtODA3LDcgKzgxMiw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNs
ZWFyKCk7CiAgICAgICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0geyB9OwogCi0g
ICAgICAgIG1fZm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICAg
ICAgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CiAKICAgICAgICAgZGV0YWNoUGFyc2VyKCk7
CiAKQEAgLTIwNjIsNyArMjA2Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNv
bHZlU3R5bGVUeXBlIHR5cGUpCiAKICAgICAgICAgbV9pblN0eWxlUmVjYWxjID0gZmFsc2U7CiAK
LSAgICAgICAgZm9udFNlbGVjdG9yKCkubG9hZFBlbmRpbmdGb250cygpOworICAgICAgICBsb2Fk
UGVuZGluZ0ZvbnRzKCk7CiAKICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAg
ICB1cGRhdGVSZW5kZXJUcmVlKFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcx
NywxMSBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVw
ZGF0ZXMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZ1Rp
bWVyKCkKK3sKKyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOworfQorCiBib29sIERvY3Vt
ZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAog
ewogICAgIC8vIEJ5cGFzcyB0aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5k
IGl0IG5vdCB0aGUgbm9ybWFsIHdvcmxkLgpAQCAtMjk5Nyw2ICszMDA3LDczIEBAIHZvaWQgRG9j
dW1lbnQ6OmltcGxpY2l0T3BlbigpCiAgICAgc2V0UmVhZHlTdGF0ZShMb2FkaW5nKTsKIH0KIAor
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gRG9jdW1lbnQ6OmZvbnRMb2FkUmVxdWVz
dChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpCit7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgIG9wdGlvbnMu
Y29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lw
UG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNo
ZWNrOworICAgIG9wdGlvbnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9IGxvYWRlZEZyb21PcGFx
dWVTb3VyY2U7CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QoY29tcGxldGVVUkwodXJsKSksIG9wdGlvbnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlh
dG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOworICAgIENhY2hlZEZv
bnQqIGNhY2hlZEZvbnQgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Rm9udChXVEZN
b3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVfb3IobnVsbHB0cikuZ2V0KCk7CisgICAgcmV0dXJu
IGNhY2hlZEZvbnQgPyBtYWtlVW5pcXVlPENhY2hlZEZvbnRMb2FkUmVxdWVzdD4oKmNhY2hlZEZv
bnQpIDogbnVsbHB0cjsKK30KKwordm9pZCBEb2N1bWVudDo6YmVnaW5Mb2FkaW5nRm9udFNvb24o
Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIEFTU0VSVChpczxDYWNoZWRGb250TG9h
ZFJlcXVlc3Q+KHJlcXVlc3QpKTsKKyAgICBhdXRvJiBmb250ID0gZG93bmNhc3Q8Q2FjaGVkRm9u
dExvYWRSZXF1ZXN0PihyZXF1ZXN0KS5jYWNoZWRGb250KCk7CisKKyAgICBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuYXBwZW5kKCZmb250KTsKKyAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291
bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNw
YXRjaGVkCisgICAgLy8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVm
b3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFuY2VkIGJ5CisgICAgLy8gZGVjcmVtZW50UmVxdWVz
dENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpLgorICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmluY3JlbWVudFJlcXVl
c3RDb3VudChmb250KTsKKworICAgIGlmICghbV9pc1N1c3BlbmRlZCAmJiAhbV9mb250TG9hZGlu
Z1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKK30KKwordm9pZCBEb2N1bWVudDo6bG9hZFBlbmRpbmdGb250cygpCit7CisgICAg
aWYgKG1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGluZzsKKyAgICBmb250
c1RvQmVnaW5Mb2FkaW5nLnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsKKworICAgIGZvciAo
YXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKKyAgICAgICAgZm9udEhh
bmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQobV9jYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgICAg
IC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRT
b29uKCkuCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50Ojpmb250TG9hZGlu
Z1RpbWVyRmlyZWQoKQoreworICAgIGxvYWRQZW5kaW5nRm9udHMoKTsKKworICAgIC8vIEZJWE1F
OiBVc2UgU3VicmVzb3VyY2VMb2FkZXIgaW5zdGVhZC4KKyAgICAvLyBDYWxsIEZyYW1lTG9hZGVy
Ojpsb2FkRG9uZSBiZWZvcmUgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlTG9hZERvbmUgdG8gbWF0
Y2ggdGhlIG9yZGVyIGluIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lLgorICAgIG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmxvYWREb25lKExvYWRDb21wbGV0aW9uVHlwZTo6RmluaXNoKTsK
KyAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3VudCByZWFjaGVzIHplcm8sIHRo
ZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgorICAgIC8vIE5ldyBmb250IGxvYWRz
IG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBkb2N1bWVudCBsb2FkIGlzIGNv
bXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCisgICAgLy8gZGlkRmluaXNoTG9h
ZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVnYXRlIGlzIGFsd2F5cyBkaXNw
YXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCisgICAgaWYgKGZyYW1lKCkpCisgICAgICAg
IGZyYW1lKCktPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnQ6OnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpCit7CisgICAgbV9mb250TG9hZGluZ1RpbWVy
LnN0b3AoKTsKKyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9CZWdpbkxvYWRp
bmcpIHsKKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVn
aW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVj
cmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKKyAgICB9CisgICAgbV9mb250c1RvQmVn
aW5Mb2FkaW5nLmNsZWFyKCk7CisgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRm9udHMoKTsKK30K
KwogSFRNTEJvZHlFbGVtZW50KiBEb2N1bWVudDo6Ym9keSgpIGNvbnN0CiB7CiAgICAgYXV0byog
ZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwpAQCAtNTUxNiwxMyArNTU5MywxNyBAQCB2b2lk
IERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIG1fdmlz
dWFsVXBkYXRlc0FsbG93ZWQgPSBmYWxzZTsKICAgICBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lv
blRpbWVyLnN0b3AoKTsKIAorICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7CisKICAgICBt
X2lzU3VzcGVuZGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVzdW1lKFJlYXNvbkZv
clN1c3BlbnNpb24gcmVhc29uKQogewotICAgIGlmICghbV9pc1N1c3BlbmRlZCkKKyAgICBpZiAo
IW1faXNTdXNwZW5kZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9hZGluZy5p
c0VtcHR5KCkgfHwgbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpOwogICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogY29weVRvVmVjdG9yKG1fZG9j
dW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cykpCiAgICAgICAgIGVsZW1lbnQtPnJlc3Vt
ZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKTsKQEAgLTU1NDQsNiArNTYyNSw5IEBAIHZvaWQgRG9j
dW1lbnQ6OnJlc3VtZShSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIAogICAgIG1faXNTdXNw
ZW5kZWQgPSBmYWxzZTsKIAorICAgIGlmICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHko
KSkKKyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkgJiYgcmVhc29uID09IFJlYXNv
bkZvclN1c3BlbnNpb246OkJhY2tGb3J3YXJkQ2FjaGUpCiAgICAgICAgIHNldFNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKCZTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxZjlhODNiZmQyNjRh
NGUxNDBlM2MxZjEzOGJmYWM0ZjI1Nzk0MjhiLi5mNjM4YWFiZTJkNDFhY2NiMmNhZmMzOTc4YWQw
NzY1ZTRmMDc0YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjgsNiArMjgsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKQEAgLTEwMiw2
ICsxMDMsNyBAQCBjbGFzcyBDU1NGb250U2VsZWN0b3I7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0
aW9uOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Citj
bGFzcyBDYWNoZWRGb250OwogY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CkBAIC0xMzcsNiArMTM5LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uU3R5bGVTaGVldHM7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGbG9hdFJl
Y3Q7CiBjbGFzcyBGb250RmFjZVNldDsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKIGNsYXNzIEZv
cm1Db250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKQEAgLTYz
Myw2ICs2MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kRGV2aWNlTW90aW9uQW5kT3Jp
ZW50YXRpb25VcGRhdGVzKCk7CiAgICAgdm9pZCByZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRh
dGlvblVwZGF0ZXMoKTsKIAorICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKwog
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXcu
Z2V0KCk7IH0KIAogICAgIGJvb2wgcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQ7IH0KQEAgLTE2NDcsMTAgKzE2NTIsMTYg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBDU1NGb250
U2VsZWN0b3IqIGNzc0ZvbnRTZWxlY3RvcigpIGZpbmFsIHsgcmV0dXJuIG1fZm9udFNlbGVjdG9y
LnB0cigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRS
ZXF1ZXN0KFN0cmluZyYsIGJvb2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFs
OworICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7
CiAKICAgICAvLyBGb250U2VsZWN0b3JDbGllbnQKICAgICB2b2lkIGZvbnRzTmVlZFVwZGF0ZShG
b250U2VsZWN0b3ImKSBmaW5hbDsKIAorICAgIHZvaWQgbG9hZFBlbmRpbmdGb250cygpOworICAg
IHZvaWQgZm9udExvYWRpbmdUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdG9wTG9hZGluZ0FuZENs
ZWFyRm9udHMoKTsKKwogICAgIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
ZmluYWw7CkBAIC0xOTgyLDYgKzE5OTMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBtX2RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTDsKIAogICAgIFJl
ZjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOworICAgIFRpbWVyIG1fZm9udExvYWRp
bmdUaW1lcjsKKyAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1f
Zm9udHNUb0JlZ2luTG9hZGluZzsKIAogICAgIFdlYWtIYXNoU2V0PE1lZGlhUHJvZHVjZXI+IG1f
YXVkaW9Qcm9kdWNlcnM7CiAgICAgV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvbj4gbV9hY3RpdmVT
cGVlY2hSZWNvZ25pdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAppbmRleCBjNzczODMxYjg4YzJiMDJiMDViYzJmZmI2ZjA1M2U4ZGFmMWE1Zjdh
Li5lNzUwYTYyN2FiNjBiYzkzZmRiNWY3NTg1OTgzZTZkYTU0OWViYjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVk
ZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtMjMyLDYgKzIzMywxMSBAQCBGb250Q2Fj
aGUmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSgpCiAgICAgcmV0dXJuIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdChTdHJpbmcmLCBib29sLCBi
b29sLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIHJldHVybiBudWxscHRyOworfQor
CiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvckVhY2hBY3RpdmVET01PYmplY3QoY29u
c3QgRnVuY3Rpb248U2hvdWxkQ29udGludWUoQWN0aXZlRE9NT2JqZWN0Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICAvLyBJdCBpcyBub3QgYWxsb3dlZCB0byBydW4gYXJiaXRyYXJ5IHNjcmlwdCBv
ciBjb25zdHJ1Y3QgbmV3IEFjdGl2ZURPTU9iamVjdHMgd2hpbGUgd2UgYXJlIGl0ZXJhdGluZyBv
dmVyIEFjdGl2ZURPTU9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCBlOGJmMGVmY2I2YmJhMTI2MGYwYTkwYjc5NzU0MzgxNmIwZGYxYmJi
Li5jOTk4YjEyZjI5Y2M2OTY4YjljOTY2NWIwNjVmZDEyZDc4ZDU3YjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1
ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtNjYsNiArNjcsNyBAQCBjbGFzcyBFdmVudFF1ZXVlOwog
Y2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGb250
Q2FjaGU7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNz
IFB1YmxpY1VSTE1hbmFnZXI7CiBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwpAQCAtMTY1
LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUo
KTsKICAgICB2aXJ0dWFsIENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVz
dD4gZm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlh
dGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2Up
OworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3Qm
KSB7IH0KIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzRlNDZlODcyYzZhNmQw
MjMxN2ViMTgyMTU1MjU2M2ZmZWE1NWNmYS4uNGQ4NTU2NGMwNDdmZTk0NmQxMmRhMDNmN2Q3MzQ5
OTQyMjI1M2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0zMzgsNyArMzM4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAg
IGNhbmNlbEFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycyk7CiAKICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+Zm9udFNl
bGVjdG9yKCkuc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKyAgICAgICAgZG9jdW1lbnQtPnN1
c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAKICAgICAvLyBBcHBjYWNoZSB1c2VzIFJlc291cmNl
SGFuZGxlIGRpcmVjdGx5LCBEb2N1bWVudExvYWRlciBkb2Vzbid0IGNvdW50IHRoZXNlIGxvYWRz
LgogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPnN0b3BMb2FkaW5nSW5GcmFtZSgqbV9mcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzIw
OGUyODM4MDg3NjFlN2YwZjk5ODhlOGQ0NzNiNjljMWFkYzM0NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3QuaApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250
OworY2xhc3MgRm9udERlc2NyaXB0aW9uOworY2xhc3MgRm9udExvYWRSZXF1ZXN0Oworc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7Cit1c2luZyBGb250RmVhdHVyZVNldHRpbmdz
ID0gRm9udFRhZ2dlZFNldHRpbmdzPGludD47CisKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdENsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Rm9udExvYWRSZXF1ZXN0Q2xpZW50KCkgPSBkZWZh
dWx0OworICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIHsgfQor
fTsKKworY2xhc3MgRm9udExvYWRSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250
TG9hZFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRp
b24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
ZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCopID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Nh
Y2hlZEZvbnRMb2FkUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05U
TE9BRFJFUVVFU1QoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdCYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVz
dC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkzZDYwYjBjZDZhZWU3NTFmYjI4ZWVlYTg2YjlmOGNhNzJiZjA5MzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1
ZXN0LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWRGb250Lmgi
CisjaW5jbHVkZSAiQ2FjaGVkRm9udENsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ2FjaGVkRm9udExvYWRSZXF1ZXN0IGZpbmFsIDogcHVibGljIEZvbnRM
b2FkUmVxdWVzdCwgcHVibGljIENhY2hlZEZvbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIENhY2hlZEZvbnRMb2FkUmVxdWVzdChDYWNoZWRGb250
JiBmb250KQorICAgICAgICA6IG1fZm9udCgmZm9udCkKKyAgICB7CisgICAgICAgIG1fZm9udC0+
YWRkQ2xpZW50KCp0aGlzKTsKKyAgICB9CisKKyAgICB+Q2FjaGVkRm9udExvYWRSZXF1ZXN0KCkK
KyAgICB7CisgICAgICAgIG1fZm9udC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICB9CisKKyAg
ICBDYWNoZWRGb250JiBjYWNoZWRGb250KCkgY29uc3QgeyByZXR1cm4gKm1fZm9udDsgfQorCitw
cml2YXRlOgorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mb250
LT51cmwoKTsgfQorICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9m
b250LT5pc0xvYWRpbmcoKTsgfQorICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkgZmluYWwgeyByZXR1cm4g
bV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0YShyZW1vdGVVUkkpOyB9CisgICAgUmVmUHRyPEZv
bnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGlj
SXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiBzZXR0aW5ncywgRm9udFNlbGVjdGlv
blNwZWNpZmllZENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMpIGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gbV9mb250LT5jcmVhdGVGb250KGRlc2NyaXB0aW9uLCByZW1vdGVVUkksIHN5bnRo
ZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgc2V0dGluZ3MsIGNhcGFiaWxpdGllcyk7CisgICAg
fQorCisgICAgdm9pZCBzZXRDbGllbnQoRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBjbGllbnQpIGZp
bmFsCisgICAgeworICAgICAgICBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCA9IGNsaWVudDsKKyAg
ICB9CisKKyAgICBib29sIGlzQ2FjaGVkRm9udExvYWRSZXF1ZXN0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQmIGZvbnQpIGZp
bmFsCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGZvbnQsICZmb250ID09IG1fZm9udC5n
ZXQoKSk7CisgICAgICAgIGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkKKyAgICAgICAgICAg
IG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKKyAgICB9CisKKyAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7CisgICAgRm9udExvYWRS
ZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05UTE9B
RFJFUVVFU1QoV2ViQ29yZTo6Q2FjaGVkRm9udExvYWRSZXF1ZXN0LCBpc0NhY2hlZEZvbnRMb2Fk
UmVxdWVzdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAppbmRleCA4N2ZjNThjMWI0MTM4YzE3NmI5YjNhNmMwMTkwN2NlYzBmOTdhZTU5Li43NzUyYWY5
NTUyYjU3NDM0NmQ2MjhkNGY3ZmE4Zjc2YzM2MGQ0OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMTEyLDggKzExMiw2IEBAIFdvcmtlckds
b2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogICAgICAgICBhbGxXb3JrZXJHbG9iYWxT
Y29wZUlkZW50aWZpZXJzKGxvY2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAg
IH0KIAotICAgIGlmIChtX2Nzc0ZvbnRTZWxlY3RvcikKLSAgICAgICAgbV9jc3NGb250U2VsZWN0
b3ItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogICAgIG1fcGVyZm9ybWFuY2UgPSBudWxs
cHRyOwogICAgIG1fY3J5cHRvID0gbnVsbHB0cjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425498</attachid>
            <date>2021-04-08 04:50:03 -0700</date>
            <delta_ts>2021-04-08 04:52:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210408125002.patch</filename>
            <type>text/plain</type>
            <size>51891</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uZjQ4Y2QyYTI3YTU3MDVlMzNlM2Y2OTIxOTRhOWMw
OGFiYWM2NjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6IE5ldyBmaWxlcyBGb250TG9hZFJlcXVlc3QuaCBhbmQgQ2FjaGVkRm9udExv
YWRSZXF1ZXN0LmgKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOiBVcGRhdGUgdG8gbm90IHJlcXVpcmUg
RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOiBVcGRhdGUgdG8gdXNlIEZv
bnRMb2FkUmVxdWVzdCBpbnN0ZWFkIG9mIENhY2hlZEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTb3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSBjb25zdCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGFuZAorICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZiBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250
U2VsZWN0b3IuY3BwOiBSZW1vdmUgRG9jdW1lbnQtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9udHMpOgorICAgICAgICAqIGNzcy9DU1NGb250U2Vs
ZWN0b3IuaDoKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IEFkZCBEb2N1bWVudC1zcGVj
aWZpYyBmb250LWxvYWRpbmcgY29kZSBmcm9tCisgICAgICAgICAgQ1NTRm9udFNlbGVjdG9yIGFu
ZCBDU1NGb250RmFjZVNyY1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YmVnaW5Mb2FkaW5nRm9udFNvb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmxvYWRQ
ZW5kaW5nRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvbnRMb2FkaW5nVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBBZGQgZnVuY3Rpb25z
IHRvIGluaXRpYXRlIGZvbnQgbG9hZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6IFVwZGF0ZSBkdWUgdG8gb3RoZXIgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKKyAgICAgICAgKiBsb2FkZXIvRm9u
dExvYWRSZXF1ZXN0Lmg6IEFkZGVkLiBBbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGZvbnQgbG9hZGlu
ZworICAgICAgICAgIHRoYXQgYWJzdHJhY3RzIHNvbWUgb2YgdGhlIGJlaGF2aW91ciBvZiBDYWNo
ZWRSZXNvdXJjZSwgQ2FjaGVkRm9udCBhbmQKKyAgICAgICAgICBDYWNoZWRGb250Q2xpZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdENsaWVudDo6aXNDYWNoZWRGb250TG9hZFJl
cXVlc3QgY29uc3QpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVx
dWVzdC5oOiBBZGRlZC4gQW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICBGb250TG9hZFJl
cXVlc3QgZm9yIENhY2hlZEZvbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDogUmVtb3ZlIG5vdy1yZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwog
MjAyMS0wNC0wNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlk
aUNvbnRleHQgY2FjaGluZyBpcyBub3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IGFhMzkxODJkNDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjU1YWY3ZGM5NTI2MTFh
ZTVjNGFjMTYzZTcxZGFkOTg1ZmY2ODk1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzc2LDYg
Kzc3Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKICAgICBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCiAg
ICAgbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisgICAgbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgbG9hZGVyL0Zvcm1TdGF0ZS5oCiAgICAgbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKICAgICBs
b2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCkBAIC04MjgsNiArODI5LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmgKIAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWRGb250TG9hZFJlcXVlc3QuaAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZVBvbGljeS5oCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1MzAyZGIw
ZDBjNjgyMjMxZjU2MmZlOTA4YzllYjE1MTFiM2Y5NjEuLmZlYWQxMzdlZmViYzE5OWUxMTcwNzEx
YTJmYTc1YWEzYTgxMWViNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDIsNiArMjA0Miw3IEBACiAJCTY1NjU4MjAyMDlE
MTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFQjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1l
cy5oICovOyB9OwogCQk2NTZEMzczMjBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQz
NzFBMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzM2MEFEQkE1REUwMEE0
NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MUUwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQz
IC8qIEZvbnRMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzIyMEFE
QkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczQzBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVM
b2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzNFMEFEQkE1REUwMEE0NTU0
RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MjYwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI4OTMsNiArMjg5NCw3IEBACiAJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVz
b3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTIzRDI3OTAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTE4
MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5MkYw
ODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzRjE5OTUw
MDgyNDVFNTkwMDFFOUFCQyAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1ODc4NjQ5MDJERTNBOUEwMUVBNDEy
MiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVQ
b2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZVBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFC
QyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Yx
OTk4QzA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5NTVBNDEwM0Q3MjkzMjAwODYzNUNF
IC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTc2MSw2ICs5NzYzLDcgQEAKIAkJNjU2RDM3MUUwQURCQTVERTAw
QTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEb2N1bWVudExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udExvYWRSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBG
cmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjYwQURCQTVERTAwQTQ1
NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjg1MSw2ICsxNjg1NCw3IEBACiAJCUY1NUIzREFDMTI1MUYxMkQwMDNF
RjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlZWtJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU4Nzg0RjAw
MkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1cnNvck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NTRD
MDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZVZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTg1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRm9udExv
YWRSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVQ
b2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCUY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1NMS2V5
R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1cnNvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAg
LTI1OTM3LDYgKzI1OTQxLDcgQEAKIAkJCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyogQ2Fj
aGVkRm9udC5jcHAgKi8sCiAJCQkJQkM2NEI0Q0EwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZv
bnQuaCAqLywKIAkJCQkxQUVGNEU2NjE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVu
dC5oICovLAorCQkJCTg1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJl
cXVlc3QuaCAqLywKIAkJCQlCQ0IxNkMwMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2Uu
Y3BwICovLAogCQkJCUJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICov
LAogCQkJCTMxOUZCRDVEMTVEMkY0NDQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oICov
LApAQCAtMjc1ODUsNiArMjc1OTAsNyBAQAogCQkJCUNFQkI4QzMyMjA3ODZEQ0IwMDAzOTU0NyAv
KiBGZXRjaElkaW9tcy5jcHAgKi8sCiAJCQkJQ0VCQjhDMzEyMDc4NkRDQjAwMDM5NTQ3IC8qIEZl
dGNoSWRpb21zLmggKi8sCiAJCQkJNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNoT3B0
aW9ucy5oICovLAorCQkJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVl
c3QuaCAqLywKIAkJCQk2NTZEMzcyMzBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmNwcCAq
LywKIAkJCQk2NTZEMzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8sCiAJCQkJ
NDE4ODVCOTIxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLywKQEAgLTMx
NjE0LDYgKzMxNjIwLDcgQEAKIAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYy
QjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMw
MEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0YxOTk1
MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8q
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDI2LDYgKzMyNDMz
LDcgQEAKIAkJCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDJFRTNBNzE3NTc2RTU1
MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0QTUzMkYyNTYwNTdDRDAwMjhDNTkyIC8qIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0
cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUzMjBENkIxMjJBMjRFOTAwMkQxNDQwIC8qIEZv
bnRQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKaW5kZXggODE3MWFjY2VhN2VmNDdjYjE1Mzk5NWU5NGFhOGEwMTE5ZDdhZTM2MC4uYzg5YmE0
MzVmMzBmMmIxMzY2NjM4NTNlMTAwYjFhOTUyNjdjMmY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCkBAIC03NiwxMCArNzYsOSBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBTYwogICAg
ICAgICBpZiAoIWl0ZW0uaXNMb2NhbCgpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvKiBzZXR0
aW5ncyA9IGNvbnRleHQgPyAmY29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKSA6IG51bGxwdHI7CiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQpOwotICAgICAg
ICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYm
IGlzPERvY3VtZW50Pihjb250ZXh0KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoQ2Fj
aGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udCgmZG9jdW1lbnQsIGZvdW5kU1ZH
Rm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRG
YWNlLCBpdGVtLnJlc291cmNlKCksIGRvY3VtZW50LmZvbnRTZWxlY3RvcigpLCAqY2FjaGVkRm9u
dCk7CisgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVk
Rm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBmb250UmVxdWVzdCA9IGl0ZW0u
Zm9udExvYWRSZXF1ZXN0KGNvbnRleHQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVu
dEluVXNlckFnZW50U2hhZG93VHJlZSkpCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1h
a2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksICpj
b250ZXh0LT5jc3NGb250U2VsZWN0b3IoKSwgV1RGTW92ZShmb250UmVxdWVzdCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVs
ZW1lbnQgPyBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNv
dXJjZSgpLCAqZm9udEZhY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKaW5kZXggYmMzMjNjMmYyZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZC4u
NjQ0NTdkZmMzYzAzYzcyZTk1ZjcxOGY4NmU5ZjUyMWU5OWIwODE5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDU1NGb250RmFjZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgotI2luY2x1ZGUg
IkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250TG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJDYWNoZWRTVkdGb250LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
b250LmgiCkBAIC03MiwxOSArNzIsMTkgQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW0KIHsKIH0K
IAotQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYgZm9udFNl
bGVjdG9yLCBDYWNoZWRGb250JiBmb250KQorQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkks
IENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiYmIHJlcXVlc3QpCiAgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1pbHlOYW1lT3JV
UkkpCiAgICAgLCBtX2ZhY2Uob3duZXIpCiAgICAgLCBtX2ZvbnRTZWxlY3RvcihtYWtlV2Vha1B0
cihmb250U2VsZWN0b3IpKQotICAgICwgbV9mb250KCZmb250KQorICAgICwgbV9mb250UmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpKQogewogICAgIC8vIFRoaXMgbWF5IHN5bmNocm9ub3VzbHkgY2Fs
bCBmb250TG9hZGVkKCkuCi0gICAgbV9mb250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9u
dFJlcXVlc3QtPnNldENsaWVudCh0aGlzKTsKIAotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6
OlBlbmRpbmcgJiYgbV9mb250LT5pc0xvYWRlZCgpKSB7CisgICAgaWYgKHN0YXR1cygpID09IFN0
YXR1czo6UGVuZGluZyAmJiAhbV9mb250UmVxdWVzdC0+aXNMb2FkaW5nKCkpIHsKICAgICAgICAg
c2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlRm9u
dExvYWRDb21wbGV0aW9ucygpKSB7Ci0gICAgICAgICAgICBpZiAobV9mb250LT5lcnJvck9jY3Vy
cmVkKCkpCisgICAgICAgICAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTA5
LDggKzEwOSw4IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiAKIENTU0ZvbnRGYWNlU291cmNl
Ojp+Q1NTRm9udEZhY2VTb3VyY2UoKQogewotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1fZm9u
dC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkKKyAgICAgICAg
bV9mb250UmVxdWVzdC0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCiBib29sIENTU0ZvbnRGYWNl
U291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3QKQEAgLTEyMCwy
OSArMTIwLDI5IEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoKSBjb25zdAogCiB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCkKIHsKLSAgICBpZiAoc3RhdHVzKCkgPT0g
U3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRh
KCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKKyAgICBpZiAoc3RhdHVzKCkg
PT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udFJlcXVlc3QgJiYgbV9mb250UmVxdWVzdC0+dXJs
KCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQog
ICAgICAgICBsb2FkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQo
Q2FjaGVkRm9udCYgbG9hZGVkRm9udCkKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2Fk
ZWQoRm9udExvYWRSZXF1ZXN0JiBmb250UmVxdWVzdCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGxv
YWRlZEZvbnQsICZsb2FkZWRGb250ID09IG1fZm9udC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChmb250UmVxdWVzdCwgJmZvbnRSZXF1ZXN0ID09IG1fZm9udFJlcXVlc3QuZ2V0KCkpOwogCiAg
ICAgaWYgKHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVmPENTU0ZvbnRGYWNlPiBwcm90ZWN0ZWRGYWNlKG1fZmFjZSk7CiAKLSAgICAv
LyBJZiB0aGUgZm9udCBpcyBpbiB0aGUgY2FjaGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5
IGNhbGxlZCBmcm9tIENhY2hlZEZvbnQ6OmFkZENsaWVudCgpLgorICAgIC8vIElmIHRoZSBmb250
IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkgY2FsbGVkIGZyb20g
Rm9udExvYWRSZXF1ZXN0OjphZGRDbGllbnQoKS4KICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVz
OjpQZW5kaW5nKQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICBlbHNl
IGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUpIHsKICAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBtYXkgYmUgY2FsbGVkIHR3aWNlIGlmIGxvYWRpbmcgd2FzIGNhbmNlbGxlZC4KLSAgICAg
ICAgQVNTRVJUKG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZm9u
dFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkgfHwgIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9u
dERhdGEobV9mYW1pbHlOYW1lT3JVUkkpKQorICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9j
Y3VycmVkKCkgfHwgIW1fZm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5
TmFtZU9yVVJJKSkKICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgZWxz
ZQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTE1NCw5ICsxNTQsMTAg
QEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAg
ICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAKLSAgICBpZiAobV9mb250KSB7CisgICAg
aWYgKG1fZm9udFJlcXVlc3QpIHsKICAgICAgICAgQVNTRVJUKG1fZm9udFNlbGVjdG9yKTsKLSAg
ICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnQpOworICAg
ICAgICBpZiAoYXV0byogY29udGV4dCA9IG1fZm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCisgICAgICAgICAgICBjb250ZXh0LT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9m
b250UmVxdWVzdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CiAgICAgICAgIGlmIChtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCkgewpAQCAtMTk4LDcgKzE5OSw3
IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKICAgICBib29sIHVzZXNJbkRvY3VtZW50U1ZH
Rm9udCA9IG1faGFzU1ZHRm9udEZhY2VFbGVtZW50OwogCi0gICAgaWYgKCFtX2ZvbnQgJiYgIXVz
ZXNJbkRvY3VtZW50U1ZHRm9udCkgeworICAgIGlmICghbV9mb250UmVxdWVzdCAmJiAhdXNlc0lu
RG9jdW1lbnRTVkdGb250KSB7CiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAg
ICAgICAgICAgaWYgKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTAsMTIgKzIxMSwxMiBAQCBSZWZQdHI8Rm9u
dD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGJvbwogICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250
Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksICZmb250RmFjZUZl
YXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcywgdHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKG1f
Zm9udCkgewotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnRE
YXRhKG1fZmFtaWx5TmFtZU9yVVJJKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkgeworICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2Zh
bWlseU5hbWVPclVSSSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7
CiAKICAgICAgICAgQVNTRVJUKHN0YXR1cygpID09IFN0YXR1czo6U3VjY2Vzcyk7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9mb250LT5jcmVhdGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1p
bHlOYW1lT3JVUkksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZm9u
dFJlcXVlc3QtPmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFj
ZUNhcGFiaWxpdGllcyk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTIzMiw3ICsyMzMsMTEgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRG
YWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBi
b28KIAogYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faGFzU1ZHRm9udEZhY2VFbGVtZW50IHx8IGlzPENhY2hlZFNWR0Zv
bnQ+KG1fZm9udC5nZXQoKSk7CisgICAgaWYgKCFtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCAh
aXM8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PihtX2ZvbnRSZXF1ZXN0LmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byogY2FjaGVkRm9udFJlcXVlc3QgPSBkb3duY2FzdDxD
YWNoZWRGb250TG9hZFJlcXVlc3Q+KG1fZm9udFJlcXVlc3QuZ2V0KCkpOworICAgIHJldHVybiBp
czxDYWNoZWRTVkdGb250PihjYWNoZWRGb250UmVxdWVzdC0+Y2FjaGVkRm9udCgpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA1OTJjZTgzMWM1YTky
ODYzZTA0ZWJkYjc2ZWYzYWMxOGY1MWMxM2JkLi42MTA3ODkzZWVlNDkwMjZmYjIyYjUxMmE2NmI5
Mzk0YjIxZWFiZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MjUsOCArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGll
bnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkZvbnRM
b2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgpAQCAtNDcsMTEgKzQ2LDExIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKLWNsYXNzIENTU0ZvbnRGYWNlU291
cmNlIGZpbmFsIDogcHVibGljIENhY2hlZEZvbnRDbGllbnQgeworY2xhc3MgQ1NTRm9udEZhY2VT
b3VyY2UgZmluYWwgOiBwdWJsaWMgRm9udExvYWRSZXF1ZXN0Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKLSAgICBDU1NGb250
RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9y
VVJJLCBDU1NGb250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NT
Rm9udFNlbGVjdG9yJiwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4mJik7CiAgICAg
Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWls
eU5hbWVPclVSSSwgU1ZHRm9udEZhY2VFbGVtZW50Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiYmKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgp
OwpAQCAtNzYsMjIgKzc1LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0g
bnVsbHB0cik7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAg
Q2FjaGVkRm9udCogY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQot
ICAgIGJvb2wgcmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250
OyB9CisgICAgRm9udExvYWRSZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CisgICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CiAKICAgICBib29sIGlz
U1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIHNob3VsZEln
bm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdDsKIAotICAgIHZvaWQgZm9udExvYWRlZChD
YWNoZWRGb250Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVz
dCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21T
dHJpbmcgbV9mYW1pbHlOYW1lT3JVUkk7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250
IG5hbWUgZm9yIGxvY2FsLgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcg
Zm9udCBmYWNlLgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3Rvcjsg
Ly8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250
cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCisgICAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRz
LCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
clZpZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuY3BwCmluZGV4IDUzOWZkNDg4OTY5ZWZhNmZhZDVmZWE0ZDNjOGExN2I3MmY3MTll
ZTUuLjIzOWVlNDAwNDFkZDE3ZDhhNzA4YjhiMjZmODEzMGVkZTc1MzdjMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTI5LDEwICsyOSwxMSBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03NiwxOSArNzcsMTYgQEAgYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVl
Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IEMK
ICAgICByZXR1cm4gaGFuZGxlcigqbV9jYWNoZWRGb250KTsKIH0KIAotQ2FjaGVkRm9udCogQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNT
VkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKK3N0ZDo6
dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2Fk
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBib29sIGlzU1ZHLCBib29s
IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7CiAgICAgaWYgKG1f
Y2FjaGVkRm9udCkKLSAgICAgICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PigqbV9jYWNoZWRGb250KTsK
IAotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKLSAgICBvcHRpb25zLmNvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRT
aGFkb3dUcmVlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNo
ZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKLSAg
ICBvcHRpb25zLmxvYWRlZEZyb21PcGFxdWVTb3VyY2UgPSBtX2xvYWRlZEZyb21PcGFxdWVTb3Vy
Y2U7CisgICAgYXV0byByZXF1ZXN0ID0gY29udGV4dC0+Zm9udExvYWRSZXF1ZXN0KG1fcmVzb3Vy
Y2UsIGlzU1ZHLCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBtX2xv
YWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIGlmIChpczxDYWNoZWRGb250TG9hZFJlcXVlc3Q+
KHJlcXVlc3QuZ2V0KCkpKQorICAgICAgICBtX2NhY2hlZEZvbnQgPSAmZG93bmNhc3Q8Q2FjaGVk
Rm9udExvYWRSZXF1ZXN0PihyZXF1ZXN0LmdldCgpKS0+Y2FjaGVkRm9udCgpOwogCi0gICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21w
bGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwotICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9y
KGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1fY2FjaGVkRm9u
dCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUo
cmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKTsKLSAgICByZXR1cm4gbV9jYWNoZWRG
b250LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBib29sIENTU0ZvbnRGYWNlU3Jj
VmFsdWU6OmVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJiBvdGhlcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGM1ZGM1OWZkOTZhMWJl
MzI4MzYzNDRmZjE5ZDk1ODc3MjkyNmQ3YjQuLmNiZTE0MTFlNDZjNGVkNzZlNzExYmMzNDFlNjU5
OTAzZjUwZmFiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApA
QCAtMzQsOCArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRGb250
OwotY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBTVkdGb250
RmFjZUVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBDU1NG
b250RmFjZVNyY1ZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKQEAgLTY2
LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25z
dCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBj
b25zdDsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqLCBib29sIGlzU1ZH
LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0ZvbnRGYWNlU3Jj
VmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRl
eCBjMTE1NzhjZmM1MDQxMmNiYTZjNTUzMGY5NGJlOGFhMzYzNDQ3NWNjLi5hY2QyYTFjYzI0ZTM0
YzA1NGQwMzc4MjM0ODc3MzdjZmVjN2ZlYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcApAQCAtNjgsNyArNjgsNiBAQCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxl
Y3RvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9mb250Q2FjaGUo
bWFrZVJlZihjb250ZXh0LmZvbnRDYWNoZSgpKSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NT
Rm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIo
W3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0pCi0gICAgLCBtX2ZvbnRMb2FkaW5nVGltZXIoKnRo
aXMsICZDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fdW5p
cXVlSWQoKytmb250U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigwKQogewpAQCAtOTMsNyAr
OTIsNyBAQCBDU1NGb250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IoKQogewogICAgIExPRyhG
b250cywgIkNTU0ZvbnRTZWxlY3RvciAlcCBkdG9yIiwgdGhpcyk7CiAKLSAgICBzdG9wTG9hZGlu
Z0FuZENsZWFyRm9udHMoKTsKKyAgICBjbGVhckZvbnRzKCk7CiAgICAgbV9mb250Q2FjaGUtPnJl
bW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKQEAgLTMzNiw5NCArMzM1LDEzIEBAIEZvbnRSYW5nZXMg
Q1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyCiAgICAgcmV0dXJuIEZvbnRSYW5nZXMgeyBXVEZNb3ZlKGZvbnQpIH07CiB9
CiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQordm9p
ZCBDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9udHMoKQogewotICAgIGlmIChtX2lzU3RvcHBlZCkg
ewotICAgICAgICBBU1NFUlQoIW1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAg
ICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9hZGluZy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRpbmdU
aW1lci5zdG9wKCk7Ci0KLSAgICBpZiAoaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpIHsK
LSAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7
Ci0gICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZm9udEhh
bmRsZSA6IG1fZm9udHNUb0JlZ2luTG9hZGluZykgewotICAgICAgICAgICAgLy8gQmFsYW5jZXMg
aW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KLSAgICAg
ICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhh
bmRsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7
Ci0gICAgfQotCiAgICAgbV9jc3NGb250RmFjZVNldC0+Y2xlYXIoKTsKICAgICBtX2NsaWVudHMu
Y2xlYXIoKTsKIH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29u
KENhY2hlZEZvbnQmIGZvbnQpCi17Ci0gICAgaWYgKG1faXNTdG9wcGVkIHx8ICFpczxEb2N1bWVu
dD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0KLSAgICBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuYXBwZW5kKCZmb250KTsKLSAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291
bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNw
YXRjaGVkCi0gICAgLy8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVm
b3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFuY2VkIGJ5Ci0gICAgLy8gZGVjcmVtZW50UmVxdWVz
dENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpLgotICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuaW5jcmVt
ZW50UmVxdWVzdENvdW50KGZvbnQpOwotCi0gICAgaWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5k
ZWQgJiYgIW1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2ZvbnRMb2Fk
aW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpz
dXNwZW5kRm9udExvYWRpbmdUaW1lcigpCi17Ci0gICAgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5z
aW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6Omxv
YWRQZW5kaW5nRm9udHMoKQotewotICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgfHwg
IWlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIFZl
Y3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGlu
ZzsKLSAgICBmb250c1RvQmVnaW5Mb2FkaW5nLnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsK
LQotICAgIC8vIENTU0ZvbnRTZWxlY3RvciBjb3VsZCBnZXQgZGVsZXRlZCB2aWEgYmVnaW5Mb2Fk
SWZOZWVkZWQoKSBvciBsb2FkRG9uZSgpIHVubGVzcyBwcm90ZWN0ZWQuCi0gICAgUmVmPENTU0Zv
bnRTZWxlY3Rvcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZUxv
YWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpOwotICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsK
LSAgICAgICAgZm9udEhhbmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpOwotICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdp
bkxvYWRpbmdGb250U29vbigpLgotICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOwotICAgIH0KLX0KLQotdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFpczxEb2N1bWVudD4o
bV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0gICAgUmVmPENTU0ZvbnRTZWxlY3Rv
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7Ci0KLSAg
ICAvLyBGSVhNRTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGluc3RlYWQuCi0gICAgLy8gQ2FsbCBG
cmFtZUxvYWRlcjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWRE
b25lIHRvIG1hdGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4K
LSAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWREb25lKExvYWRDb21wbGV0
aW9uVHlwZTo6RmluaXNoKTsKLSAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3Vu
dCByZWFjaGVzIHplcm8sIHRoZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgotICAg
IC8vIE5ldyBmb250IGxvYWRzIG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBk
b2N1bWVudCBsb2FkIGlzIGNvbXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCi0g
ICAgLy8gZGlkRmluaXNoTG9hZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVn
YXRlIGlzIGFsd2F5cyBkaXNwYXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCi0gICAgaWYg
KGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNo
ZWNrTG9hZENvbXBsZXRlKCk7Ci19Ci0KIHNpemVfdCBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNr
Rm9udENvdW50KCkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCkBAIC00NDksMjkgKzM2Nyw0IEBA
IFJlZlB0cjxGb250PiBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKLXZvaWQgQ1NT
Rm9udFNlbGVjdG9yOjpzdG9wKCkKLXsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOwot
fQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQot
ewotICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGluZ1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OnJlc3VtZSgpCi17Ci0gICAg
aWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mb250TG9hZGlu
Z1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwotCi0gICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVk
ID0gZmFsc2U7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBl
NGFmZjI2YWFhZmYwOGY4Njg2N2UwNDU1OWZhNDFiNGJiN2U4ZjM3Li40MzQ3ZTg1YTE1NjIzNGE5
M2NlYmVkMTQ3YzIzMjZjMjFiNTFhZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmFsbGJhY2tGb250Q291
bnQoKSBmaW5hbDsKICAgICBSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKIAotICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKCk7CisgICAgdm9pZCBjbGVhckZvbnRzKCk7CiAgICAgdm9pZCBlbXB0eUNhY2hlcygp
OwogICAgIHZvaWQgYnVpbGRTdGFydGVkKCk7CiAgICAgdm9pZCBidWlsZENvbXBsZXRlZCgpOwpA
QCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAKLSAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKLSAgICB2b2lk
IHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7Ci0KICAgICBGb250RmFjZVNldCogZm9udEZhY2VT
ZXRJZkV4aXN0cygpOwogICAgIEZvbnRGYWNlU2V0JiBmb250RmFjZVNldCgpOwogCkBAIC0xMTAs
MTIgKzEwNyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb250U3R5bGVVcGRhdGVOZWVkZWQoQ1NT
Rm9udEZhY2UmKSBmaW5hbDsKIAogICAgIHZvaWQgZm9udE1vZGlmaWVkKCk7Ci0gICAgdm9pZCBm
b250TG9hZGluZ1RpbWVyRmlyZWQoKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBm
aW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQ1NTRm9udFNlbGVjdG9yIl9zOyB9
CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0ZvbnRGYWNlUnVsZSB7CkBAIC0xMzAsMTUgKzEyMywxMSBA
QCBwcml2YXRlOgogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NGb250RmFjZVNldDsKICAg
ICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsKIAotICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwog
ICAgIEhhc2hTZXQ8UmVmUHRyPENTU0ZvbnRGYWNlPj4gbV9jc3NDb25uZWN0aW9uc1Bvc3NpYmx5
VG9SZW1vdmU7CiAgICAgSGFzaFNldDxSZWZQdHI8U3R5bGVSdWxlRm9udEZhY2U+PiBtX2Nzc0Nv
bm5lY3Rpb25zRW5jb3VudGVyZWREdXJpbmdCdWlsZDsKIAogICAgIENTU0ZvbnRGYWNlU2V0OjpG
b250TW9kaWZpZWRPYnNlcnZlciBtX2ZvbnRNb2RpZmllZE9ic2VydmVyOwogCi0gICAgVGltZXIg
bV9mb250TG9hZGluZ1RpbWVyOwotICAgIGJvb2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKLQogICAgIHVuc2lnbmVkIG1fdW5pcXVlSWQ7CiAgICAgdW5zaWduZWQgbV92ZXJz
aW9uOwogICAgIHVuc2lnbmVkIG1fY29tcHV0aW5nUm9vdFN0eWxlRm9udENvdW50IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWI0ZjI4YmQzMzA3ZTQ3NGRiYTdhM2UyNmFhN2Nh
MDA1NjNmNTYxMi4uODQwNjgxOTg4NTQ0ZjA3Yjg4NGQ5YTZhODdiNDgzMmVjMDdmZDA5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNyw4ICszNywxMSBAQAogI2luY2x1ZGUgIkNTU1N0
eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hlZEZvbnRMb2FkUmVxdWVzdC5o
IgogI2luY2x1ZGUgIkNhY2hlZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCkBAIC03NCw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRm9jdXNFdmVudC5oIgogI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisjaW5jbHVkZSAi
Rm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC02MzksNiArNjQzLDcgQEAg
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCwgRG9jdW0KICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9u
VGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJl
ZCkKICAgICAsIG1fc2hhcmVkT2JqZWN0UG9vbENsZWFyVGltZXIoKnRoaXMsICZEb2N1bWVudDo6
Y2xlYXJTaGFyZWRPYmplY3RQb29sKQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVj
dG9yOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9j
dW1lbnQ6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNv
bnRyb2xzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGlt
ZXJGaXJlZCkKICAgICAsIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcigqdGhpcywgJkRvY3VtZW50
OjppbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHBhZ2Uo
KSA/ICZwYWdlKCktPnNvY2tldFByb3ZpZGVyKCkgOiBudWxscHRyKQpAQCAtNzU4LDcgKzc2Myw3
IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGV4dGVuc2lvblN0eWxlU2hlZXRzKCkuZGV0
YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICBzdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOyAv
LyBXZSBuZWVkIHRvIGRlc3Ryb3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuCi0gICAgbV9mb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpOworICAgIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgLy8g
SXQncyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2lu
ZyB0aGUgc2FtZSBDYWNoZWRSZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8g
bG9hZCB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGgg
dGhlIHNhbWUgRG9jdW1lbnRMb2FkZXIpLgpAQCAtODA3LDcgKzgxMiw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNs
ZWFyKCk7CiAgICAgICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0geyB9OwogCi0g
ICAgICAgIG1fZm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICAg
ICAgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CiAKICAgICAgICAgZGV0YWNoUGFyc2VyKCk7
CiAKQEAgLTIwNjIsNyArMjA2Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNv
bHZlU3R5bGVUeXBlIHR5cGUpCiAKICAgICAgICAgbV9pblN0eWxlUmVjYWxjID0gZmFsc2U7CiAK
LSAgICAgICAgZm9udFNlbGVjdG9yKCkubG9hZFBlbmRpbmdGb250cygpOworICAgICAgICBsb2Fk
UGVuZGluZ0ZvbnRzKCk7CiAKICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAg
ICB1cGRhdGVSZW5kZXJUcmVlKFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcx
NywxMSBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVw
ZGF0ZXMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZ1Rp
bWVyKCkKK3sKKyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOworfQorCiBib29sIERvY3Vt
ZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAog
ewogICAgIC8vIEJ5cGFzcyB0aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5k
IGl0IG5vdCB0aGUgbm9ybWFsIHdvcmxkLgpAQCAtMjk5Nyw2ICszMDA3LDczIEBAIHZvaWQgRG9j
dW1lbnQ6OmltcGxpY2l0T3BlbigpCiAgICAgc2V0UmVhZHlTdGF0ZShMb2FkaW5nKTsKIH0KIAor
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gRG9jdW1lbnQ6OmZvbnRMb2FkUmVxdWVz
dChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpCit7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgIG9wdGlvbnMu
Y29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lw
UG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNo
ZWNrOworICAgIG9wdGlvbnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9IGxvYWRlZEZyb21PcGFx
dWVTb3VyY2U7CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QoY29tcGxldGVVUkwodXJsKSksIG9wdGlvbnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlh
dG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOworICAgIENhY2hlZEZv
bnQqIGNhY2hlZEZvbnQgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Rm9udChXVEZN
b3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVfb3IobnVsbHB0cikuZ2V0KCk7CisgICAgcmV0dXJu
IGNhY2hlZEZvbnQgPyBtYWtlVW5pcXVlPENhY2hlZEZvbnRMb2FkUmVxdWVzdD4oKmNhY2hlZEZv
bnQpIDogbnVsbHB0cjsKK30KKwordm9pZCBEb2N1bWVudDo6YmVnaW5Mb2FkaW5nRm9udFNvb24o
Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIEFTU0VSVChpczxDYWNoZWRGb250TG9h
ZFJlcXVlc3Q+KHJlcXVlc3QpKTsKKyAgICBhdXRvJiBmb250ID0gZG93bmNhc3Q8Q2FjaGVkRm9u
dExvYWRSZXF1ZXN0PihyZXF1ZXN0KS5jYWNoZWRGb250KCk7CisKKyAgICBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuYXBwZW5kKCZmb250KTsKKyAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291
bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNw
YXRjaGVkCisgICAgLy8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVm
b3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFuY2VkIGJ5CisgICAgLy8gZGVjcmVtZW50UmVxdWVz
dENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpLgorICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmluY3JlbWVudFJlcXVl
c3RDb3VudChmb250KTsKKworICAgIGlmICghbV9pc1N1c3BlbmRlZCAmJiAhbV9mb250TG9hZGlu
Z1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKK30KKwordm9pZCBEb2N1bWVudDo6bG9hZFBlbmRpbmdGb250cygpCit7CisgICAg
aWYgKG1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGluZzsKKyAgICBmb250
c1RvQmVnaW5Mb2FkaW5nLnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsKKworICAgIGZvciAo
YXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKKyAgICAgICAgZm9udEhh
bmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQobV9jYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgICAg
IC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRT
b29uKCkuCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50Ojpmb250TG9hZGlu
Z1RpbWVyRmlyZWQoKQoreworICAgIGxvYWRQZW5kaW5nRm9udHMoKTsKKworICAgIC8vIEZJWE1F
OiBVc2UgU3VicmVzb3VyY2VMb2FkZXIgaW5zdGVhZC4KKyAgICAvLyBDYWxsIEZyYW1lTG9hZGVy
Ojpsb2FkRG9uZSBiZWZvcmUgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlTG9hZERvbmUgdG8gbWF0
Y2ggdGhlIG9yZGVyIGluIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lLgorICAgIG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmxvYWREb25lKExvYWRDb21wbGV0aW9uVHlwZTo6RmluaXNoKTsK
KyAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3VudCByZWFjaGVzIHplcm8sIHRo
ZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgorICAgIC8vIE5ldyBmb250IGxvYWRz
IG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBkb2N1bWVudCBsb2FkIGlzIGNv
bXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCisgICAgLy8gZGlkRmluaXNoTG9h
ZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVnYXRlIGlzIGFsd2F5cyBkaXNw
YXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCisgICAgaWYgKGZyYW1lKCkpCisgICAgICAg
IGZyYW1lKCktPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnQ6OnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpCit7CisgICAgbV9mb250TG9hZGluZ1RpbWVy
LnN0b3AoKTsKKyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9CZWdpbkxvYWRp
bmcpIHsKKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVn
aW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVj
cmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKKyAgICB9CisgICAgbV9mb250c1RvQmVn
aW5Mb2FkaW5nLmNsZWFyKCk7CisgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRm9udHMoKTsKK30K
KwogSFRNTEJvZHlFbGVtZW50KiBEb2N1bWVudDo6Ym9keSgpIGNvbnN0CiB7CiAgICAgYXV0byog
ZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwpAQCAtNTUxNiwxMyArNTU5MywxNyBAQCB2b2lk
IERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIG1fdmlz
dWFsVXBkYXRlc0FsbG93ZWQgPSBmYWxzZTsKICAgICBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lv
blRpbWVyLnN0b3AoKTsKIAorICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7CisKICAgICBt
X2lzU3VzcGVuZGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVzdW1lKFJlYXNvbkZv
clN1c3BlbnNpb24gcmVhc29uKQogewotICAgIGlmICghbV9pc1N1c3BlbmRlZCkKKyAgICBpZiAo
IW1faXNTdXNwZW5kZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9hZGluZy5p
c0VtcHR5KCkgfHwgbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpOwogICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogY29weVRvVmVjdG9yKG1fZG9j
dW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cykpCiAgICAgICAgIGVsZW1lbnQtPnJlc3Vt
ZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKTsKQEAgLTU1NDQsNiArNTYyNSw5IEBAIHZvaWQgRG9j
dW1lbnQ6OnJlc3VtZShSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIAogICAgIG1faXNTdXNw
ZW5kZWQgPSBmYWxzZTsKIAorICAgIGlmICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHko
KSkKKyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkgJiYgcmVhc29uID09IFJlYXNv
bkZvclN1c3BlbnNpb246OkJhY2tGb3J3YXJkQ2FjaGUpCiAgICAgICAgIHNldFNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKCZTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxZjlhODNiZmQyNjRh
NGUxNDBlM2MxZjEzOGJmYWM0ZjI1Nzk0MjhiLi5mNjM4YWFiZTJkNDFhY2NiMmNhZmMzOTc4YWQw
NzY1ZTRmMDc0YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjgsNiArMjgsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKQEAgLTEwMiw2
ICsxMDMsNyBAQCBjbGFzcyBDU1NGb250U2VsZWN0b3I7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0
aW9uOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Citj
bGFzcyBDYWNoZWRGb250OwogY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CkBAIC0xMzcsNiArMTM5LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uU3R5bGVTaGVldHM7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGbG9hdFJl
Y3Q7CiBjbGFzcyBGb250RmFjZVNldDsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKIGNsYXNzIEZv
cm1Db250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKQEAgLTYz
Myw2ICs2MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kRGV2aWNlTW90aW9uQW5kT3Jp
ZW50YXRpb25VcGRhdGVzKCk7CiAgICAgdm9pZCByZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRh
dGlvblVwZGF0ZXMoKTsKIAorICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKwog
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXcu
Z2V0KCk7IH0KIAogICAgIGJvb2wgcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQ7IH0KQEAgLTE2NDcsMTAgKzE2NTIsMTYg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBDU1NGb250
U2VsZWN0b3IqIGNzc0ZvbnRTZWxlY3RvcigpIGZpbmFsIHsgcmV0dXJuIG1fZm9udFNlbGVjdG9y
LnB0cigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRS
ZXF1ZXN0KFN0cmluZyYsIGJvb2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFs
OworICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7
CiAKICAgICAvLyBGb250U2VsZWN0b3JDbGllbnQKICAgICB2b2lkIGZvbnRzTmVlZFVwZGF0ZShG
b250U2VsZWN0b3ImKSBmaW5hbDsKIAorICAgIHZvaWQgbG9hZFBlbmRpbmdGb250cygpOworICAg
IHZvaWQgZm9udExvYWRpbmdUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdG9wTG9hZGluZ0FuZENs
ZWFyRm9udHMoKTsKKwogICAgIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
ZmluYWw7CkBAIC0xOTgyLDYgKzE5OTMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBtX2RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTDsKIAogICAgIFJl
ZjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOworICAgIFRpbWVyIG1fZm9udExvYWRp
bmdUaW1lcjsKKyAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1f
Zm9udHNUb0JlZ2luTG9hZGluZzsKIAogICAgIFdlYWtIYXNoU2V0PE1lZGlhUHJvZHVjZXI+IG1f
YXVkaW9Qcm9kdWNlcnM7CiAgICAgV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvbj4gbV9hY3RpdmVT
cGVlY2hSZWNvZ25pdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAppbmRleCBjNzczODMxYjg4YzJiMDJiMDViYzJmZmI2ZjA1M2U4ZGFmMWE1Zjdh
Li5lNzUwYTYyN2FiNjBiYzkzZmRiNWY3NTg1OTgzZTZkYTU0OWViYjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVk
ZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtMjMyLDYgKzIzMywxMSBAQCBGb250Q2Fj
aGUmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSgpCiAgICAgcmV0dXJuIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdChTdHJpbmcmLCBib29sLCBi
b29sLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIHJldHVybiBudWxscHRyOworfQor
CiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvckVhY2hBY3RpdmVET01PYmplY3QoY29u
c3QgRnVuY3Rpb248U2hvdWxkQ29udGludWUoQWN0aXZlRE9NT2JqZWN0Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICAvLyBJdCBpcyBub3QgYWxsb3dlZCB0byBydW4gYXJiaXRyYXJ5IHNjcmlwdCBv
ciBjb25zdHJ1Y3QgbmV3IEFjdGl2ZURPTU9iamVjdHMgd2hpbGUgd2UgYXJlIGl0ZXJhdGluZyBv
dmVyIEFjdGl2ZURPTU9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCBlOGJmMGVmY2I2YmJhMTI2MGYwYTkwYjc5NzU0MzgxNmIwZGYxYmJi
Li5jOTk4YjEyZjI5Y2M2OTY4YjljOTY2NWIwNjVmZDEyZDc4ZDU3YjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1
ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtNjYsNiArNjcsNyBAQCBjbGFzcyBFdmVudFF1ZXVlOwog
Y2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGb250
Q2FjaGU7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNz
IFB1YmxpY1VSTE1hbmFnZXI7CiBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwpAQCAtMTY1
LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUo
KTsKICAgICB2aXJ0dWFsIENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVz
dD4gZm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlh
dGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2Up
OworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3Qm
KSB7IH0KIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzRlNDZlODcyYzZhNmQw
MjMxN2ViMTgyMTU1MjU2M2ZmZWE1NWNmYS4uNGQ4NTU2NGMwNDdmZTk0NmQxMmRhMDNmN2Q3MzQ5
OTQyMjI1M2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0zMzgsNyArMzM4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAg
IGNhbmNlbEFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycyk7CiAKICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+Zm9udFNl
bGVjdG9yKCkuc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKyAgICAgICAgZG9jdW1lbnQtPnN1
c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAKICAgICAvLyBBcHBjYWNoZSB1c2VzIFJlc291cmNl
SGFuZGxlIGRpcmVjdGx5LCBEb2N1bWVudExvYWRlciBkb2Vzbid0IGNvdW50IHRoZXNlIGxvYWRz
LgogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPnN0b3BMb2FkaW5nSW5GcmFtZSgqbV9mcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzIw
OGUyODM4MDg3NjFlN2YwZjk5ODhlOGQ0NzNiNjljMWFkYzM0NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3QuaApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250
OworY2xhc3MgRm9udERlc2NyaXB0aW9uOworY2xhc3MgRm9udExvYWRSZXF1ZXN0Oworc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7Cit1c2luZyBGb250RmVhdHVyZVNldHRpbmdz
ID0gRm9udFRhZ2dlZFNldHRpbmdzPGludD47CisKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdENsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Rm9udExvYWRSZXF1ZXN0Q2xpZW50KCkgPSBkZWZh
dWx0OworICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIHsgfQor
fTsKKworY2xhc3MgRm9udExvYWRSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250
TG9hZFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRp
b24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
ZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCopID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Nh
Y2hlZEZvbnRMb2FkUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05U
TE9BRFJFUVVFU1QoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdCYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVz
dC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM2ODRkNTJiYTc0ZDQ5MmM1YmQ5MWYwNTVmN2M1ZDI2YmJlZmIzZmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1
ZXN0LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWRGb250Lmgi
CisjaW5jbHVkZSAiQ2FjaGVkRm9udENsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ2FjaGVkRm9udExvYWRSZXF1ZXN0IGZpbmFsIDogcHVibGljIEZvbnRM
b2FkUmVxdWVzdCwgcHVibGljIENhY2hlZEZvbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIENhY2hlZEZvbnRMb2FkUmVxdWVzdChDYWNoZWRGb250
JiBmb250KQorICAgICAgICA6IG1fZm9udCgmZm9udCkKKyAgICB7CisgICAgfQorCisgICAgfkNh
Y2hlZEZvbnRMb2FkUmVxdWVzdCgpCisgICAgeworICAgICAgICBpZiAobV9mb250TG9hZFJlcXVl
c3RDbGllbnQpCisgICAgICAgICAgICBtX2ZvbnQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAg
fQorCisgICAgQ2FjaGVkRm9udCYgY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuICptX2ZvbnQ7
IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZm9udC0+dXJsKCk7IH0KKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZm9udC0+aXNMb2FkaW5nKCk7IH0KKyAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2ZvbnQtPmVycm9yT2NjdXJyZWQoKTsgfQorCisgICAgYm9vbCBl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpIGZpbmFsIHsg
cmV0dXJuIG1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEocmVtb3RlVVJJKTsgfQorICAgIFJl
ZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgc2V0dGluZ3MsIEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZm9udC0+Y3JlYXRlRm9udChkZXNjcmlwdGlvbiwgcmVtb3RlVVJJ
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIHNldHRpbmdzLCBjYXBhYmlsaXRpZXMp
OworICAgIH0KKworICAgIHZvaWQgc2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCogY2xp
ZW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byogb2xkQ2xpZW50ID0gbV9mb250TG9hZFJl
cXVlc3RDbGllbnQ7CisgICAgICAgIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50ID0gY2xpZW50Owor
CisgICAgICAgIGlmICghY2xpZW50ICYmIG9sZENsaWVudCkKKyAgICAgICAgICAgIG1fZm9udC0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgZWxzZSBpZiAoY2xpZW50ICYmICFvbGRDbGll
bnQpCisgICAgICAgICAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgfQorCisgICAg
Ym9vbCBpc0NhY2hlZEZvbnRMb2FkUmVxdWVzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KKworICAgIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250JiBmb250KSBmaW5hbAorICAgIHsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChmb250LCAmZm9udCA9PSBtX2ZvbnQuZ2V0KCkpOworICAg
ICAgICBpZiAobV9mb250TG9hZFJlcXVlc3RDbGllbnQpCisgICAgICAgICAgICBtX2ZvbnRMb2Fk
UmVxdWVzdENsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CisgICAgfQorCisgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gbV9mb250OworICAgIEZvbnRMb2FkUmVxdWVzdENsaWVu
dCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRk9OVExPQURSRVFVRVNUKFdl
YkNvcmU6OkNhY2hlZEZvbnRMb2FkUmVxdWVzdCwgaXNDYWNoZWRGb250TG9hZFJlcXVlc3QoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODdm
YzU4YzFiNDEzOGMxNzZiOWIzYTZjMDE5MDdjZWMwZjk3YWU1OS4uNzc1MmFmOTU1MmI1NzQzNDZk
NjI4ZDRmN2ZhOGY3NmMzNjBkNDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTExMiw4ICsxMTIsNiBAQCBXb3JrZXJHbG9iYWxTY29wZTo6
fldvcmtlckdsb2JhbFNjb3BlKCkKICAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlm
aWVycyhsb2NrZXIpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICB9CiAKLSAgICBp
ZiAobV9jc3NGb250U2VsZWN0b3IpCi0gICAgICAgIG1fY3NzRm9udFNlbGVjdG9yLT5zdG9wTG9h
ZGluZ0FuZENsZWFyRm9udHMoKTsKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBt
X2NyeXB0byA9IG51bGxwdHI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425499</attachid>
            <date>2021-04-08 04:52:33 -0700</date>
            <delta_ts>2021-04-09 05:00:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210408125231.patch</filename>
            <type>text/plain</type>
            <size>51985</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uZjQ4Y2QyYTI3YTU3MDVlMzNlM2Y2OTIxOTRhOWMw
OGFiYWM2NjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6IE5ldyBmaWxlcyBGb250TG9hZFJlcXVlc3QuaCBhbmQgQ2FjaGVkRm9udExv
YWRSZXF1ZXN0LmgKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOiBVcGRhdGUgdG8gbm90IHJlcXVpcmUg
RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6
CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOiBVcGRhdGUgdG8gdXNlIEZv
bnRMb2FkUmVxdWVzdCBpbnN0ZWFkIG9mIENhY2hlZEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTb3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSBjb25zdCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGFuZAorICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZiBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaDoKKworICAgICAgICAqIGNzcy9DU1NGb250
U2VsZWN0b3IuY3BwOiBSZW1vdmUgRG9jdW1lbnQtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9udHMpOgorICAgICAgICAqIGNzcy9DU1NGb250U2Vs
ZWN0b3IuaDoKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IEFkZCBEb2N1bWVudC1zcGVj
aWZpYyBmb250LWxvYWRpbmcgY29kZSBmcm9tCisgICAgICAgICAgQ1NTRm9udFNlbGVjdG9yIGFu
ZCBDU1NGb250RmFjZVNyY1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YmVnaW5Mb2FkaW5nRm9udFNvb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmxvYWRQ
ZW5kaW5nRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvbnRMb2FkaW5nVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBBZGQgZnVuY3Rpb25z
IHRvIGluaXRpYXRlIGZvbnQgbG9hZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6IFVwZGF0ZSBkdWUgdG8gb3RoZXIgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKKyAgICAgICAgKiBsb2FkZXIvRm9u
dExvYWRSZXF1ZXN0Lmg6IEFkZGVkLiBBbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGZvbnQgbG9hZGlu
ZworICAgICAgICAgIHRoYXQgYWJzdHJhY3RzIHNvbWUgb2YgdGhlIGJlaGF2aW91ciBvZiBDYWNo
ZWRSZXNvdXJjZSwgQ2FjaGVkRm9udCBhbmQKKyAgICAgICAgICBDYWNoZWRGb250Q2xpZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdENsaWVudDo6aXNDYWNoZWRGb250TG9hZFJl
cXVlc3QgY29uc3QpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVx
dWVzdC5oOiBBZGRlZC4gQW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICBGb250TG9hZFJl
cXVlc3QgZm9yIENhY2hlZEZvbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDogUmVtb3ZlIG5vdy1yZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwog
MjAyMS0wNC0wNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlk
aUNvbnRleHQgY2FjaGluZyBpcyBub3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IGFhMzkxODJkNDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjU1YWY3ZGM5NTI2MTFh
ZTVjNGFjMTYzZTcxZGFkOTg1ZmY2ODk1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzc2LDYg
Kzc3Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKICAgICBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCiAg
ICAgbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisgICAgbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgbG9hZGVyL0Zvcm1TdGF0ZS5oCiAgICAgbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKICAgICBs
b2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCkBAIC04MjgsNiArODI5LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmgKIAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWRGb250TG9hZFJlcXVlc3QuaAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZVBvbGljeS5oCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1MzAyZGIw
ZDBjNjgyMjMxZjU2MmZlOTA4YzllYjE1MTFiM2Y5NjEuLmZlYWQxMzdlZmViYzE5OWUxMTcwNzEx
YTJmYTc1YWEzYTgxMWViNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDIsNiArMjA0Miw3IEBACiAJCTY1NjU4MjAyMDlE
MTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFQjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1l
cy5oICovOyB9OwogCQk2NTZEMzczMjBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQz
NzFBMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzM2MEFEQkE1REUwMEE0
NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MUUwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQz
IC8qIEZvbnRMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzIyMEFE
QkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczQzBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVM
b2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzNFMEFEQkE1REUwMEE0NTU0
RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MjYwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI4OTMsNiArMjg5NCw3IEBACiAJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVz
b3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTIzRDI3OTAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTE4
MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5MkYw
ODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzRjE5OTUw
MDgyNDVFNTkwMDFFOUFCQyAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1ODc4NjQ5MDJERTNBOUEwMUVBNDEy
MiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVQ
b2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZVBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFC
QyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Yx
OTk4QzA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5NTVBNDEwM0Q3MjkzMjAwODYzNUNF
IC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTc2MSw2ICs5NzYzLDcgQEAKIAkJNjU2RDM3MUUwQURCQTVERTAw
QTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEb2N1bWVudExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udExvYWRSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI0MEFEQkE1REUwMEE0NTU0RCAvKiBG
cmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjYwQURCQTVERTAwQTQ1
NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjg1MSw2ICsxNjg1NCw3IEBACiAJCUY1NUIzREFDMTI1MUYxMkQwMDNF
RjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlZWtJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU4Nzg0RjAw
MkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1cnNvck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NTRD
MDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZVZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTg1
ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRm9udExv
YWRSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVQ
b2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCUY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1NMS2V5
R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1cnNvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAg
LTI1OTM3LDYgKzI1OTQxLDcgQEAKIAkJCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyogQ2Fj
aGVkRm9udC5jcHAgKi8sCiAJCQkJQkM2NEI0Q0EwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZv
bnQuaCAqLywKIAkJCQkxQUVGNEU2NjE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVu
dC5oICovLAorCQkJCTg1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJl
cXVlc3QuaCAqLywKIAkJCQlCQ0IxNkMwMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2Uu
Y3BwICovLAogCQkJCUJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICov
LAogCQkJCTMxOUZCRDVEMTVEMkY0NDQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oICov
LApAQCAtMjc1ODUsNiArMjc1OTAsNyBAQAogCQkJCUNFQkI4QzMyMjA3ODZEQ0IwMDAzOTU0NyAv
KiBGZXRjaElkaW9tcy5jcHAgKi8sCiAJCQkJQ0VCQjhDMzEyMDc4NkRDQjAwMDM5NTQ3IC8qIEZl
dGNoSWRpb21zLmggKi8sCiAJCQkJNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNoT3B0
aW9ucy5oICovLAorCQkJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVl
c3QuaCAqLywKIAkJCQk2NTZEMzcyMzBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmNwcCAq
LywKIAkJCQk2NTZEMzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8sCiAJCQkJ
NDE4ODVCOTIxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLywKQEAgLTMx
NjE0LDYgKzMxNjIwLDcgQEAKIAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYy
QjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMw
MEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0YxOTk1
MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8q
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDI2LDYgKzMyNDMz
LDcgQEAKIAkJCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDJFRTNBNzE3NTc2RTU1
MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0QTUzMkYyNTYwNTdDRDAwMjhDNTkyIC8qIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0
cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUzMjBENkIxMjJBMjRFOTAwMkQxNDQwIC8qIEZv
bnRQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKaW5kZXggODE3MWFjY2VhN2VmNDdjYjE1Mzk5NWU5NGFhOGEwMTE5ZDdhZTM2MC4uYzg5YmE0
MzVmMzBmMmIxMzY2NjM4NTNlMTAwYjFhOTUyNjdjMmY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCkBAIC03NiwxMCArNzYsOSBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBTYwogICAg
ICAgICBpZiAoIWl0ZW0uaXNMb2NhbCgpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvKiBzZXR0
aW5ncyA9IGNvbnRleHQgPyAmY29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKSA6IG51bGxwdHI7CiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQpOwotICAgICAg
ICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYm
IGlzPERvY3VtZW50Pihjb250ZXh0KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoQ2Fj
aGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udCgmZG9jdW1lbnQsIGZvdW5kU1ZH
Rm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRG
YWNlLCBpdGVtLnJlc291cmNlKCksIGRvY3VtZW50LmZvbnRTZWxlY3RvcigpLCAqY2FjaGVkRm9u
dCk7CisgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVk
Rm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBmb250UmVxdWVzdCA9IGl0ZW0u
Zm9udExvYWRSZXF1ZXN0KGNvbnRleHQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVu
dEluVXNlckFnZW50U2hhZG93VHJlZSkpCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1h
a2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksICpj
b250ZXh0LT5jc3NGb250U2VsZWN0b3IoKSwgV1RGTW92ZShmb250UmVxdWVzdCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVs
ZW1lbnQgPyBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNv
dXJjZSgpLCAqZm9udEZhY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKaW5kZXggYmMzMjNjMmYyZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZC4u
NjQ0NTdkZmMzYzAzYzcyZTk1ZjcxOGY4NmU5ZjUyMWU5OWIwODE5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDU1NGb250RmFjZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgotI2luY2x1ZGUg
IkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250TG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJDYWNoZWRTVkdGb250LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
b250LmgiCkBAIC03MiwxOSArNzIsMTkgQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW0KIHsKIH0K
IAotQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYgZm9udFNl
bGVjdG9yLCBDYWNoZWRGb250JiBmb250KQorQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNl
U291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkks
IENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiYmIHJlcXVlc3QpCiAgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1pbHlOYW1lT3JV
UkkpCiAgICAgLCBtX2ZhY2Uob3duZXIpCiAgICAgLCBtX2ZvbnRTZWxlY3RvcihtYWtlV2Vha1B0
cihmb250U2VsZWN0b3IpKQotICAgICwgbV9mb250KCZmb250KQorICAgICwgbV9mb250UmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpKQogewogICAgIC8vIFRoaXMgbWF5IHN5bmNocm9ub3VzbHkgY2Fs
bCBmb250TG9hZGVkKCkuCi0gICAgbV9mb250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9u
dFJlcXVlc3QtPnNldENsaWVudCh0aGlzKTsKIAotICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6
OlBlbmRpbmcgJiYgbV9mb250LT5pc0xvYWRlZCgpKSB7CisgICAgaWYgKHN0YXR1cygpID09IFN0
YXR1czo6UGVuZGluZyAmJiAhbV9mb250UmVxdWVzdC0+aXNMb2FkaW5nKCkpIHsKICAgICAgICAg
c2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlRm9u
dExvYWRDb21wbGV0aW9ucygpKSB7Ci0gICAgICAgICAgICBpZiAobV9mb250LT5lcnJvck9jY3Vy
cmVkKCkpCisgICAgICAgICAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OlN1Y2Nlc3MpOwpAQCAtMTA5
LDggKzEwOSw4IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiAKIENTU0ZvbnRGYWNlU291cmNl
Ojp+Q1NTRm9udEZhY2VTb3VyY2UoKQogewotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1fZm9u
dC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkKKyAgICAgICAg
bV9mb250UmVxdWVzdC0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCiBib29sIENTU0ZvbnRGYWNl
U291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3QKQEAgLTEyMCwy
OSArMTIwLDI5IEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoKSBjb25zdAogCiB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCkKIHsKLSAgICBpZiAoc3RhdHVzKCkgPT0g
U3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRh
KCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKKyAgICBpZiAoc3RhdHVzKCkg
PT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udFJlcXVlc3QgJiYgbV9mb250UmVxdWVzdC0+dXJs
KCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQog
ICAgICAgICBsb2FkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQo
Q2FjaGVkRm9udCYgbG9hZGVkRm9udCkKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2Fk
ZWQoRm9udExvYWRSZXF1ZXN0JiBmb250UmVxdWVzdCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGxv
YWRlZEZvbnQsICZsb2FkZWRGb250ID09IG1fZm9udC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChmb250UmVxdWVzdCwgJmZvbnRSZXF1ZXN0ID09IG1fZm9udFJlcXVlc3QuZ2V0KCkpOwogCiAg
ICAgaWYgKHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVmPENTU0ZvbnRGYWNlPiBwcm90ZWN0ZWRGYWNlKG1fZmFjZSk7CiAKLSAgICAv
LyBJZiB0aGUgZm9udCBpcyBpbiB0aGUgY2FjaGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5
IGNhbGxlZCBmcm9tIENhY2hlZEZvbnQ6OmFkZENsaWVudCgpLgorICAgIC8vIElmIHRoZSBmb250
IGlzIGluIHRoZSBjYWNoZSwgdGhpcyB3aWxsIGJlIHN5bmNocm9ub3VzbHkgY2FsbGVkIGZyb20g
Rm9udExvYWRSZXF1ZXN0OjphZGRDbGllbnQoKS4KICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVz
OjpQZW5kaW5nKQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICBlbHNl
IGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUpIHsKICAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBtYXkgYmUgY2FsbGVkIHR3aWNlIGlmIGxvYWRpbmcgd2FzIGNhbmNlbGxlZC4KLSAgICAg
ICAgQVNTRVJUKG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZm9u
dFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkgfHwgIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9u
dERhdGEobV9mYW1pbHlOYW1lT3JVUkkpKQorICAgIGlmIChtX2ZvbnRSZXF1ZXN0LT5lcnJvck9j
Y3VycmVkKCkgfHwgIW1fZm9udFJlcXVlc3QtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5
TmFtZU9yVVJJKSkKICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6RmFpbHVyZSk7CiAgICAgZWxz
ZQogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTE1NCw5ICsxNTQsMTAg
QEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAg
ICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAKLSAgICBpZiAobV9mb250KSB7CisgICAg
aWYgKG1fZm9udFJlcXVlc3QpIHsKICAgICAgICAgQVNTRVJUKG1fZm9udFNlbGVjdG9yKTsKLSAg
ICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnQpOworICAg
ICAgICBpZiAoYXV0byogY29udGV4dCA9IG1fZm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCisgICAgICAgICAgICBjb250ZXh0LT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9m
b250UmVxdWVzdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CiAgICAgICAgIGlmIChtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCkgewpAQCAtMTk4LDcgKzE5OSw3
IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKICAgICBib29sIHVzZXNJbkRvY3VtZW50U1ZH
Rm9udCA9IG1faGFzU1ZHRm9udEZhY2VFbGVtZW50OwogCi0gICAgaWYgKCFtX2ZvbnQgJiYgIXVz
ZXNJbkRvY3VtZW50U1ZHRm9udCkgeworICAgIGlmICghbV9mb250UmVxdWVzdCAmJiAhdXNlc0lu
RG9jdW1lbnRTVkdGb250KSB7CiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAg
ICAgICAgICAgaWYgKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTAsMTIgKzIxMSwxMiBAQCBSZWZQdHI8Rm9u
dD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGJvbwogICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250
Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksICZmb250RmFjZUZl
YXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcywgdHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKG1f
Zm9udCkgewotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnRE
YXRhKG1fZmFtaWx5TmFtZU9yVVJJKTsKKyAgICBpZiAobV9mb250UmVxdWVzdCkgeworICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBtX2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2Zh
bWlseU5hbWVPclVSSSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7
CiAKICAgICAgICAgQVNTRVJUKHN0YXR1cygpID09IFN0YXR1czo6U3VjY2Vzcyk7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9mb250LT5jcmVhdGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1p
bHlOYW1lT3JVUkksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZm9u
dFJlcXVlc3QtPmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFj
ZUNhcGFiaWxpdGllcyk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTIzMiw3ICsyMzMsMTEgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRG
YWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBi
b28KIAogYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faGFzU1ZHRm9udEZhY2VFbGVtZW50IHx8IGlzPENhY2hlZFNWR0Zv
bnQ+KG1fZm9udC5nZXQoKSk7CisgICAgaWYgKCFtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCAh
aXM8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PihtX2ZvbnRSZXF1ZXN0LmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byogY2FjaGVkRm9udFJlcXVlc3QgPSBkb3duY2FzdDxD
YWNoZWRGb250TG9hZFJlcXVlc3Q+KG1fZm9udFJlcXVlc3QuZ2V0KCkpOworICAgIHJldHVybiBp
czxDYWNoZWRTVkdGb250PihjYWNoZWRGb250UmVxdWVzdC0+Y2FjaGVkRm9udCgpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA1OTJjZTgzMWM1YTky
ODYzZTA0ZWJkYjc2ZWYzYWMxOGY1MWMxM2JkLi42MTA3ODkzZWVlNDkwMjZmYjIyYjUxMmE2NmI5
Mzk0YjIxZWFiZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MjUsOCArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGll
bnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkZvbnRM
b2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgpAQCAtNDcsMTEgKzQ2LDExIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKLWNsYXNzIENTU0ZvbnRGYWNlU291
cmNlIGZpbmFsIDogcHVibGljIENhY2hlZEZvbnRDbGllbnQgeworY2xhc3MgQ1NTRm9udEZhY2VT
b3VyY2UgZmluYWwgOiBwdWJsaWMgRm9udExvYWRSZXF1ZXN0Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKLSAgICBDU1NGb250
RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9y
VVJJLCBDU1NGb250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NT
Rm9udFNlbGVjdG9yJiwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4mJik7CiAgICAg
Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWls
eU5hbWVPclVSSSwgU1ZHRm9udEZhY2VFbGVtZW50Jik7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiYmKTsKICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgp
OwpAQCAtNzYsMjIgKzc1LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0g
bnVsbHB0cik7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAg
Q2FjaGVkRm9udCogY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQot
ICAgIGJvb2wgcmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250
OyB9CisgICAgRm9udExvYWRSZXF1ZXN0KiBmb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CisgICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRSZXF1ZXN0LmdldCgpOyB9CiAKICAgICBib29sIGlz
U1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIHNob3VsZEln
bm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSBjb25zdDsKIAotICAgIHZvaWQgZm9udExvYWRlZChD
YWNoZWRGb250Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb250TG9hZGVkKEZvbnRMb2FkUmVxdWVz
dCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21T
dHJpbmcgbV9mYW1pbHlOYW1lT3JVUkk7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250
IG5hbWUgZm9yIGxvY2FsLgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcg
Zm9udCBmYWNlLgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3Rvcjsg
Ly8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250
cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCisgICAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRz
LCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
clZpZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuY3BwCmluZGV4IDUzOWZkNDg4OTY5ZWZhNmZhZDVmZWE0ZDNjOGExN2I3MmY3MTll
ZTUuLjIzOWVlNDAwNDFkZDE3ZDhhNzA4YjhiMjZmODEzMGVkZTc1MzdjMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTI5LDEwICsyOSwxMSBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03NiwxOSArNzcsMTYgQEAgYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVl
Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IEMK
ICAgICByZXR1cm4gaGFuZGxlcigqbV9jYWNoZWRGb250KTsKIH0KIAotQ2FjaGVkRm9udCogQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNT
VkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKK3N0ZDo6
dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmZvbnRMb2Fk
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBib29sIGlzU1ZHLCBib29s
IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7CiAgICAgaWYgKG1f
Y2FjaGVkRm9udCkKLSAgICAgICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PigqbV9jYWNoZWRGb250KTsK
IAotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKLSAgICBvcHRpb25zLmNvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRT
aGFkb3dUcmVlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNo
ZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKLSAg
ICBvcHRpb25zLmxvYWRlZEZyb21PcGFxdWVTb3VyY2UgPSBtX2xvYWRlZEZyb21PcGFxdWVTb3Vy
Y2U7CisgICAgYXV0byByZXF1ZXN0ID0gY29udGV4dC0+Zm9udExvYWRSZXF1ZXN0KG1fcmVzb3Vy
Y2UsIGlzU1ZHLCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBtX2xv
YWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIGlmIChpczxDYWNoZWRGb250TG9hZFJlcXVlc3Q+
KHJlcXVlc3QuZ2V0KCkpKQorICAgICAgICBtX2NhY2hlZEZvbnQgPSAmZG93bmNhc3Q8Q2FjaGVk
Rm9udExvYWRSZXF1ZXN0PihyZXF1ZXN0LmdldCgpKS0+Y2FjaGVkRm9udCgpOwogCi0gICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21w
bGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwotICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9y
KGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1fY2FjaGVkRm9u
dCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUo
cmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKTsKLSAgICByZXR1cm4gbV9jYWNoZWRG
b250LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBib29sIENTU0ZvbnRGYWNlU3Jj
VmFsdWU6OmVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJiBvdGhlcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGM1ZGM1OWZkOTZhMWJl
MzI4MzYzNDRmZjE5ZDk1ODc3MjkyNmQ3YjQuLmNiZTE0MTFlNDZjNGVkNzZlNzExYmMzNDFlNjU5
OTAzZjUwZmFiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApA
QCAtMzQsOCArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRGb250
OwotY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBTVkdGb250
RmFjZUVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBDU1NG
b250RmFjZVNyY1ZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKQEAgLTY2
LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25z
dCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBj
b25zdDsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqLCBib29sIGlzU1ZH
LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0ZvbnRGYWNlU3Jj
VmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRl
eCBjMTE1NzhjZmM1MDQxMmNiYTZjNTUzMGY5NGJlOGFhMzYzNDQ3NWNjLi5hY2QyYTFjYzI0ZTM0
YzA1NGQwMzc4MjM0ODc3MzdjZmVjN2ZlYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcApAQCAtNjgsNyArNjgsNiBAQCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxl
Y3RvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9mb250Q2FjaGUo
bWFrZVJlZihjb250ZXh0LmZvbnRDYWNoZSgpKSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NT
Rm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIo
W3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0pCi0gICAgLCBtX2ZvbnRMb2FkaW5nVGltZXIoKnRo
aXMsICZDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fdW5p
cXVlSWQoKytmb250U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigwKQogewpAQCAtOTMsNyAr
OTIsNyBAQCBDU1NGb250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IoKQogewogICAgIExPRyhG
b250cywgIkNTU0ZvbnRTZWxlY3RvciAlcCBkdG9yIiwgdGhpcyk7CiAKLSAgICBzdG9wTG9hZGlu
Z0FuZENsZWFyRm9udHMoKTsKKyAgICBjbGVhckZvbnRzKCk7CiAgICAgbV9mb250Q2FjaGUtPnJl
bW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKQEAgLTMzNiw5NCArMzM1LDEzIEBAIEZvbnRSYW5nZXMg
Q1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyCiAgICAgcmV0dXJuIEZvbnRSYW5nZXMgeyBXVEZNb3ZlKGZvbnQpIH07CiB9
CiAKLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQordm9p
ZCBDU1NGb250U2VsZWN0b3I6OmNsZWFyRm9udHMoKQogewotICAgIGlmIChtX2lzU3RvcHBlZCkg
ewotICAgICAgICBBU1NFUlQoIW1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAg
ICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9hZGluZy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRpbmdU
aW1lci5zdG9wKCk7Ci0KLSAgICBpZiAoaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpIHsK
LSAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7
Ci0gICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZm9udEhh
bmRsZSA6IG1fZm9udHNUb0JlZ2luTG9hZGluZykgewotICAgICAgICAgICAgLy8gQmFsYW5jZXMg
aW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KLSAgICAg
ICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhh
bmRsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7
Ci0gICAgfQotCiAgICAgbV9jc3NGb250RmFjZVNldC0+Y2xlYXIoKTsKICAgICBtX2NsaWVudHMu
Y2xlYXIoKTsKIH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29u
KENhY2hlZEZvbnQmIGZvbnQpCi17Ci0gICAgaWYgKG1faXNTdG9wcGVkIHx8ICFpczxEb2N1bWVu
dD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0KLSAgICBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuYXBwZW5kKCZmb250KTsKLSAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291
bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNw
YXRjaGVkCi0gICAgLy8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVm
b3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFuY2VkIGJ5Ci0gICAgLy8gZGVjcmVtZW50UmVxdWVz
dENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpLgotICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuaW5jcmVt
ZW50UmVxdWVzdENvdW50KGZvbnQpOwotCi0gICAgaWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5k
ZWQgJiYgIW1fZm9udExvYWRpbmdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2ZvbnRMb2Fk
aW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpz
dXNwZW5kRm9udExvYWRpbmdUaW1lcigpCi17Ci0gICAgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5z
aW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6Omxv
YWRQZW5kaW5nRm9udHMoKQotewotICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgfHwg
IWlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIFZl
Y3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGlu
ZzsKLSAgICBmb250c1RvQmVnaW5Mb2FkaW5nLnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsK
LQotICAgIC8vIENTU0ZvbnRTZWxlY3RvciBjb3VsZCBnZXQgZGVsZXRlZCB2aWEgYmVnaW5Mb2Fk
SWZOZWVkZWQoKSBvciBsb2FkRG9uZSgpIHVubGVzcyBwcm90ZWN0ZWQuCi0gICAgUmVmPENTU0Zv
bnRTZWxlY3Rvcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZUxv
YWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpOwotICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsK
LSAgICAgICAgZm9udEhhbmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpOwotICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdp
bkxvYWRpbmdGb250U29vbigpLgotICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOwotICAgIH0KLX0KLQotdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFpczxEb2N1bWVudD4o
bV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0gICAgUmVmPENTU0ZvbnRTZWxlY3Rv
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBsb2FkUGVuZGluZ0ZvbnRzKCk7Ci0KLSAg
ICAvLyBGSVhNRTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGluc3RlYWQuCi0gICAgLy8gQ2FsbCBG
cmFtZUxvYWRlcjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUxvYWRE
b25lIHRvIG1hdGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZS4K
LSAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWREb25lKExvYWRDb21wbGV0
aW9uVHlwZTo6RmluaXNoKTsKLSAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3Vu
dCByZWFjaGVzIHplcm8sIHRoZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgotICAg
IC8vIE5ldyBmb250IGxvYWRzIG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBk
b2N1bWVudCBsb2FkIGlzIGNvbXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCi0g
ICAgLy8gZGlkRmluaXNoTG9hZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVn
YXRlIGlzIGFsd2F5cyBkaXNwYXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCi0gICAgaWYg
KGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNo
ZWNrTG9hZENvbXBsZXRlKCk7Ci19Ci0KIHNpemVfdCBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNr
Rm9udENvdW50KCkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCkBAIC00NDksMjkgKzM2Nyw0IEBA
IFJlZlB0cjxGb250PiBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKLXZvaWQgQ1NT
Rm9udFNlbGVjdG9yOjpzdG9wKCkKLXsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOwot
fQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQot
ewotICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9mb250TG9hZGluZ1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBDU1NGb250U2VsZWN0b3I6OnJlc3VtZSgpCi17Ci0gICAg
aWYgKCFtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mb250TG9hZGlu
Z1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwotCi0gICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVk
ID0gZmFsc2U7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBl
NGFmZjI2YWFhZmYwOGY4Njg2N2UwNDU1OWZhNDFiNGJiN2U4ZjM3Li40MzQ3ZTg1YTE1NjIzNGE5
M2NlYmVkMTQ3YzIzMjZjMjFiNTFhZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmFsbGJhY2tGb250Q291
bnQoKSBmaW5hbDsKICAgICBSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKIAotICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVh
ckZvbnRzKCk7CisgICAgdm9pZCBjbGVhckZvbnRzKCk7CiAgICAgdm9pZCBlbXB0eUNhY2hlcygp
OwogICAgIHZvaWQgYnVpbGRTdGFydGVkKCk7CiAgICAgdm9pZCBidWlsZENvbXBsZXRlZCgpOwpA
QCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAKLSAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKLSAgICB2b2lk
IHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7Ci0KICAgICBGb250RmFjZVNldCogZm9udEZhY2VT
ZXRJZkV4aXN0cygpOwogICAgIEZvbnRGYWNlU2V0JiBmb250RmFjZVNldCgpOwogCkBAIC0xMTAs
MTIgKzEwNyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb250U3R5bGVVcGRhdGVOZWVkZWQoQ1NT
Rm9udEZhY2UmKSBmaW5hbDsKIAogICAgIHZvaWQgZm9udE1vZGlmaWVkKCk7Ci0gICAgdm9pZCBm
b250TG9hZGluZ1RpbWVyRmlyZWQoKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBm
aW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQ1NTRm9udFNlbGVjdG9yIl9zOyB9
CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0ZvbnRGYWNlUnVsZSB7CkBAIC0xMzAsMTUgKzEyMywxMSBA
QCBwcml2YXRlOgogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NGb250RmFjZVNldDsKICAg
ICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsKIAotICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwog
ICAgIEhhc2hTZXQ8UmVmUHRyPENTU0ZvbnRGYWNlPj4gbV9jc3NDb25uZWN0aW9uc1Bvc3NpYmx5
VG9SZW1vdmU7CiAgICAgSGFzaFNldDxSZWZQdHI8U3R5bGVSdWxlRm9udEZhY2U+PiBtX2Nzc0Nv
bm5lY3Rpb25zRW5jb3VudGVyZWREdXJpbmdCdWlsZDsKIAogICAgIENTU0ZvbnRGYWNlU2V0OjpG
b250TW9kaWZpZWRPYnNlcnZlciBtX2ZvbnRNb2RpZmllZE9ic2VydmVyOwogCi0gICAgVGltZXIg
bV9mb250TG9hZGluZ1RpbWVyOwotICAgIGJvb2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKLQogICAgIHVuc2lnbmVkIG1fdW5pcXVlSWQ7CiAgICAgdW5zaWduZWQgbV92ZXJz
aW9uOwogICAgIHVuc2lnbmVkIG1fY29tcHV0aW5nUm9vdFN0eWxlRm9udENvdW50IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWI0ZjI4YmQzMzA3ZTQ3NGRiYTdhM2UyNmFhN2Nh
MDA1NjNmNTYxMi4uODQwNjgxOTg4NTQ0ZjA3Yjg4NGQ5YTZhODdiNDgzMmVjMDdmZDA5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNyw4ICszNywxMSBAQAogI2luY2x1ZGUgIkNTU1N0
eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hlZEZvbnRMb2FkUmVxdWVzdC5o
IgogI2luY2x1ZGUgIkNhY2hlZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCkBAIC03NCw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRm9jdXNFdmVudC5oIgogI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCisjaW5jbHVkZSAi
Rm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC02MzksNiArNjQzLDcgQEAg
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCwgRG9jdW0KICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9u
VGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJl
ZCkKICAgICAsIG1fc2hhcmVkT2JqZWN0UG9vbENsZWFyVGltZXIoKnRoaXMsICZEb2N1bWVudDo6
Y2xlYXJTaGFyZWRPYmplY3RQb29sKQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVj
dG9yOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9j
dW1lbnQ6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNv
bnRyb2xzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGlt
ZXJGaXJlZCkKICAgICAsIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcigqdGhpcywgJkRvY3VtZW50
OjppbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHBhZ2Uo
KSA/ICZwYWdlKCktPnNvY2tldFByb3ZpZGVyKCkgOiBudWxscHRyKQpAQCAtNzU4LDcgKzc2Myw3
IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGV4dGVuc2lvblN0eWxlU2hlZXRzKCkuZGV0
YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICBzdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOyAv
LyBXZSBuZWVkIHRvIGRlc3Ryb3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuCi0gICAgbV9mb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpOworICAgIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgLy8g
SXQncyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2lu
ZyB0aGUgc2FtZSBDYWNoZWRSZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8g
bG9hZCB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGgg
dGhlIHNhbWUgRG9jdW1lbnRMb2FkZXIpLgpAQCAtODA3LDcgKzgxMiw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNs
ZWFyKCk7CiAgICAgICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0geyB9OwogCi0g
ICAgICAgIG1fZm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICAg
ICAgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CiAKICAgICAgICAgZGV0YWNoUGFyc2VyKCk7
CiAKQEAgLTIwNjIsNyArMjA2Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNv
bHZlU3R5bGVUeXBlIHR5cGUpCiAKICAgICAgICAgbV9pblN0eWxlUmVjYWxjID0gZmFsc2U7CiAK
LSAgICAgICAgZm9udFNlbGVjdG9yKCkubG9hZFBlbmRpbmdGb250cygpOworICAgICAgICBsb2Fk
UGVuZGluZ0ZvbnRzKCk7CiAKICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAg
ICB1cGRhdGVSZW5kZXJUcmVlKFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcx
NywxMSBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVw
ZGF0ZXMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZ1Rp
bWVyKCkKK3sKKyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOworfQorCiBib29sIERvY3Vt
ZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAog
ewogICAgIC8vIEJ5cGFzcyB0aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5k
IGl0IG5vdCB0aGUgbm9ybWFsIHdvcmxkLgpAQCAtMjk5Nyw2ICszMDA3LDczIEBAIHZvaWQgRG9j
dW1lbnQ6OmltcGxpY2l0T3BlbigpCiAgICAgc2V0UmVhZHlTdGF0ZShMb2FkaW5nKTsKIH0KIAor
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gRG9jdW1lbnQ6OmZvbnRMb2FkUmVxdWVz
dChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpCit7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgIG9wdGlvbnMu
Y29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lw
UG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNo
ZWNrOworICAgIG9wdGlvbnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9IGxvYWRlZEZyb21PcGFx
dWVTb3VyY2U7CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QoY29tcGxldGVVUkwodXJsKSksIG9wdGlvbnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlh
dG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOworICAgIENhY2hlZEZv
bnQqIGNhY2hlZEZvbnQgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Rm9udChXVEZN
b3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVfb3IobnVsbHB0cikuZ2V0KCk7CisgICAgcmV0dXJu
IGNhY2hlZEZvbnQgPyBtYWtlVW5pcXVlPENhY2hlZEZvbnRMb2FkUmVxdWVzdD4oKmNhY2hlZEZv
bnQpIDogbnVsbHB0cjsKK30KKwordm9pZCBEb2N1bWVudDo6YmVnaW5Mb2FkaW5nRm9udFNvb24o
Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIEFTU0VSVChpczxDYWNoZWRGb250TG9h
ZFJlcXVlc3Q+KHJlcXVlc3QpKTsKKyAgICBhdXRvJiBmb250ID0gZG93bmNhc3Q8Q2FjaGVkRm9u
dExvYWRSZXF1ZXN0PihyZXF1ZXN0KS5jYWNoZWRGb250KCk7CisKKyAgICBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuYXBwZW5kKCZmb250KTsKKyAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291
bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNw
YXRjaGVkCisgICAgLy8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVm
b3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFuY2VkIGJ5CisgICAgLy8gZGVjcmVtZW50UmVxdWVz
dENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpLgorICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmluY3JlbWVudFJlcXVl
c3RDb3VudChmb250KTsKKworICAgIGlmICghbV9pc1N1c3BlbmRlZCAmJiAhbV9mb250TG9hZGlu
Z1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKK30KKwordm9pZCBEb2N1bWVudDo6bG9hZFBlbmRpbmdGb250cygpCit7CisgICAg
aWYgKG1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGluZzsKKyAgICBmb250
c1RvQmVnaW5Mb2FkaW5nLnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsKKworICAgIGZvciAo
YXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKKyAgICAgICAgZm9udEhh
bmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQobV9jYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgICAg
IC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRT
b29uKCkuCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50Ojpmb250TG9hZGlu
Z1RpbWVyRmlyZWQoKQoreworICAgIGxvYWRQZW5kaW5nRm9udHMoKTsKKworICAgIC8vIEZJWE1F
OiBVc2UgU3VicmVzb3VyY2VMb2FkZXIgaW5zdGVhZC4KKyAgICAvLyBDYWxsIEZyYW1lTG9hZGVy
Ojpsb2FkRG9uZSBiZWZvcmUgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlTG9hZERvbmUgdG8gbWF0
Y2ggdGhlIG9yZGVyIGluIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lLgorICAgIG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmxvYWREb25lKExvYWRDb21wbGV0aW9uVHlwZTo6RmluaXNoKTsK
KyAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3VudCByZWFjaGVzIHplcm8sIHRo
ZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgorICAgIC8vIE5ldyBmb250IGxvYWRz
IG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBkb2N1bWVudCBsb2FkIGlzIGNv
bXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCisgICAgLy8gZGlkRmluaXNoTG9h
ZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVnYXRlIGlzIGFsd2F5cyBkaXNw
YXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCisgICAgaWYgKGZyYW1lKCkpCisgICAgICAg
IGZyYW1lKCktPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnQ6OnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpCit7CisgICAgbV9mb250TG9hZGluZ1RpbWVy
LnN0b3AoKTsKKyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9CZWdpbkxvYWRp
bmcpIHsKKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVn
aW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVj
cmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKKyAgICB9CisgICAgbV9mb250c1RvQmVn
aW5Mb2FkaW5nLmNsZWFyKCk7CisgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRm9udHMoKTsKK30K
KwogSFRNTEJvZHlFbGVtZW50KiBEb2N1bWVudDo6Ym9keSgpIGNvbnN0CiB7CiAgICAgYXV0byog
ZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwpAQCAtNTUxNiwxMyArNTU5MywxNyBAQCB2b2lk
IERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIG1fdmlz
dWFsVXBkYXRlc0FsbG93ZWQgPSBmYWxzZTsKICAgICBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lv
blRpbWVyLnN0b3AoKTsKIAorICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7CisKICAgICBt
X2lzU3VzcGVuZGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVzdW1lKFJlYXNvbkZv
clN1c3BlbnNpb24gcmVhc29uKQogewotICAgIGlmICghbV9pc1N1c3BlbmRlZCkKKyAgICBpZiAo
IW1faXNTdXNwZW5kZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9hZGluZy5p
c0VtcHR5KCkgfHwgbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpOwogICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogY29weVRvVmVjdG9yKG1fZG9j
dW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cykpCiAgICAgICAgIGVsZW1lbnQtPnJlc3Vt
ZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKTsKQEAgLTU1NDQsNiArNTYyNSw5IEBAIHZvaWQgRG9j
dW1lbnQ6OnJlc3VtZShSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIAogICAgIG1faXNTdXNw
ZW5kZWQgPSBmYWxzZTsKIAorICAgIGlmICghbV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHko
KSkKKyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkgJiYgcmVhc29uID09IFJlYXNv
bkZvclN1c3BlbnNpb246OkJhY2tGb3J3YXJkQ2FjaGUpCiAgICAgICAgIHNldFNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKCZTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxZjlhODNiZmQyNjRh
NGUxNDBlM2MxZjEzOGJmYWM0ZjI1Nzk0MjhiLi5mNjM4YWFiZTJkNDFhY2NiMmNhZmMzOTc4YWQw
NzY1ZTRmMDc0YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjgsNiArMjgsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKQEAgLTEwMiw2
ICsxMDMsNyBAQCBjbGFzcyBDU1NGb250U2VsZWN0b3I7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0
aW9uOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Citj
bGFzcyBDYWNoZWRGb250OwogY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CkBAIC0xMzcsNiArMTM5LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uU3R5bGVTaGVldHM7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGbG9hdFJl
Y3Q7CiBjbGFzcyBGb250RmFjZVNldDsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKIGNsYXNzIEZv
cm1Db250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKQEAgLTYz
Myw2ICs2MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kRGV2aWNlTW90aW9uQW5kT3Jp
ZW50YXRpb25VcGRhdGVzKCk7CiAgICAgdm9pZCByZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRh
dGlvblVwZGF0ZXMoKTsKIAorICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKwog
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXcu
Z2V0KCk7IH0KIAogICAgIGJvb2wgcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQ7IH0KQEAgLTE2NDcsMTAgKzE2NTIsMTYg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBDU1NGb250
U2VsZWN0b3IqIGNzc0ZvbnRTZWxlY3RvcigpIGZpbmFsIHsgcmV0dXJuIG1fZm9udFNlbGVjdG9y
LnB0cigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRS
ZXF1ZXN0KFN0cmluZyYsIGJvb2wsIGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFs
OworICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7
CiAKICAgICAvLyBGb250U2VsZWN0b3JDbGllbnQKICAgICB2b2lkIGZvbnRzTmVlZFVwZGF0ZShG
b250U2VsZWN0b3ImKSBmaW5hbDsKIAorICAgIHZvaWQgbG9hZFBlbmRpbmdGb250cygpOworICAg
IHZvaWQgZm9udExvYWRpbmdUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdG9wTG9hZGluZ0FuZENs
ZWFyRm9udHMoKTsKKwogICAgIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
ZmluYWw7CkBAIC0xOTgyLDYgKzE5OTMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBtX2RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTDsKIAogICAgIFJl
ZjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOworICAgIFRpbWVyIG1fZm9udExvYWRp
bmdUaW1lcjsKKyAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1f
Zm9udHNUb0JlZ2luTG9hZGluZzsKIAogICAgIFdlYWtIYXNoU2V0PE1lZGlhUHJvZHVjZXI+IG1f
YXVkaW9Qcm9kdWNlcnM7CiAgICAgV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvbj4gbV9hY3RpdmVT
cGVlY2hSZWNvZ25pdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAppbmRleCBjNzczODMxYjg4YzJiMDJiMDViYzJmZmI2ZjA1M2U4ZGFmMWE1Zjdh
Li5lNzUwYTYyN2FiNjBiYzkzZmRiNWY3NTg1OTgzZTZkYTU0OWViYjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVk
ZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtMjMyLDYgKzIzMywxMSBAQCBGb250Q2Fj
aGUmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSgpCiAgICAgcmV0dXJuIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdChTdHJpbmcmLCBib29sLCBi
b29sLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIHJldHVybiBudWxscHRyOworfQor
CiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvckVhY2hBY3RpdmVET01PYmplY3QoY29u
c3QgRnVuY3Rpb248U2hvdWxkQ29udGludWUoQWN0aXZlRE9NT2JqZWN0Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICAvLyBJdCBpcyBub3QgYWxsb3dlZCB0byBydW4gYXJiaXRyYXJ5IHNjcmlwdCBv
ciBjb25zdHJ1Y3QgbmV3IEFjdGl2ZURPTU9iamVjdHMgd2hpbGUgd2UgYXJlIGl0ZXJhdGluZyBv
dmVyIEFjdGl2ZURPTU9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCBlOGJmMGVmY2I2YmJhMTI2MGYwYTkwYjc5NzU0MzgxNmIwZGYxYmJi
Li5jOTk4YjEyZjI5Y2M2OTY4YjljOTY2NWIwNjVmZDEyZDc4ZDU3YjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1
ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtNjYsNiArNjcsNyBAQCBjbGFzcyBFdmVudFF1ZXVlOwog
Y2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGb250
Q2FjaGU7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNz
IFB1YmxpY1VSTE1hbmFnZXI7CiBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwpAQCAtMTY1
LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUo
KTsKICAgICB2aXJ0dWFsIENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVz
dD4gZm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlh
dGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2Up
OworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3Qm
KSB7IH0KIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzRlNDZlODcyYzZhNmQw
MjMxN2ViMTgyMTU1MjU2M2ZmZWE1NWNmYS4uNGQ4NTU2NGMwNDdmZTk0NmQxMmRhMDNmN2Q3MzQ5
OTQyMjI1M2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0zMzgsNyArMzM4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAg
IGNhbmNlbEFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycyk7CiAKICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+Zm9udFNl
bGVjdG9yKCkuc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKyAgICAgICAgZG9jdW1lbnQtPnN1
c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAKICAgICAvLyBBcHBjYWNoZSB1c2VzIFJlc291cmNl
SGFuZGxlIGRpcmVjdGx5LCBEb2N1bWVudExvYWRlciBkb2Vzbid0IGNvdW50IHRoZXNlIGxvYWRz
LgogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPnN0b3BMb2FkaW5nSW5GcmFtZSgqbV9mcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMz
NDVhODJlNDYyODVhMTliNTRjZGRhZmY2MjIxOGMwNjVlZTIxZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3QuaApAQCAtMCwwICsxLDY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiRm9udFRhZ2dlZFNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnQ7CitjbGFzcyBG
b250RGVzY3JpcHRpb247CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CitzdHJ1Y3QgRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEZvbnRUYWdnZWRTZXR0aW5nczsKK3VzaW5nIEZvbnRGZWF0dXJlU2V0dGluZ3MgPSBGb250VGFn
Z2VkU2V0dGluZ3M8aW50PjsKKworY2xhc3MgRm9udExvYWRSZXF1ZXN0Q2xpZW50IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZFJlcXVlc3RDbGllbnQoKSA9IGRlZmF1bHQ7CisgICAg
dmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoRm9udExvYWRSZXF1ZXN0JikgeyB9Cit9OworCitjbGFz
cyBGb250TG9hZFJlcXVlc3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZvbnRMb2FkUmVxdWVz
dCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgY29uc3QgVVJMJiB1cmwoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpID0gMDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXMpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRm9udExv
YWRSZXF1ZXN0Q2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkRm9udExv
YWRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZPTlRMT0FEUkVRVUVT
VChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Rm9udExvYWRSZXF1ZXN0JiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LnByZWRpY2F0
ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA1
MzU3YThlNWQwYjdmMGI2YTFhZGU0ZGNhMDg4YTFiMjc5ZjE3MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250TG9hZFJlcXVlc3QuaApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIE1ldHJvbG9naWNhbCBHcm91
cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgorI2luY2x1ZGUgIkNhY2hlZEZv
bnRDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUg
IkZvbnRMb2FkUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hl
ZEZvbnRMb2FkUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBGb250TG9hZFJlcXVlc3QsIHB1YmxpYyBD
YWNoZWRGb250Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBDYWNoZWRGb250TG9hZFJlcXVlc3QoQ2FjaGVkRm9udCYgZm9udCkKKyAgICAgICAgOiBt
X2ZvbnQoJmZvbnQpCisgICAgeworICAgIH0KKworICAgIH5DYWNoZWRGb250TG9hZFJlcXVlc3Qo
KQorICAgIHsKKyAgICAgICAgaWYgKG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50KQorICAgICAgICAg
ICAgbV9mb250LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIH0KKworICAgIENhY2hlZEZvbnQm
IGNhY2hlZEZvbnQoKSBjb25zdCB7IHJldHVybiAqbV9mb250OyB9CisKK3ByaXZhdGU6CisgICAg
Y29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZvbnQtPnVybCgpOyB9Cisg
ICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZvbnQtPmlzTG9hZGlu
ZygpOyB9CisgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9m
b250LT5lcnJvck9jY3VycmVkKCk7IH0KKworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKSBmaW5hbCB7IHJldHVybiBtX2ZvbnQtPmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKHJlbW90ZVVSSSk7IH0KKyAgICBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0
IEZvbnRGZWF0dXJlU2V0dGluZ3MmIHNldHRpbmdzLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzIGNhcGFiaWxpdGllcykgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Zv
bnQtPmNyZWF0ZUZvbnQoZGVzY3JpcHRpb24sIHJlbW90ZVVSSSwgc3ludGhldGljQm9sZCwgc3lu
dGhldGljSXRhbGljLCBzZXR0aW5ncywgY2FwYWJpbGl0aWVzKTsKKyAgICB9CisKKyAgICB2b2lk
IHNldENsaWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqIGNsaWVudCkgZmluYWwKKyAgICB7Cisg
ICAgICAgIGF1dG8qIG9sZENsaWVudCA9IG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50OworICAgICAg
ICBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCA9IGNsaWVudDsKKworICAgICAgICBpZiAoIWNsaWVu
dCAmJiBvbGRDbGllbnQpCisgICAgICAgICAgICBtX2ZvbnQtPnJlbW92ZUNsaWVudCgqdGhpcyk7
CisgICAgICAgIGVsc2UgaWYgKGNsaWVudCAmJiAhb2xkQ2xpZW50KQorICAgICAgICAgICAgbV9m
b250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWRGb250TG9h
ZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGZvbnRM
b2FkZWQoQ2FjaGVkRm9udCYgZm9udCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoZm9udCwgJmZvbnQgPT0gbV9mb250LmdldCgpKTsKKyAgICAgICAgaWYgKG1fZm9udExvYWRS
ZXF1ZXN0Q2xpZW50KQorICAgICAgICAgICAgbV9mb250TG9hZFJlcXVlc3RDbGllbnQtPmZvbnRM
b2FkZWQoKnRoaXMpOworICAgIH0KKworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZv
bnQ+IG1fZm9udDsKKyAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0
Q2xpZW50IHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0ZPTlRMT0FEUkVRVUVTVChXZWJDb3JlOjpDYWNoZWRGb250TG9h
ZFJlcXVlc3QsIGlzQ2FjaGVkRm9udExvYWRSZXF1ZXN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg3ZmM1OGMxYjQxMzhjMTc2YjliM2E2
YzAxOTA3Y2VjMGY5N2FlNTkuLjc3NTJhZjk1NTJiNTc0MzQ2ZDYyOGQ0ZjdmYThmNzZjMzYwZDQ4
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBA
IC0xMTIsOCArMTEyLDYgQEAgV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgp
CiAgICAgICAgIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKS5yZW1vdmUo
Y29udGV4dElkZW50aWZpZXIoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fY3NzRm9udFNlbGVjdG9y
KQotICAgICAgICBtX2Nzc0ZvbnRTZWxlY3Rvci0+c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7
CiAgICAgbV9wZXJmb3JtYW5jZSA9IG51bGxwdHI7CiAgICAgbV9jcnlwdG8gPSBudWxscHRyOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425611</attachid>
            <date>2021-04-09 05:00:13 -0700</date>
            <delta_ts>2021-04-09 05:15:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210409130011.patch</filename>
            <type>text/plain</type>
            <size>63314</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uMzMxNGRmN2M3ZmIyYWNhODdiNzZmZTlkMDEyMTRj
MzMyOWY4NDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6IEFkZGVkIEZvbnRMb2FkUmVxdWVzdC5oLCBDYWNoZWRGb250TG9hZFJlcXVl
c3QuaAorICAgICAgICAgIGFuZCBEb2N1bWVudEZvbnRMb2FkZXIuaC4KKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDogQWRkZWQgRG9jdW1lbnRGb250TG9hZGVyLmNwcC4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIGZpbGVzIGxpc3RlZCBhYm92ZS4KKwor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6IFVwZGF0ZSB0byBub3QgcmVxdWlyZSBEb2N1
bWVudCBmb3IgY3VzdG9tIGZvbnQgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlOjphcHBlbmRTb3VyY2VzKToKKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGluc3RlYWQgb2YgQ2FjaGVkRm9udC4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRGYWNlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxs
eVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U291cmNlOjpmb250TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNl
Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjppc1NWR0ZvbnRGYWNlU291cmNlIGNv
bnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDogVXBkYXRlIHRvIHVzZSBGb250TG9hZFJlcXVlc3Qg
YW5kCisgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIENhY2hlZFJl
c291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Zm9u
dExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgorCisg
ICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6IFJlbW92ZSBEb2N1bWVudC1zcGVjaWZp
YyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Y2xlYXJGb250cyk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDogSW1wbGVtZW50IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdAorICAg
ICAgICAgIGFuZCA6OmJlZ2luTG9hZGluZ0ZvbnRTb29uLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExh
c3RSZWYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZEZvbnRMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpmb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgICogZG9tL0RvY3VtZW50Rm9udExvYWRlci5j
cHA6IEFkZGVkLiBOZXcgY2xhc3MgdG8gaGFuZGxlIERvY3VtZW50LXNwZWNpZmljCisgICAgICAg
ICAgZm9udC1sb2FkaW5nIGNvZGUgdGhhdCB3YXMgcHJldmlvdXNseSBpbiBDU1NGb250U2VsZWN0
b3IgYW5kCisgICAgICAgICAgQ1NTRm9udEZhY2VTcmNWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Rm9udExvYWRlcjo6RG9jdW1lbnRGb250TG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Rm9udExvYWRlcjo6fkRvY3VtZW50Rm9udExvYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudEZvbnRMb2FkZXI6OmNhY2hlZEZvbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRGb250TG9hZGVyOjpiZWdpbkxvYWRpbmdGb250U29vbik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudEZvbnRMb2FkZXI6OmxvYWRQZW5kaW5nRm9udHMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpmb250TG9hZGluZ1RpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9u
dHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpzdXNwZW5kRm9udExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpyZXN1bWVGb250
TG9hZGluZyk6CisgICAgICAgICogZG9tL0RvY3VtZW50Rm9udExvYWRlci5oOgorCisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBBZGQgZnVuY3Rpb25zIHRvIGluaXRp
YXRlIGZvbnQgbG9hZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmJl
Z2luTG9hZGluZ0ZvbnRTb29uKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6IENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIKKyAgICAgICAgICBp
cyBub3cgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKKyAgICAgICAgKiBsb2FkZXIvRm9udExvYWRS
ZXF1ZXN0Lmg6IEFkZGVkLiBBbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGZvbnQgbG9hZGluZworICAg
ICAgICAgIHRoYXQgYWJzdHJhY3RzIHNvbWUgb2YgdGhlIGJlaGF2aW91ciBvZiBDYWNoZWRSZXNv
dXJjZSwgQ2FjaGVkRm9udCBhbmQKKyAgICAgICAgICBDYWNoZWRGb250Q2xpZW50LgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdENsaWVudDo6aXNDYWNoZWRGb250TG9hZFJlcXVlc3Qg
Y29uc3QpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5o
OiBBZGRlZC4gQW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICBGb250TG9hZFJlcXVlc3Qg
Zm9yIENhY2hlZEZvbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cDogUmVtb3ZlIG5vdy1yZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwogMjAyMS0w
NC0wNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlkaUNvbnRl
eHQgY2FjaGluZyBpcyBub3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFhMzkx
ODJkNDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjEyZmRiYThhYzIyNzkwYjUzOWQz
YTE0NmI0ODkzYThiMjNiMTg2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDM3LDYgKzQzNyw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vRGV2aWNl
T3JpZW50YXRpb25EYXRhLmgKICAgICBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1p
c3Npb25TdGF0ZS5oCiAgICAgZG9tL0RvY3VtZW50LmgKKyAgICBkb20vRG9jdW1lbnRGb250TG9h
ZGVyLmgKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5oCiAgICAgZG9tL0RvY3VtZW50RnVsbHNj
cmVlbi5oCiAgICAgZG9tL0RvY3VtZW50TWFya2VyLmgKQEAgLTc3Niw2ICs3NzcsNyBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCiAgICAgbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAogICAgIGxvYWRlci9GZXRj
aE9wdGlvbnMuaAorICAgIGxvYWRlci9Gb250TG9hZFJlcXVlc3QuaAogICAgIGxvYWRlci9Gb3Jt
U3RhdGUuaAogICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5oCiAgICAgbG9hZGVyL0ZyYW1lTG9h
ZFJlcXVlc3QuaApAQCAtODI4LDYgKzgzMCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKIAogICAgIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCiAK
KyAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgKICAgICBsb2FkZXIvY2Fj
aGUvQ2FjaGVQb2xpY3kuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCiAgICAgbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWU0ZmE2MGNj
ZGRhZmRjMTVkZDY1MTM5MWYxYjIxMTZiMzczNGE0NS4uM2ZkMzhkYWE5NWI0NmMxMTk1MTY0NjRm
NWI5ZWM0NWMxOTA4YzI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTkyMiw2ICs5MjIsNyBAQCBkb20v
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAogZG9tL0RldmljZU9yaWVudGF0aW9uRGF0
YS5jcHAKIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAogZG9tL0RvY3VtZW50LmNwcAor
ZG9tL0RvY3VtZW50Rm9udExvYWRlci5jcHAKIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKIGRvbS9Eb2N1bWVudFBhcnNlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3NTMwMmRiMGQwYzY4MjIzMWY1NjJmZTkwOGM5ZWIxNTExYjNmOTYxLi41ZDliZTMzODU3MThj
MTBiMzFiMmVmM2Q2MmFmODJhOGFiODhjNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDQyLDYgKzIwNDIsNyBAQAogCQk2
NTY1ODIwMjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8q
IFhMaW5rTmFtZXMuaCAqLzsgfTsKIAkJNjU2RDM3MzIwQURCQTVERTAwQTQ1NTREIC8qIExvYWRl
ck5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTZEMzcxQTBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczNjBB
REJBNURFMDBBNDU1NEQgLyogRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1
bWVudExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFC
NzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczQTBBREJBNURFMDBBNDU1NEQgLyogRm9y
bVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTZEMzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3M0MwQURCQTVERTAwQTQ1NTRE
IC8qIEZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTZEMzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczRTBBREJB
NURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzI2MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFt
ZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yODkzLDYgKzI4OTQsNyBAQAogCQk5M0YxOThGNjA4MjQ1RTU5MDAxRTlBQkMg
LyogVGV4dFJlc291cmNlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjUyM0QyNzkwMkRFNDNENzAxODYzNUNBIC8qIFRleHRSZXNvdXJjZURl
Y29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0YxOTkxODA4MjQ1RTU5MDAxRTlBQkMgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMzA0MDJERTQ0NzYwMTg2MzVDQSAvKiBS
YW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBD
dXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTg3ODY0OTAyREUz
QTlBMDFFQTQxMjIgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5NTAwODI0NUU1OTAwMUU5QUJD
IC8qIENhY2hlUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk2MzA4MjQ1
RTU5MDAxRTlBQkMgLyogU1NMS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODY2MjAyREUzQjExMDFFQTQxMjIgLyogU1NMS2V5
R2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGMTk5OEMwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTU1QTQxMDNENzI5
MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVlQXNUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0NzYsNiArMzQ3OCw3IEBACiAJCUE4MTg1RjM5
MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1
bWVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBODE4NUYzQjA5NzY1NzY2MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMzMDk3NjU3
NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODE4NUYzNTA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE4MTg1RjQ1
MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM1MDk3NjU3NjUwMDU4MjZEOSAv
KiBEb2N1bWVudEZvbnRMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM4MDk3
NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE4MTg3MjFCMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODcy
MTAwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENv
bnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4MTg3MjExMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3NjEsNiArOTc2NCw3
IEBACiAJCTY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybVN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzIzMEFEQkE1REUwMEE0NTU0RCAvKiBGb3Jt
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1TdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1ODQzNjg1MEFFMDFCNzQwMEU1
Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1NkQzNzI2MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkZXJDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjcwQURCQTVERTAwQTQ1NTREIC8qIFJlc291
cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MzYsOSArMTI5NDAsMTEg
QEAKIAkJQTgxODVGMzIwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUlt
cGxlbWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01JbXBs
ZW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE4NUYzNDA5NzY1
NzY1MDA1ODI2RDkgLyogRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgx
ODVGMzQ1OTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRGb250TG9hZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERv
Y3VtZW50RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3Vt
ZW50RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzYwOTc2
NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBET01JbXBsZW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4MTg1RjM3MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudEZy
YWdtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgxODVGMzUwOTc2NTc2
NTAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9jdW1lbnRGb250TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTg1RjM4MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTgxODcyMTAwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4NTEsNiArMTY4NTcsNyBAQAogCQlGNTVCM0RBQzEy
NTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWVrSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY1ODc4NEYwMDJERTM3NTkwMUVBNDEyMiAvKiBDdXJzb3JNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDdXJzb3JNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQlGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZyYW1lVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnJhbWVW
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OworCQk4NTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlZEZvbnRMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2NDkwMkRFM0E5QTAxRUE0MTIyIC8qIENhY2hl
UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhY2hlUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODY2MjAyREUzQjExMDFFQTQxMjIgLyogU1NMS2V5R2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNTTEtleUdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
dXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CkBAIC0yNTkzNyw2ICsyNTk0NCw3IEBACiAJCQkJQkM2NEI0QzkwQ0I0Mjk1RDAwNUYy
QjYyIC8qIENhY2hlZEZvbnQuY3BwICovLAogCQkJCUJDNjRCNENBMENCNDI5NUQwMDVGMkI2MiAv
KiBDYWNoZWRGb250LmggKi8sCiAJCQkJMUFFRjRFNjYxNzBFMTYwMzAwQUIyNzk5IC8qIENhY2hl
ZEZvbnRDbGllbnQuaCAqLywKKwkJCQk4NTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVk
Rm9udExvYWRSZXF1ZXN0LmggKi8sCiAJCQkJQkNCMTZDMDIwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmNwcCAqLywKIAkJCQlCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
SW1hZ2UuaCAqLywKIAkJCQkzMTlGQkQ1RDE1RDJGNDQ0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VD
bGllbnQuaCAqLywKQEAgLTI3NTg1LDYgKzI3NTkzLDcgQEAKIAkJCQlDRUJCOEMzMjIwNzg2RENC
MDAwMzk1NDcgLyogRmV0Y2hJZGlvbXMuY3BwICovLAogCQkJCUNFQkI4QzMxMjA3ODZEQ0IwMDAz
OTU0NyAvKiBGZXRjaElkaW9tcy5oICovLAogCQkJCTQxQUQ3NTM5MUNFRjZCQ0UwMEEzMTQ4NiAv
KiBGZXRjaE9wdGlvbnMuaCAqLywKKwkJCQk2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9u
dExvYWRSZXF1ZXN0LmggKi8sCiAJCQkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1T
dGF0ZS5jcHAgKi8sCiAJCQkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5o
ICovLAogCQkJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAg
Ki8sCkBAIC0zMDI4OSw2ICszMDI5OCw4IEBACiAJCQkJQTgxODVGMzgwOTc2NTc2NTAwNTgyNkQ5
IC8qIERvY3VtZW50LmggKi8sCiAJCQkJNjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIwIC8qIERvY3Vt
ZW50LmlkbCAqLywKIAkJCQk4MzI5QTQxNzFFQzI1QjJCMDA4RUQ0QkUgLyogRG9jdW1lbnRBbmRF
bGVtZW50RXZlbnRIYW5kbGVycy5pZGwgKi8sCisJCQkJQTgxODVGMzQ1OTc2NTc2NTAwNTgyNkQ5
IC8qIERvY3VtZW50Rm9udExvYWRlci5jcHAgKi8sCisJCQkJQTgxODVGMzUwOTc2NTc2NTAwNTgy
NkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oICovLAogCQkJCUE4MTg1RjM3MDk3NjU3NjUwMDU4
MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzNTA5NzY1NzY1MDA1
ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oICovLAogCQkJCTFBNDk0RUQ1MEExMjNGMUEwMEZE
QUZDMSAvKiBEb2N1bWVudEZyYWdtZW50LmlkbCAqLywKQEAgLTMxNjE0LDYgKzMxNjI1LDcgQEAK
IAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRG
b250Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMg
LyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUMwQUEzOTBG
MkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQ0JG
Qzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTU2LDYgKzMyMTY4LDcgQEAKIAkJCQlCMkYzNEZF
NjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2RjEy
RDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTgxODVGNDUwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJh
Z21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTJGNTEzMjI2MEZGRUUwMEY4N0JCMyAvKiBE
b2N1bWVudEZ1bGxzY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODI2QkYyMjNGQjU5Nzcw
MEI5MjJCMSAvKiBEb2N1bWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzI0MjYs
NiArMzI0MzksNyBAQAogCQkJCTFDMjRFRUE1MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMxMkFDMkIxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MkVFM0E3
MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzRBNTMyRjI1NjA1N0NEMDAyOEM1OTIgLyogRm9udExvYWRUaW1pbmdP
dmVycmlkZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8q
IEZvbnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcAppbmRleCA4MTcxYWNjZWE3ZWY0N2NiMTUzOTk1ZTk0YWE4YTAxMTlkN2FlMzYw
Li5mYTRjNzI5NGI1NjhkMTlmYzhiYjkxOWJjYTI3YmIyYzMyOGM2NzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5jcHAKQEAgLTc2LDEwICs3Niw5IEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFw
cGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3Qs
IFNjCiAgICAgICAgIGlmICghaXRlbS5pc0xvY2FsKCkpIHsKICAgICAgICAgICAgIGNvbnN0IGF1
dG8qIHNldHRpbmdzID0gY29udGV4dCA/ICZjb250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpIDogbnVs
bHB0cjsKICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8
fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCk7
Ci0gICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9y
bWF0KCkgJiYgaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwotICAgICAgICAgICAgICAg
IGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KCZkb2N1bWVudCwg
Zm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkK
LSAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpj
YWNoZWRGb250KTsKKyAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNT
dXBwb3J0ZWRGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGZvbnRSZXF1ZXN0
ID0gaXRlbS5mb250TG9hZFJlcXVlc3QoY29udGV4dCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3Vy
Y2UoKSwgKmNvbnRleHQtPmNzc0ZvbnRTZWxlY3RvcigpLCBtYWtlVW5pcXVlUmVmRnJvbU5vbk51
bGxVbmlxdWVQdHIoV1RGTW92ZShmb250UmVxdWVzdCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBzb3VyY2UgPSAoZm9udEZhY2VFbGVtZW50ID8gbWFrZVVu
aXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmZvbnRG
YWNlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4
IGJjMzIzYzJmMmVjMDFhNzdhZDUwODMzMTEyZTE5NjAwMzA4YTczZWQuLmE1ZWY1YWY1ZDZmZTQ0
YzVlYzA0YmQ3NTI0ZWM1Zjc4ZDRhY2Y2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2Uu
aCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDYWNoZWRGb250Lmgi
CisjaW5jbHVkZSAiQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU1ZH
Rm9udC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udC5oIgpAQCAtNzIs
MTkgKzcyLDE5IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiB7CiB9CiAKLUNTU0ZvbnRGYWNl
U291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmlu
ZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgQ2FjaGVk
Rm9udCYgZm9udCkKK0NTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0
b3ImIGZvbnRTZWxlY3RvciwgVW5pcXVlUmVmPEZvbnRMb2FkUmVxdWVzdD4mJiByZXF1ZXN0KQog
ICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFtaWx5TmFtZU9yVVJJKQogICAgICwgbV9mYWNlKG93
bmVyKQogICAgICwgbV9mb250U2VsZWN0b3IobWFrZVdlYWtQdHIoZm9udFNlbGVjdG9yKSkKLSAg
ICAsIG1fZm9udCgmZm9udCkKKyAgICAsIG1fZm9udFJlcXVlc3QocmVxdWVzdC5tb3ZlVG9Vbmlx
dWVQdHIoKSkKIHsKICAgICAvLyBUaGlzIG1heSBzeW5jaHJvbm91c2x5IGNhbGwgZm9udExvYWRl
ZCgpLgotICAgIG1fZm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2ZvbnRSZXF1ZXN0LT5z
ZXRDbGllbnQodGhpcyk7CiAKLSAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYm
IG1fZm9udC0+aXNMb2FkZWQoKSkgeworICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRp
bmcgJiYgIW1fZm9udFJlcXVlc3QtPmlzTG9hZGluZygpKSB7CiAgICAgICAgIHNldFN0YXR1cyhT
dGF0dXM6OkxvYWRpbmcpOwogICAgICAgICBpZiAoIXNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxl
dGlvbnMoKSkgewotICAgICAgICAgICAgaWYgKG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpKQorICAg
ICAgICAgICAgaWYgKG1fZm9udFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgICAg
ICAgICBzZXRTdGF0dXMoU3RhdHVzOjpGYWlsdXJlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTEwOSw4ICsxMDksOCBA
QCBDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVy
LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbQogCiBDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRG
YWNlU291cmNlKCkKIHsKLSAgICBpZiAobV9mb250KQotICAgICAgICBtX2ZvbnQtPnJlbW92ZUNs
aWVudCgqdGhpcyk7CisgICAgaWYgKG1fZm9udFJlcXVlc3QpCisgICAgICAgIG1fZm9udFJlcXVl
c3QtPnNldENsaWVudChudWxscHRyKTsKIH0KIAogYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hv
dWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpIGNvbnN0CkBAIC0xMjAsMjkgKzEyMCwyOSBA
QCBib29sIENTU0ZvbnRGYWNlU291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25z
KCkgY29uc3QKIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFy
dEZvbnREYXRhVVJMTG9hZGluZygpCiB7Ci0gICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVu
ZGluZyAmJiBtX2ZvbnQgJiYgbV9mb250LT51cmwoKS5wcm90b2NvbElzRGF0YSgpICYmIG1fZmFt
aWx5TmFtZU9yVVJJLmxlbmd0aCgpIDwgTUIpCisgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6
UGVuZGluZyAmJiBtX2ZvbnRSZXF1ZXN0ICYmIG1fZm9udFJlcXVlc3QtPnVybCgpLnByb3RvY29s
SXNEYXRhKCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKICAgICAgICAgbG9h
ZCgpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKENhY2hlZEZvbnQm
IGxvYWRlZEZvbnQpCit2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKEZvbnRMb2Fk
UmVxdWVzdCYgZm9udFJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2FkZWRGb250LCAm
bG9hZGVkRm9udCA9PSBtX2ZvbnQuZ2V0KCkpOworICAgIEFTU0VSVF9VTlVTRUQoZm9udFJlcXVl
c3QsICZmb250UmVxdWVzdCA9PSBtX2ZvbnRSZXF1ZXN0LmdldCgpKTsKIAogICAgIGlmIChzaG91
bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZjxDU1NGb250RmFjZT4gcHJvdGVjdGVkRmFjZShtX2ZhY2UpOwogCi0gICAgLy8gSWYgdGhlIGZv
bnQgaXMgaW4gdGhlIGNhY2hlLCB0aGlzIHdpbGwgYmUgc3luY2hyb25vdXNseSBjYWxsZWQgZnJv
bSBDYWNoZWRGb250OjphZGRDbGllbnQoKS4KKyAgICAvLyBJZiB0aGUgZm9udCBpcyBpbiB0aGUg
Y2FjaGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5IGNhbGxlZCBmcm9tIEZvbnRMb2FkUmVx
dWVzdDo6YWRkQ2xpZW50KCkuCiAgICAgaWYgKG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGluZykK
ICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAgICAgZWxzZSBpZiAobV9zdGF0
dXMgPT0gU3RhdHVzOjpGYWlsdXJlKSB7CiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGJl
IGNhbGxlZCB0d2ljZSBpZiBsb2FkaW5nIHdhcyBjYW5jZWxsZWQuCi0gICAgICAgIEFTU0VSVCht
X2ZvbnQtPmVycm9yT2NjdXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChtX2ZvbnRSZXF1ZXN0LT5l
cnJvck9jY3VycmVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fZm9u
dC0+ZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFt
aWx5TmFtZU9yVVJJKSkKKyAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpIHx8
ICFtX2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWlseU5hbWVPclVSSSkp
CiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgIGVsc2UKICAgICAgICAg
c2V0U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBAIC0xNTQsOSArMTU0LDEwIEBAIHZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHNldFN0YXR1
cyhTdGF0dXM6OkxvYWRpbmcpOwogCi0gICAgaWYgKG1fZm9udCkgeworICAgIGlmIChtX2ZvbnRS
ZXF1ZXN0KSB7CiAgICAgICAgIEFTU0VSVChtX2ZvbnRTZWxlY3Rvcik7Ci0gICAgICAgIG1fZm9u
dFNlbGVjdG9yLT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBtX2ZvbnRTZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQor
ICAgICAgICAgICAgY29udGV4dC0+YmVnaW5Mb2FkaW5nRm9udFNvb24oKm1fZm9udFJlcXVlc3Qp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICBp
ZiAobV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAgLTE5OCw3ICsxOTksNyBAQCBSZWZQdHI8
Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIGJvbwogCiAgICAgYm9vbCB1c2VzSW5Eb2N1bWVudFNWR0ZvbnQgPSBtX2hh
c1NWR0ZvbnRGYWNlRWxlbWVudDsKIAotICAgIGlmICghbV9mb250ICYmICF1c2VzSW5Eb2N1bWVu
dFNWR0ZvbnQpIHsKKyAgICBpZiAoIW1fZm9udFJlcXVlc3QgJiYgIXVzZXNJbkRvY3VtZW50U1ZH
Rm9udCkgewogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIGlm
ICghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjEwLDEyICsyMTEsMTIgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRG
YWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBi
b28KICAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShm
b250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCAmZm9udEZhY2VGZWF0dXJlcywgZm9u
dEZhY2VDYXBhYmlsaXRpZXMsIHRydWUpOwogICAgIH0KIAotICAgIGlmIChtX2ZvbnQpIHsKLSAg
ICAgICAgYXV0byBzdWNjZXNzID0gbV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWls
eU5hbWVPclVSSSk7CisgICAgaWYgKG1fZm9udFJlcXVlc3QpIHsKKyAgICAgICAgYXV0byBzdWNj
ZXNzID0gbV9mb250UmVxdWVzdC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlOYW1lT3JV
UkkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCiAgICAgICAg
IEFTU0VSVChzdGF0dXMoKSA9PSBTdGF0dXM6OlN1Y2Nlc3MpOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IG1fZm9udC0+Y3JlYXRlRm9udChmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJ
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRG
YWNlQ2FwYWJpbGl0aWVzKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2ZvbnRSZXF1ZXN0LT5j
cmVhdGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VDYXBhYmlsaXRp
ZXMpOwogICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CkBAIC0yMzIsNyArMjMzLDExIEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6
Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKIGJvb2wg
Q1NTRm9udEZhY2VTb3VyY2U6OmlzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBpczxDYWNoZWRTVkdGb250PihtX2ZvbnQu
Z2V0KCkpOworICAgIGlmICghbV9oYXNTVkdGb250RmFjZUVsZW1lbnQgfHwgIWlzPENhY2hlZEZv
bnRMb2FkUmVxdWVzdD4obV9mb250UmVxdWVzdC5nZXQoKSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8qIGNhY2hlZEZvbnRSZXF1ZXN0ID0gZG93bmNhc3Q8Q2FjaGVkRm9udExv
YWRSZXF1ZXN0PihtX2ZvbnRSZXF1ZXN0LmdldCgpKTsKKyAgICByZXR1cm4gaXM8Q2FjaGVkU1ZH
Rm9udD4oY2FjaGVkRm9udFJlcXVlc3QtPmNhY2hlZEZvbnQoKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggNTkyY2U4MzFjNWE5Mjg2M2UwNGViZGI3
NmVmM2FjMThmNTFjMTNiZC4uMzBkNzk5N2ZmMTcxMTlkZTQ3NmU0NzM1NDI1NTc0MjRmOGY3ODg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTI1LDggKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCi0jaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3Qu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTQ3
LDExICs0NiwxMSBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwogCi1jbGFzcyBDU1NGb250RmFjZVNvdXJjZSBmaW5hbCA6
IHB1YmxpYyBDYWNoZWRGb250Q2xpZW50IHsKK2NsYXNzIENTU0ZvbnRGYWNlU291cmNlIGZpbmFs
IDogcHVibGljIEZvbnRMb2FkUmVxdWVzdENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVy
LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSk7Ci0gICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NTRm9u
dFNlbGVjdG9yJiwgQ2FjaGVkRm9udCYpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRG
YWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3Rv
ciYsIFVuaXF1ZVJlZjxGb250TG9hZFJlcXVlc3Q+JiYpOwogICAgIENTU0ZvbnRGYWNlU291cmNl
KENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFNWR0Zv
bnRGYWNlRWxlbWVudCYpOwogICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFJlZjxKU0M6OkFycmF5QnVmZmVyVmll
dz4mJik7CiAgICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTb3VyY2UoKTsKQEAgLTc2LDIyICs3NSwy
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkKERvY3VtZW50KiA9IG51bGxwdHIpOwogICAgIFJl
ZlB0cjxGb250PiBmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9s
ZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hl
ZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0KLSAgICBib29sIHJlcXVpcmVz
RXh0ZXJuYWxSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQorICAgIEZvbnRMb2Fk
UmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9mb250UmVxdWVzdC5n
ZXQoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9mb250UmVxdWVzdC5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1NWR0ZvbnRGYWNlU291cmNl
KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVGb250TG9hZENvbXBs
ZXRpb25zKCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCYpIG92ZXJy
aWRlOworICAgIHZvaWQgZm9udExvYWRlZChGb250TG9hZFJlcXVlc3QmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyk7CiAKICAgICBBdG9tU3RyaW5nIG1fZmFtaWx5TmFt
ZU9yVVJJOyAvLyBVUkkgZm9yIHJlbW90ZSwgYnVpbHQtaW4gZm9udCBuYW1lIGZvciBsb2NhbC4K
ICAgICBDU1NGb250RmFjZSYgbV9mYWNlOyAvLyBPdXIgb3duaW5nIGZvbnQgZmFjZS4KICAgICBX
ZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9u
dHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkRm9udD4gbV9mb250OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byBv
dXIgY2FjaGVkIHJlc291cmNlLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+
IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRo
ZSByZXNvdXJjZSByZXF1ZXN0LgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0
ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0
ZVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRl
eCA1MzlmZDQ4ODk2OWVmYTZmYWQ1ZmVhNGQzYzhhMTdiNzJmNzE5ZWU1Li4yMzllZTQwMDQxZGQx
N2Q4YTcwOGI4YjI2ZjgxMzBlZGU3NTM3YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuY3BwCkBAIC0yOSwxMCArMjksMTEgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKLSNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJG
b250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU1ZHRm9udEZh
Y2VFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NzYsMTkgKzc3LDE2IEBAIGJvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6dHJhdmVyc2VTdWJyZXNv
dXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDCiAgICAgcmV0dXJuIGhhbmRs
ZXIoKm1fY2FjaGVkRm9udCk7CiB9CiAKLUNhY2hlZEZvbnQqIENTU0ZvbnRGYWNlU3JjVmFsdWU6
OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlh
dGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udExv
YWRSZXF1ZXN0PiBDU1NGb250RmFjZVNyY1ZhbHVlOjpmb250TG9hZFJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVt
ZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewogICAgIGlmIChtX2NhY2hlZEZvbnQpCi0gICAg
ICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhY2hlZEZvbnRMb2FkUmVxdWVzdD4oKm1fY2FjaGVkRm9udCk7CiAKLSAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCk7Ci0gICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uID0gaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSA/IENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7Ci0gICAgb3B0aW9ucy5sb2FkZWRG
cm9tT3BhcXVlU291cmNlID0gbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlOworICAgIGF1dG8gcmVx
dWVzdCA9IGNvbnRleHQtPmZvbnRMb2FkUmVxdWVzdChtX3Jlc291cmNlLCBpc1NWRywgaXNJbml0
aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgbV9sb2FkZWRGcm9tT3BhcXVlU291
cmNlKTsKKyAgICBpZiAoaXM8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PihyZXF1ZXN0LmdldCgpKSkK
KyAgICAgICAgbV9jYWNoZWRGb250ID0gJmRvd25jYXN0PENhY2hlZEZvbnRMb2FkUmVxdWVzdD4o
cmVxdWVzdC5nZXQoKSktPmNhY2hlZEZvbnQoKTsKIAotICAgIENhY2hlZFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxldGVVUkwobV9yZXNvdXJj
ZSkpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVudC0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWRyku
dmFsdWVfb3IobnVsbHB0cik7Ci0gICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKKyAgICBy
ZXR1cm4gcmVxdWVzdDsKIH0KIAogYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjplcXVhbHMoY29u
c3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBjNWRjNTlmZDk2YTFiZTMyODM2MzQ0ZmYxOWQ5NTg3
NzI5MjZkN2I0Li5jYmUxNDExZTQ2YzRlZDc2ZTcxMWJjMzQxZTY1OTkwM2Y1MGZhYmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTM0LDggKzM0LDkgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkRm9udDsKLWNsYXNzIERvY3VtZW50
OworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OworY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgQ1NTRm9udEZhY2VTcmNWYWx1ZSBm
aW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CkBAIC02Niw3ICs2Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKLSAgICBDYWNo
ZWRGb250KiBjYWNoZWRGb250KERvY3VtZW50KiwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dExvYWRSZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGJv
b2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7
CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggYzExNTc4Y2ZjNTA0MTJj
YmE2YzU1MzBmOTRiZThhYTM2MzQ0NzVjYy4uYWNkMmExY2MyNGUzNGMwNTRkMDM3ODIzNDg3NzM3
Y2ZlYzdmZWI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTY4
LDcgKzY4LDYgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fZm9udENhY2hlKG1ha2VSZWYoY29udGV4dC5m
b250Q2FjaGUoKSkpCiAgICAgLCBtX2Nzc0ZvbnRGYWNlU2V0KENTU0ZvbnRGYWNlU2V0OjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX2ZvbnRNb2RpZmllZE9ic2VydmVyKFt0aGlzXSB7IGZvbnRNb2Rp
ZmllZCgpOyB9KQotICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmQ1NTRm9udFNlbGVj
dG9yOjpmb250TG9hZGluZ1RpbWVyRmlyZWQpCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9udFNlbGVj
dG9ySWQpCiAgICAgLCBtX3ZlcnNpb24oMCkKIHsKQEAgLTkzLDcgKzkyLDcgQEAgQ1NTRm9udFNl
bGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKIHsKICAgICBMT0coRm9udHMsICJDU1NGb250U2Vs
ZWN0b3IgJXAgZHRvciIsIHRoaXMpOwogCi0gICAgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7
CisgICAgY2xlYXJGb250cygpOwogICAgIG1fZm9udENhY2hlLT5yZW1vdmVDbGllbnQoKnRoaXMp
OwogfQogCkBAIC0zMzYsOTQgKzMzNSwxMyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogICAg
IHJldHVybiBGb250UmFuZ2VzIHsgV1RGTW92ZShmb250KSB9OwogfQogCi12b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkKK3ZvaWQgQ1NTRm9udFNlbGVjdG9y
OjpjbGVhckZvbnRzKCkKIHsKLSAgICBpZiAobV9pc1N0b3BwZWQpIHsKLSAgICAgICAgQVNTRVJU
KCFtX2ZvbnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIEFTU0VSVChtX2ZvbnRz
VG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOwotCi0g
ICAgaWYgKGlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkpKSB7Ci0gICAgICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQpOwotICAgICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpOwotICAgICAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9C
ZWdpbkxvYWRpbmcpIHsKLSAgICAgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RD
b3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCi0gICAgICAgICAgICBjYWNoZWRSZXNv
dXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOwotICAgICAgICB9
Ci0gICAgICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5jbGVhcigpOwotICAgIH0KLQogICAgIG1f
Y3NzRm9udEZhY2VTZXQtPmNsZWFyKCk7CiAgICAgbV9jbGllbnRzLmNsZWFyKCk7CiB9CiAKLXZv
aWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250JiBmb250
KQotewotICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQo
KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCptX2NvbnRleHQpOwotCi0gICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmFwcGVuZCgm
Zm9udCk7Ci0gICAgLy8gSW5jcmVtZW50IHRoZSByZXF1ZXN0IGNvdW50IG5vdywgaW4gb3JkZXIg
dG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZyb20gYmVpbmcgZGlzcGF0Y2hlZAotICAgIC8vIGFm
dGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IGJlZm9yZSBpdCBiZWdhbiBsb2Fk
aW5nLiBCYWxhbmNlZCBieQotICAgIC8vIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGZvbnRM
b2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKS4KLSAg
ICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmluY3JlbWVudFJlcXVlc3RDb3VudChm
b250KTsKLQotICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkICYmICFtX2ZvbnRMb2Fk
aW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZEZvbnRMb2FkaW5n
VGltZXIoKQotewotICAgIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZVdpbGxCZVN1
c3BlbmRlZCk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpsb2FkUGVuZGluZ0ZvbnRzKCkK
LXsKLSAgICBpZiAobV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHx8ICFpczxEb2N1bWVudD4obV9j
b250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0KLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZvbnRzVG9CZWdpbkxvYWRpbmc7Ci0gICAgZm9udHNUb0Jl
Z2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGluZyk7Ci0KLSAgICAvLyBDU1NGb250
U2VsZWN0b3IgY291bGQgZ2V0IGRlbGV0ZWQgdmlhIGJlZ2luTG9hZElmTmVlZGVkKCkgb3IgbG9h
ZERvbmUoKSB1bmxlc3MgcHJvdGVjdGVkLgotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwotCi0gICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291
cmNlTG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBmb3IgKGF1
dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAgIGZvbnRIYW5k
bGUtPmJlZ2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKLSAgICAgICAgLy8g
QmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24o
KS4KLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KCpm
b250SGFuZGxlKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGlu
Z1RpbWVyRmlyZWQoKQotewotICAgIGlmICghaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX2NvbnRleHQpOwotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwotCi0gICAgbG9hZFBlbmRpbmdGb250cygpOwotCi0gICAgLy8gRklYTUU6IFVzZSBT
dWJyZXNvdXJjZUxvYWRlciBpbnN0ZWFkLgotICAgIC8vIENhbGwgRnJhbWVMb2FkZXI6OmxvYWRE
b25lIGJlZm9yZSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VMb2FkRG9uZSB0byBtYXRjaCB0aGUg
b3JkZXIgaW4gU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUuCi0gICAgZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5sb2FkRG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkZpbmlzaCk7
Ci0gICAgLy8gRW5zdXJlIHRoYXQgaWYgdGhlIHJlcXVlc3QgY291bnQgcmVhY2hlcyB6ZXJvLCB0
aGUgZnJhbWUgbG9hZGVyIHdpbGwga25vdyBhYm91dCBpdC4KLSAgICAvLyBOZXcgZm9udCBsb2Fk
cyBtYXkgYmUgdHJpZ2dlcmVkIGJ5IGxheW91dCBhZnRlciB0aGUgZG9jdW1lbnQgbG9hZCBpcyBj
b21wbGV0ZSBidXQgYmVmb3JlIHdlIGhhdmUgZGlzcGF0Y2hlZAotICAgIC8vIGRpZEZpbmlzaExv
YWRpbmcgZm9yIHRoZSBmcmFtZS4gTWFrZSBzdXJlIHRoZSBkZWxlZ2F0ZSBpcyBhbHdheXMgZGlz
cGF0Y2hlZCBieSBjaGVja2luZyBleHBsaWNpdGx5LgotICAgIGlmIChkb2N1bWVudC5mcmFtZSgp
KQotICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgp
OwotfQotCiBzaXplX3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRDb3VudCgpCiB7CiAg
ICAgaWYgKG1faXNTdG9wcGVkKQpAQCAtNDQ5LDI5ICszNjcsNCBAQCBSZWZQdHI8Rm9udD4gQ1NT
Rm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdAogICAgIHJldHVybiBmb250OwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3Rv
cCgpCi17Ci0gICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBDU1NGb250
U2VsZWN0b3I6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKLXsKLSAgICBpZiAobV9pc0Zv
bnRMb2FkaW5nU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzRm9udExvYWRp
bmdTdXNwZW5kZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7Ci19Ci0K
LXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpyZXN1bWUoKQotewotICAgIGlmICghbV9pc0ZvbnRMb2Fk
aW5nU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fZm9udHNUb0JlZ2lu
TG9hZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKLQotICAgIG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCA9IGZhbHNlOwotfQotCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggZTRhZmYyNmFhYWZmMDhmODY4
NjdlMDQ1NTlmYTQxYjRiYjdlOGYzNy4uNDM0N2U4NWExNTYyMzRhOTNjZWJlZDE0N2MyMzI2YzIx
YjUxYWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZhbGxiYWNrRm9udENvdW50KCkgZmluYWw7CiAgICAg
UmVmUHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVf
dCkgZmluYWw7CiAKLSAgICB2b2lkIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworICAgIHZv
aWQgY2xlYXJGb250cygpOwogICAgIHZvaWQgZW1wdHlDYWNoZXMoKTsKICAgICB2b2lkIGJ1aWxk
U3RhcnRlZCgpOwogICAgIHZvaWQgYnVpbGRDb21wbGV0ZWQoKTsKQEAgLTgxLDkgKzgxLDYgQEAg
cHVibGljOgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCi0gICAgdm9pZCBiZWdp
bkxvYWRpbmdGb250U29vbihDYWNoZWRGb250Jik7Ci0gICAgdm9pZCBzdXNwZW5kRm9udExvYWRp
bmdUaW1lcigpOwotCiAgICAgRm9udEZhY2VTZXQqIGZvbnRGYWNlU2V0SWZFeGlzdHMoKTsKICAg
ICBGb250RmFjZVNldCYgZm9udEZhY2VTZXQoKTsKIApAQCAtMTEwLDEyICsxMDcsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZm9udFN0eWxlVXBkYXRlTmVlZGVkKENTU0ZvbnRGYWNlJikgZmluYWw7
CiAKICAgICB2b2lkIGZvbnRNb2RpZmllZCgpOwotICAgIHZvaWQgZm9udExvYWRpbmdUaW1lckZp
cmVkKCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsK
LSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCBy
ZXN1bWUoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIkNTU0ZvbnRTZWxlY3RvciJfczsgfQogCiAgICAgc3RydWN0IFBl
bmRpbmdGb250RmFjZVJ1bGUgewpAQCAtMTMwLDE1ICsxMjMsMTEgQEAgcHJpdmF0ZToKICAgICBS
ZWY8Q1NTRm9udEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VTZXQ7CiAgICAgSGFzaFNldDxGb250U2Vs
ZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkRm9udD4+IG1fZm9udHNUb0JlZ2luTG9hZGluZzsKICAgICBIYXNoU2V0PFJlZlB0
cjxDU1NGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlvbnNQb3NzaWJseVRvUmVtb3ZlOwogICAgIEhh
c2hTZXQ8UmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPj4gbV9jc3NDb25uZWN0aW9uc0VuY291bnRl
cmVkRHVyaW5nQnVpbGQ7CiAKICAgICBDU1NGb250RmFjZVNldDo6Rm9udE1vZGlmaWVkT2JzZXJ2
ZXIgbV9mb250TW9kaWZpZWRPYnNlcnZlcjsKIAotICAgIFRpbWVyIG1fZm9udExvYWRpbmdUaW1l
cjsKLSAgICBib29sIG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCB7IGZhbHNlIH07Ci0KICAgICB1
bnNpZ25lZCBtX3VuaXF1ZUlkOwogICAgIHVuc2lnbmVkIG1fdmVyc2lvbjsKICAgICB1bnNpZ25l
ZCBtX2NvbXB1dGluZ1Jvb3RTdHlsZUZvbnRDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IGViNGYyOGJkMzMwN2U0NzRkYmE3YTNlMjZhYTdjYTAwNTYzZjU2MTIuLjdkNGRm
NjY5NjUyOWFkZjhmOTQyOTI5MjlhMTA0ZWUxMWI1YWRhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oIgorI2luY2x1ZGUgIkNhY2hlZEZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNhY2hl
ZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKQEAgLTU5LDYgKzYwLDcgQEAKICNpbmNsdWRlICJE
YXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAjaW5jbHVk
ZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGb250TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCIK
QEAgLTYzOSw2ICs2NDEsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bQogICAgICwgbV92aXN1
YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1lcigqdGhpcywgJkRvY3VtZW50Ojp2aXN1YWxVcGRhdGVz
U3VwcHJlc3Npb25UaW1lckZpcmVkKQogICAgICwgbV9zaGFyZWRPYmplY3RQb29sQ2xlYXJUaW1l
cigqdGhpcywgJkRvY3VtZW50OjpjbGVhclNoYXJlZE9iamVjdFBvb2wpCiAgICAgLCBtX2ZvbnRT
ZWxlY3RvcihDU1NGb250U2VsZWN0b3I6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2ZvbnRMb2Fk
ZXIobWFrZVVuaXF1ZVJlZjxEb2N1bWVudEZvbnRMb2FkZXI+KCp0aGlzKSkKICAgICAsIG1fZGlk
QXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRl
Rm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKICAgICAsIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcigq
dGhpcywgJkRvY3VtZW50OjppbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUpCiAgICAgLCBtX3NvY2tl
dFByb3ZpZGVyKHBhZ2UoKSA/ICZwYWdlKCktPnNvY2tldFByb3ZpZGVyKCkgOiBudWxscHRyKQpA
QCAtNzU4LDcgKzc2MSw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGV4dGVuc2lvblN0
eWxlU2hlZXRzKCkuZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICBzdHlsZVNjb3BlKCkuY2xl
YXJSZXNvbHZlcigpOyAvLyBXZSBuZWVkIHRvIGRlc3Ryb3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9y
ZSBkZXN0cm95aW5nIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuCi0gICAgbV9mb250U2VsZWN0b3It
PnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworICAgIG1fZm9udExvYWRlci0+c3RvcExvYWRp
bmdBbmRDbGVhckZvbnRzKCk7CiAKICAgICAvLyBJdCdzIHBvc3NpYmxlIGZvciBtdWx0aXBsZSBE
b2N1bWVudHMgdG8gZW5kIHVwIHJlZmVyZW5jaW5nIHRoZSBzYW1lIENhY2hlZFJlc291cmNlTG9h
ZGVyIChlLmcuLCBTVkdJbWFnZXMKICAgICAvLyBsb2FkIHRoZSBpbml0aWFsIGVtcHR5IGRvY3Vt
ZW50IGFuZCB0aGUgU1ZHRG9jdW1lbnQgd2l0aCB0aGUgc2FtZSBEb2N1bWVudExvYWRlcikuCkBA
IC04MDcsNyArODEwLDcgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAgICAg
ICBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMuY2xlYXIoKTsKICAgICAgICAgbV9wZW5kaW5nUmVu
ZGVyVHJlZVRleHRVcGRhdGUgPSB7IH07CiAKLSAgICAgICAgbV9mb250U2VsZWN0b3ItPnN0b3BM
b2FkaW5nQW5kQ2xlYXJGb250cygpOworICAgICAgICBtX2ZvbnRMb2FkZXItPnN0b3BMb2FkaW5n
QW5kQ2xlYXJGb250cygpOwogCiAgICAgICAgIGRldGFjaFBhcnNlcigpOwogCkBAIC0yMDYyLDcg
KzIwNjUsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSB0
eXBlKQogCiAgICAgICAgIG1faW5TdHlsZVJlY2FsYyA9IGZhbHNlOwogCi0gICAgICAgIGZvbnRT
ZWxlY3RvcigpLmxvYWRQZW5kaW5nRm9udHMoKTsKKyAgICAgICAgbV9mb250TG9hZGVyLT5sb2Fk
UGVuZGluZ0ZvbnRzKCk7CiAKICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAg
ICB1cGRhdGVSZW5kZXJUcmVlKFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcx
NSwxMSBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVw
ZGF0ZXMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZygp
Cit7CisgICAgbV9mb250TG9hZGVyLT5zdXNwZW5kRm9udExvYWRpbmcoKTsKK30KKwogYm9vbCBE
b2N1bWVudDo6c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3QKIHsKICAgICAvLyBCeXBhc3MgdGhpcyBwb2xpY3kgd2hlbiB0aGUgd29ybGQgaXMga25vd24s
IGFuZCBpdCBub3QgdGhlIG5vcm1hbCB3b3JsZC4KQEAgLTI5OTcsNiArMzAwNSwxOSBAQCB2b2lk
IERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAgIHNldFJlYWR5U3RhdGUoTG9hZGluZyk7CiB9
CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IERvY3VtZW50Ojpmb250TG9hZFJl
cXVlc3QoU3RyaW5nJiB1cmwsIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQoreworICAgIGF1dG8qIGNhY2hlZEZvbnQgPSBtX2ZvbnRMb2FkZXItPmNhY2hl
ZEZvbnQoY29tcGxldGVVUkwodXJsKSwgaXNTVkcsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJB
Z2VudFNoYWRvd1RyZWUsIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHJldHVybiBjYWNo
ZWRGb250ID8gbWFrZVVuaXF1ZTxDYWNoZWRGb250TG9hZFJlcXVlc3Q+KCpjYWNoZWRGb250KSA6
IG51bGxwdHI7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKEZvbnRM
b2FkUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoaXM8Q2FjaGVkRm9udExvYWRSZXF1
ZXN0PihyZXF1ZXN0KSk7CisgICAgYXV0byYgZm9udCA9IGRvd25jYXN0PENhY2hlZEZvbnRMb2Fk
UmVxdWVzdD4ocmVxdWVzdCkuY2FjaGVkRm9udCgpOworICAgIG1fZm9udExvYWRlci0+YmVnaW5M
b2FkaW5nRm9udFNvb24oZm9udCk7Cit9CisKIEhUTUxCb2R5RWxlbWVudCogRG9jdW1lbnQ6OmJv
ZHkoKSBjb25zdAogewogICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKQEAg
LTU1MTYsNiArNTUzNyw4IEBAIHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVu
c2lvbiByZWFzb24pCiAgICAgbV92aXN1YWxVcGRhdGVzQWxsb3dlZCA9IGZhbHNlOwogICAgIG1f
dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIuc3RvcCgpOwogCisgICAgbV9mb250TG9hZGVy
LT5zdXNwZW5kRm9udExvYWRpbmcoKTsKKwogICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwogfQog
CkBAIC01NTQyLDYgKzU1NjUsOCBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWUoUmVhc29uRm9yU3Vz
cGVuc2lvbiByZWFzb24pCiAKICAgICBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkID0gdHJ1ZTsKIAor
ICAgIG1fZm9udExvYWRlci0+cmVzdW1lRm9udExvYWRpbmcoKTsKKwogICAgIG1faXNTdXNwZW5k
ZWQgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggMWY5YTgzYmZkMjY0YTRlMTQwZTNjMWYxMzhiZmFjNGYyNTc5NDI4Yi4uYWE0ZDE2
Yjc3YTFhYzczZTIxOThmMTA5MGU1NGJlMjM3NmNjMGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTEyMiw2ICsxMjIsNyBAQCBjbGFzcyBEZXZpY2VNb3Rpb25Db250cm9sbGVyOwogY2xhc3Mg
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogY2xhc3MgRGV2aWNl
T3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7Citj
bGFzcyBEb2N1bWVudEZvbnRMb2FkZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI7CkBAIC0xMzcs
NiArMTM4LDcgQEAgY2xhc3MgRXh0ZW5zaW9uU3R5bGVTaGVldHM7CiBjbGFzcyBGbG9hdFF1YWQ7
CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGb250RmFjZVNldDsKK2NsYXNzIEZvbnRMb2FkUmVx
dWVzdDsKIGNsYXNzIEZvcm1Db250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNl
bGVjdGlvbjsKQEAgLTYzMyw2ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kRGV2
aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCk7CiAgICAgdm9pZCByZXN1bWVEZXZpY2VN
b3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKTsKIAorICAgIHZvaWQgc3VzcGVuZEZvbnRMb2Fk
aW5nKCk7CisKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJWaWV3LmdldCgpOyB9CiAKICAgICBib29sIHJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkOyB9CkBAIC0xNjQ3LDYg
KzE2NTEsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAg
IENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgZmluYWwgeyByZXR1cm4gbV9mb250
U2VsZWN0b3IucHRyKCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBm
b250TG9hZFJlcXVlc3QoU3RyaW5nJiwgYm9vbCwgYm9vbCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3Qm
KSBmaW5hbDsKIAogICAgIC8vIEZvbnRTZWxlY3RvckNsaWVudAogICAgIHZvaWQgZm9udHNOZWVk
VXBkYXRlKEZvbnRTZWxlY3RvciYpIGZpbmFsOwpAQCAtMTk4Miw2ICsxOTg4LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbV9kb2N1bWVudEZyYWdtZW50Rm9ySW5u
ZXJPdXRlckhUTUw7CiAKICAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsK
KyAgICBVbmlxdWVSZWY8RG9jdW1lbnRGb250TG9hZGVyPiBtX2ZvbnRMb2FkZXI7CiAKICAgICBX
ZWFrSGFzaFNldDxNZWRpYVByb2R1Y2VyPiBtX2F1ZGlvUHJvZHVjZXJzOwogICAgIFdlYWtQdHI8
U3BlZWNoUmVjb2duaXRpb24+IG1fYWN0aXZlU3BlZWNoUmVjb2duaXRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGb250TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZvbnRMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZDhkZTA2ODcyODlk
YzhhNjI3MmUzNDQ1MWM1NDI2MjVjNDNiNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGb250TG9hZGVyLmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0
IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAy
MDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50Rm9udExvYWRlci5o
IgorCisjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitEb2N1bWVudEZvbnRMb2FkZXI6OkRvY3VtZW50Rm9udExv
YWRlcihEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAg
ICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9jdW1lbnRGb250TG9hZGVyOjpmb250TG9h
ZGluZ1RpbWVyRmlyZWQpCit7Cit9CisKK0RvY3VtZW50Rm9udExvYWRlcjo6fkRvY3VtZW50Rm9u
dExvYWRlcigpCit7CisgICAgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7Cit9CisKK0NhY2hl
ZEZvbnQqIERvY3VtZW50Rm9udExvYWRlcjo6Y2FjaGVkRm9udChVUkwmJiB1cmwsIGJvb2wgaXNT
VkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIFJlc291cmNl
TG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNo
ZWRSZXNvdXJjZU9wdGlvbnMoKTsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUlt
cG9zaXRpb24gPSBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlID8gQ29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKKyAgICBvcHRpb25zLmxvYWRl
ZEZyb21PcGFxdWVTb3VyY2UgPSBsb2FkZWRGcm9tT3BhcXVlU291cmNlOworCisgICAgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KFdURk1vdmUodXJsKSksIG9w
dGlvbnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMoKS5jc3MpOworICAgIHJldHVybiBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkucmVxdWVzdEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkcpLnZhbHVlX29yKG51bGxw
dHIpLmdldCgpOworfQorCit2b2lkIERvY3VtZW50Rm9udExvYWRlcjo6YmVnaW5Mb2FkaW5nRm9u
dFNvb24oQ2FjaGVkRm9udCYgZm9udCkKK3sKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5hcHBlbmQoJmZvbnQpOworICAg
IC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBjb3VudCBub3csIGluIG9yZGVyIHRvIHByZXZlbnQg
ZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRpc3BhdGNoZWQKKyAgICAvLyBhZnRlciB0aGlzIGZv
bnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBiZWZvcmUgaXQgYmVnYW4gbG9hZGluZy4gQmFsYW5j
ZWQgYnkKKyAgICAvLyBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBmb250TG9hZGluZ1RpbWVy
RmlyZWQoKSBhbmQgaW4gc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkuCisgICAgbV9kb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmluY3JlbWVudFJlcXVlc3RDb3VudChmb250KTsKKwor
ICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkICYmICFtX2ZvbnRMb2FkaW5nVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OworfQorCit2b2lkIERvY3VtZW50Rm9udExvYWRlcjo6bG9hZFBlbmRpbmdGb250cygpCit7Cisg
ICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2Fk
aW5nOworICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcp
OworCisgICAgYXV0byYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50LmNhY2hlZFJl
c291cmNlTG9hZGVyKCk7CisgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2lu
TG9hZGluZykgeworICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7CisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3Vu
dCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCisgICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorfQorCit2b2lk
IERvY3VtZW50Rm9udExvYWRlcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKCkKK3sKKyAgICBsb2Fk
UGVuZGluZ0ZvbnRzKCk7CisKKyAgICAvLyBGSVhNRTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGlu
c3RlYWQuCisgICAgLy8gQ2FsbCBGcmFtZUxvYWRlcjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9h
ZGVyOjpzdWJyZXNvdXJjZUxvYWREb25lIHRvIG1hdGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJj
ZUxvYWRlcjo6bm90aWZ5RG9uZS4KKyAgICBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVy
KCkubG9hZERvbmUoTG9hZENvbXBsZXRpb25UeXBlOjpGaW5pc2gpOworICAgIC8vIEVuc3VyZSB0
aGF0IGlmIHRoZSByZXF1ZXN0IGNvdW50IHJlYWNoZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3
aWxsIGtub3cgYWJvdXQgaXQuCisgICAgLy8gTmV3IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJl
ZCBieSBsYXlvdXQgYWZ0ZXIgdGhlIGRvY3VtZW50IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9y
ZSB3ZSBoYXZlIGRpc3BhdGNoZWQKKyAgICAvLyBkaWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJh
bWUuIE1ha2Ugc3VyZSB0aGUgZGVsZWdhdGUgaXMgYWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tp
bmcgZXhwbGljaXRseS4KKyAgICBpZiAobV9kb2N1bWVudC5mcmFtZSgpKQorICAgICAgICBtX2Rv
Y3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQg
RG9jdW1lbnRGb250TG9hZGVyOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQoreworICAgIGlm
IChtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb250TG9hZGluZ1RpbWVy
LnN0b3AoKTsKKyAgICBhdXRvJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRz
VG9CZWdpbkxvYWRpbmcpIHsKKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENv
dW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgY2FjaGVkUmVzb3VyY2VM
b2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKKyAgICB9CisgICAgbV9m
b250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7CisgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3Io
KS5jbGVhckZvbnRzKCk7CisKKyAgICBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgPSB0cnVlOwor
ICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKK30KKwordm9pZCBEb2N1bWVudEZvbnRMb2FkZXI6OnN1
c3BlbmRGb250TG9hZGluZygpCit7CisgICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKKyAgICBt
X2lzRm9udExvYWRpbmdTdXNwZW5kZWQgPSB0cnVlOworfQorCit2b2lkIERvY3VtZW50Rm9udExv
YWRlcjo6cmVzdW1lRm9udExvYWRpbmcoKQoreworICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3Vz
cGVuZGVkIHx8IG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzRm9udExv
YWRpbmdTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBpZiAoIW1fZm9udHNUb0JlZ2luTG9hZGluZy5p
c0VtcHR5KCkpCisgICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50Rm9udExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Rm9u
dExvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjM2IwNmZmZmRmODIyYjJiMGNkZmFlNTJhMDQ0NzA0ZDEz
ZTljYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGb250
TG9hZGVyLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBNZXRy
b2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2FjaGVkRm9udDsKKworY2xhc3MgRG9jdW1lbnRGb250TG9hZGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEb2N1bWVudEZvbnRMb2FkZXIoRG9jdW1lbnQm
KTsKKyAgICB+RG9jdW1lbnRGb250TG9hZGVyKCk7CisKKyAgICBDYWNoZWRGb250KiBjYWNoZWRG
b250KFVSTCYmLCBib29sLCBib29sLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICB2b2lk
IGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKKworICAgIHZvaWQgbG9hZFBlbmRp
bmdGb250cygpOworICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CisKKyAgICB2
b2lkIHN1c3BlbmRGb250TG9hZGluZygpOworICAgIHZvaWQgcmVzdW1lRm9udExvYWRpbmcoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpOworCisgICAgRG9j
dW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgVGltZXIgbV9mb250TG9hZGluZ1RpbWVyOworICAgIFZl
Y3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2Fk
aW5nOworICAgIGJvb2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBj
NzczODMxYjg4YzJiMDJiMDViYzJmZmI2ZjA1M2U4ZGFmMWE1ZjdhLi5lNzUwYTYyN2FiNjBiYzkz
ZmRiNWY3NTg1OTgzZTZkYTU0OWViYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCisj
aW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9i
YWxTY29wZS5oIgpAQCAtMjMyLDYgKzIzMywxMSBAQCBGb250Q2FjaGUmIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmZvbnRDYWNoZSgpCiAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7
CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmZvbnRMb2FkUmVxdWVzdChTdHJpbmcmLCBib29sLCBib29sLCBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmZvckVhY2hBY3RpdmVET01PYmplY3QoY29uc3QgRnVuY3Rpb248U2hvdWxk
Q29udGludWUoQWN0aXZlRE9NT2JqZWN0Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICAvLyBJdCBp
cyBub3QgYWxsb3dlZCB0byBydW4gYXJiaXRyYXJ5IHNjcmlwdCBvciBjb25zdHJ1Y3QgbmV3IEFj
dGl2ZURPTU9iamVjdHMgd2hpbGUgd2UgYXJlIGl0ZXJhdGluZyBvdmVyIEFjdGl2ZURPTU9iamVj
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBl
OGJmMGVmY2I2YmJhMTI2MGYwYTkwYjc5NzU0MzgxNmIwZGYxYmJiLi5jOTk4YjEyZjI5Y2M2OTY4
YjljOTY2NWIwNjVmZDEyZDc4ZDU3YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5o
IgpAQCAtNjYsNiArNjcsNyBAQCBjbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRMb29wVGFz
a0dyb3VwOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGb250Q2FjaGU7CitjbGFzcyBGb250
TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIFB1YmxpY1VSTE1hbmFnZXI7
CiBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwpAQCAtMTY1LDYgKzE2Nyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUoKTsKICAgICB2aXJ0dWFsIENT
U0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0
KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJB
Z2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3QmKSB7IH0KIAogICAgIHZvaWQg
cmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIGRlcmVmKCkg
eyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggYzRlNDZlODcyYzZhNmQwMjMxN2ViMTgyMTU1MjU2M2Zm
ZWE1NWNmYS4uNjkzNGRmZGRiYmUyYTliOGNkYjIyMTBkMWQ2MzE1MzkzZmU1NDIyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcmNoaXZlLmgiCiAj
aW5jbHVkZSAiQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIkNTU0ZvbnRT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSYXdS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCkBAIC0zMzgsNyAr
MzM3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIGNhbmNlbEFs
bChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycyk7CiAKICAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9yKCku
c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKyAgICAgICAgZG9jdW1lbnQtPnN1c3BlbmRGb250
TG9hZGluZygpOwogCiAgICAgLy8gQXBwY2FjaGUgdXNlcyBSZXNvdXJjZUhhbmRsZSBkaXJlY3Rs
eSwgRG9jdW1lbnRMb2FkZXIgZG9lc24ndCBjb3VudCB0aGVzZSBsb2Fkcy4KICAgICBtX2FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LT5zdG9wTG9hZGluZ0luRnJhbWUoKm1fZnJhbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMzQ1YTgyZTQ2Mjg1YTE5
YjU0Y2RkYWZmNjIyMThjMDY1ZWUyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZv
bnRUYWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250OworY2xhc3MgRm9udERlc2NyaXB0aW9u
OworY2xhc3MgRm9udExvYWRSZXF1ZXN0Oworc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0
dGluZ3M7Cit1c2luZyBGb250RmVhdHVyZVNldHRpbmdzID0gRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD47CisKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+Rm9udExvYWRSZXF1ZXN0Q2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBm
b250TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIHsgfQorfTsKKworY2xhc3MgRm9udExvYWRSZXF1
ZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZFJlcXVlc3QoKSA9IGRlZmF1bHQ7
CisKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJy
ZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Rm9u
dD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0
IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVu
dCopID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEZvbnRMb2FkUmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNk
ZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05UTE9BRFJFUVVFU1QoVG9WYWx1ZVR5cGVO
YW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5
cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRMb2Fk
UmVxdWVzdCYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNTM1N2E4ZTVkMGI3ZjBi
NmExYWRlNGRjYTA4OGExYjI3OWYxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVl
c3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRGb250TG9hZFJlcXVl
c3QgZmluYWwgOiBwdWJsaWMgRm9udExvYWRSZXF1ZXN0LCBwdWJsaWMgQ2FjaGVkRm9udENsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2FjaGVkRm9u
dExvYWRSZXF1ZXN0KENhY2hlZEZvbnQmIGZvbnQpCisgICAgICAgIDogbV9mb250KCZmb250KQor
ICAgIHsKKyAgICB9CisKKyAgICB+Q2FjaGVkRm9udExvYWRSZXF1ZXN0KCkKKyAgICB7CisgICAg
ICAgIGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkKKyAgICAgICAgICAgIG1fZm9udC0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKKyAgICB9CisKKyAgICBDYWNoZWRGb250JiBjYWNoZWRGb250KCkg
Y29uc3QgeyByZXR1cm4gKm1fZm9udDsgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mb250LT51cmwoKTsgfQorICAgIGJvb2wgaXNMb2Fk
aW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mb250LT5pc0xvYWRpbmcoKTsgfQorICAgIGJv
b2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZm9udC0+ZXJyb3JPY2N1
cnJlZCgpOyB9CisKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSkgZmluYWwgeyByZXR1cm4gbV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0
YShyZW1vdGVVUkkpOyB9CisgICAgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29s
IHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNl
dHRpbmdzJiBzZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyBjYXBh
YmlsaXRpZXMpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9mb250LT5jcmVhdGVGb250
KGRlc2NyaXB0aW9uLCByZW1vdGVVUkksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywg
c2V0dGluZ3MsIGNhcGFiaWxpdGllcyk7CisgICAgfQorCisgICAgdm9pZCBzZXRDbGllbnQoRm9u
dExvYWRSZXF1ZXN0Q2xpZW50KiBjbGllbnQpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvKiBv
bGRDbGllbnQgPSBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudDsKKyAgICAgICAgbV9mb250TG9hZFJl
cXVlc3RDbGllbnQgPSBjbGllbnQ7CisKKyAgICAgICAgaWYgKCFjbGllbnQgJiYgb2xkQ2xpZW50
KQorICAgICAgICAgICAgbV9mb250LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICBlbHNl
IGlmIChjbGllbnQgJiYgIW9sZENsaWVudCkKKyAgICAgICAgICAgIG1fZm9udC0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGlzQ2FjaGVkRm9udExvYWRSZXF1ZXN0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBmb250TG9hZGVkKENhY2hlZEZv
bnQmIGZvbnQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGZvbnQsICZmb250
ID09IG1fZm9udC5nZXQoKSk7CisgICAgICAgIGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkK
KyAgICAgICAgICAgIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsK
KyAgICB9CisKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7Cisg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19GT05UTE9BRFJFUVVFU1QoV2ViQ29yZTo6Q2FjaGVkRm9udExvYWRSZXF1ZXN0LCBpc0Nh
Y2hlZEZvbnRMb2FkUmVxdWVzdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcAppbmRleCA4N2ZjNThjMWI0MTM4YzE3NmI5YjNhNmMwMTkwN2NlYzBmOTdh
ZTU5Li43NzUyYWY5NTUyYjU3NDM0NmQ2MjhkNGY3ZmE4Zjc2YzM2MGQ0OGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMTEyLDggKzExMiw2
IEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogICAgICAgICBhbGxX
b3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKGxvY2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlm
aWVyKCkpOwogICAgIH0KIAotICAgIGlmIChtX2Nzc0ZvbnRTZWxlY3RvcikKLSAgICAgICAgbV9j
c3NGb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogICAgIG1fcGVyZm9y
bWFuY2UgPSBudWxscHRyOwogICAgIG1fY3J5cHRvID0gbnVsbHB0cjsKIAo=
</data>
<flag name="commit-queue"
          id="445606"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425613</attachid>
            <date>2021-04-09 05:10:14 -0700</date>
            <delta_ts>2021-04-12 01:06:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210409131013.patch</filename>
            <type>text/plain</type>
            <size>63314</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uMzMxNGRmN2M3ZmIyYWNhODdiNzZmZTlkMDEyMTRj
MzMyOWY4NDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRM
b2FkUmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisg
ICAgICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBh
bGxvdyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9j
dW1lbnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0Zv
bnRTZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisg
ICAgICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGlt
cGxlbWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5
IGZvciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6IEFkZGVkIEZvbnRMb2FkUmVxdWVzdC5oLCBDYWNoZWRGb250TG9hZFJlcXVl
c3QuaAorICAgICAgICAgIGFuZCBEb2N1bWVudEZvbnRMb2FkZXIuaC4KKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDogQWRkZWQgRG9jdW1lbnRGb250TG9hZGVyLmNwcC4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIGZpbGVzIGxpc3RlZCBhYm92ZS4KKwor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6IFVwZGF0ZSB0byBub3QgcmVxdWlyZSBEb2N1
bWVudCBmb3IgY3VzdG9tIGZvbnQgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlOjphcHBlbmRTb3VyY2VzKToKKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHA6IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGluc3RlYWQgb2YgQ2FjaGVkRm9udC4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRGYWNlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxs
eVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U291cmNlOjpmb250TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNl
Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjppc1NWR0ZvbnRGYWNlU291cmNlIGNv
bnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDogVXBkYXRlIHRvIHVzZSBGb250TG9hZFJlcXVlc3Qg
YW5kCisgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIENhY2hlZFJl
c291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Zm9u
dExvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgorCisg
ICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6IFJlbW92ZSBEb2N1bWVudC1zcGVjaWZp
YyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Y2xlYXJGb250cyk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDogSW1wbGVtZW50IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdAorICAg
ICAgICAgIGFuZCA6OmJlZ2luTG9hZGluZ0ZvbnRTb29uLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExh
c3RSZWYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZEZvbnRMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpmb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgICogZG9tL0RvY3VtZW50Rm9udExvYWRlci5j
cHA6IEFkZGVkLiBOZXcgY2xhc3MgdG8gaGFuZGxlIERvY3VtZW50LXNwZWNpZmljCisgICAgICAg
ICAgZm9udC1sb2FkaW5nIGNvZGUgdGhhdCB3YXMgcHJldmlvdXNseSBpbiBDU1NGb250U2VsZWN0
b3IgYW5kCisgICAgICAgICAgQ1NTRm9udEZhY2VTcmNWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Rm9udExvYWRlcjo6RG9jdW1lbnRGb250TG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Rm9udExvYWRlcjo6fkRvY3VtZW50Rm9udExvYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudEZvbnRMb2FkZXI6OmNhY2hlZEZvbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRGb250TG9hZGVyOjpiZWdpbkxvYWRpbmdGb250U29vbik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudEZvbnRMb2FkZXI6OmxvYWRQZW5kaW5nRm9udHMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpmb250TG9hZGluZ1RpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9u
dHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpzdXNwZW5kRm9udExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpyZXN1bWVGb250
TG9hZGluZyk6CisgICAgICAgICogZG9tL0RvY3VtZW50Rm9udExvYWRlci5oOgorCisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBBZGQgZnVuY3Rpb25zIHRvIGluaXRp
YXRlIGZvbnQgbG9hZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmJl
Z2luTG9hZGluZ0ZvbnRTb29uKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6IENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIKKyAgICAgICAgICBp
cyBub3cgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKKyAgICAgICAgKiBsb2FkZXIvRm9udExvYWRS
ZXF1ZXN0Lmg6IEFkZGVkLiBBbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGZvbnQgbG9hZGluZworICAg
ICAgICAgIHRoYXQgYWJzdHJhY3RzIHNvbWUgb2YgdGhlIGJlaGF2aW91ciBvZiBDYWNoZWRSZXNv
dXJjZSwgQ2FjaGVkRm9udCBhbmQKKyAgICAgICAgICBDYWNoZWRGb250Q2xpZW50LgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRMb2FkUmVxdWVzdENsaWVudDo6aXNDYWNoZWRGb250TG9hZFJlcXVlc3Qg
Y29uc3QpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5o
OiBBZGRlZC4gQW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICBGb250TG9hZFJlcXVlc3Qg
Zm9yIENhY2hlZEZvbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cDogUmVtb3ZlIG5vdy1yZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwogMjAyMS0w
NC0wNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlkaUNvbnRl
eHQgY2FjaGluZyBpcyBub3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFhMzkx
ODJkNDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjEyZmRiYThhYzIyNzkwYjUzOWQz
YTE0NmI0ODkzYThiMjNiMTg2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDM3LDYgKzQzNyw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vRGV2aWNl
T3JpZW50YXRpb25EYXRhLmgKICAgICBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1p
c3Npb25TdGF0ZS5oCiAgICAgZG9tL0RvY3VtZW50LmgKKyAgICBkb20vRG9jdW1lbnRGb250TG9h
ZGVyLmgKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5oCiAgICAgZG9tL0RvY3VtZW50RnVsbHNj
cmVlbi5oCiAgICAgZG9tL0RvY3VtZW50TWFya2VyLmgKQEAgLTc3Niw2ICs3NzcsNyBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCiAgICAgbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAogICAgIGxvYWRlci9GZXRj
aE9wdGlvbnMuaAorICAgIGxvYWRlci9Gb250TG9hZFJlcXVlc3QuaAogICAgIGxvYWRlci9Gb3Jt
U3RhdGUuaAogICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5oCiAgICAgbG9hZGVyL0ZyYW1lTG9h
ZFJlcXVlc3QuaApAQCAtODI4LDYgKzgzMCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKIAogICAgIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCiAK
KyAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgKICAgICBsb2FkZXIvY2Fj
aGUvQ2FjaGVQb2xpY3kuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCiAgICAgbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWU0ZmE2MGNj
ZGRhZmRjMTVkZDY1MTM5MWYxYjIxMTZiMzczNGE0NS4uM2ZkMzhkYWE5NWI0NmMxMTk1MTY0NjRm
NWI5ZWM0NWMxOTA4YzI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTkyMiw2ICs5MjIsNyBAQCBkb20v
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAogZG9tL0RldmljZU9yaWVudGF0aW9uRGF0
YS5jcHAKIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAogZG9tL0RvY3VtZW50LmNwcAor
ZG9tL0RvY3VtZW50Rm9udExvYWRlci5jcHAKIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKIGRvbS9Eb2N1bWVudFBhcnNlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3NTMwMmRiMGQwYzY4MjIzMWY1NjJmZTkwOGM5ZWIxNTExYjNmOTYxLi5lNGJhOGNhMTk1NjU4
MThhNzQxOGZhMGRkMjc4MDgwZGUxYzI1YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDQyLDYgKzIwNDIsNyBAQAogCQk2
NTY1ODIwMjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8q
IFhMaW5rTmFtZXMuaCAqLzsgfTsKIAkJNjU2RDM3MzIwQURCQTVERTAwQTQ1NTREIC8qIExvYWRl
ck5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTZEMzcxQTBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczNjBB
REJBNURFMDBBNDU1NEQgLyogRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1
bWVudExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFC
NzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczQTBBREJBNURFMDBBNDU1NEQgLyogRm9y
bVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTZEMzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3M0MwQURCQTVERTAwQTQ1NTRE
IC8qIEZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTZEMzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczRTBBREJB
NURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzI2MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFt
ZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yODkzLDYgKzI4OTQsNyBAQAogCQk5M0YxOThGNjA4MjQ1RTU5MDAxRTlBQkMg
LyogVGV4dFJlc291cmNlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjUyM0QyNzkwMkRFNDNENzAxODYzNUNBIC8qIFRleHRSZXNvdXJjZURl
Y29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0YxOTkxODA4MjQ1RTU5MDAxRTlBQkMgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMzA0MDJERTQ0NzYwMTg2MzVDQSAvKiBS
YW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBD
dXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTg3ODY0OTAyREUz
QTlBMDFFQTQxMjIgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5NTAwODI0NUU1OTAwMUU5QUJD
IC8qIENhY2hlUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk2MzA4MjQ1
RTU5MDAxRTlBQkMgLyogU1NMS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODY2MjAyREUzQjExMDFFQTQxMjIgLyogU1NMS2V5
R2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGMTk5OEMwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTU1QTQxMDNENzI5
MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVlQXNUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0NzYsNiArMzQ3OCw3IEBACiAJCUE4MTg1RjM5
MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1
bWVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBODE4NUYzQjA5NzY1NzY2MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMzMDk3NjU3
NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODE4NUYzNTA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE4MTg1RjQ1
MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM1NTk3NjU3NjUwMDU4MjZEOSAv
KiBEb2N1bWVudEZvbnRMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM4MDk3
NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE4MTg3MjFCMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODcy
MTAwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENv
bnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4MTg3MjExMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3NjEsNiArOTc2NCw3
IEBACiAJCTY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybVN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzIzMEFEQkE1REUwMEE0NTU0RCAvKiBGb3Jt
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1TdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1ODQzNjg1MEFFMDFCNzQwMEU1
Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZE
MzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1NkQzNzI2MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkZXJDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjcwQURCQTVERTAwQTQ1NTREIC8qIFJlc291
cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MzYsOSArMTI5NDAsMTEg
QEAKIAkJQTgxODVGMzIwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUlt
cGxlbWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01JbXBs
ZW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE4NUYzNDA5NzY1
NzY1MDA1ODI2RDkgLyogRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgx
ODVGMzQ1OTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRGb250TG9hZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERv
Y3VtZW50RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3Vt
ZW50RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzYwOTc2
NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBET01JbXBsZW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4MTg1RjM3MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudEZy
YWdtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgxODVGMzU1OTc2NTc2
NTAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9jdW1lbnRGb250TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTg1RjM4MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTgxODcyMTAwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4NTEsNiArMTY4NTcsNyBAQAogCQlGNTVCM0RBQzEy
NTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWVrSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY1ODc4NEYwMDJERTM3NTkwMUVBNDEyMiAvKiBDdXJzb3JNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDdXJzb3JNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQlGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZyYW1lVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnJhbWVW
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OworCQk4NTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlZEZvbnRMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2NDkwMkRFM0E5QTAxRUE0MTIyIC8qIENhY2hl
UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhY2hlUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODY2MjAyREUzQjExMDFFQTQxMjIgLyogU1NMS2V5R2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNTTEtleUdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
dXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CkBAIC0yNTkzNyw2ICsyNTk0NCw3IEBACiAJCQkJQkM2NEI0QzkwQ0I0Mjk1RDAwNUYy
QjYyIC8qIENhY2hlZEZvbnQuY3BwICovLAogCQkJCUJDNjRCNENBMENCNDI5NUQwMDVGMkI2MiAv
KiBDYWNoZWRGb250LmggKi8sCiAJCQkJMUFFRjRFNjYxNzBFMTYwMzAwQUIyNzk5IC8qIENhY2hl
ZEZvbnRDbGllbnQuaCAqLywKKwkJCQk4NTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVk
Rm9udExvYWRSZXF1ZXN0LmggKi8sCiAJCQkJQkNCMTZDMDIwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmNwcCAqLywKIAkJCQlCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
SW1hZ2UuaCAqLywKIAkJCQkzMTlGQkQ1RDE1RDJGNDQ0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VD
bGllbnQuaCAqLywKQEAgLTI3NTg1LDYgKzI3NTkzLDcgQEAKIAkJCQlDRUJCOEMzMjIwNzg2RENC
MDAwMzk1NDcgLyogRmV0Y2hJZGlvbXMuY3BwICovLAogCQkJCUNFQkI4QzMxMjA3ODZEQ0IwMDAz
OTU0NyAvKiBGZXRjaElkaW9tcy5oICovLAogCQkJCTQxQUQ3NTM5MUNFRjZCQ0UwMEEzMTQ4NiAv
KiBGZXRjaE9wdGlvbnMuaCAqLywKKwkJCQk2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9u
dExvYWRSZXF1ZXN0LmggKi8sCiAJCQkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1T
dGF0ZS5jcHAgKi8sCiAJCQkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5o
ICovLAogCQkJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAg
Ki8sCkBAIC0zMDI4OSw2ICszMDI5OCw4IEBACiAJCQkJQTgxODVGMzgwOTc2NTc2NTAwNTgyNkQ5
IC8qIERvY3VtZW50LmggKi8sCiAJCQkJNjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIwIC8qIERvY3Vt
ZW50LmlkbCAqLywKIAkJCQk4MzI5QTQxNzFFQzI1QjJCMDA4RUQ0QkUgLyogRG9jdW1lbnRBbmRF
bGVtZW50RXZlbnRIYW5kbGVycy5pZGwgKi8sCisJCQkJQTgxODVGMzQ1OTc2NTc2NTAwNTgyNkQ5
IC8qIERvY3VtZW50Rm9udExvYWRlci5jcHAgKi8sCisJCQkJQTgxODVGMzU1OTc2NTc2NTAwNTgy
NkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oICovLAogCQkJCUE4MTg1RjM3MDk3NjU3NjUwMDU4
MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzNTA5NzY1NzY1MDA1
ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oICovLAogCQkJCTFBNDk0RUQ1MEExMjNGMUEwMEZE
QUZDMSAvKiBEb2N1bWVudEZyYWdtZW50LmlkbCAqLywKQEAgLTMxNjE0LDYgKzMxNjI1LDcgQEAK
IAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRG
b250Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMg
LyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUMwQUEzOTBG
MkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQ0JG
Qzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTU2LDYgKzMyMTY4LDcgQEAKIAkJCQlCMkYzNEZF
NjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2RjEy
RDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTgxODVGNDUwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJh
Z21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTJGNTEzMjI2MEZGRUUwMEY4N0JCMyAvKiBE
b2N1bWVudEZ1bGxzY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODI2QkYyMjNGQjU5Nzcw
MEI5MjJCMSAvKiBEb2N1bWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzI0MjYs
NiArMzI0MzksNyBAQAogCQkJCTFDMjRFRUE1MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMxMkFDMkIxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MkVFM0E3
MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzRBNTMyRjI1NjA1N0NEMDAyOEM1OTIgLyogRm9udExvYWRUaW1pbmdP
dmVycmlkZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8q
IEZvbnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcAppbmRleCA4MTcxYWNjZWE3ZWY0N2NiMTUzOTk1ZTk0YWE4YTAxMTlkN2FlMzYw
Li5mYTRjNzI5NGI1NjhkMTlmYzhiYjkxOWJjYTI3YmIyYzMyOGM2NzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5jcHAKQEAgLTc2LDEwICs3Niw5IEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFw
cGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3Qs
IFNjCiAgICAgICAgIGlmICghaXRlbS5pc0xvY2FsKCkpIHsKICAgICAgICAgICAgIGNvbnN0IGF1
dG8qIHNldHRpbmdzID0gY29udGV4dCA/ICZjb250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpIDogbnVs
bHB0cjsKICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8
fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCk7
Ci0gICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9y
bWF0KCkgJiYgaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwotICAgICAgICAgICAgICAg
IGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KCZkb2N1bWVudCwg
Zm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkK
LSAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpj
YWNoZWRGb250KTsKKyAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNT
dXBwb3J0ZWRGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGZvbnRSZXF1ZXN0
ID0gaXRlbS5mb250TG9hZFJlcXVlc3QoY29udGV4dCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3Vy
Y2UoKSwgKmNvbnRleHQtPmNzc0ZvbnRTZWxlY3RvcigpLCBtYWtlVW5pcXVlUmVmRnJvbU5vbk51
bGxVbmlxdWVQdHIoV1RGTW92ZShmb250UmVxdWVzdCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBzb3VyY2UgPSAoZm9udEZhY2VFbGVtZW50ID8gbWFrZVVu
aXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmZvbnRG
YWNlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4
IGJjMzIzYzJmMmVjMDFhNzdhZDUwODMzMTEyZTE5NjAwMzA4YTczZWQuLmE1ZWY1YWY1ZDZmZTQ0
YzVlYzA0YmQ3NTI0ZWM1Zjc4ZDRhY2Y2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2Uu
aCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDYWNoZWRGb250Lmgi
CisjaW5jbHVkZSAiQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU1ZH
Rm9udC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udC5oIgpAQCAtNzIs
MTkgKzcyLDE5IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiB7CiB9CiAKLUNTU0ZvbnRGYWNl
U291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmlu
ZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgQ2FjaGVk
Rm9udCYgZm9udCkKK0NTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250
RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0
b3ImIGZvbnRTZWxlY3RvciwgVW5pcXVlUmVmPEZvbnRMb2FkUmVxdWVzdD4mJiByZXF1ZXN0KQog
ICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFtaWx5TmFtZU9yVVJJKQogICAgICwgbV9mYWNlKG93
bmVyKQogICAgICwgbV9mb250U2VsZWN0b3IobWFrZVdlYWtQdHIoZm9udFNlbGVjdG9yKSkKLSAg
ICAsIG1fZm9udCgmZm9udCkKKyAgICAsIG1fZm9udFJlcXVlc3QocmVxdWVzdC5tb3ZlVG9Vbmlx
dWVQdHIoKSkKIHsKICAgICAvLyBUaGlzIG1heSBzeW5jaHJvbm91c2x5IGNhbGwgZm9udExvYWRl
ZCgpLgotICAgIG1fZm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2ZvbnRSZXF1ZXN0LT5z
ZXRDbGllbnQodGhpcyk7CiAKLSAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYm
IG1fZm9udC0+aXNMb2FkZWQoKSkgeworICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRp
bmcgJiYgIW1fZm9udFJlcXVlc3QtPmlzTG9hZGluZygpKSB7CiAgICAgICAgIHNldFN0YXR1cyhT
dGF0dXM6OkxvYWRpbmcpOwogICAgICAgICBpZiAoIXNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxl
dGlvbnMoKSkgewotICAgICAgICAgICAgaWYgKG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpKQorICAg
ICAgICAgICAgaWYgKG1fZm9udFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgICAg
ICAgICBzZXRTdGF0dXMoU3RhdHVzOjpGYWlsdXJlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTEwOSw4ICsxMDksOCBA
QCBDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVy
LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbQogCiBDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRG
YWNlU291cmNlKCkKIHsKLSAgICBpZiAobV9mb250KQotICAgICAgICBtX2ZvbnQtPnJlbW92ZUNs
aWVudCgqdGhpcyk7CisgICAgaWYgKG1fZm9udFJlcXVlc3QpCisgICAgICAgIG1fZm9udFJlcXVl
c3QtPnNldENsaWVudChudWxscHRyKTsKIH0KIAogYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hv
dWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpIGNvbnN0CkBAIC0xMjAsMjkgKzEyMCwyOSBA
QCBib29sIENTU0ZvbnRGYWNlU291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25z
KCkgY29uc3QKIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFy
dEZvbnREYXRhVVJMTG9hZGluZygpCiB7Ci0gICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVu
ZGluZyAmJiBtX2ZvbnQgJiYgbV9mb250LT51cmwoKS5wcm90b2NvbElzRGF0YSgpICYmIG1fZmFt
aWx5TmFtZU9yVVJJLmxlbmd0aCgpIDwgTUIpCisgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6
UGVuZGluZyAmJiBtX2ZvbnRSZXF1ZXN0ICYmIG1fZm9udFJlcXVlc3QtPnVybCgpLnByb3RvY29s
SXNEYXRhKCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKICAgICAgICAgbG9h
ZCgpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKENhY2hlZEZvbnQm
IGxvYWRlZEZvbnQpCit2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKEZvbnRMb2Fk
UmVxdWVzdCYgZm9udFJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2FkZWRGb250LCAm
bG9hZGVkRm9udCA9PSBtX2ZvbnQuZ2V0KCkpOworICAgIEFTU0VSVF9VTlVTRUQoZm9udFJlcXVl
c3QsICZmb250UmVxdWVzdCA9PSBtX2ZvbnRSZXF1ZXN0LmdldCgpKTsKIAogICAgIGlmIChzaG91
bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZjxDU1NGb250RmFjZT4gcHJvdGVjdGVkRmFjZShtX2ZhY2UpOwogCi0gICAgLy8gSWYgdGhlIGZv
bnQgaXMgaW4gdGhlIGNhY2hlLCB0aGlzIHdpbGwgYmUgc3luY2hyb25vdXNseSBjYWxsZWQgZnJv
bSBDYWNoZWRGb250OjphZGRDbGllbnQoKS4KKyAgICAvLyBJZiB0aGUgZm9udCBpcyBpbiB0aGUg
Y2FjaGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5IGNhbGxlZCBmcm9tIEZvbnRMb2FkUmVx
dWVzdDo6YWRkQ2xpZW50KCkuCiAgICAgaWYgKG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGluZykK
ICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAgICAgZWxzZSBpZiAobV9zdGF0
dXMgPT0gU3RhdHVzOjpGYWlsdXJlKSB7CiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGJl
IGNhbGxlZCB0d2ljZSBpZiBsb2FkaW5nIHdhcyBjYW5jZWxsZWQuCi0gICAgICAgIEFTU0VSVCht
X2ZvbnQtPmVycm9yT2NjdXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChtX2ZvbnRSZXF1ZXN0LT5l
cnJvck9jY3VycmVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fZm9u
dC0+ZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFt
aWx5TmFtZU9yVVJJKSkKKyAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpIHx8
ICFtX2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWlseU5hbWVPclVSSSkp
CiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgIGVsc2UKICAgICAgICAg
c2V0U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBAIC0xNTQsOSArMTU0LDEwIEBAIHZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHNldFN0YXR1
cyhTdGF0dXM6OkxvYWRpbmcpOwogCi0gICAgaWYgKG1fZm9udCkgeworICAgIGlmIChtX2ZvbnRS
ZXF1ZXN0KSB7CiAgICAgICAgIEFTU0VSVChtX2ZvbnRTZWxlY3Rvcik7Ci0gICAgICAgIG1fZm9u
dFNlbGVjdG9yLT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBtX2ZvbnRTZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQor
ICAgICAgICAgICAgY29udGV4dC0+YmVnaW5Mb2FkaW5nRm9udFNvb24oKm1fZm9udFJlcXVlc3Qp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICBp
ZiAobV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAgLTE5OCw3ICsxOTksNyBAQCBSZWZQdHI8
Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIGJvbwogCiAgICAgYm9vbCB1c2VzSW5Eb2N1bWVudFNWR0ZvbnQgPSBtX2hh
c1NWR0ZvbnRGYWNlRWxlbWVudDsKIAotICAgIGlmICghbV9mb250ICYmICF1c2VzSW5Eb2N1bWVu
dFNWR0ZvbnQpIHsKKyAgICBpZiAoIW1fZm9udFJlcXVlc3QgJiYgIXVzZXNJbkRvY3VtZW50U1ZH
Rm9udCkgewogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIGlm
ICghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjEwLDEyICsyMTEsMTIgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRG
YWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBi
b28KICAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShm
b250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCAmZm9udEZhY2VGZWF0dXJlcywgZm9u
dEZhY2VDYXBhYmlsaXRpZXMsIHRydWUpOwogICAgIH0KIAotICAgIGlmIChtX2ZvbnQpIHsKLSAg
ICAgICAgYXV0byBzdWNjZXNzID0gbV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWls
eU5hbWVPclVSSSk7CisgICAgaWYgKG1fZm9udFJlcXVlc3QpIHsKKyAgICAgICAgYXV0byBzdWNj
ZXNzID0gbV9mb250UmVxdWVzdC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlOYW1lT3JV
UkkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCiAgICAgICAg
IEFTU0VSVChzdGF0dXMoKSA9PSBTdGF0dXM6OlN1Y2Nlc3MpOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IG1fZm9udC0+Y3JlYXRlRm9udChmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJ
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRG
YWNlQ2FwYWJpbGl0aWVzKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2ZvbnRSZXF1ZXN0LT5j
cmVhdGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VDYXBhYmlsaXRp
ZXMpOwogICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CkBAIC0yMzIsNyArMjMzLDExIEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6
Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKIGJvb2wg
Q1NTRm9udEZhY2VTb3VyY2U6OmlzU1ZHRm9udEZhY2VTb3VyY2UoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB8fCBpczxDYWNoZWRTVkdGb250PihtX2ZvbnQu
Z2V0KCkpOworICAgIGlmICghbV9oYXNTVkdGb250RmFjZUVsZW1lbnQgfHwgIWlzPENhY2hlZEZv
bnRMb2FkUmVxdWVzdD4obV9mb250UmVxdWVzdC5nZXQoKSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8qIGNhY2hlZEZvbnRSZXF1ZXN0ID0gZG93bmNhc3Q8Q2FjaGVkRm9udExv
YWRSZXF1ZXN0PihtX2ZvbnRSZXF1ZXN0LmdldCgpKTsKKyAgICByZXR1cm4gaXM8Q2FjaGVkU1ZH
Rm9udD4oY2FjaGVkRm9udFJlcXVlc3QtPmNhY2hlZEZvbnQoKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggNTkyY2U4MzFjNWE5Mjg2M2UwNGViZGI3
NmVmM2FjMThmNTFjMTNiZC4uMzBkNzk5N2ZmMTcxMTlkZTQ3NmU0NzM1NDI1NTc0MjRmOGY3ODg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTI1LDggKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCi0jaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVlc3Qu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTQ3
LDExICs0NiwxMSBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwogCi1jbGFzcyBDU1NGb250RmFjZVNvdXJjZSBmaW5hbCA6
IHB1YmxpYyBDYWNoZWRGb250Q2xpZW50IHsKK2NsYXNzIENTU0ZvbnRGYWNlU291cmNlIGZpbmFs
IDogcHVibGljIEZvbnRMb2FkUmVxdWVzdENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVy
LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSk7Ci0gICAgQ1NTRm9udEZhY2VTb3VyY2Uo
Q1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NTRm9u
dFNlbGVjdG9yJiwgQ2FjaGVkRm9udCYpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRG
YWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3Rv
ciYsIFVuaXF1ZVJlZjxGb250TG9hZFJlcXVlc3Q+JiYpOwogICAgIENTU0ZvbnRGYWNlU291cmNl
KENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFNWR0Zv
bnRGYWNlRWxlbWVudCYpOwogICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25l
ciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFJlZjxKU0M6OkFycmF5QnVmZmVyVmll
dz4mJik7CiAgICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTb3VyY2UoKTsKQEAgLTc2LDIyICs3NSwy
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkKERvY3VtZW50KiA9IG51bGxwdHIpOwogICAgIFJl
ZlB0cjxGb250PiBmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9s
ZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAotICAgIENhY2hlZEZvbnQqIGNhY2hl
ZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0KLSAgICBib29sIHJlcXVpcmVz
RXh0ZXJuYWxSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQorICAgIEZvbnRMb2Fk
UmVxdWVzdCogZm9udExvYWRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9mb250UmVxdWVzdC5n
ZXQoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9mb250UmVxdWVzdC5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1NWR0ZvbnRGYWNlU291cmNl
KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVGb250TG9hZENvbXBs
ZXRpb25zKCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCYpIG92ZXJy
aWRlOworICAgIHZvaWQgZm9udExvYWRlZChGb250TG9hZFJlcXVlc3QmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyk7CiAKICAgICBBdG9tU3RyaW5nIG1fZmFtaWx5TmFt
ZU9yVVJJOyAvLyBVUkkgZm9yIHJlbW90ZSwgYnVpbHQtaW4gZm9udCBuYW1lIGZvciBsb2NhbC4K
ICAgICBDU1NGb250RmFjZSYgbV9mYWNlOyAvLyBPdXIgb3duaW5nIGZvbnQgZmFjZS4KICAgICBX
ZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9u
dHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkRm9udD4gbV9mb250OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byBv
dXIgY2FjaGVkIHJlc291cmNlLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+
IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRo
ZSByZXNvdXJjZSByZXF1ZXN0LgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0
ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0
ZVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRl
eCA1MzlmZDQ4ODk2OWVmYTZmYWQ1ZmVhNGQzYzhhMTdiNzJmNzE5ZWU1Li4yMzllZTQwMDQxZGQx
N2Q4YTcwOGI4YjI2ZjgxMzBlZGU3NTM3YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuY3BwCkBAIC0yOSwxMCArMjksMTEgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKLSNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJG
b250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU1ZHRm9udEZh
Y2VFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NzYsMTkgKzc3LDE2IEBAIGJvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6dHJhdmVyc2VTdWJyZXNv
dXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDCiAgICAgcmV0dXJuIGhhbmRs
ZXIoKm1fY2FjaGVkRm9udCk7CiB9CiAKLUNhY2hlZEZvbnQqIENTU0ZvbnRGYWNlU3JjVmFsdWU6
OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlh
dGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udExv
YWRSZXF1ZXN0PiBDU1NGb250RmFjZVNyY1ZhbHVlOjpmb250TG9hZFJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVt
ZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewogICAgIGlmIChtX2NhY2hlZEZvbnQpCi0gICAg
ICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhY2hlZEZvbnRMb2FkUmVxdWVzdD4oKm1fY2FjaGVkRm9udCk7CiAKLSAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCk7Ci0gICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uID0gaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSA/IENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7Ci0gICAgb3B0aW9ucy5sb2FkZWRG
cm9tT3BhcXVlU291cmNlID0gbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlOworICAgIGF1dG8gcmVx
dWVzdCA9IGNvbnRleHQtPmZvbnRMb2FkUmVxdWVzdChtX3Jlc291cmNlLCBpc1NWRywgaXNJbml0
aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgbV9sb2FkZWRGcm9tT3BhcXVlU291
cmNlKTsKKyAgICBpZiAoaXM8Q2FjaGVkRm9udExvYWRSZXF1ZXN0PihyZXF1ZXN0LmdldCgpKSkK
KyAgICAgICAgbV9jYWNoZWRGb250ID0gJmRvd25jYXN0PENhY2hlZEZvbnRMb2FkUmVxdWVzdD4o
cmVxdWVzdC5nZXQoKSktPmNhY2hlZEZvbnQoKTsKIAotICAgIENhY2hlZFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxldGVVUkwobV9yZXNvdXJj
ZSkpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVudC0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWRyku
dmFsdWVfb3IobnVsbHB0cik7Ci0gICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKKyAgICBy
ZXR1cm4gcmVxdWVzdDsKIH0KIAogYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjplcXVhbHMoY29u
c3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBjNWRjNTlmZDk2YTFiZTMyODM2MzQ0ZmYxOWQ5NTg3
NzI5MjZkN2I0Li5jYmUxNDExZTQ2YzRlZDc2ZTcxMWJjMzQxZTY1OTkwM2Y1MGZhYmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTM0LDggKzM0LDkgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkRm9udDsKLWNsYXNzIERvY3VtZW50
OworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OworY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgQ1NTRm9udEZhY2VTcmNWYWx1ZSBm
aW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CkBAIC02Niw3ICs2Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKLSAgICBDYWNo
ZWRGb250KiBjYWNoZWRGb250KERvY3VtZW50KiwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dExvYWRSZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGJv
b2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7
CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggYzExNTc4Y2ZjNTA0MTJj
YmE2YzU1MzBmOTRiZThhYTM2MzQ0NzVjYy4uYWNkMmExY2MyNGUzNGMwNTRkMDM3ODIzNDg3NzM3
Y2ZlYzdmZWI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTY4
LDcgKzY4LDYgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fZm9udENhY2hlKG1ha2VSZWYoY29udGV4dC5m
b250Q2FjaGUoKSkpCiAgICAgLCBtX2Nzc0ZvbnRGYWNlU2V0KENTU0ZvbnRGYWNlU2V0OjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX2ZvbnRNb2RpZmllZE9ic2VydmVyKFt0aGlzXSB7IGZvbnRNb2Rp
ZmllZCgpOyB9KQotICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmQ1NTRm9udFNlbGVj
dG9yOjpmb250TG9hZGluZ1RpbWVyRmlyZWQpCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9udFNlbGVj
dG9ySWQpCiAgICAgLCBtX3ZlcnNpb24oMCkKIHsKQEAgLTkzLDcgKzkyLDcgQEAgQ1NTRm9udFNl
bGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKIHsKICAgICBMT0coRm9udHMsICJDU1NGb250U2Vs
ZWN0b3IgJXAgZHRvciIsIHRoaXMpOwogCi0gICAgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7
CisgICAgY2xlYXJGb250cygpOwogICAgIG1fZm9udENhY2hlLT5yZW1vdmVDbGllbnQoKnRoaXMp
OwogfQogCkBAIC0zMzYsOTQgKzMzNSwxMyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogICAg
IHJldHVybiBGb250UmFuZ2VzIHsgV1RGTW92ZShmb250KSB9OwogfQogCi12b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6c3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkKK3ZvaWQgQ1NTRm9udFNlbGVjdG9y
OjpjbGVhckZvbnRzKCkKIHsKLSAgICBpZiAobV9pc1N0b3BwZWQpIHsKLSAgICAgICAgQVNTRVJU
KCFtX2ZvbnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIEFTU0VSVChtX2ZvbnRz
VG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOwotCi0g
ICAgaWYgKGlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkpKSB7Ci0gICAgICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQpOwotICAgICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpOwotICAgICAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9C
ZWdpbkxvYWRpbmcpIHsKLSAgICAgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RD
b3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCi0gICAgICAgICAgICBjYWNoZWRSZXNv
dXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOwotICAgICAgICB9
Ci0gICAgICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5jbGVhcigpOwotICAgIH0KLQogICAgIG1f
Y3NzRm9udEZhY2VTZXQtPmNsZWFyKCk7CiAgICAgbV9jbGllbnRzLmNsZWFyKCk7CiB9CiAKLXZv
aWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250JiBmb250
KQotewotICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQo
KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCptX2NvbnRleHQpOwotCi0gICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmFwcGVuZCgm
Zm9udCk7Ci0gICAgLy8gSW5jcmVtZW50IHRoZSByZXF1ZXN0IGNvdW50IG5vdywgaW4gb3JkZXIg
dG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZyb20gYmVpbmcgZGlzcGF0Y2hlZAotICAgIC8vIGFm
dGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IGJlZm9yZSBpdCBiZWdhbiBsb2Fk
aW5nLiBCYWxhbmNlZCBieQotICAgIC8vIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGZvbnRM
b2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKS4KLSAg
ICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmluY3JlbWVudFJlcXVlc3RDb3VudChm
b250KTsKLQotICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkICYmICFtX2ZvbnRMb2Fk
aW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZEZvbnRMb2FkaW5n
VGltZXIoKQotewotICAgIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZVdpbGxCZVN1
c3BlbmRlZCk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpsb2FkUGVuZGluZ0ZvbnRzKCkK
LXsKLSAgICBpZiAobV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHx8ICFpczxEb2N1bWVudD4obV9j
b250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCk7Ci0KLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZvbnRzVG9CZWdpbkxvYWRpbmc7Ci0gICAgZm9udHNUb0Jl
Z2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGluZyk7Ci0KLSAgICAvLyBDU1NGb250
U2VsZWN0b3IgY291bGQgZ2V0IGRlbGV0ZWQgdmlhIGJlZ2luTG9hZElmTmVlZGVkKCkgb3IgbG9h
ZERvbmUoKSB1bmxlc3MgcHJvdGVjdGVkLgotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwotCi0gICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291
cmNlTG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBmb3IgKGF1
dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAgIGZvbnRIYW5k
bGUtPmJlZ2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKLSAgICAgICAgLy8g
QmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24o
KS4KLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KCpm
b250SGFuZGxlKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGlu
Z1RpbWVyRmlyZWQoKQotewotICAgIGlmICghaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX2NvbnRleHQpOwotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwotCi0gICAgbG9hZFBlbmRpbmdGb250cygpOwotCi0gICAgLy8gRklYTUU6IFVzZSBT
dWJyZXNvdXJjZUxvYWRlciBpbnN0ZWFkLgotICAgIC8vIENhbGwgRnJhbWVMb2FkZXI6OmxvYWRE
b25lIGJlZm9yZSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VMb2FkRG9uZSB0byBtYXRjaCB0aGUg
b3JkZXIgaW4gU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUuCi0gICAgZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5sb2FkRG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkZpbmlzaCk7
Ci0gICAgLy8gRW5zdXJlIHRoYXQgaWYgdGhlIHJlcXVlc3QgY291bnQgcmVhY2hlcyB6ZXJvLCB0
aGUgZnJhbWUgbG9hZGVyIHdpbGwga25vdyBhYm91dCBpdC4KLSAgICAvLyBOZXcgZm9udCBsb2Fk
cyBtYXkgYmUgdHJpZ2dlcmVkIGJ5IGxheW91dCBhZnRlciB0aGUgZG9jdW1lbnQgbG9hZCBpcyBj
b21wbGV0ZSBidXQgYmVmb3JlIHdlIGhhdmUgZGlzcGF0Y2hlZAotICAgIC8vIGRpZEZpbmlzaExv
YWRpbmcgZm9yIHRoZSBmcmFtZS4gTWFrZSBzdXJlIHRoZSBkZWxlZ2F0ZSBpcyBhbHdheXMgZGlz
cGF0Y2hlZCBieSBjaGVja2luZyBleHBsaWNpdGx5LgotICAgIGlmIChkb2N1bWVudC5mcmFtZSgp
KQotICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgp
OwotfQotCiBzaXplX3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRDb3VudCgpCiB7CiAg
ICAgaWYgKG1faXNTdG9wcGVkKQpAQCAtNDQ5LDI5ICszNjcsNCBAQCBSZWZQdHI8Rm9udD4gQ1NT
Rm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdAogICAgIHJldHVybiBmb250OwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3Rv
cCgpCi17Ci0gICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBDU1NGb250
U2VsZWN0b3I6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKLXsKLSAgICBpZiAobV9pc0Zv
bnRMb2FkaW5nU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzRm9udExvYWRp
bmdTdXNwZW5kZWQgPSB0cnVlOwotICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7Ci19Ci0K
LXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpyZXN1bWUoKQotewotICAgIGlmICghbV9pc0ZvbnRMb2Fk
aW5nU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fZm9udHNUb0JlZ2lu
TG9hZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKLQotICAgIG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCA9IGZhbHNlOwotfQotCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggZTRhZmYyNmFhYWZmMDhmODY4
NjdlMDQ1NTlmYTQxYjRiYjdlOGYzNy4uNDM0N2U4NWExNTYyMzRhOTNjZWJlZDE0N2MyMzI2YzIx
YjUxYWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZhbGxiYWNrRm9udENvdW50KCkgZmluYWw7CiAgICAg
UmVmUHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVf
dCkgZmluYWw7CiAKLSAgICB2b2lkIHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworICAgIHZv
aWQgY2xlYXJGb250cygpOwogICAgIHZvaWQgZW1wdHlDYWNoZXMoKTsKICAgICB2b2lkIGJ1aWxk
U3RhcnRlZCgpOwogICAgIHZvaWQgYnVpbGRDb21wbGV0ZWQoKTsKQEAgLTgxLDkgKzgxLDYgQEAg
cHVibGljOgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCi0gICAgdm9pZCBiZWdp
bkxvYWRpbmdGb250U29vbihDYWNoZWRGb250Jik7Ci0gICAgdm9pZCBzdXNwZW5kRm9udExvYWRp
bmdUaW1lcigpOwotCiAgICAgRm9udEZhY2VTZXQqIGZvbnRGYWNlU2V0SWZFeGlzdHMoKTsKICAg
ICBGb250RmFjZVNldCYgZm9udEZhY2VTZXQoKTsKIApAQCAtMTEwLDEyICsxMDcsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZm9udFN0eWxlVXBkYXRlTmVlZGVkKENTU0ZvbnRGYWNlJikgZmluYWw7
CiAKICAgICB2b2lkIGZvbnRNb2RpZmllZCgpOwotICAgIHZvaWQgZm9udExvYWRpbmdUaW1lckZp
cmVkKCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsK
LSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCBy
ZXN1bWUoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIkNTU0ZvbnRTZWxlY3RvciJfczsgfQogCiAgICAgc3RydWN0IFBl
bmRpbmdGb250RmFjZVJ1bGUgewpAQCAtMTMwLDE1ICsxMjMsMTEgQEAgcHJpdmF0ZToKICAgICBS
ZWY8Q1NTRm9udEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VTZXQ7CiAgICAgSGFzaFNldDxGb250U2Vs
ZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkRm9udD4+IG1fZm9udHNUb0JlZ2luTG9hZGluZzsKICAgICBIYXNoU2V0PFJlZlB0
cjxDU1NGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlvbnNQb3NzaWJseVRvUmVtb3ZlOwogICAgIEhh
c2hTZXQ8UmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPj4gbV9jc3NDb25uZWN0aW9uc0VuY291bnRl
cmVkRHVyaW5nQnVpbGQ7CiAKICAgICBDU1NGb250RmFjZVNldDo6Rm9udE1vZGlmaWVkT2JzZXJ2
ZXIgbV9mb250TW9kaWZpZWRPYnNlcnZlcjsKIAotICAgIFRpbWVyIG1fZm9udExvYWRpbmdUaW1l
cjsKLSAgICBib29sIG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCB7IGZhbHNlIH07Ci0KICAgICB1
bnNpZ25lZCBtX3VuaXF1ZUlkOwogICAgIHVuc2lnbmVkIG1fdmVyc2lvbjsKICAgICB1bnNpZ25l
ZCBtX2NvbXB1dGluZ1Jvb3RTdHlsZUZvbnRDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IGViNGYyOGJkMzMwN2U0NzRkYmE3YTNlMjZhYTdjYTAwNTYzZjU2MTIuLjdkNGRm
NjY5NjUyOWFkZjhmOTQyOTI5MjlhMTA0ZWUxMWI1YWRhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oIgorI2luY2x1ZGUgIkNhY2hlZEZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNhY2hl
ZEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKQEAgLTU5LDYgKzYwLDcgQEAKICNpbmNsdWRlICJE
YXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAjaW5jbHVk
ZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGb250TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCIK
QEAgLTYzOSw2ICs2NDEsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bQogICAgICwgbV92aXN1
YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1lcigqdGhpcywgJkRvY3VtZW50Ojp2aXN1YWxVcGRhdGVz
U3VwcHJlc3Npb25UaW1lckZpcmVkKQogICAgICwgbV9zaGFyZWRPYmplY3RQb29sQ2xlYXJUaW1l
cigqdGhpcywgJkRvY3VtZW50OjpjbGVhclNoYXJlZE9iamVjdFBvb2wpCiAgICAgLCBtX2ZvbnRT
ZWxlY3RvcihDU1NGb250U2VsZWN0b3I6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2ZvbnRMb2Fk
ZXIobWFrZVVuaXF1ZVJlZjxEb2N1bWVudEZvbnRMb2FkZXI+KCp0aGlzKSkKICAgICAsIG1fZGlk
QXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRl
Rm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKICAgICAsIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcigq
dGhpcywgJkRvY3VtZW50OjppbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUpCiAgICAgLCBtX3NvY2tl
dFByb3ZpZGVyKHBhZ2UoKSA/ICZwYWdlKCktPnNvY2tldFByb3ZpZGVyKCkgOiBudWxscHRyKQpA
QCAtNzU4LDcgKzc2MSw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGV4dGVuc2lvblN0
eWxlU2hlZXRzKCkuZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICBzdHlsZVNjb3BlKCkuY2xl
YXJSZXNvbHZlcigpOyAvLyBXZSBuZWVkIHRvIGRlc3Ryb3kgQ1NTRm9udFNlbGVjdG9yIGJlZm9y
ZSBkZXN0cm95aW5nIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuCi0gICAgbV9mb250U2VsZWN0b3It
PnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworICAgIG1fZm9udExvYWRlci0+c3RvcExvYWRp
bmdBbmRDbGVhckZvbnRzKCk7CiAKICAgICAvLyBJdCdzIHBvc3NpYmxlIGZvciBtdWx0aXBsZSBE
b2N1bWVudHMgdG8gZW5kIHVwIHJlZmVyZW5jaW5nIHRoZSBzYW1lIENhY2hlZFJlc291cmNlTG9h
ZGVyIChlLmcuLCBTVkdJbWFnZXMKICAgICAvLyBsb2FkIHRoZSBpbml0aWFsIGVtcHR5IGRvY3Vt
ZW50IGFuZCB0aGUgU1ZHRG9jdW1lbnQgd2l0aCB0aGUgc2FtZSBEb2N1bWVudExvYWRlcikuCkBA
IC04MDcsNyArODEwLDcgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAgICAg
ICBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMuY2xlYXIoKTsKICAgICAgICAgbV9wZW5kaW5nUmVu
ZGVyVHJlZVRleHRVcGRhdGUgPSB7IH07CiAKLSAgICAgICAgbV9mb250U2VsZWN0b3ItPnN0b3BM
b2FkaW5nQW5kQ2xlYXJGb250cygpOworICAgICAgICBtX2ZvbnRMb2FkZXItPnN0b3BMb2FkaW5n
QW5kQ2xlYXJGb250cygpOwogCiAgICAgICAgIGRldGFjaFBhcnNlcigpOwogCkBAIC0yMDYyLDcg
KzIwNjUsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSB0
eXBlKQogCiAgICAgICAgIG1faW5TdHlsZVJlY2FsYyA9IGZhbHNlOwogCi0gICAgICAgIGZvbnRT
ZWxlY3RvcigpLmxvYWRQZW5kaW5nRm9udHMoKTsKKyAgICAgICAgbV9mb250TG9hZGVyLT5sb2Fk
UGVuZGluZ0ZvbnRzKCk7CiAKICAgICAgICAgaWYgKHN0eWxlVXBkYXRlKSB7CiAgICAgICAgICAg
ICB1cGRhdGVSZW5kZXJUcmVlKFdURk1vdmUoc3R5bGVVcGRhdGUpKTsKQEAgLTI3MTIsNiArMjcx
NSwxMSBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVw
ZGF0ZXMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZygp
Cit7CisgICAgbV9mb250TG9hZGVyLT5zdXNwZW5kRm9udExvYWRpbmcoKTsKK30KKwogYm9vbCBE
b2N1bWVudDo6c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3QKIHsKICAgICAvLyBCeXBhc3MgdGhpcyBwb2xpY3kgd2hlbiB0aGUgd29ybGQgaXMga25vd24s
IGFuZCBpdCBub3QgdGhlIG5vcm1hbCB3b3JsZC4KQEAgLTI5OTcsNiArMzAwNSwxOSBAQCB2b2lk
IERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAgIHNldFJlYWR5U3RhdGUoTG9hZGluZyk7CiB9
CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IERvY3VtZW50Ojpmb250TG9hZFJl
cXVlc3QoU3RyaW5nJiB1cmwsIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQoreworICAgIGF1dG8qIGNhY2hlZEZvbnQgPSBtX2ZvbnRMb2FkZXItPmNhY2hl
ZEZvbnQoY29tcGxldGVVUkwodXJsKSwgaXNTVkcsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJB
Z2VudFNoYWRvd1RyZWUsIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHJldHVybiBjYWNo
ZWRGb250ID8gbWFrZVVuaXF1ZTxDYWNoZWRGb250TG9hZFJlcXVlc3Q+KCpjYWNoZWRGb250KSA6
IG51bGxwdHI7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKEZvbnRM
b2FkUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoaXM8Q2FjaGVkRm9udExvYWRSZXF1
ZXN0PihyZXF1ZXN0KSk7CisgICAgYXV0byYgZm9udCA9IGRvd25jYXN0PENhY2hlZEZvbnRMb2Fk
UmVxdWVzdD4ocmVxdWVzdCkuY2FjaGVkRm9udCgpOworICAgIG1fZm9udExvYWRlci0+YmVnaW5M
b2FkaW5nRm9udFNvb24oZm9udCk7Cit9CisKIEhUTUxCb2R5RWxlbWVudCogRG9jdW1lbnQ6OmJv
ZHkoKSBjb25zdAogewogICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKQEAg
LTU1MTYsNiArNTUzNyw4IEBAIHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVu
c2lvbiByZWFzb24pCiAgICAgbV92aXN1YWxVcGRhdGVzQWxsb3dlZCA9IGZhbHNlOwogICAgIG1f
dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIuc3RvcCgpOwogCisgICAgbV9mb250TG9hZGVy
LT5zdXNwZW5kRm9udExvYWRpbmcoKTsKKwogICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwogfQog
CkBAIC01NTQyLDYgKzU1NjUsOCBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWUoUmVhc29uRm9yU3Vz
cGVuc2lvbiByZWFzb24pCiAKICAgICBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkID0gdHJ1ZTsKIAor
ICAgIG1fZm9udExvYWRlci0+cmVzdW1lRm9udExvYWRpbmcoKTsKKwogICAgIG1faXNTdXNwZW5k
ZWQgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggMWY5YTgzYmZkMjY0YTRlMTQwZTNjMWYxMzhiZmFjNGYyNTc5NDI4Yi4uYWE0ZDE2
Yjc3YTFhYzczZTIxOThmMTA5MGU1NGJlMjM3NmNjMGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTEyMiw2ICsxMjIsNyBAQCBjbGFzcyBEZXZpY2VNb3Rpb25Db250cm9sbGVyOwogY2xhc3Mg
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogY2xhc3MgRGV2aWNl
T3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7Citj
bGFzcyBEb2N1bWVudEZvbnRMb2FkZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI7CkBAIC0xMzcs
NiArMTM4LDcgQEAgY2xhc3MgRXh0ZW5zaW9uU3R5bGVTaGVldHM7CiBjbGFzcyBGbG9hdFF1YWQ7
CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGb250RmFjZVNldDsKK2NsYXNzIEZvbnRMb2FkUmVx
dWVzdDsKIGNsYXNzIEZvcm1Db250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNl
bGVjdGlvbjsKQEAgLTYzMyw2ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kRGV2
aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCk7CiAgICAgdm9pZCByZXN1bWVEZXZpY2VN
b3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKTsKIAorICAgIHZvaWQgc3VzcGVuZEZvbnRMb2Fk
aW5nKCk7CisKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJWaWV3LmdldCgpOyB9CiAKICAgICBib29sIHJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkOyB9CkBAIC0xNjQ3LDYg
KzE2NTEsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAg
IENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgZmluYWwgeyByZXR1cm4gbV9mb250
U2VsZWN0b3IucHRyKCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBm
b250TG9hZFJlcXVlc3QoU3RyaW5nJiwgYm9vbCwgYm9vbCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3Qm
KSBmaW5hbDsKIAogICAgIC8vIEZvbnRTZWxlY3RvckNsaWVudAogICAgIHZvaWQgZm9udHNOZWVk
VXBkYXRlKEZvbnRTZWxlY3RvciYpIGZpbmFsOwpAQCAtMTk4Miw2ICsxOTg4LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbV9kb2N1bWVudEZyYWdtZW50Rm9ySW5u
ZXJPdXRlckhUTUw7CiAKICAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsK
KyAgICBVbmlxdWVSZWY8RG9jdW1lbnRGb250TG9hZGVyPiBtX2ZvbnRMb2FkZXI7CiAKICAgICBX
ZWFrSGFzaFNldDxNZWRpYVByb2R1Y2VyPiBtX2F1ZGlvUHJvZHVjZXJzOwogICAgIFdlYWtQdHI8
U3BlZWNoUmVjb2duaXRpb24+IG1fYWN0aXZlU3BlZWNoUmVjb2duaXRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGb250TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZvbnRMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZDhkZTA2ODcyODlk
YzhhNjI3MmUzNDQ1MWM1NDI2MjVjNDNiNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGb250TG9hZGVyLmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0
IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAy
MDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50Rm9udExvYWRlci5o
IgorCisjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitEb2N1bWVudEZvbnRMb2FkZXI6OkRvY3VtZW50Rm9udExv
YWRlcihEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAg
ICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAmRG9jdW1lbnRGb250TG9hZGVyOjpmb250TG9h
ZGluZ1RpbWVyRmlyZWQpCit7Cit9CisKK0RvY3VtZW50Rm9udExvYWRlcjo6fkRvY3VtZW50Rm9u
dExvYWRlcigpCit7CisgICAgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7Cit9CisKK0NhY2hl
ZEZvbnQqIERvY3VtZW50Rm9udExvYWRlcjo6Y2FjaGVkRm9udChVUkwmJiB1cmwsIGJvb2wgaXNT
VkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIFJlc291cmNl
TG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNo
ZWRSZXNvdXJjZU9wdGlvbnMoKTsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUlt
cG9zaXRpb24gPSBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlID8gQ29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKKyAgICBvcHRpb25zLmxvYWRl
ZEZyb21PcGFxdWVTb3VyY2UgPSBsb2FkZWRGcm9tT3BhcXVlU291cmNlOworCisgICAgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KFdURk1vdmUodXJsKSksIG9w
dGlvbnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMoKS5jc3MpOworICAgIHJldHVybiBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkucmVxdWVzdEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkcpLnZhbHVlX29yKG51bGxw
dHIpLmdldCgpOworfQorCit2b2lkIERvY3VtZW50Rm9udExvYWRlcjo6YmVnaW5Mb2FkaW5nRm9u
dFNvb24oQ2FjaGVkRm9udCYgZm9udCkKK3sKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5hcHBlbmQoJmZvbnQpOworICAg
IC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBjb3VudCBub3csIGluIG9yZGVyIHRvIHByZXZlbnQg
ZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRpc3BhdGNoZWQKKyAgICAvLyBhZnRlciB0aGlzIGZv
bnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBiZWZvcmUgaXQgYmVnYW4gbG9hZGluZy4gQmFsYW5j
ZWQgYnkKKyAgICAvLyBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBmb250TG9hZGluZ1RpbWVy
RmlyZWQoKSBhbmQgaW4gc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCkuCisgICAgbV9kb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmluY3JlbWVudFJlcXVlc3RDb3VudChmb250KTsKKwor
ICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkICYmICFtX2ZvbnRMb2FkaW5nVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OworfQorCit2b2lkIERvY3VtZW50Rm9udExvYWRlcjo6bG9hZFBlbmRpbmdGb250cygpCit7Cisg
ICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2Fk
aW5nOworICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcp
OworCisgICAgYXV0byYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50LmNhY2hlZFJl
c291cmNlTG9hZGVyKCk7CisgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2lu
TG9hZGluZykgeworICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7CisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3Vu
dCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCisgICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7CisgICAgfQorfQorCit2b2lk
IERvY3VtZW50Rm9udExvYWRlcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKCkKK3sKKyAgICBsb2Fk
UGVuZGluZ0ZvbnRzKCk7CisKKyAgICAvLyBGSVhNRTogVXNlIFN1YnJlc291cmNlTG9hZGVyIGlu
c3RlYWQuCisgICAgLy8gQ2FsbCBGcmFtZUxvYWRlcjo6bG9hZERvbmUgYmVmb3JlIEZyYW1lTG9h
ZGVyOjpzdWJyZXNvdXJjZUxvYWREb25lIHRvIG1hdGNoIHRoZSBvcmRlciBpbiBTdWJyZXNvdXJj
ZUxvYWRlcjo6bm90aWZ5RG9uZS4KKyAgICBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVy
KCkubG9hZERvbmUoTG9hZENvbXBsZXRpb25UeXBlOjpGaW5pc2gpOworICAgIC8vIEVuc3VyZSB0
aGF0IGlmIHRoZSByZXF1ZXN0IGNvdW50IHJlYWNoZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3
aWxsIGtub3cgYWJvdXQgaXQuCisgICAgLy8gTmV3IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJl
ZCBieSBsYXlvdXQgYWZ0ZXIgdGhlIGRvY3VtZW50IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9y
ZSB3ZSBoYXZlIGRpc3BhdGNoZWQKKyAgICAvLyBkaWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJh
bWUuIE1ha2Ugc3VyZSB0aGUgZGVsZWdhdGUgaXMgYWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tp
bmcgZXhwbGljaXRseS4KKyAgICBpZiAobV9kb2N1bWVudC5mcmFtZSgpKQorICAgICAgICBtX2Rv
Y3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQg
RG9jdW1lbnRGb250TG9hZGVyOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKQoreworICAgIGlm
IChtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb250TG9hZGluZ1RpbWVy
LnN0b3AoKTsKKyAgICBhdXRvJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRz
VG9CZWdpbkxvYWRpbmcpIHsKKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENv
dW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgY2FjaGVkUmVzb3VyY2VM
b2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKKyAgICB9CisgICAgbV9m
b250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7CisgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3Io
KS5jbGVhckZvbnRzKCk7CisKKyAgICBtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQgPSB0cnVlOwor
ICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKK30KKwordm9pZCBEb2N1bWVudEZvbnRMb2FkZXI6OnN1
c3BlbmRGb250TG9hZGluZygpCit7CisgICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKKyAgICBt
X2lzRm9udExvYWRpbmdTdXNwZW5kZWQgPSB0cnVlOworfQorCit2b2lkIERvY3VtZW50Rm9udExv
YWRlcjo6cmVzdW1lRm9udExvYWRpbmcoKQoreworICAgIGlmICghbV9pc0ZvbnRMb2FkaW5nU3Vz
cGVuZGVkIHx8IG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzRm9udExv
YWRpbmdTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBpZiAoIW1fZm9udHNUb0JlZ2luTG9hZGluZy5p
c0VtcHR5KCkpCisgICAgICAgIG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50Rm9udExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Rm9u
dExvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjM2IwNmZmZmRmODIyYjJiMGNkZmFlNTJhMDQ0NzA0ZDEz
ZTljYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGb250
TG9hZGVyLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBNZXRy
b2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2FjaGVkRm9udDsKKworY2xhc3MgRG9jdW1lbnRGb250TG9hZGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEb2N1bWVudEZvbnRMb2FkZXIoRG9jdW1lbnQm
KTsKKyAgICB+RG9jdW1lbnRGb250TG9hZGVyKCk7CisKKyAgICBDYWNoZWRGb250KiBjYWNoZWRG
b250KFVSTCYmLCBib29sLCBib29sLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICB2b2lk
IGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKKworICAgIHZvaWQgbG9hZFBlbmRp
bmdGb250cygpOworICAgIHZvaWQgc3RvcExvYWRpbmdBbmRDbGVhckZvbnRzKCk7CisKKyAgICB2
b2lkIHN1c3BlbmRGb250TG9hZGluZygpOworICAgIHZvaWQgcmVzdW1lRm9udExvYWRpbmcoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpOworCisgICAgRG9j
dW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgVGltZXIgbV9mb250TG9hZGluZ1RpbWVyOworICAgIFZl
Y3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2Fk
aW5nOworICAgIGJvb2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBj
NzczODMxYjg4YzJiMDJiMDViYzJmZmI2ZjA1M2U4ZGFmMWE1ZjdhLi5lNzUwYTYyN2FiNjBiYzkz
ZmRiNWY3NTg1OTgzZTZkYTU0OWViYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCisj
aW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9i
YWxTY29wZS5oIgpAQCAtMjMyLDYgKzIzMywxMSBAQCBGb250Q2FjaGUmIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmZvbnRDYWNoZSgpCiAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7
CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmZvbnRMb2FkUmVxdWVzdChTdHJpbmcmLCBib29sLCBib29sLCBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmZvckVhY2hBY3RpdmVET01PYmplY3QoY29uc3QgRnVuY3Rpb248U2hvdWxk
Q29udGludWUoQWN0aXZlRE9NT2JqZWN0Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICAvLyBJdCBp
cyBub3QgYWxsb3dlZCB0byBydW4gYXJiaXRyYXJ5IHNjcmlwdCBvciBjb25zdHJ1Y3QgbmV3IEFj
dGl2ZURPTU9iamVjdHMgd2hpbGUgd2UgYXJlIGl0ZXJhdGluZyBvdmVyIEFjdGl2ZURPTU9iamVj
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBl
OGJmMGVmY2I2YmJhMTI2MGYwYTkwYjc5NzU0MzgxNmIwZGYxYmJiLi5jOTk4YjEyZjI5Y2M2OTY4
YjljOTY2NWIwNjVmZDEyZDc4ZDU3YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5o
IgpAQCAtNjYsNiArNjcsNyBAQCBjbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRMb29wVGFz
a0dyb3VwOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGb250Q2FjaGU7CitjbGFzcyBGb250
TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIFB1YmxpY1VSTE1hbmFnZXI7
CiBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwpAQCAtMTY1LDYgKzE2Nyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUoKTsKICAgICB2aXJ0dWFsIENT
U0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0
KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJB
Z2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3QmKSB7IH0KIAogICAgIHZvaWQg
cmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIGRlcmVmKCkg
eyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggYzRlNDZlODcyYzZhNmQwMjMxN2ViMTgyMTU1MjU2M2Zm
ZWE1NWNmYS4uNjkzNGRmZGRiYmUyYTliOGNkYjIyMTBkMWQ2MzE1MzkzZmU1NDIyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcmNoaXZlLmgiCiAj
aW5jbHVkZSAiQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIkNTU0ZvbnRT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSYXdS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCkBAIC0zMzgsNyAr
MzM3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIGNhbmNlbEFs
bChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycyk7CiAKICAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9yKCku
c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKyAgICAgICAgZG9jdW1lbnQtPnN1c3BlbmRGb250
TG9hZGluZygpOwogCiAgICAgLy8gQXBwY2FjaGUgdXNlcyBSZXNvdXJjZUhhbmRsZSBkaXJlY3Rs
eSwgRG9jdW1lbnRMb2FkZXIgZG9lc24ndCBjb3VudCB0aGVzZSBsb2Fkcy4KICAgICBtX2FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LT5zdG9wTG9hZGluZ0luRnJhbWUoKm1fZnJhbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMzQ1YTgyZTQ2Mjg1YTE5
YjU0Y2RkYWZmNjIyMThjMDY1ZWUyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9udExvYWRSZXF1ZXN0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZv
bnRUYWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250OworY2xhc3MgRm9udERlc2NyaXB0aW9u
OworY2xhc3MgRm9udExvYWRSZXF1ZXN0Oworc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0
dGluZ3M7Cit1c2luZyBGb250RmVhdHVyZVNldHRpbmdzID0gRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD47CisKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+Rm9udExvYWRSZXF1ZXN0Q2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBm
b250TG9hZGVkKEZvbnRMb2FkUmVxdWVzdCYpIHsgfQorfTsKKworY2xhc3MgRm9udExvYWRSZXF1
ZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZFJlcXVlc3QoKSA9IGRlZmF1bHQ7
CisKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJy
ZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Rm9u
dD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0
IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVu
dCopID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEZvbnRMb2FkUmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNk
ZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GT05UTE9BRFJFUVVFU1QoVG9WYWx1ZVR5cGVO
YW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5
cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnRMb2Fk
UmVxdWVzdCYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNTM1N2E4ZTVkMGI3ZjBi
NmExYWRlNGRjYTA4OGExYjI3OWYxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJGb250TG9hZFJlcXVl
c3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRGb250TG9hZFJlcXVl
c3QgZmluYWwgOiBwdWJsaWMgRm9udExvYWRSZXF1ZXN0LCBwdWJsaWMgQ2FjaGVkRm9udENsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2FjaGVkRm9u
dExvYWRSZXF1ZXN0KENhY2hlZEZvbnQmIGZvbnQpCisgICAgICAgIDogbV9mb250KCZmb250KQor
ICAgIHsKKyAgICB9CisKKyAgICB+Q2FjaGVkRm9udExvYWRSZXF1ZXN0KCkKKyAgICB7CisgICAg
ICAgIGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkKKyAgICAgICAgICAgIG1fZm9udC0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKKyAgICB9CisKKyAgICBDYWNoZWRGb250JiBjYWNoZWRGb250KCkg
Y29uc3QgeyByZXR1cm4gKm1fZm9udDsgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mb250LT51cmwoKTsgfQorICAgIGJvb2wgaXNMb2Fk
aW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mb250LT5pc0xvYWRpbmcoKTsgfQorICAgIGJv
b2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZm9udC0+ZXJyb3JPY2N1
cnJlZCgpOyB9CisKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSkgZmluYWwgeyByZXR1cm4gbV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0
YShyZW1vdGVVUkkpOyB9CisgICAgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29s
IHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNl
dHRpbmdzJiBzZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyBjYXBh
YmlsaXRpZXMpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9mb250LT5jcmVhdGVGb250
KGRlc2NyaXB0aW9uLCByZW1vdGVVUkksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywg
c2V0dGluZ3MsIGNhcGFiaWxpdGllcyk7CisgICAgfQorCisgICAgdm9pZCBzZXRDbGllbnQoRm9u
dExvYWRSZXF1ZXN0Q2xpZW50KiBjbGllbnQpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvKiBv
bGRDbGllbnQgPSBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudDsKKyAgICAgICAgbV9mb250TG9hZFJl
cXVlc3RDbGllbnQgPSBjbGllbnQ7CisKKyAgICAgICAgaWYgKCFjbGllbnQgJiYgb2xkQ2xpZW50
KQorICAgICAgICAgICAgbV9mb250LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICBlbHNl
IGlmIChjbGllbnQgJiYgIW9sZENsaWVudCkKKyAgICAgICAgICAgIG1fZm9udC0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGlzQ2FjaGVkRm9udExvYWRSZXF1ZXN0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBmb250TG9hZGVkKENhY2hlZEZv
bnQmIGZvbnQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGZvbnQsICZmb250
ID09IG1fZm9udC5nZXQoKSk7CisgICAgICAgIGlmIChtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCkK
KyAgICAgICAgICAgIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsK
KyAgICB9CisKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7Cisg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19GT05UTE9BRFJFUVVFU1QoV2ViQ29yZTo6Q2FjaGVkRm9udExvYWRSZXF1ZXN0LCBpc0Nh
Y2hlZEZvbnRMb2FkUmVxdWVzdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcAppbmRleCA4N2ZjNThjMWI0MTM4YzE3NmI5YjNhNmMwMTkwN2NlYzBmOTdh
ZTU5Li43NzUyYWY5NTUyYjU3NDM0NmQ2MjhkNGY3ZmE4Zjc2YzM2MGQ0OGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMTEyLDggKzExMiw2
IEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogICAgICAgICBhbGxX
b3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKGxvY2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlm
aWVyKCkpOwogICAgIH0KIAotICAgIGlmIChtX2Nzc0ZvbnRTZWxlY3RvcikKLSAgICAgICAgbV9j
c3NGb250U2VsZWN0b3ItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogICAgIG1fcGVyZm9y
bWFuY2UgPSBudWxscHRyOwogICAgIG1fY3J5cHRvID0gbnVsbHB0cjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425722</attachid>
            <date>2021-04-12 01:06:56 -0700</date>
            <delta_ts>2021-04-12 02:26:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224277-20210412090654.patch</filename>
            <type>text/plain</type>
            <size>63228</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0M2UwZDc4NmE4ZDli
NmFiZTcxYmZkNWNlNjI4NDg5ODUwM2U2ZC4uZTBlMTA0ZGU3MTkyMDhkZTJlODc1YTU2OGRhYTkz
NjAzZTM3ZTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTA0LTA3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWZhY3RvciBmb250IGxvYWRp
bmcgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgV29ya2VyIHRvIGltcGxlbWVudCBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW50cm9kdWNlIEZvbnRMb2Fk
UmVxdWVzdCBhbmQgRm9udExvYWRSZXF1ZXN0Q2xpZW50IGFzIGFuIGFic3RyYWN0aW9uCisgICAg
ICAgIHNlcGFyYXRlIGZyb20gQ2FjaGVkRm9udCBhbmQgQ2FjaGVkRm9udENsaWVudCB0byBhbGxv
dyBmb3Igc2VwYXJhdGUKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBBbHNvIG1vdmUgRG9jdW1l
bnQtc3BlY2lmaWMgZm9udC1sb2FkaW5nIGJlaGF2aW91cgorICAgICAgICBmcm9tIENTU0ZvbnRT
ZWxlY3RvciBpbnRvIERvY3VtZW50IGFuZCBhZGQgbm9uLURvY3VtZW50IHNwZWNpZmljCisgICAg
ICAgIGFjY2Vzc29ycyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFRoZXNl
IGNoYW5nZXMgc2hvdWxkIGFsbG93IGZvciBjdXN0b20gZm9udCBsb2FkaW5nIHRvIGJlIGltcGxl
bWVudGFibGUKKyAgICAgICAgb24gYSBXb3JrZXIsIHdoaWNoIHdpbGwgYmUgbmVjZXNzYXJ5IGZv
ciBGb250RmFjZSBzdXBwb3J0IGluCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6IEFkZGVkIEZvbnRMb2FkUmVxdWVzdC5oLCBDYWNoZWRGb250TG9hZFJlcXVlc3Qu
aAorICAgICAgICAgIGFuZCBEb2N1bWVudEZvbnRMb2FkZXIuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDogQWRkZWQgRG9jdW1lbnRGb250TG9hZGVyLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIGZpbGVzIGxpc3RlZCBhYm92ZS4KKworICAg
ICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6IFVwZGF0ZSB0byBub3QgcmVxdWlyZSBEb2N1bWVu
dCBmb3IgY3VzdG9tIGZvbnQgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
OjphcHBlbmRTb3VyY2VzKToKKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6
IFVwZGF0ZSB0byB1c2UgRm9udExvYWRSZXF1ZXN0IGluc3RlYWQgb2YgQ2FjaGVkRm9udC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRGYWNlU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0
YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpmb250TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjps
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjppc1NWR0ZvbnRGYWNlU291cmNlIGNvbnN0
KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKworICAgICAgICAqIGNzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmNwcDogVXBkYXRlIHRvIHVzZSBGb250TG9hZFJlcXVlc3QgYW5k
CisgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIENhY2hlZFJlc291
cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Zm9udExv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgorCisgICAg
ICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6IFJlbW92ZSBEb2N1bWVudC1zcGVjaWZpYyBj
b2RlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Y2xlYXJGb250cyk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDog
SW1wbGVtZW50IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRMb2FkUmVxdWVzdAorICAgICAg
ICAgIGFuZCA6OmJlZ2luTG9hZGluZ0ZvbnRTb29uLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExhc3RS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZEZvbnRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpmb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
dXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWUpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgICogZG9tL0RvY3VtZW50Rm9udExvYWRlci5jcHA6
IEFkZGVkLiBOZXcgY2xhc3MgdG8gaGFuZGxlIERvY3VtZW50LXNwZWNpZmljCisgICAgICAgICAg
Zm9udC1sb2FkaW5nIGNvZGUgdGhhdCB3YXMgcHJldmlvdXNseSBpbiBDU1NGb250U2VsZWN0b3Ig
YW5kCisgICAgICAgICAgQ1NTRm9udEZhY2VTcmNWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Rm9udExvYWRlcjo6RG9jdW1lbnRGb250TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Rm9udExvYWRlcjo6fkRvY3VtZW50Rm9udExvYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudEZvbnRMb2FkZXI6OmNhY2hlZEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRGb250TG9hZGVyOjpiZWdpbkxvYWRpbmdGb250U29vbik6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudEZvbnRMb2FkZXI6OmxvYWRQZW5kaW5nRm9udHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpmb250TG9hZGluZ1RpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpzdG9wTG9hZGluZ0FuZENsZWFyRm9udHMp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpzdXNwZW5kRm9udExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGb250TG9hZGVyOjpyZXN1bWVGb250TG9h
ZGluZyk6CisgICAgICAgICogZG9tL0RvY3VtZW50Rm9udExvYWRlci5oOgorCisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBBZGQgZnVuY3Rpb25zIHRvIGluaXRpYXRl
IGZvbnQgbG9hZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmJlZ2lu
TG9hZGluZ0ZvbnRTb29uKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
IENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIKKyAgICAgICAgICBpcyBu
b3cgRG9jdW1lbnQ6OnN1c3BlbmRGb250TG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKKyAgICAgICAgKiBsb2FkZXIvRm9udExvYWRSZXF1
ZXN0Lmg6IEFkZGVkLiBBbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGZvbnQgbG9hZGluZworICAgICAg
ICAgIHRoYXQgYWJzdHJhY3RzIHNvbWUgb2YgdGhlIGJlaGF2aW91ciBvZiBDYWNoZWRSZXNvdXJj
ZSwgQ2FjaGVkRm9udCBhbmQKKyAgICAgICAgICBDYWNoZWRGb250Q2xpZW50LgorICAgICAgICAo
V2ViQ29yZTo6Rm9udExvYWRSZXF1ZXN0Q2xpZW50Ojpmb250TG9hZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRMb2FkUmVxdWVzdENsaWVudDo6aXNDYWNoZWRGb250TG9hZFJlcXVlc3QgY29u
c3QpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2FkUmVxdWVzdC5oOiBB
ZGRlZC4gQW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICBGb250TG9hZFJlcXVlc3QgZm9y
IENhY2hlZEZvbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDog
UmVtb3ZlIG5vdy1yZWR1bmRhbnQgQ1NTRm9udFNlbGVjdG9yIGNhbGwuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKwogMjAyMS0wNC0w
NSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmlkaUNvbnRleHQg
Y2FjaGluZyBpcyBub3QgdGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFhMzkxODJk
NDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMuLjEyZmRiYThhYzIyNzkwYjUzOWQzYTE0
NmI0ODkzYThiMjNiMTg2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDM3LDYgKzQzNyw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vRGV2aWNlT3Jp
ZW50YXRpb25EYXRhLmgKICAgICBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Np
b25TdGF0ZS5oCiAgICAgZG9tL0RvY3VtZW50LmgKKyAgICBkb20vRG9jdW1lbnRGb250TG9hZGVy
LmgKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5oCiAgICAgZG9tL0RvY3VtZW50RnVsbHNjcmVl
bi5oCiAgICAgZG9tL0RvY3VtZW50TWFya2VyLmgKQEAgLTc3Niw2ICs3NzcsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CiAgICAgbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAogICAgIGxvYWRlci9GZXRjaE9w
dGlvbnMuaAorICAgIGxvYWRlci9Gb250TG9hZFJlcXVlc3QuaAogICAgIGxvYWRlci9Gb3JtU3Rh
dGUuaAogICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5oCiAgICAgbG9hZGVyL0ZyYW1lTG9hZFJl
cXVlc3QuaApAQCAtODI4LDYgKzgzMCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKIAogICAgIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCiAKKyAg
ICBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgKICAgICBsb2FkZXIvY2FjaGUv
Q2FjaGVQb2xpY3kuaAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCiAgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWU0ZmE2MGNjZGRh
ZmRjMTVkZDY1MTM5MWYxYjIxMTZiMzczNGE0NS4uM2ZkMzhkYWE5NWI0NmMxMTk1MTY0NjRmNWI5
ZWM0NWMxOTA4YzI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTkyMiw2ICs5MjIsNyBAQCBkb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAogZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5j
cHAKIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAogZG9tL0RvY3VtZW50LmNwcAorZG9t
L0RvY3VtZW50Rm9udExvYWRlci5jcHAKIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAogZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKIGRvbS9Eb2N1bWVudFBhcnNlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
NTMwMmRiMGQwYzY4MjIzMWY1NjJmZTkwOGM5ZWIxNTExYjNmOTYxLi5lNGJhOGNhMTk1NjU4MThh
NzQxOGZhMGRkMjc4MDgwZGUxYzI1YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDQyLDYgKzIwNDIsNyBAQAogCQk2NTY1
ODIwMjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhM
aW5rTmFtZXMuaCAqLzsgfTsKIAkJNjU2RDM3MzIwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5T
VVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NTZEMzcxQTBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczNjBBREJB
NURFMDBBNDU1NEQgLyogRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVu
dExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFCNzQw
MEU1Mzc0MyAvKiBGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczQTBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZE
MzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3M0MwQURCQTVERTAwQTQ1NTREIC8q
IEZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTZEMzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTZEMzczRTBBREJBNURF
MDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzI2MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxv
YWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yODkzLDYgKzI4OTQsNyBAQAogCQk5M0YxOThGNjA4MjQ1RTU5MDAxRTlBQkMgLyog
VGV4dFJlc291cmNlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjUyM0QyNzkwMkRFNDNENzAxODYzNUNBIC8qIFRleHRSZXNvdXJjZURlY29k
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
M0YxOTkxODA4MjQ1RTU5MDAxRTlBQkMgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMzA0MDJERTQ0NzYwMTg2MzVDQSAvKiBSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBDdXJz
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTg3ODY0OTAyREUzQTlB
MDFFQTQxMjIgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5NTAwODI0NUU1OTAwMUU5QUJDIC8q
IENhY2hlUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk2MzA4MjQ1RTU5
MDAxRTlBQkMgLyogU1NMS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODY2MjAyREUzQjExMDFFQTQxMjIgLyogU1NMS2V5R2Vu
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNGMTk5OEMwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTU1QTQxMDNENzI5MzIw
MDg2MzVDRSAvKiBSZW5kZXJUcmVlQXNUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0NzYsNiArMzQ3OCw3IEBACiAJCUE4MTg1RjM5MDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVu
dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBODE4NUYzQjA5NzY1NzY2MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMzMDk3NjU3NjUw
MDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1
bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBODE4NUYzNTA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE4MTg1RjQ1MDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM1NTk3NjU3NjUwMDU4MjZEOSAvKiBE
b2N1bWVudEZvbnRMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM4MDk3NjU3
NjUwMDU4MjZEOSAvKiBEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE4MTg3MjFCMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODcyMTAw
OTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRh
aW5lck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4MTg3MjExMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3NjEsNiArOTc2NCw3IEBA
CiAJCTY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybVN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzIzMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3Rh
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1TdGF0ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc0
MyAvKiBGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTZEMzcy
NDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1NkQzNzI2MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlckNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjcwQURCQTVERTAwQTQ1NTREIC8qIFJlc291cmNl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MzYsOSArMTI5NDAsMTEgQEAK
IAkJQTgxODVGMzIwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRUeXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxl
bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01JbXBsZW1l
bnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE4NUYzNDA5NzY1NzY1
MDA1ODI2RDkgLyogRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgxODVG
MzQ1OTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRGb250TG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3Vt
ZW50RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50
RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzYwOTc2NTc2
NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01JbXBsZW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4MTg1RjM3MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudEZyYWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgxODVGMzU1OTc2NTc2NTAw
NTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRG9jdW1lbnRGb250TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4MTg1RjM4MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTgxODcyMTAwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyTm9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTY4NTEsNiArMTY4NTcsNyBAQAogCQlGNTVCM0RBQzEyNTFG
MTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWVrSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1
ODc4NEYwMDJERTM3NTkwMUVBNDEyMiAvKiBDdXJzb3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDdXJzb3JNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlG
NTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZyYW1lVmlldy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnJhbWVWaWV3
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OworCQk4NTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVkRm9udExvYWRSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZEZvbnRMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2NDkwMkRFM0E5QTAxRUE0MTIyIC8qIENhY2hlUG9s
aWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlGNTg3ODY2MjAyREUzQjExMDFFQTQxMjIgLyogU1NMS2V5R2VuZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNTTEtleUdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXJz
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CkBAIC0yNTkzNyw2ICsyNTk0NCw3IEBACiAJCQkJQkM2NEI0QzkwQ0I0Mjk1RDAwNUYyQjYy
IC8qIENhY2hlZEZvbnQuY3BwICovLAogCQkJCUJDNjRCNENBMENCNDI5NUQwMDVGMkI2MiAvKiBD
YWNoZWRGb250LmggKi8sCiAJCQkJMUFFRjRFNjYxNzBFMTYwMzAwQUIyNzk5IC8qIENhY2hlZEZv
bnRDbGllbnQuaCAqLywKKwkJCQk4NTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVkRm9u
dExvYWRSZXF1ZXN0LmggKi8sCiAJCQkJQkNCMTZDMDIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZEltYWdlLmNwcCAqLywKIAkJCQlCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1h
Z2UuaCAqLywKIAkJCQkzMTlGQkQ1RDE1RDJGNDQ0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGll
bnQuaCAqLywKQEAgLTI3NTg1LDYgKzI3NTkzLDcgQEAKIAkJCQlDRUJCOEMzMjIwNzg2RENCMDAw
Mzk1NDcgLyogRmV0Y2hJZGlvbXMuY3BwICovLAogCQkJCUNFQkI4QzMxMjA3ODZEQ0IwMDAzOTU0
NyAvKiBGZXRjaElkaW9tcy5oICovLAogCQkJCTQxQUQ3NTM5MUNFRjZCQ0UwMEEzMTQ4NiAvKiBG
ZXRjaE9wdGlvbnMuaCAqLywKKwkJCQk2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExv
YWRSZXF1ZXN0LmggKi8sCiAJCQkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0
ZS5jcHAgKi8sCiAJCQkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICov
LAogCQkJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgKi8s
CkBAIC0zMDI4OSw2ICszMDI5OCw4IEBACiAJCQkJQTgxODVGMzgwOTc2NTc2NTAwNTgyNkQ5IC8q
IERvY3VtZW50LmggKi8sCiAJCQkJNjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIwIC8qIERvY3VtZW50
LmlkbCAqLywKIAkJCQk4MzI5QTQxNzFFQzI1QjJCMDA4RUQ0QkUgLyogRG9jdW1lbnRBbmRFbGVt
ZW50RXZlbnRIYW5kbGVycy5pZGwgKi8sCisJCQkJQTgxODVGMzQ1OTc2NTc2NTAwNTgyNkQ5IC8q
IERvY3VtZW50Rm9udExvYWRlci5jcHAgKi8sCisJCQkJQTgxODVGMzU1OTc2NTc2NTAwNTgyNkQ5
IC8qIERvY3VtZW50Rm9udExvYWRlci5oICovLAogCQkJCUE4MTg1RjM3MDk3NjU3NjUwMDU4MjZE
OSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzNTA5NzY1NzY1MDA1ODI2
RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oICovLAogCQkJCTFBNDk0RUQ1MEExMjNGMUEwMEZEQUZD
MSAvKiBEb2N1bWVudEZyYWdtZW50LmlkbCAqLywKQEAgLTMxNjE0LDYgKzMxNjI1LDcgQEAKIAkJ
CQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRGb250
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0YxOTk1MDA4MjQ1RTU5MDAxRTlBQkMgLyog
Q2FjaGVkRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUMwQUEzOTBGMkFB
MTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQ0JGQzk5
MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTU2LDYgKzMyMTY4LDcgQEAKIAkJCQlCMkYzNEZFNjBF
ODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2RjEyRDI2
RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTgxODVGNDUwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTJGNTEzMjI2MEZGRUUwMEY4N0JCMyAvKiBEb2N1
bWVudEZ1bGxzY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODI2QkYyMjNGQjU5NzcwMEI5
MjJCMSAvKiBEb2N1bWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzI0MjYsNiAr
MzI0MzksNyBAQAogCQkJCTFDMjRFRUE1MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUMxMkFDMkIxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MkVFM0E3MTc1
NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzRBNTMyRjI1NjA1N0NEMDAyOEM1OTIgLyogRm9udExvYWRUaW1pbmdPdmVy
cmlkZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8qIEZv
bnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0NDAg
LyogRm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmNwcAppbmRleCA4MTcxYWNjZWE3ZWY0N2NiMTUzOTk1ZTk0YWE4YTAxMTlkN2FlMzYwLi5m
YTRjNzI5NGI1NjhkMTlmYzhiYjkxOWJjYTI3YmIyYzMyOGM2NzViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5jcHAKQEAgLTc2LDEwICs3Niw5IEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVu
ZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIFNj
CiAgICAgICAgIGlmICghaXRlbS5pc0xvY2FsKCkpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8q
IHNldHRpbmdzID0gY29udGV4dCA/ICZjb250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpIDogbnVsbHB0
cjsKICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8fCAo
c2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCk7Ci0g
ICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0
KCkgJiYgaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwotICAgICAgICAgICAgICAgIGlm
IChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KCZkb2N1bWVudCwgZm91
bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAg
ICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
Zm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpjYWNo
ZWRGb250KTsKKyAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNTdXBw
b3J0ZWRGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGZvbnRSZXF1ZXN0ID0g
aXRlbS5mb250TG9hZFJlcXVlc3QoY29udGV4dCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdF
bGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKKyAgICAgICAgICAgICAgICAgICAgc291cmNl
ID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2Uo
KSwgKmNvbnRleHQtPmNzc0ZvbnRTZWxlY3RvcigpLCBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxV
bmlxdWVQdHIoV1RGTW92ZShmb250UmVxdWVzdCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBzb3VyY2UgPSAoZm9udEZhY2VFbGVtZW50ID8gbWFrZVVuaXF1
ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmZvbnRGYWNl
RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGJj
MzIzYzJmMmVjMDFhNzdhZDUwODMzMTEyZTE5NjAwMzA4YTczZWQuLmI2N2U4ZTY2NmNmOWJjYTk1
OGEyM2VkMzcwNjJjODY0NGM2ZmQyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIK
ICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDYWNoZWRGb250LmgiCisj
aW5jbHVkZSAiQ2FjaGVkRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU1ZHRm9u
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udC5oIgpAQCAtNzIsMTkg
KzcyLDE5IEBAIENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFj
ZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtCiB7CiB9CiAKLUNTU0ZvbnRGYWNlU291
cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgQ2FjaGVkRm9u
dCYgZm9udCkKK0NTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFj
ZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3Im
IGZvbnRTZWxlY3RvciwgVW5pcXVlUmVmPEZvbnRMb2FkUmVxdWVzdD4mJiByZXF1ZXN0KQogICAg
IDogbV9mYW1pbHlOYW1lT3JVUkkoZmFtaWx5TmFtZU9yVVJJKQogICAgICwgbV9mYWNlKG93bmVy
KQogICAgICwgbV9mb250U2VsZWN0b3IobWFrZVdlYWtQdHIoZm9udFNlbGVjdG9yKSkKLSAgICAs
IG1fZm9udCgmZm9udCkKKyAgICAsIG1fZm9udFJlcXVlc3QocmVxdWVzdC5tb3ZlVG9VbmlxdWVQ
dHIoKSkKIHsKICAgICAvLyBUaGlzIG1heSBzeW5jaHJvbm91c2x5IGNhbGwgZm9udExvYWRlZCgp
LgotICAgIG1fZm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2ZvbnRSZXF1ZXN0LT5zZXRD
bGllbnQodGhpcyk7CiAKLSAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYmIG1f
Zm9udC0+aXNMb2FkZWQoKSkgeworICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcg
JiYgIW1fZm9udFJlcXVlc3QtPmlzTG9hZGluZygpKSB7CiAgICAgICAgIHNldFN0YXR1cyhTdGF0
dXM6OkxvYWRpbmcpOwogICAgICAgICBpZiAoIXNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlv
bnMoKSkgewotICAgICAgICAgICAgaWYgKG1fZm9udC0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAg
ICAgICAgaWYgKG1fZm9udFJlcXVlc3QtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAg
ICBzZXRTdGF0dXMoU3RhdHVzOjpGYWlsdXJlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTEwOSw4ICsxMDksOCBAQCBD
U1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBj
b25zdCBTdHJpbmcmIGZhbWlseU5hbQogCiBDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRGYWNl
U291cmNlKCkKIHsKLSAgICBpZiAobV9mb250KQotICAgICAgICBtX2ZvbnQtPnJlbW92ZUNsaWVu
dCgqdGhpcyk7CisgICAgaWYgKG1fZm9udFJlcXVlc3QpCisgICAgICAgIG1fZm9udFJlcXVlc3Qt
PnNldENsaWVudChudWxscHRyKTsKIH0KIAogYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hvdWxk
SWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpIGNvbnN0CkBAIC0xMjAsMjkgKzEyMCwyOSBAQCBi
b29sIENTU0ZvbnRGYWNlU291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkg
Y29uc3QKIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZv
bnREYXRhVVJMTG9hZGluZygpCiB7Ci0gICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVuZGlu
ZyAmJiBtX2ZvbnQgJiYgbV9mb250LT51cmwoKS5wcm90b2NvbElzRGF0YSgpICYmIG1fZmFtaWx5
TmFtZU9yVVJJLmxlbmd0aCgpIDwgTUIpCisgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVu
ZGluZyAmJiBtX2ZvbnRSZXF1ZXN0ICYmIG1fZm9udFJlcXVlc3QtPnVybCgpLnByb3RvY29sSXNE
YXRhKCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKICAgICAgICAgbG9hZCgp
OwogfQogCi12b2lkIENTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKENhY2hlZEZvbnQmIGxv
YWRlZEZvbnQpCit2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKEZvbnRMb2FkUmVx
dWVzdCYgZm9udFJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2FkZWRGb250LCAmbG9h
ZGVkRm9udCA9PSBtX2ZvbnQuZ2V0KCkpOworICAgIEFTU0VSVF9VTlVTRUQoZm9udFJlcXVlc3Qs
ICZmb250UmVxdWVzdCA9PSBtX2ZvbnRSZXF1ZXN0LmdldCgpKTsKIAogICAgIGlmIChzaG91bGRJ
Z25vcmVGb250TG9hZENvbXBsZXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxD
U1NGb250RmFjZT4gcHJvdGVjdGVkRmFjZShtX2ZhY2UpOwogCi0gICAgLy8gSWYgdGhlIGZvbnQg
aXMgaW4gdGhlIGNhY2hlLCB0aGlzIHdpbGwgYmUgc3luY2hyb25vdXNseSBjYWxsZWQgZnJvbSBD
YWNoZWRGb250OjphZGRDbGllbnQoKS4KKyAgICAvLyBJZiB0aGUgZm9udCBpcyBpbiB0aGUgY2Fj
aGUsIHRoaXMgd2lsbCBiZSBzeW5jaHJvbm91c2x5IGNhbGxlZCBmcm9tIEZvbnRMb2FkUmVxdWVz
dDo6YWRkQ2xpZW50KCkuCiAgICAgaWYgKG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGluZykKICAg
ICAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAgICAgZWxzZSBpZiAobV9zdGF0dXMg
PT0gU3RhdHVzOjpGYWlsdXJlKSB7CiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGNh
bGxlZCB0d2ljZSBpZiBsb2FkaW5nIHdhcyBjYW5jZWxsZWQuCi0gICAgICAgIEFTU0VSVChtX2Zv
bnQtPmVycm9yT2NjdXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChtX2ZvbnRSZXF1ZXN0LT5lcnJv
ck9jY3VycmVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fZm9udC0+
ZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ZvbnQtPmVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZmFtaWx5
TmFtZU9yVVJJKSkKKyAgICBpZiAobV9mb250UmVxdWVzdC0+ZXJyb3JPY2N1cnJlZCgpIHx8ICFt
X2ZvbnRSZXF1ZXN0LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWlseU5hbWVPclVSSSkpCiAg
ICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkZhaWx1cmUpOwogICAgIGVsc2UKICAgICAgICAgc2V0
U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBAIC0xNTQsOSArMTU0LDEwIEBAIHZvaWQgQ1NTRm9u
dEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHNldFN0YXR1cyhT
dGF0dXM6OkxvYWRpbmcpOwogCi0gICAgaWYgKG1fZm9udCkgeworICAgIGlmIChtX2ZvbnRSZXF1
ZXN0KSB7CiAgICAgICAgIEFTU0VSVChtX2ZvbnRTZWxlY3Rvcik7Ci0gICAgICAgIG1fZm9udFNl
bGVjdG9yLT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAgICAgaWYgKGF1dG8q
IGNvbnRleHQgPSBtX2ZvbnRTZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAg
ICAgICAgICAgY29udGV4dC0+YmVnaW5Mb2FkaW5nRm9udFNvb24oKm1fZm9udFJlcXVlc3QpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICBpZiAo
bV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAgLTE5OCw3ICsxOTksNyBAQCBSZWZQdHI8Rm9u
dD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGJvbwogCiAgICAgYm9vbCB1c2VzSW5Eb2N1bWVudFNWR0ZvbnQgPSBtX2hhc1NW
R0ZvbnRGYWNlRWxlbWVudDsKIAotICAgIGlmICghbV9mb250ICYmICF1c2VzSW5Eb2N1bWVudFNW
R0ZvbnQpIHsKKyAgICBpZiAoIW1fZm9udFJlcXVlc3QgJiYgIXVzZXNJbkRvY3VtZW50U1ZHRm9u
dCkgewogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIGlmICgh
bV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjEwLDEyICsyMTEsMTIgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNl
U291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28K
ICAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250
RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCAmZm9udEZhY2VGZWF0dXJlcywgZm9udEZh
Y2VDYXBhYmlsaXRpZXMsIHRydWUpOwogICAgIH0KIAotICAgIGlmIChtX2ZvbnQpIHsKLSAgICAg
ICAgYXV0byBzdWNjZXNzID0gbV9mb250LT5lbnN1cmVDdXN0b21Gb250RGF0YShtX2ZhbWlseU5h
bWVPclVSSSk7CisgICAgaWYgKG1fZm9udFJlcXVlc3QpIHsKKyAgICAgICAgYXV0byBzdWNjZXNz
ID0gbV9mb250UmVxdWVzdC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9mYW1pbHlOYW1lT3JVUkkp
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCiAgICAgICAgIEFT
U0VSVChzdGF0dXMoKSA9PSBTdGF0dXM6OlN1Y2Nlc3MpOwotICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fZm9udC0+Y3JlYXRlRm9udChmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBz
eW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNl
Q2FwYWJpbGl0aWVzKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2ZvbnRSZXF1ZXN0LT5jcmVh
dGVGb250KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIHN5bnRoZXRpY0JvbGQs
IHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMp
OwogICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CkBAIC0yMzIsNyArMjMzLDcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNlU291cmNlOjpmb250
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28KIAogYm9vbCBDU1NG
b250RmFjZVNvdXJjZTo6aXNTVkdGb250RmFjZVNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1faGFzU1ZHRm9udEZhY2VFbGVtZW50IHx8IGlzPENhY2hlZFNWR0ZvbnQ+KG1fZm9udC5nZXQo
KSk7CisgICAgcmV0dXJuIG1faGFzU1ZHRm9udEZhY2VFbGVtZW50IHx8IChpczxDYWNoZWRGb250
TG9hZFJlcXVlc3Q+KG1fZm9udFJlcXVlc3QuZ2V0KCkpICYmIGlzPENhY2hlZFNWR0ZvbnQ+KGRv
d25jYXN0PENhY2hlZEZvbnRMb2FkUmVxdWVzdD4obV9mb250UmVxdWVzdC5nZXQoKSktPmNhY2hl
ZEZvbnQoKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmlu
ZGV4IDU5MmNlODMxYzVhOTI4NjNlMDRlYmRiNzZlZjNhYzE4ZjUxYzEzYmQuLjMwZDc5OTdmZjE3
MTE5ZGU0NzZlNDczNTQyNTU3NDI0ZjhmNzg4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5oCkBAIC0yNSw4ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQ2FjaGVkRm9udENsaWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgi
CisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC00NywxMSArNDYsMTEgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAotY2xh
c3MgQ1NTRm9udEZhY2VTb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkRm9udENsaWVudCB7Citj
bGFzcyBDU1NGb250RmFjZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBGb250TG9hZFJlcXVlc3RDbGll
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENTU0ZvbnRG
YWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JV
UkkpOwotICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3Ry
aW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYsIENhY2hlZEZvbnQmKTsKKyAg
ICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImLCBVbmlxdWVSZWY8Rm9udExvYWRSZXF1ZXN0
PiYmKTsKICAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0
cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBTVkdGb250RmFjZUVsZW1lbnQmKTsKICAgICBDU1NGb250
RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9y
VVJJLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYpOwogICAgIHZpcnR1YWwgfkNTU0ZvbnRG
YWNlU291cmNlKCk7CkBAIC03NiwyMiArNzUsMjIgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZChE
b2N1bWVudCogPSBudWxscHRyKTsKICAgICBSZWZQdHI8Rm9udD4gZm9udChjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25z
dCBGb250RmVhdHVyZVNldHRpbmdzJiwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
cyk7CiAKLSAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250
LmdldCgpOyB9Ci0gICAgYm9vbCByZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnQ7IH0KKyAgICBGb250TG9hZFJlcXVlc3QqIGZvbnRMb2FkUmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udFJlcXVlc3QuZ2V0KCk7IH0KKyAgICBib29sIHJlcXVpcmVzRXh0
ZXJuYWxSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFJlcXVlc3QuZ2V0KCk7IH0KIAog
ICAgIGJvb2wgaXNTVkdGb250RmFjZVNvdXJjZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJv
b2wgc2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpIGNvbnN0OwogCi0gICAgdm9pZCBm
b250TG9hZGVkKENhY2hlZEZvbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvbnRMb2FkZWQoRm9u
dExvYWRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFN0YXR1cyhTdGF0dXMpOwog
CiAgICAgQXRvbVN0cmluZyBtX2ZhbWlseU5hbWVPclVSSTsgLy8gVVJJIGZvciByZW1vdGUsIGJ1
aWx0LWluIGZvbnQgbmFtZSBmb3IgbG9jYWwuCiAgICAgQ1NTRm9udEZhY2UmIG1fZmFjZTsgLy8g
T3VyIG93bmluZyBmb250IGZhY2UuCiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9u
dFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgot
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IG1fZm9udDsgLy8gQWxzbyBmb3Ig
cmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gb3VyIGNhY2hlZCByZXNvdXJjZS4KKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciBy
ZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggNTM5ZmQ0ODg5NjllZmE2ZmFkNWZlYTRkM2M4
YTE3YjcyZjcxOWVlNS4uMjM5ZWU0MDA0MWRkMTdkOGE3MDhiOGIyNmY4MTMwZWRlNzUzN2MyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtMjksMTAg
KzI5LDExIEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJ
bml0aWF0b3JzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDE5ICs3NywxNiBAQCBib29sIENTU0ZvbnRG
YWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9v
bCAoY29uc3QgQwogICAgIHJldHVybiBoYW5kbGVyKCptX2NhY2hlZEZvbnQpOwogfQogCi1DYWNo
ZWRGb250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVu
dCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gQ1NTRm9udEZhY2VTcmNWYWx1
ZTo6Zm9udExvYWRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wg
aXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKIHsK
ICAgICBpZiAobV9jYWNoZWRGb250KQotICAgICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRGb250TG9hZFJlcXVlc3Q+KCptX2Nh
Y2hlZEZvbnQpOwogCi0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwotICAgIG9wdGlv
bnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGlzSW5pdGlhdGluZ0VsZW1lbnRJ
blVzZXJBZ2VudFNoYWRvd1RyZWUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpT
a2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGlj
eUNoZWNrOwotICAgIG9wdGlvbnMubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9IG1fbG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZTsKKyAgICBhdXRvIHJlcXVlc3QgPSBjb250ZXh0LT5mb250TG9hZFJlcXVl
c3QobV9yZXNvdXJjZSwgaXNTVkcsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgaWYgKGlzPENhY2hlZEZvbnRM
b2FkUmVxdWVzdD4ocmVxdWVzdC5nZXQoKSkpCisgICAgICAgIG1fY2FjaGVkRm9udCA9ICZkb3du
Y2FzdDxDYWNoZWRGb250TG9hZFJlcXVlc3Q+KHJlcXVlc3QuZ2V0KCkpLT5jYWNoZWRGb250KCk7
CiAKLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKG1fcmVzb3VyY2UpKSwgb3B0aW9ucyk7Ci0gICAgcmVxdWVzdC5z
ZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7Ci0gICAg
bV9jYWNoZWRGb250ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEZv
bnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkcpLnZhbHVlX29yKG51bGxwdHIpOwotICAgIHJldHVy
biBtX2NhY2hlZEZvbnQuZ2V0KCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIGJvb2wgQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmIG90aGVy
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKaW5kZXggYzVk
YzU5ZmQ5NmExYmUzMjgzNjM0NGZmMTlkOTU4NzcyOTI2ZDdiNC4uY2JlMTQxMWU0NmM0ZWQ3NmU3
MTFiYzM0MWU2NTk5MDNmNTBmYWJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
cmNWYWx1ZS5oCkBAIC0zNCw4ICszNCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENhY2hlZEZvbnQ7Ci1jbGFzcyBEb2N1bWVudDsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKIGNs
YXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAK
IGNsYXNzIENTU0ZvbnRGYWNlU3JjVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVi
bGljOgpAQCAtNjYsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHRyYXZlcnNlU3VicmVz
b3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4m
IGhhbmRsZXIpIGNvbnN0OwogCi0gICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChEb2N1bWVudCos
IGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJl
ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0Vs
ZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NT
Rm9udEZhY2VTcmNWYWx1ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwCmluZGV4IGMxMTU3OGNmYzUwNDEyY2JhNmM1NTMwZjk0YmU4YWEzNjM0NDc1Y2MuLmFj
ZDJhMWNjMjRlMzRjMDU0ZDAzNzgyMzQ4NzczN2NmZWM3ZmViNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC02OCw3ICs2OCw2IEBAIENTU0ZvbnRTZWxlY3Rvcjo6
Q1NTRm9udFNlbGVjdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBt
X2ZvbnRDYWNoZShtYWtlUmVmKGNvbnRleHQuZm9udENhY2hlKCkpKQogICAgICwgbV9jc3NGb250
RmFjZVNldChDU1NGb250RmFjZVNldDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb250TW9kaWZp
ZWRPYnNlcnZlcihbdGhpc10geyBmb250TW9kaWZpZWQoKTsgfSkKLSAgICAsIG1fZm9udExvYWRp
bmdUaW1lcigqdGhpcywgJkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKQog
ICAgICwgbV91bmlxdWVJZCgrK2ZvbnRTZWxlY3RvcklkKQogICAgICwgbV92ZXJzaW9uKDApCiB7
CkBAIC05Myw3ICs5Miw3IEBAIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7
CiAgICAgTE9HKEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAotICAg
IHN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOworICAgIGNsZWFyRm9udHMoKTsKICAgICBtX2Zv
bnRDYWNoZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIApAQCAtMzM2LDk0ICszMzUsMTMgQEAg
Rm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3IKICAgICByZXR1cm4gRm9udFJhbmdlcyB7IFdURk1vdmUo
Zm9udCkgfTsKIH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6OnN0b3BMb2FkaW5nQW5kQ2xlYXJG
b250cygpCit2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Y2xlYXJGb250cygpCiB7Ci0gICAgaWYgKG1f
aXNTdG9wcGVkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZl
KCkpOwotICAgICAgICBBU1NFUlQobV9mb250c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgbV9m
b250TG9hZGluZ1RpbWVyLnN0b3AoKTsKLQotICAgIGlmIChpczxEb2N1bWVudD4obV9jb250ZXh0
LmdldCgpKSkgewotICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigq
bV9jb250ZXh0KTsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNl
TG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICAgICAgZm9yIChh
dXRvJiBmb250SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAgICAgICAv
LyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29v
bigpLgotICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENv
dW50KCpmb250SGFuZGxlKTsKLSAgICAgICAgfQotICAgICAgICBtX2ZvbnRzVG9CZWdpbkxvYWRp
bmcuY2xlYXIoKTsKLSAgICB9Ci0KICAgICBtX2Nzc0ZvbnRGYWNlU2V0LT5jbGVhcigpOwogICAg
IG1fY2xpZW50cy5jbGVhcigpOwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2Fk
aW5nRm9udFNvb24oQ2FjaGVkRm9udCYgZm9udCkKLXsKLSAgICBpZiAobV9pc1N0b3BwZWQgfHwg
IWlzPERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLQotICAgIG1f
Zm9udHNUb0JlZ2luTG9hZGluZy5hcHBlbmQoJmZvbnQpOwotICAgIC8vIEluY3JlbWVudCB0aGUg
cmVxdWVzdCBjb3VudCBub3csIGluIG9yZGVyIHRvIHByZXZlbnQgZGlkRmluaXNoTG9hZCBmcm9t
IGJlaW5nIGRpc3BhdGNoZWQKLSAgICAvLyBhZnRlciB0aGlzIGZvbnQgaGFzIGJlZW4gcmVxdWVz
dGVkIGJ1dCBiZWZvcmUgaXQgYmVnYW4gbG9hZGluZy4gQmFsYW5jZWQgYnkKLSAgICAvLyBkZWNy
ZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBmb250TG9hZGluZ1RpbWVyRmlyZWQoKSBhbmQgaW4gc3Rv
cExvYWRpbmdBbmRDbGVhckZvbnRzKCkuCi0gICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5pbmNyZW1lbnRSZXF1ZXN0Q291bnQoZm9udCk7Ci0KLSAgICBpZiAoIW1faXNGb250TG9h
ZGluZ1N1c3BlbmRlZCAmJiAhbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAg
IG1fZm9udExvYWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDU1NGb250
U2VsZWN0b3I6OnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCkKLXsKLSAgICBzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQpOwotfQotCi12b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6bG9hZFBlbmRpbmdGb250cygpCi17Ci0gICAgaWYgKG1faXNGb250TG9hZGluZ1N1
c3BlbmRlZCB8fCAhaXM8RG9jdW1lbnQ+KG1fY29udGV4dC5nZXQoKSkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2NvbnRleHQp
OwotCi0gICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBmb250c1Rv
QmVnaW5Mb2FkaW5nOwotICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcpOwotCi0gICAgLy8gQ1NTRm9udFNlbGVjdG9yIGNvdWxkIGdldCBkZWxldGVkIHZp
YSBiZWdpbkxvYWRJZk5lZWRlZCgpIG9yIGxvYWREb25lKCkgdW5sZXNzIHByb3RlY3RlZC4KLSAg
ICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIENhY2hl
ZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hlZFJl
c291cmNlTG9hZGVyKCk7Ci0gICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2lu
TG9hZGluZykgewotICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7Ci0gICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3Vu
dCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCi0gICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7Ci0gICAgfQotfQotCi12b2lk
IENTU0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKCkKLXsKLSAgICBpZiAoIWlz
PERvY3VtZW50PihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KTsKLSAgICBSZWY8Q1NT
Rm9udFNlbGVjdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGxvYWRQZW5kaW5nRm9u
dHMoKTsKLQotICAgIC8vIEZJWE1FOiBVc2UgU3VicmVzb3VyY2VMb2FkZXIgaW5zdGVhZC4KLSAg
ICAvLyBDYWxsIEZyYW1lTG9hZGVyOjpsb2FkRG9uZSBiZWZvcmUgRnJhbWVMb2FkZXI6OnN1YnJl
c291cmNlTG9hZERvbmUgdG8gbWF0Y2ggdGhlIG9yZGVyIGluIFN1YnJlc291cmNlTG9hZGVyOjpu
b3RpZnlEb25lLgotICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkubG9hZERvbmUo
TG9hZENvbXBsZXRpb25UeXBlOjpGaW5pc2gpOwotICAgIC8vIEVuc3VyZSB0aGF0IGlmIHRoZSBy
ZXF1ZXN0IGNvdW50IHJlYWNoZXMgemVybywgdGhlIGZyYW1lIGxvYWRlciB3aWxsIGtub3cgYWJv
dXQgaXQuCi0gICAgLy8gTmV3IGZvbnQgbG9hZHMgbWF5IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQg
YWZ0ZXIgdGhlIGRvY3VtZW50IGxvYWQgaXMgY29tcGxldGUgYnV0IGJlZm9yZSB3ZSBoYXZlIGRp
c3BhdGNoZWQKLSAgICAvLyBkaWRGaW5pc2hMb2FkaW5nIGZvciB0aGUgZnJhbWUuIE1ha2Ugc3Vy
ZSB0aGUgZGVsZWdhdGUgaXMgYWx3YXlzIGRpc3BhdGNoZWQgYnkgY2hlY2tpbmcgZXhwbGljaXRs
eS4KLSAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+
bG9hZGVyKCkuY2hlY2tMb2FkQ29tcGxldGUoKTsKLX0KLQogc2l6ZV90IENTU0ZvbnRTZWxlY3Rv
cjo6ZmFsbGJhY2tGb250Q291bnQoKQogewogICAgIGlmIChtX2lzU3RvcHBlZCkKQEAgLTQ0OSwy
OSArMzY3LDQgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHQKICAgICByZXR1cm4gZm9udDsKIH0K
IAotdm9pZCBDU1NGb250U2VsZWN0b3I6OnN0b3AoKQotewotICAgIG1fZm9udExvYWRpbmdUaW1l
ci5zdG9wKCk7Ci19Ci0KLXZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pCi17Ci0gICAgaWYgKG1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBtX2Zv
bnRMb2FkaW5nVGltZXIuc3RvcCgpOwotfQotCi12b2lkIENTU0ZvbnRTZWxlY3Rvcjo6cmVzdW1l
KCkKLXsKLSAgICBpZiAoIW1faXNGb250TG9hZGluZ1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKCFtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBt
X2ZvbnRMb2FkaW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci0KLSAgICBtX2lzRm9udExvYWRp
bmdTdXNwZW5kZWQgPSBmYWxzZTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCmluZGV4IGU0YWZmMjZhYWFmZjA4Zjg2ODY3ZTA0NTU5ZmE0MWI0YmI3ZThmMzcuLjQzNDdl
ODVhMTU2MjM0YTkzY2ViZWQxNDdjMjMyNmMyMWI1MWFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBmYWxs
YmFja0ZvbnRDb3VudCgpIGZpbmFsOwogICAgIFJlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChj
b25zdCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogCi0gICAgdm9pZCBzdG9wTG9h
ZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICB2b2lkIGNsZWFyRm9udHMoKTsKICAgICB2b2lkIGVt
cHR5Q2FjaGVzKCk7CiAgICAgdm9pZCBidWlsZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGJ1aWxkQ29t
cGxldGVkKCk7CkBAIC04MSw5ICs4MSw2IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQuZ2V0KCk7IH0KIAotICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYp
OwotICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKLQogICAgIEZvbnRGYWNlU2V0
KiBmb250RmFjZVNldElmRXhpc3RzKCk7CiAgICAgRm9udEZhY2VTZXQmIGZvbnRGYWNlU2V0KCk7
CiAKQEAgLTExMCwxMiArMTA3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvbnRTdHlsZVVwZGF0
ZU5lZWRlZChDU1NGb250RmFjZSYpIGZpbmFsOwogCiAgICAgdm9pZCBmb250TW9kaWZpZWQoKTsK
LSAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0Ci0gICAgdm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJDU1NGb250U2Vs
ZWN0b3IiX3M7IH0KIAogICAgIHN0cnVjdCBQZW5kaW5nRm9udEZhY2VSdWxlIHsKQEAgLTEzMCwx
NSArMTIzLDExIEBAIHByaXZhdGU6CiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2Nzc0ZvbnRG
YWNlU2V0OwogICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwogCi0g
ICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmc7CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NTRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rp
b25zUG9zc2libHlUb1JlbW92ZTsKICAgICBIYXNoU2V0PFJlZlB0cjxTdHlsZVJ1bGVGb250RmFj
ZT4+IG1fY3NzQ29ubmVjdGlvbnNFbmNvdW50ZXJlZER1cmluZ0J1aWxkOwogCiAgICAgQ1NTRm9u
dEZhY2VTZXQ6OkZvbnRNb2RpZmllZE9ic2VydmVyIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXI7CiAK
LSAgICBUaW1lciBtX2ZvbnRMb2FkaW5nVGltZXI7Ci0gICAgYm9vbCBtX2lzRm9udExvYWRpbmdT
dXNwZW5kZWQgeyBmYWxzZSB9OwotCiAgICAgdW5zaWduZWQgbV91bmlxdWVJZDsKICAgICB1bnNp
Z25lZCBtX3ZlcnNpb247CiAgICAgdW5zaWduZWQgbV9jb21wdXRpbmdSb290U3R5bGVGb250Q291
bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlYjRmMjhiZDMzMDdlNDc0ZGJh
N2EzZTI2YWE3Y2EwMDU2M2Y1NjEyLi43ZDRkZjY2OTY1MjlhZGY4Zjk0MjkyOTI5YTEwNGVlMTFi
NWFkYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgog
I2luY2x1ZGUgIkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250TG9h
ZFJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRGcmFtZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCkBA
IC01OSw2ICs2MCw3IEBACiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJE
ZWJ1Z1BhZ2VPdmVybGF5cy5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5o
IgorI2luY2x1ZGUgIkRvY3VtZW50Rm9udExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgiCkBAIC02MzksNiArNjQxLDcgQEAgRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBV
UkwmIHVybCwgRG9jdW0KICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRo
aXMsICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKICAgICAs
IG1fc2hhcmVkT2JqZWN0UG9vbENsZWFyVGltZXIoKnRoaXMsICZEb2N1bWVudDo6Y2xlYXJTaGFy
ZWRPYmplY3RQb29sKQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVjdG9yOjpjcmVh
dGUoKnRoaXMpKQorICAgICwgbV9mb250TG9hZGVyKG1ha2VVbmlxdWVSZWY8RG9jdW1lbnRGb250
TG9hZGVyPigqdGhpcykpCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKCp0
aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCiAgICAg
LCBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6aW52YWxpZGF0ZURP
TUNvb2tpZUNhY2hlKQogICAgICwgbV9zb2NrZXRQcm92aWRlcihwYWdlKCkgPyAmcGFnZSgpLT5z
b2NrZXRQcm92aWRlcigpIDogbnVsbHB0cikKQEAgLTc1OCw3ICs3NjEsNyBAQCBEb2N1bWVudDo6
fkRvY3VtZW50KCkKICAgICBleHRlbnNpb25TdHlsZVNoZWV0cygpLmRldGFjaEZyb21Eb2N1bWVu
dCgpOwogCiAgICAgc3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2ZXIoKTsgLy8gV2UgbmVlZCB0byBk
ZXN0cm95IENTU0ZvbnRTZWxlY3RvciBiZWZvcmUgZGVzdHJveWluZyBtX2NhY2hlZFJlc291cmNl
TG9hZGVyLgotICAgIG1fZm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsK
KyAgICBtX2ZvbnRMb2FkZXItPnN0b3BMb2FkaW5nQW5kQ2xlYXJGb250cygpOwogCiAgICAgLy8g
SXQncyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2lu
ZyB0aGUgc2FtZSBDYWNoZWRSZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8g
bG9hZCB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGgg
dGhlIHNhbWUgRG9jdW1lbnRMb2FkZXIpLgpAQCAtODA3LDcgKzgxMCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNs
ZWFyKCk7CiAgICAgICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0geyB9OwogCi0g
ICAgICAgIG1fZm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKKyAgICAg
ICAgbV9mb250TG9hZGVyLT5zdG9wTG9hZGluZ0FuZENsZWFyRm9udHMoKTsKIAogICAgICAgICBk
ZXRhY2hQYXJzZXIoKTsKIApAQCAtMjA2Miw3ICsyMDY1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVz
b2x2ZVN0eWxlKFJlc29sdmVTdHlsZVR5cGUgdHlwZSkKIAogICAgICAgICBtX2luU3R5bGVSZWNh
bGMgPSBmYWxzZTsKIAotICAgICAgICBmb250U2VsZWN0b3IoKS5sb2FkUGVuZGluZ0ZvbnRzKCk7
CisgICAgICAgIG1fZm9udExvYWRlci0+bG9hZFBlbmRpbmdGb250cygpOwogCiAgICAgICAgIGlm
IChzdHlsZVVwZGF0ZSkgewogICAgICAgICAgICAgdXBkYXRlUmVuZGVyVHJlZShXVEZNb3ZlKHN0
eWxlVXBkYXRlKSk7CkBAIC0yNzEyLDYgKzI3MTUsMTEgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1l
RGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCkKICNlbmRpZgogfQogCit2b2lkIERv
Y3VtZW50OjpzdXNwZW5kRm9udExvYWRpbmcoKQoreworICAgIG1fZm9udExvYWRlci0+c3VzcGVu
ZEZvbnRMb2FkaW5nKCk7Cit9CisKIGJvb2wgRG9jdW1lbnQ6OnNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CiB7CiAgICAgLy8gQnlwYXNzIHRoaXMgcG9s
aWN5IHdoZW4gdGhlIHdvcmxkIGlzIGtub3duLCBhbmQgaXQgbm90IHRoZSBub3JtYWwgd29ybGQu
CkBAIC0yOTk3LDYgKzMwMDUsMTkgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRPcGVuKCkKICAg
ICBzZXRSZWFkeVN0YXRlKExvYWRpbmcpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiBEb2N1bWVudDo6Zm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZH
LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZy
b21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICBhdXRvKiBjYWNo
ZWRGb250ID0gbV9mb250TG9hZGVyLT5jYWNoZWRGb250KGNvbXBsZXRlVVJMKHVybCksIGlzU1ZH
LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKTsKKyAgICByZXR1cm4gY2FjaGVkRm9udCA/IG1ha2VVbmlxdWU8Q2FjaGVkRm9u
dExvYWRSZXF1ZXN0PigqY2FjaGVkRm9udCkgOiBudWxscHRyOworfQorCit2b2lkIERvY3VtZW50
OjpiZWdpbkxvYWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
QVNTRVJUKGlzPENhY2hlZEZvbnRMb2FkUmVxdWVzdD4ocmVxdWVzdCkpOworICAgIGF1dG8mIGZv
bnQgPSBkb3duY2FzdDxDYWNoZWRGb250TG9hZFJlcXVlc3Q+KHJlcXVlc3QpLmNhY2hlZEZvbnQo
KTsKKyAgICBtX2ZvbnRMb2FkZXItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKGZvbnQpOworfQorCiBI
VE1MQm9keUVsZW1lbnQqIERvY3VtZW50Ojpib2R5KCkgY29uc3QKIHsKICAgICBhdXRvKiBlbGVt
ZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CkBAIC01NTE2LDYgKzU1MzcsOCBAQCB2b2lkIERvY3Vt
ZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIG1fdmlzdWFsVXBk
YXRlc0FsbG93ZWQgPSBmYWxzZTsKICAgICBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVy
LnN0b3AoKTsKIAorICAgIG1fZm9udExvYWRlci0+c3VzcGVuZEZvbnRMb2FkaW5nKCk7CisKICAg
ICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsKIH0KIApAQCAtNTU0Miw2ICs1NTY1LDggQEAgdm9pZCBE
b2N1bWVudDo6cmVzdW1lKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogCiAgICAgbV92aXN1
YWxVcGRhdGVzQWxsb3dlZCA9IHRydWU7CiAKKyAgICBtX2ZvbnRMb2FkZXItPnJlc3VtZUZvbnRM
b2FkaW5nKCk7CisKICAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFmOWE4M2JmZDI2NGE0ZTE0MGUz
YzFmMTM4YmZhYzRmMjU3OTQyOGIuLmFhNGQxNmI3N2ExYWM3M2UyMTk4ZjEwOTBlNTRiZTIzNzZj
YzBjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjIsNiArMTIyLDcgQEAgY2xhc3MgRGV2
aWNlTW90aW9uQ29udHJvbGxlcjsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzQ29udHJvbGxlcjsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3MgRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyOworY2xhc3MgRG9jdW1lbnRGb250TG9hZGVyOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOwpAQCAtMTM3LDYgKzEzOCw3IEBAIGNsYXNzIEV4dGVuc2lvblN0
eWxlU2hlZXRzOwogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRm9u
dEZhY2VTZXQ7CitjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBGb3JtQ29udHJvbGxlcjsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVTZWxlY3Rpb247CkBAIC02MzMsNiArNjM1LDggQEAg
cHVibGljOgogICAgIHZvaWQgc3VzcGVuZERldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRl
cygpOwogICAgIHZvaWQgcmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCk7
CiAKKyAgICB2b2lkIHN1c3BlbmRGb250TG9hZGluZygpOworCiAgICAgUmVuZGVyVmlldyogcmVu
ZGVyVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVmlldy5nZXQoKTsgfQogCiAgICAgYm9v
bCByZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclRyZWVC
ZWluZ0Rlc3Ryb3llZDsgfQpAQCAtMTY0Nyw2ICsxNjUxLDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBDU1NGb250U2VsZWN0b3IqIGNzc0ZvbnRTZWxl
Y3RvcigpIGZpbmFsIHsgcmV0dXJuIG1fZm9udFNlbGVjdG9yLnB0cigpOyB9CisgICAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0KFN0cmluZyYsIGJvb2ws
IGJvb2wsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFsOworICAgIHZvaWQgYmVnaW5Mb2Fk
aW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7CiAKICAgICAvLyBGb250U2VsZWN0
b3JDbGllbnQKICAgICB2b2lkIGZvbnRzTmVlZFVwZGF0ZShGb250U2VsZWN0b3ImKSBmaW5hbDsK
QEAgLTE5ODIsNiArMTk4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IG1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MOwogCiAgICAgUmVmPENTU0Zv
bnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7CisgICAgVW5pcXVlUmVmPERvY3VtZW50Rm9udExv
YWRlcj4gbV9mb250TG9hZGVyOwogCiAgICAgV2Vha0hhc2hTZXQ8TWVkaWFQcm9kdWNlcj4gbV9h
dWRpb1Byb2R1Y2VyczsKICAgICBXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uPiBtX2FjdGl2ZVNw
ZWVjaFJlY29nbml0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
Rm9udExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGb250TG9hZGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZGQ4ZGUwNjg3Mjg5ZGM4YTYyNzJlMzQ0NTFjNTQyNjI1YzQzYjQyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Rm9udExvYWRlci5j
cHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTWV0cm9sb2dp
Y2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEb2N1bWVudEZvbnRMb2FkZXIuaCIKKworI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRG9jdW1l
bnRGb250TG9hZGVyOjpEb2N1bWVudEZvbnRMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50KQorICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fZm9udExvYWRpbmdUaW1lcigqdGhpcywg
JkRvY3VtZW50Rm9udExvYWRlcjo6Zm9udExvYWRpbmdUaW1lckZpcmVkKQoreworfQorCitEb2N1
bWVudEZvbnRMb2FkZXI6On5Eb2N1bWVudEZvbnRMb2FkZXIoKQoreworICAgIHN0b3BMb2FkaW5n
QW5kQ2xlYXJGb250cygpOworfQorCitDYWNoZWRGb250KiBEb2N1bWVudEZvbnRMb2FkZXI6OmNh
Y2hlZEZvbnQoVVJMJiYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJ
blVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9w
YXF1ZVNvdXJjZSkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAgb3B0
aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaXNJbml0aWF0aW5nRWxlbWVu
dEluVXNlckFnZW50U2hhZG93VHJlZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246
OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9s
aWN5Q2hlY2s7CisgICAgb3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVlU291cmNlID0gbG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZTsKKworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291
cmNlUmVxdWVzdChXVEZNb3ZlKHVybCkpLCBvcHRpb25zKTsKKyAgICByZXF1ZXN0LnNldEluaXRp
YXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKKyAgICByZXR1cm4g
bV9kb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUocmVx
dWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxscHRyKS5nZXQoKTsKK30KKwordm9pZCBEb2N1bWVu
dEZvbnRMb2FkZXI6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmIGZvbnQpCit7Cisg
ICAgaWYgKG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuYXBwZW5kKCZmb250KTsKKyAgICAvLyBJbmNyZW1lbnQgdGhlIHJlcXVlc3QgY291
bnQgbm93LCBpbiBvcmRlciB0byBwcmV2ZW50IGRpZEZpbmlzaExvYWQgZnJvbSBiZWluZyBkaXNw
YXRjaGVkCisgICAgLy8gYWZ0ZXIgdGhpcyBmb250IGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgYmVm
b3JlIGl0IGJlZ2FuIGxvYWRpbmcuIEJhbGFuY2VkIGJ5CisgICAgLy8gZGVjcmVtZW50UmVxdWVz
dENvdW50KCkgaW4gZm9udExvYWRpbmdUaW1lckZpcmVkKCkgYW5kIGluIHN0b3BMb2FkaW5nQW5k
Q2xlYXJGb250cygpLgorICAgIG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQoZm9udCk7CisKKyAgICBpZiAoIW1faXNGb250TG9hZGluZ1N1c3Bl
bmRlZCAmJiAhbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZm9udExv
YWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKK30KKwordm9pZCBEb2N1bWVudEZvbnRMb2Fk
ZXI6OmxvYWRQZW5kaW5nRm9udHMoKQoreworICAgIGlmIChtX2lzRm9udExvYWRpbmdTdXNwZW5k
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRGb250Pj4gZm9udHNUb0JlZ2luTG9hZGluZzsKKyAgICBmb250c1RvQmVnaW5Mb2FkaW5n
LnN3YXAobV9mb250c1RvQmVnaW5Mb2FkaW5nKTsKKworICAgIGF1dG8mIGNhY2hlZFJlc291cmNl
TG9hZGVyID0gbV9kb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOworICAgIGZvciAoYXV0
byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKKyAgICAgICAgZm9udEhhbmRs
ZS0+YmVnaW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgICAgICAvLyBC
YWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigp
LgorICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKmZv
bnRIYW5kbGUpOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudEZvbnRMb2FkZXI6OmZvbnRMb2Fk
aW5nVGltZXJGaXJlZCgpCit7CisgICAgbG9hZFBlbmRpbmdGb250cygpOworCisgICAgLy8gRklY
TUU6IFVzZSBTdWJyZXNvdXJjZUxvYWRlciBpbnN0ZWFkLgorICAgIC8vIENhbGwgRnJhbWVMb2Fk
ZXI6OmxvYWREb25lIGJlZm9yZSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VMb2FkRG9uZSB0byBt
YXRjaCB0aGUgb3JkZXIgaW4gU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUuCisgICAgbV9k
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWREb25lKExvYWRDb21wbGV0aW9uVHlw
ZTo6RmluaXNoKTsKKyAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3VudCByZWFj
aGVzIHplcm8sIHRoZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgorICAgIC8vIE5l
dyBmb250IGxvYWRzIG1heSBiZSB0cmlnZ2VyZWQgYnkgbGF5b3V0IGFmdGVyIHRoZSBkb2N1bWVu
dCBsb2FkIGlzIGNvbXBsZXRlIGJ1dCBiZWZvcmUgd2UgaGF2ZSBkaXNwYXRjaGVkCisgICAgLy8g
ZGlkRmluaXNoTG9hZGluZyBmb3IgdGhlIGZyYW1lLiBNYWtlIHN1cmUgdGhlIGRlbGVnYXRlIGlz
IGFsd2F5cyBkaXNwYXRjaGVkIGJ5IGNoZWNraW5nIGV4cGxpY2l0bHkuCisgICAgaWYgKG1fZG9j
dW1lbnQuZnJhbWUoKSkKKyAgICAgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jaGVj
a0xvYWRDb21wbGV0ZSgpOworfQorCit2b2lkIERvY3VtZW50Rm9udExvYWRlcjo6c3RvcExvYWRp
bmdBbmRDbGVhckZvbnRzKCkKK3sKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZm9udExvYWRpbmdUaW1lci5zdG9wKCk7CisgICAgYXV0byYgY2FjaGVkUmVz
b3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgZm9y
IChhdXRvJiBmb250SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7CisgICAgICAgIC8v
IEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29u
KCkuCisgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgq
Zm9udEhhbmRsZSk7CisgICAgfQorICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5jbGVhcigpOwor
ICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuY2xlYXJGb250cygpOworCisgICAgbV9pc0Zv
bnRMb2FkaW5nU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX2lzU3RvcHBlZCA9IHRydWU7Cit9CisK
K3ZvaWQgRG9jdW1lbnRGb250TG9hZGVyOjpzdXNwZW5kRm9udExvYWRpbmcoKQoreworICAgIGlm
IChtX2lzRm9udExvYWRpbmdTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZm9u
dExvYWRpbmdUaW1lci5zdG9wKCk7CisgICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gdHJ1
ZTsKK30KKwordm9pZCBEb2N1bWVudEZvbnRMb2FkZXI6OnJlc3VtZUZvbnRMb2FkaW5nKCkKK3sK
KyAgICBpZiAoIW1faXNGb250TG9hZGluZ1N1c3BlbmRlZCB8fCBtX2lzU3RvcHBlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkID0gZmFsc2U7CisgICAg
aWYgKCFtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQorICAgICAgICBtX2ZvbnRMb2Fk
aW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZvbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZvbnRMb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzNiMDZm
ZmZkZjgyMmIyYjBjZGZhZTUyYTA0NDcwNGQxM2U5Y2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Rm9udExvYWRlci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZEZvbnQ7CisKK2NsYXNzIERvY3VtZW50
Rm9udExvYWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
RG9jdW1lbnRGb250TG9hZGVyKERvY3VtZW50Jik7CisgICAgfkRvY3VtZW50Rm9udExvYWRlcigp
OworCisgICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChVUkwmJiwgYm9vbCwgYm9vbCwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRG
b250Jik7CisKKyAgICB2b2lkIGxvYWRQZW5kaW5nRm9udHMoKTsKKyAgICB2b2lkIHN0b3BMb2Fk
aW5nQW5kQ2xlYXJGb250cygpOworCisgICAgdm9pZCBzdXNwZW5kRm9udExvYWRpbmcoKTsKKyAg
ICB2b2lkIHJlc3VtZUZvbnRMb2FkaW5nKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBmb250TG9h
ZGluZ1RpbWVyRmlyZWQoKTsKKworICAgIERvY3VtZW50JiBtX2RvY3VtZW50OworICAgIFRpbWVy
IG1fZm9udExvYWRpbmdUaW1lcjsKKyAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkRm9udD4+IG1fZm9udHNUb0JlZ2luTG9hZGluZzsKKyAgICBib29sIG1faXNGb250TG9hZGlu
Z1N1c3BlbmRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzc3MzgzMWI4OGMyYjAyYjA1YmMyZmZiNmYwNTNl
OGRhZjFhNWY3YS4uZTc1MGE2MjdhYjYwYmM5M2ZkYjVmNzU4NTk4M2U2ZGE1NDllYmI2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5o
IgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTIzMiw2ICsyMzMsMTEg
QEAgRm9udENhY2hlJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb250Q2FjaGUoKQogICAgIHJl
dHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udExv
YWRSZXF1ZXN0PiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb250TG9hZFJlcXVlc3QoU3RyaW5n
JiwgYm9vbCwgYm9vbCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb3JFYWNoQWN0aXZlRE9N
T2JqZWN0KGNvbnN0IEZ1bmN0aW9uPFNob3VsZENvbnRpbnVlKEFjdGl2ZURPTU9iamVjdCYpPiYg
YXBwbHkpIGNvbnN0CiB7CiAgICAgLy8gSXQgaXMgbm90IGFsbG93ZWQgdG8gcnVuIGFyYml0cmFy
eSBzY3JpcHQgb3IgY29uc3RydWN0IG5ldyBBY3RpdmVET01PYmplY3RzIHdoaWxlIHdlIGFyZSBp
dGVyYXRpbmcgb3ZlciBBY3RpdmVET01PYmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZThiZjBlZmNiNmJiYTEyNjBmMGE5MGI3OTc1NDM4
MTZiMGRmMWJiYi4uYzk5OGIxMmYyOWNjNjk2OGI5Yzk2NjViMDY1ZmQxMmQ3OGQ1N2I4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIu
aCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKQEAgLTY2LDYgKzY3LDcgQEAgY2xhc3MgRXZl
bnRRdWV1ZTsKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cDsKIGNsYXNzIEV2ZW50VGFyZ2V0Owog
Y2xhc3MgRm9udENhY2hlOworY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgTWVzc2FnZVBv
cnQ7CiBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwogY2xhc3MgUmVqZWN0ZWRQcm9taXNlVHJhY2tl
cjsKQEAgLTE2NSw2ICsxNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZvbnRDYWNoZSYg
Zm9udENhY2hlKCk7CiAgICAgdmlydHVhbCBDU1NGb250U2VsZWN0b3IqIGNzc0ZvbnRTZWxlY3Rv
cigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxGb250
TG9hZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVzdChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9v
bCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExv
YWRSZXF1ZXN0JikgeyB9CiAKICAgICB2b2lkIHJlZigpIHsgcmVmU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGM0ZTQ2
ZTg3MmM2YTZkMDIzMTdlYjE4MjE1NTI1NjNmZmVhNTVjZmEuLjY5MzRkZmRkYmJlMmE5YjhjZGIy
MjEwZDFkNjMxNTM5M2ZlNTQyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgiCiAjaW5jbHVkZSAiQXJjaGl2ZS5oIgogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24uaCIKLSNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDYWNoZWRQ
YWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgpAQCAtMzM4LDcgKzMzNyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OnN0b3BMb2FkaW5nKCkKICAgICBjYW5jZWxBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRl
cnMpOwogCiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKLSAgICAg
ICAgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7Cisg
ICAgICAgIGRvY3VtZW50LT5zdXNwZW5kRm9udExvYWRpbmcoKTsKIAogICAgIC8vIEFwcGNhY2hl
IHVzZXMgUmVzb3VyY2VIYW5kbGUgZGlyZWN0bHksIERvY3VtZW50TG9hZGVyIGRvZXNuJ3QgY291
bnQgdGhlc2UgbG9hZHMuCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+c3RvcExvYWRpbmdJ
bkZyYW1lKCptX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250
TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb250TG9hZFJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMzM0NWE4MmU0NjI4NWExOWI1NGNkZGFmZjYyMjE4YzA2NWVlMjFmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZvbnRMb2FkUmVxdWVzdC5oCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTWV0cm9sb2dpY2FsIEdy
b3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250VGFnZ2VkU2V0dGluZ3MuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Rm9udDsKK2NsYXNzIEZvbnREZXNjcmlwdGlvbjsKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdDsKK3N0
cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwordXNpbmcgRm9udEZlYXR1cmVTZXR0
aW5ncyA9IEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+OworCitjbGFzcyBGb250TG9hZFJlcXVlc3RD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZvbnRMb2FkUmVxdWVzdENsaWVudCgpID0g
ZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChGb250TG9hZFJlcXVlc3QmKSB7
IH0KK307CisKK2NsYXNzIEZvbnRMb2FkUmVxdWVzdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Rm9udExvYWRSZXF1ZXN0KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNl
dENsaWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDYWNoZWRGb250TG9hZFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
Rk9OVExPQURSRVFVRVNUKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpGb250TG9hZFJlcXVlc3QmIHJlcXVlc3QpIHsgcmV0dXJuIHJl
cXVlc3QucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250TG9hZFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250TG9hZFJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MDUzNTdhOGU1ZDBiN2YwYjZhMWFkZTRkY2EwODhhMWIyNzlmMTcwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRMb2Fk
UmVxdWVzdC5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTWV0
cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWRGb250LmgiCisjaW5j
bHVkZSAiQ2FjaGVkRm9udENsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxl
LmgiCisjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2FjaGVkRm9udExvYWRSZXF1ZXN0IGZpbmFsIDogcHVibGljIEZvbnRMb2FkUmVx
dWVzdCwgcHVibGljIENhY2hlZEZvbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIENhY2hlZEZvbnRMb2FkUmVxdWVzdChDYWNoZWRGb250JiBmb250
KQorICAgICAgICA6IG1fZm9udCgmZm9udCkKKyAgICB7CisgICAgfQorCisgICAgfkNhY2hlZEZv
bnRMb2FkUmVxdWVzdCgpCisgICAgeworICAgICAgICBpZiAobV9mb250TG9hZFJlcXVlc3RDbGll
bnQpCisgICAgICAgICAgICBtX2ZvbnQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgfQorCisg
ICAgQ2FjaGVkRm9udCYgY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuICptX2ZvbnQ7IH0KKwor
cHJpdmF0ZToKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZm9u
dC0+dXJsKCk7IH0KKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
Zm9udC0+aXNMb2FkaW5nKCk7IH0KKyAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2ZvbnQtPmVycm9yT2NjdXJyZWQoKTsgfQorCisgICAgYm9vbCBlbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpIGZpbmFsIHsgcmV0dXJu
IG1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEocmVtb3RlVVJJKTsgfQorICAgIFJlZlB0cjxG
b250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgc2V0dGluZ3MsIEZvbnRTZWxlY3Rp
b25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZm9udC0+Y3JlYXRlRm9udChkZXNjcmlwdGlvbiwgcmVtb3RlVVJJLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIHNldHRpbmdzLCBjYXBhYmlsaXRpZXMpOworICAg
IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCogY2xpZW50KSBm
aW5hbAorICAgIHsKKyAgICAgICAgYXV0byogb2xkQ2xpZW50ID0gbV9mb250TG9hZFJlcXVlc3RD
bGllbnQ7CisgICAgICAgIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50ID0gY2xpZW50OworCisgICAg
ICAgIGlmICghY2xpZW50ICYmIG9sZENsaWVudCkKKyAgICAgICAgICAgIG1fZm9udC0+cmVtb3Zl
Q2xpZW50KCp0aGlzKTsKKyAgICAgICAgZWxzZSBpZiAoY2xpZW50ICYmICFvbGRDbGllbnQpCisg
ICAgICAgICAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBp
c0NhY2hlZEZvbnRMb2FkUmVxdWVzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250JiBmb250KSBmaW5hbAorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChmb250LCAmZm9udCA9PSBtX2ZvbnQuZ2V0KCkpOworICAgICAgICBp
ZiAobV9mb250TG9hZFJlcXVlc3RDbGllbnQpCisgICAgICAgICAgICBtX2ZvbnRMb2FkUmVxdWVz
dENsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CisgICAgfQorCisgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkRm9udD4gbV9mb250OworICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9m
b250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRk9OVExPQURSRVFVRVNUKFdlYkNvcmU6
OkNhY2hlZEZvbnRMb2FkUmVxdWVzdCwgaXNDYWNoZWRGb250TG9hZFJlcXVlc3QoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODdmYzU4YzFi
NDEzOGMxNzZiOWIzYTZjMDE5MDdjZWMwZjk3YWU1OS4uNzc1MmFmOTU1MmI1NzQzNDZkNjI4ZDRm
N2ZhOGY3NmMzNjBkNDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTExMiw4ICsxMTIsNiBAQCBXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtl
ckdsb2JhbFNjb3BlKCkKICAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycyhs
b2NrZXIpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICB9CiAKLSAgICBpZiAobV9j
c3NGb250U2VsZWN0b3IpCi0gICAgICAgIG1fY3NzRm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0Fu
ZENsZWFyRm9udHMoKTsKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2NyeXB0
byA9IG51bGxwdHI7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>