<?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>233747</bug_id>
          
          <creation_ts>2021-12-01 22:27:42 -0800</creation_ts>
          <short_desc>move FontCache singleton and instance on WorkerGlobalScope to ThreadGlobalData</short_desc>
          <delta_ts>2021-12-07 21:14:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233750</dependson>
          <blocked>233488</blocked>
    
    <blocked>233749</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>clord</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1819573</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 22:27:42 -0800</bug_when>
    <thetext>There are various places in font code where we need access to a FontCache instance.  Currently we:

* assume that we&apos;re on the main thread (and call FontCache::singleton()), or
* get a FontCache off WorkerGlobalScope and pass it down (or store it) where it&apos;s needed, then pass it to fontCacheFallingBackToSingleton

Having to thread through, or store, the FontCache pointer is inconvenient, and there are some places where we don&apos;t have access to a FontCache pointer, but we&apos;re on a worker, and we call fontCacheFallingBackToSingleton and get back the main thread&apos;s instance.

I think it would be cleaner if we moved both the main thread FontCache singleton, and the one stored on a WorkerGlobalScope, to ThreadGlobalData, which is easily globally accessible.  Performing a TLS lookup is cheap these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819579</commentid>
    <comment_count>1</comment_count>
      <attachid>445673</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 22:56:36 -0800</bug_when>
    <thetext>Created attachment 445673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819631</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-12-02 02:14:44 -0800</bug_when>
    <thetext>Funny, this is how I originally had it, I can&apos;t remember what the resistance was to this method... Possibly because it reinforces the pattern of singletons that we generally want to move away from(?)

No objections from me though, I think this would just make a lot of things easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819640</commentid>
    <comment_count>3</comment_count>
      <attachid>445673</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-12-02 03:26:54 -0800</bug_when>
    <thetext>Comment on attachment 445673
Patch

Fly-by r+ - I like this direction, personally, and this patch looks good to me. Perhaps we could do the same thing for CSSValuePool...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819853</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-02 13:28:47 -0800</bug_when>
    <thetext>I&apos;m having seconds thoughts about exactly where to store these caches (now that Simon suggested it).  Maybe I shouldn&apos;t move FontCache to ThreadGlobalData, and (in my later patches like bug 233749) move the other thread unsafe caches to hang off FontCache, but instead use either bmalloc::PerThread&lt;T&gt; or WTF::ThreadSpecific&lt;T&gt; (depending on whether it&apos;s a per-thread singleton type like FontCache, or something else like a HashMap).

That would avoid mixing everything up in FontCache.  On the other hand, instead of having the one call to m_fontCache-&gt;invalidate() like I have in this patch in ThreadGlobalData::destroy, we&apos;d have to have a bunch of calls to the different caches to clear them.  Maybe it&apos;s better to be more explicit there anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819858</commentid>
    <comment_count>5</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-02 13:43:25 -0800</bug_when>
    <thetext>Well, there is one more advantage to having the FontCache hanging off ThreadGlobalData -- it means we don&apos;t have to have any code to handle the Web thread on iOS needing to have access to the same caches that are created on the main thread.

All this stuff would need to be duplicated for each cache that might be used by the Web thread and the main thread on iOS:

https://webkit-search.igalia.com/webkit/rev/535c2ce176bb30bd14e60940f4bcdb7e7cfcf7ba/Source/WebCore/platform/ThreadGlobalData.cpp#68-105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819937</commentid>
    <comment_count>6</comment_count>
      <attachid>445673</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-02 16:40:38 -0800</bug_when>
    <thetext>Comment on attachment 445673
Patch

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

What’s the performance impact of fetching thread global data in all these places, where many were accessing a local variable or data member before?

&gt; Source/WebCore/page/SettingsBase.cpp:61
&gt; +    // FIXME: Call invalidateFontCascadeCache() on all workers.
&gt; +    FontCache::forCurrentThread().invalidateFontCascadeCache();

Can we do this through a FontCache::forEachFontCache function, analogous to Page::forEachPage, or do we need to keep the registry of &quot;all&quot; somewhere outside the FontCache class?

One reason I ask is that if we know we are going to use that interface, we could deploy it now while touching each of these call sites even if right now it only did the current thread one. Then we’d have fewer FIXME in this patch.

&gt; Source/WebCore/platform/ThreadGlobalData.cpp:68
&gt; +    if (m_fontCache)
&gt; +        m_fontCache-&gt;invalidate();

What destroys the font cache? Does calling invalidate() also null out m_fontCache?

&gt; Source/WebCore/platform/graphics/FontCache.h:286
&gt; +    static std::unique_ptr&lt;FontCache&gt; create();

Not sure we need this function. Typically we just make the constructor public and use make_unique directly for non-reference-counted things.

Or we could try to keep things private and use friend to make it accessible to ThreadGlobalData. Could be the create function or the constructor.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:873
&gt;  #ifndef NDEBUG
&gt;      GCController::singleton().garbageCollectNow();
&gt; -    FontCache::singleton().invalidate();
&gt; +    // FIXME: What about FontCaches on worker threads?
&gt; +    FontCache::forCurrentThread().invalidate();
&gt;      MemoryCache::singleton().setDisabled(true);
&gt;  #endif

Question for whoever originally wrote this: Why is doing this work at termination, but only in debug versions, a good idea? Lack of a comment here makes this mysterious!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819968</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-02 17:15:40 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; What’s the performance impact of fetching thread global data in all these
&gt; places, where many were accessing a local variable or data member before?

On iOS, the threadGlobalData() function does this, in the common case of already being initialized:

* Reads a static variable (which doesn&apos;t have a complex initializer) that holds a pointer to a ThreadSpecific&lt;RefPtr&lt;ThreadGlobalData&gt;&gt;
* Jumps past the initialization code
* Calls into ThreadSpecific::get on the object it points to, which:
    * calls pthread_getspecific, which is three instructions long:
        _pthread_getspecific:
            1b8c:       68 d0 3b d5     mrs     x8, TPIDRRO_EL0
            1b90:       00 79 60 f8     ldr     x0, [x8, x0, lsl #3]
            1b94:       c0 03 5f d6     ret
* Dereferences the pointer returned by ThreadSpecific::get()
* Jumps past its initialization since it&apos;s already been created
* Returns the pointer to the ThreadGlobalData

On macOS, it does similar, though slightly less:

* Reads a static variable (which doesn&apos;t have a complex initializer) that holds a pointer to a ThreadSpecific&lt;ThreadGlobalData&gt;
* Jumps past the initialization code
* Calls into ThreadSpecific::get on the object it points to, which:
    * calls pthread_getspecific, which is two instructions long:
        _pthread_getspecific:
            1f29:       65 48 8b 04 fd 00 00 00 00      movq    %gs:(,%rdi,8), %rax
            1f32:       c3      retq
* Returns the pointer returned by ThreadSpecific::get()


So I think it&apos;s not much more than the current static singleton code, and also would have to be balanced against the stack pushing and popping to pass FontCache through all of the functions that would need access to it.

&gt; &gt; Source/WebCore/page/SettingsBase.cpp:61
&gt; &gt; +    // FIXME: Call invalidateFontCascadeCache() on all workers.
&gt; &gt; +    FontCache::forCurrentThread().invalidateFontCascadeCache();
&gt; 
&gt; Can we do this through a FontCache::forEachFontCache function, analogous to
&gt; Page::forEachPage, or do we need to keep the registry of &quot;all&quot; somewhere
&gt; outside the FontCache class?
&gt; 
&gt; One reason I ask is that if we know we are going to use that interface, we
&gt; could deploy it now while touching each of these call sites even if right
&gt; now it only did the current thread one. Then we’d have fewer FIXME in this
&gt; patch.

I haven&apos;t thought how exactly I&apos;m going to the function that loops over the FontCaches, since they&apos;ll each exist in a different thread, and there&apos;ll have to be some kind of runnable dispatch to each.  But probably we&apos;d iterate over all of the WorkerOrWorkletThreads (since we already have them all in WorkerOrWorkletThread::workerOrWorkletThreads()).

&gt; &gt; Source/WebCore/platform/ThreadGlobalData.cpp:68
&gt; &gt; +    if (m_fontCache)
&gt; &gt; +        m_fontCache-&gt;invalidate();
&gt; 
&gt; What destroys the font cache? Does calling invalidate() also null out
&gt; m_fontCache?

Maybe I have to.  There are some other fields on ThreadGlobalScope that aren&apos;t cleared in destroy(), and maybe they should be too.

I have a feeling now that the ThreadGlobalObjects themselves are never destroyed, which makes me wonder how the memory allocated for them is freed?  If we keep creating and destroying threads are we leaking ThreadGlobalObjects?

&gt; &gt; Source/WebKit/WebProcess/WebProcess.cpp:873
&gt; &gt;  #ifndef NDEBUG
&gt; &gt;      GCController::singleton().garbageCollectNow();
&gt; &gt; -    FontCache::singleton().invalidate();
&gt; &gt; +    // FIXME: What about FontCaches on worker threads?
&gt; &gt; +    FontCache::forCurrentThread().invalidate();
&gt; &gt;      MemoryCache::singleton().setDisabled(true);
&gt; &gt;  #endif
&gt; 
&gt; Question for whoever originally wrote this: Why is doing this work at
&gt; termination, but only in debug versions, a good idea? Lack of a comment here
&gt; makes this mysterious!

I don&apos;t know either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819973</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-02 17:36:27 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #7)
&gt; So I think it&apos;s not much more than the current static singleton code, and
&gt; also would have to be balanced against the stack pushing and popping to pass
&gt; FontCache through all of the functions that would need access to it.

I suppose we can do a quick performance test to be sure nothing measurable regressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819974</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-02 17:37:28 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #7)
&gt; &gt; &gt; Source/WebKit/WebProcess/WebProcess.cpp:873
&gt; &gt; &gt;  #ifndef NDEBUG
&gt; &gt; &gt;      GCController::singleton().garbageCollectNow();
&gt; &gt; &gt; -    FontCache::singleton().invalidate();
&gt; &gt; &gt; +    // FIXME: What about FontCaches on worker threads?
&gt; &gt; &gt; +    FontCache::forCurrentThread().invalidate();
&gt; &gt; &gt;      MemoryCache::singleton().setDisabled(true);
&gt; &gt; &gt;  #endif
&gt; &gt; 
&gt; &gt; Question for whoever originally wrote this: Why is doing this work at
&gt; &gt; termination, but only in debug versions, a good idea? Lack of a comment here
&gt; &gt; makes this mysterious!
&gt; 
&gt; I don&apos;t know either.

We should try just deleting this code. We know it won’t affect the production build since it’s debug-only, so any problems would have to be seen by people doing development or bots testing debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819979</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-02 18:10:44 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; We should try just deleting this code. We know it won’t affect the
&gt; production build since it’s debug-only, so any problems would have to be
&gt; seen by people doing development or bots testing debug builds.

https://commits.webkit.org/136348@main claims it reduces &quot;LEAK&quot; output lines.  Sounds plausible though I don&apos;t think I&apos;ve never seen any &quot;LEAK&quot; output lines so I don&apos;t know whether that still works or if I need to enable it explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819983</commentid>
    <comment_count>11</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-02 18:19:54 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #7)
&gt; &gt; &gt; Source/WebCore/platform/ThreadGlobalData.cpp:68
&gt; &gt; &gt; +    if (m_fontCache)
&gt; &gt; &gt; +        m_fontCache-&gt;invalidate();
&gt; &gt; 
&gt; &gt; What destroys the font cache? Does calling invalidate() also null out
&gt; &gt; m_fontCache?
&gt; 
&gt; Maybe I have to.  There are some other fields on ThreadGlobalScope that
&gt; aren&apos;t cleared in destroy(), and maybe they should be too.
&gt; 
&gt; I have a feeling now that the ThreadGlobalObjects themselves are never
&gt; destroyed, which makes me wonder how the memory allocated for them is freed?
&gt; If we keep creating and destroying threads are we leaking
&gt; ThreadGlobalObjects?

From code inspection, I think ThreadGlobaData objects get destroyed by virtue of having a destructor function registered as part of the pthread_create_key call, which will will be called upon thread exit.

So I&apos;m no longer sure why any of this work is done under ThreadGlobalData::destroy().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819985</commentid>
    <comment_count>12</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-02 18:22:56 -0800</bug_when>
    <thetext>From https://commits.webkit.org/50098@main it sounds like there was a reason to clear things in destroy() -- to ensure that AtomStrings were all destroyed before the atom string table itself is (as part of destroying WTFThreadData).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819991</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-02 18:45:14 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #7)
&gt; &gt; &gt; Source/WebCore/platform/ThreadGlobalData.cpp:68
&gt; &gt; &gt; +    if (m_fontCache)
&gt; &gt; &gt; +        m_fontCache-&gt;invalidate();
&gt; &gt; 
&gt; &gt; What destroys the font cache? Does calling invalidate() also null out
&gt; &gt; m_fontCache?
&gt; 
&gt; Maybe I have to.  There are some other fields on ThreadGlobalScope that
&gt; aren&apos;t cleared in destroy(), and maybe they should be too.

It’s entirely possible that the nulling out is only needed for cases where the order of destruction matters.

&gt; I have a feeling now that the ThreadGlobalObjects themselves are never
&gt; destroyed

Even though it was my comment that engendered that feeling, I think it is wrong. Seems like they do because ThreadSpecific::destroy gets called by the platform threading machinery, which then calls delete on the ThreadSpecific&apos;s object, which is a ThreadGlobalData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819992</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-02 18:45:28 -0800</bug_when>
    <thetext>Oh, I see you figured this things out above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819993</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-02 18:46:17 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #10)
&gt; https://commits.webkit.org/136348@main claims it reduces &quot;LEAK&quot; output
&gt; lines.  Sounds plausible though I don&apos;t think I&apos;ve never seen any &quot;LEAK&quot;
&gt; output lines so I don&apos;t know whether that still works or if I need to enable
&gt; it explicitly.

I think we may have removed the LEAK thing in the last couple of years.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820152</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-03 08:53:12 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #12)
&gt; From https://commits.webkit.org/50098@main it sounds like there was a reason
&gt; to clear things in destroy() -- to ensure that AtomStrings were all
&gt; destroyed before the atom string table itself is (as part of destroying
&gt; WTFThreadData).

Either you or I should help out future programmers by turning that into a comment in destroy(). In my view, this is exactly what comments are for. Adding the &quot;why&quot; to code. The code itself should be very clear on &quot;what&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820292</commentid>
    <comment_count>17</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-03 13:17:29 -0800</bug_when>
    <thetext>I&apos;ll add that comment.

Re performance I ran PLT5 and got no change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820293</commentid>
    <comment_count>18</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-12-03 13:27:28 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #17)
&gt; I&apos;ll add that comment.
&gt; 
&gt; Re performance I ran PLT5 and got no change.
MM might be a better pick to test for pref regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820466</commentid>
    <comment_count>19</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-04 16:13:32 -0800</bug_when>
    <thetext>(In reply to zalan from comment #18)
&gt; MM might be a better pick to test for pref regression.

MotionMark shows no change too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820470</commentid>
    <comment_count>20</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-12-04 19:09:16 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #19)
&gt; (In reply to zalan from comment #18)
&gt; &gt; MM might be a better pick to test for pref regression.
&gt; 
&gt; MotionMark shows no change too.
👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820799</commentid>
    <comment_count>21</comment_count>
      <attachid>446089</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-06 16:01:06 -0800</bug_when>
    <thetext>Created attachment 446089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820810</commentid>
    <comment_count>22</comment_count>
      <attachid>446095</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-06 16:37:22 -0800</bug_when>
    <thetext>Created attachment 446095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820928</commentid>
    <comment_count>23</comment_count>
      <attachid>446095</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-07 00:44:19 -0800</bug_when>
    <thetext>Comment on attachment 446095
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        fontCacheFallingBackToSingleton and wrongly get back the main thread&apos;s

&quot;incorrectly&quot;

&gt; Source/WebCore/ChangeLog:24
&gt; +        ThreadGlobalData, which is easily globally accessible. Performing a

This sounds like a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821213</commentid>
    <comment_count>24</comment_count>
      <attachid>446234</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 13:51:51 -0800</bug_when>
    <thetext>Created attachment 446234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821248</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 15:34:44 -0800</bug_when>
    <thetext>Committed r286625 (244938@main): &lt;https://commits.webkit.org/244938@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446234.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821249</commentid>
    <comment_count>26</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 15:35:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/86180020&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445673</attachid>
            <date>2021-12-01 22:56:36 -0800</date>
            <delta_ts>2021-12-06 16:01:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233747-20211202175634.patch</filename>
            <type>text/plain</type>
            <size>60321</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q4MTgxOGY3YjkyNDNk
MzcwNGFiNjk4OTk2N2IwN2I4ZGMxNTNkMy4uZDA0ZGZlYzRmNzI3OTg0NjM1M2M1NDQ0YzZmY2Ey
MDFhM2QyMWU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1OCBAQAorMjAyMS0xMi0wMSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENh
Y2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFk
R2xvYmFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlcmUgYXJlIHZhcmlvdXMgcGxhY2VzIGluIGZvbnQgY29kZSB3aGVyZSB3ZSBuZWVkIGFj
Y2VzcyB0byBhCisgICAgICAgIEZvbnRDYWNoZSBpbnN0YW5jZS4gQ3VycmVudGx5IHdlOgorCisg
ICAgICAgIC0gYXNzdW1lIHRoYXQgd2UncmUgb24gdGhlIG1haW4gdGhyZWFkIGFuZCBjYWxsCisg
ICAgICAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKSwgb3IKKyAgICAgICAgLSBnZXQgYSBGb250
Q2FjaGUgb2ZmIFdvcmtlckdsb2JhbFNjb3BlIGFuZCBwYXNzIGl0IGRvd24gKG9yIHN0b3JlIGl0
KQorICAgICAgICAgIHdoZXJlIGl0J3MgbmVlZGVkLCB0aGVuIHBhc3MgaXQgdG8gZm9udENhY2hl
RmFsbGluZ0JhY2tUb1NpbmdsZXRvbi4KKworICAgICAgICBIYXZpbmcgdG8gdGhyZWFkIHRocm91
Z2gsIG9yIHN0b3JlLCB0aGUgRm9udENhY2hlIHBvaW50ZXIgaXMKKyAgICAgICAgaW5jb252ZW5p
ZW50LCBhbmQgdGhlcmUgYXJlIHNvbWUgcGxhY2VzIHdoZXJlIHdlIGRvbid0IGhhdmUgYWNjZXNz
IHRvCisgICAgICAgIGEgRm9udENhY2hlIHBvaW50ZXIsIGJ1dCB3ZSdyZSBvbiBhIHdvcmtlciwg
YW5kIHdlIGNhbGwKKyAgICAgICAgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbiBhbmQg
d3JvbmdseSBnZXQgYmFjayB0aGUgbWFpbiB0aHJlYWQncworICAgICAgICBpbnN0YW5jZS4KKwor
ICAgICAgICBJIHRoaW5rIGl0IHdvdWxkIGJlIGNsZWFuZXIgaWYgd2UgbW92ZWQgYm90aCB0aGUg
bWFpbiB0aHJlYWQgRm9udENhY2hlCisgICAgICAgIHNpbmdsZXRvbiwgYW5kIHRoZSBvbmUgc3Rv
cmVkIG9uIGEgV29ya2VyR2xvYmFsU2NvcGUsIHRvCisgICAgICAgIFRocmVhZEdsb2JhbERhdGEs
IHdoaWNoIGlzIGVhc2lseSBnbG9iYWxseSBhY2Nlc3NpYmxlLiBQZXJmb3JtaW5nIGEKKyAgICAg
ICAgVExTIGxvb2t1cCBpcyBjaGVhcCB0aGVzZSBkYXlzLgorCisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlOjpmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpm
b250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKToKKyAgICAgICAgUmVtb3ZlIGZvbnRDYWNo
ZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24gYW5kIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aAorICAg
ICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxv
Y2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZCk6CisgICAgICAgIFJlcGxhY2UgZ2V0dGlu
ZyB0aGUgRm9udENhY2hlIGZyb20gdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgd2l0aCBhCisg
ICAgICAgIGNhbGwgdG8gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250
KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2hhbmdlczo6cGxhdGZvcm1Gb250RmFtaWx5TmFtZUZv
ckNTUyBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVk
U3lzdGVtRm9udEZhbWlseU5hbWVzKToKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KToKKyAgICAgICAg
KiBwYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXYXJt
aW5nOjpwcmV3YXJtR2xvYmFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6
OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dh
cm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlD
aGFuZ2UpOgorICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIEZvbnRDYWNoZTo6c2luZ2xldG9uIHdp
dGggY2FsbHMgdG8KKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAg
ICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToK
KyAgICAgICAgUmVtb3ZlIENTU0ZvbnRTZWxlY3Rvcjo6bV9mb250Q2FjaGUgYW5kIHVzZQorICAg
ICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQgaW5zdGVhZC4KKworICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
Zm9udENhY2hlKToKKyAgICAgICAgUmVtb3ZlIHRoZSBGb250Q2FjaGUgbWVtYmVyLgorCisgICAg
ICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YTo6Zm9udENhY2hlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6
aW5pdGlhbGl6ZUZvbnRDYWNoZSk6CisgICAgICAgIEFkZCBhbiBhY2Nlc3NvciBmb3IgYSBsYXpp
bHkgY3JlYXRlZCBGb250Q2FjaGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Rm9udCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGb3JQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6Y3JlYXRlRm9udCk6CisgICAgICAgIFJlbW92ZSBGb250Q2FjaGUgYXJn
dW1lbnRzIGFuZCB1c2UgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkIGluCisgICAgICAgIHRo
ZWlyIHBsYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlKToKKyAgICAgICAgQ2hhbmdlIGZh
Y3RvcnkgZnVuY3Rpb24gdG8gcmV0dXJuIGEgdW5pcXVlX3B0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCk6CisgICAgICAgIFJlcGxhY2UgRm9udENhY2hlOjpzaW5nbGV0b24gd2l0
aCBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQsIHdoaWNoCisgICAgICAgIGxvb2tzIHVwIHRo
ZSBGb250Q2FjaGUgb24gVGhyZWFkR2xvYmFsRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMpOgorICAgICAgICBOZXcgZnVuY3Rpb24gdGhh
dCB3aWxsIGluIHRoZSBmdXR1cmUgaW52YWxpZGF0ZSB0aGUgbWFpbiB0aHJlYWQgYW5kCisgICAg
ICAgIGFsbCB3b3JrZXIgdGhyZWFkIEZvbnRDYWNoZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgUmVtb3ZlIHJlZmNvdW50aW5nIGZyb20gRm9u
dENhY2hlIHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIHRvIHN0b3JlIGEKKyAgICAgICAgc3Ryb25n
IHJlZmVyZW5jZSB0byBpdCBvbiBvdGhlciBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKTogRGVsZXRlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjppc0N1cnJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OnVwZGF0ZSBjb25zdCk6CisgICAgICAgIENhbGwgRm9udENhY2hlOjpmb3JDdXJy
ZW50VGhyZWFkIGluc3RlYWQgb2YgZ2V0dGluZyBpdCBmcm9tIHRoZQorICAgICAgICBGb250U2Vs
ZWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMp
OgorICAgICAgICAoV2ViQ29yZTo6cmVhbGl6ZU5leHRGYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZUZvbnRzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJh
Y3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgVXNlIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oOgorICAg
ICAgICBSZW1vdmUgZm9udENhY2hlIG1ldGhvZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRD
YWNoZVJlZ2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpmb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6cHJld2FybUdsb2JhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzeXN0ZW1Gb250UGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsU2V0dGluZ3M6OnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vz
c2liaWxpdHkpOgorICAgICAgICBVc2UgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvbnRDYWNoZSk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnZhbGlkYXRl
Rm9udENhY2hlKToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFs
bEZvbnRDYWNoZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hl
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENKS0NvZGVQYWdlTWFza3MpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMpOgorICAg
ICAgICBVc2UgdGhlIEZvbnRDYWNoZSBpbnN0YW5jZSB3ZSBoYXZlIGFjY2VzcyB0byByYXRoZXIg
dGhhbiBjYWxsCisgICAgICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uLgorCisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmZvbnRDYWNo
ZSk6CisgICAgICAgIFJlbW92ZSB0aGUgRm9udENhY2hlIG1lbWJlciBhbmQgYWNjZXNzb3IuCisK
IDIwMjEtMTItMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2Nyb2xsaW5nIGNvbXBsZXggd2Vic2l0ZXMgY2FuIHN0dXR0ZXI6IHNjcm9sbGluZyB0
aHJlYWQgZnJhbWUgY2FuIGZhaWwgdG8gcHJvY2VzcyB3aGVlbCBldmVudHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZjZmOWJjMTM4NWUyNjM2ZDdjZGI5N2MxYmYyZmQ1ZTVkMjA5NDE4Mi4uZWYzNWRiMDczYjQ5ZTY3
OGFiYzNkN2NjNjhkNzMzYmQyNzJmNGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgRm9udENhY2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2VyR2xvYmFsU2Nv
cGUgdG8gVGhyZWFkR2xvYmFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjp0ZXJtaW5hdGUpOgorICAgICAgICBVcGRhdGUgZXhpc3RpbmcgbWFp
biB0aHJlYSBjYWxsZXJzIG9mIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkgdG8gdXNlCisgICAgICAg
IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLgorCiAyMDIxLTEyLTAxICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQg
Y29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODZlNWQ5OTU4YzY1MmE1YWYzZjc4NWMwNWI1NTA0
MjNhYmZlMTBhMy4uNTIzYzlmNTk2OGZmYjg5ZjY5ZGJmZDVkMzFlNGU2MGM1NWNjNjdiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEyLTAxICBD
YW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBGb250
Q2FjaGUgc2luZ2xldG9uIGFuZCBpbnN0YW5jZSBvbiBXb3JrZXJHbG9iYWxTY29wZSB0byBUaHJl
YWRHbG9iYWxEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAgICAgICgrW1dlYkNvcmVTdGF0
aXN0aWNzIGNhY2hlZEZvbnREYXRhQ291bnRdKToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3Rp
Y3MgY2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0
aXN0aWNzIHB1cmdlSW5hY3RpdmVGb250RGF0YV0pOgorICAgICAgICBVcGRhdGUgZXhpc3Rpbmcg
bWFpbiB0aHJlYWQgY2FsbGVycyBvZiBGb250Q2FjaGU6OnNpbmdsZXRvbigpIHRvIHVzZQorICAg
ICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS4KKwogMjAyMS0xMi0wMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjI4MzkxMikg
QnJva2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgU3dpZnQgYmluZGluZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2OTY2
YmI2MGFjLi4wZTFiNzU2MTJiODRmZjEwMzYzMjI3YTJjNWExMjg5N2M0YzcxZGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDEgIENhbWVy
b24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRDYWNo
ZSBzaW5nbGV0b24gYW5kIGluc3RhbmNlIG9uIFdvcmtlckdsb2JhbFNjb3BlIHRvIFRocmVhZEds
b2JhbERhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmNh
Y2hlZEZvbnREYXRhQ291bnQpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZv
bnREYXRhSW5hY3RpdmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJ
bmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIG1haW4gdGhyZWFkIGNh
bGxlcnMgb2YgRm9udENhY2hlOjpzaW5nbGV0b24oKSB0byB1c2UKKyAgICAgICAgRm9udENhY2hl
Ojpmb3JDdXJyZW50VGhyZWFkKCkuCisKIDIwMjEtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBVc2UgT2JqZWN0SWRlbnRpZmll
ciBmb3IgQVhJRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggMTM0OTQ4Y2JmZGI3
N2Q2YzI1Mjc3NjQxNDkxZTc5ZmExM2VjODE1ZC4uZWIzYmMwYjMyMjRkNzVhNjEyM2RjMmJhZDc5
NjgzYzc3YjlhODU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC0zOTYsMTMg
KzM5Niw2IEBAIERvY3VtZW50KiBDU1NGb250RmFjZTo6ZG9jdW1lbnQoKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1Gb250Q2FjaGUmIENTU0ZvbnRGYWNlOjpmb250Q2FjaGVGYWxsaW5nQmFj
a1RvU2luZ2xldG9uKCkKLXsKLSAgICBpZiAobV93cmFwcGVyICYmIG1fd3JhcHBlci0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gbV93cmFwcGVyLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmZvbnRDYWNoZSgpOwotICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpOwotfQotCiBib29sIENTU0ZvbnRGYWNlOjpjb21wdXRlRmFpbHVyZVN0YXRlKCkgY29u
c3QKIHsKICAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpGYWlsdXJlKQpAQCAtNjc2LDkgKzY2
OSw4IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgYm9vbCBzeW50CiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5z
dGF0dXMoKSkgewogICAgICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OlBlbmRp
bmc6CiAgICAgICAgIGNhc2UgQ1NTRm9udEZhY2VTb3VyY2U6OlN0YXR1czo6TG9hZGluZzogewot
ICAgICAgICAgICAgYXV0byYgZm9udENhY2hlID0gZm9udENhY2hlRmFsbGluZ0JhY2tUb1Npbmds
ZXRvbigpOwogICAgICAgICAgICAgRm9udDo6VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gV2ViQ29y
ZTo6dmlzaWJpbGl0eShzdGF0dXMoKSwgZm9udExvYWRUaW1pbmcoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gRm9udDo6Y3JlYXRlKGZvbnRDYWNoZS5sYXN0UmVzb3J0RmFsbGJhY2tGb250KGZvbnRE
ZXNjcmlwdGlvbiktPnBsYXRmb3JtRGF0YSgpLCBGb250OjpPcmlnaW46OkxvY2FsLCAmZm9udENh
Y2hlLCBGb250OjpJbnRlcnN0aXRpYWw6OlllcywgdmlzaWJpbGl0eSk7CisgICAgICAgICAgICBy
ZXR1cm4gRm9udDo6Y3JlYXRlKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmxhc3RSZXNv
cnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9uKS0+cGxhdGZvcm1EYXRhKCksIEZvbnQ6Ok9y
aWdpbjo6TG9jYWwsIEZvbnQ6OkludGVyc3RpdGlhbDo6WWVzLCB2aXNpYmlsaXR5KTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OlN1Y2Nlc3M6IHsK
ICAgICAgICAgICAgIEZvbnRDcmVhdGlvbkNvbnRleHQgZm9udENyZWF0aW9uQ29udGV4dCB7IG1f
ZmVhdHVyZVNldHRpbmdzLCBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMsIGZvbnRQYWxldHRl
VmFsdWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDc4OTkzZWZlZjU3YjVlNjc5
OTZhZDFiZGFlZjg3NzE3ZmExNjBkZTguLjFiOGNlYWE2ZTI1MWZmOGViZTU3YmY0MDE1ZmExMmEx
NmE1MTRlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC00Niw3ICs0Niw2IEBAIGNs
YXNzIENTU0ZvbnRTZWxlY3RvcjsKIGNsYXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlOwogY2xhc3Mg
Q1NTVmFsdWU7CiBjbGFzcyBDU1NWYWx1ZUxpc3Q7Ci1jbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBG
b250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udDsK
QEAgLTE3NCw3ICsxNzMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdGltZW91dEZpcmVkKCk7CiAK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQoKTsKLSAgICBGb250Q2FjaGUmIGZvbnRDYWNoZUZhbGxp
bmdCYWNrVG9TaW5nbGV0b24oKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fZmFtaWxp
ZXM7CiAgICAgVmVjdG9yPFVuaWNvZGVSYW5nZT4gbV9yYW5nZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU2V0LmNwcAppbmRleCBhNzZhYWNlOTc0NDRlMjNiNWFiMDNhZTVjMDQ5YTQ0ZDc0
ZGZhZmFhLi42MmVlY2I1YTVkMjQxZGNiZThiMjQ5MzViYjZjMmYzMjg5NDkxNGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIENT
U0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29u
c3QgU3RyaW5nJiBmYW1pbAogICAgIGlmICghbV9vd25pbmdGb250U2VsZWN0b3ItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gbV9vd25pbmdGb250U2VsZWN0b3ItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5zaG91bGRBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyA/IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgOiBBbGxvd1VzZXJJ
bnN0YWxsZWRGb250czo6Tm87Ci0gICAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+
IGNhcGFiaWxpdGllcyA9IG1fb3duaW5nRm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmZvbnRDYWNoZSgpLmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShm
YW1pbHlOYW1lLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgVmVjdG9yPEZvbnRTZWxl
Y3Rpb25DYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZCgpLmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShmYW1pbHlOYW1lLCBh
bGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uYWViNGI2
Y2M1MGExMjZjOTgzMGQ2MDZhYmIwYzNhOGM2OWE5YzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KG1fZmFtaWx5TmFtZU9yVVJJKTsKICAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoMSk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0U2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMobV9mYWNlLmFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKCkpOwotICAgICAgICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCB7IH0s
IHRydWUpOworICAgICAgICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgeyB9
LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAg
ICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1
bWVudCwgbV9mYW1pbHlOYW1lT3JVUkkuc3RyaW5nKCksIHN1Y2Nlc3MpOwogICAgICAgICB9CkBA
IC0yMTAsNyArMjEwLDcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNlU291cmNlOjpmb250KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28KIAogICAgICAgICAvLyBX
ZSdyZSBsb2NhbC4gSnVzdCByZXR1cm4gYSBGb250IGZyb20gdGhlIG5vcm1hbCBjYWNoZS4KICAg
ICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjaGVjayBhbHRlcm5hdGUgZm9udCBmYW1pbHkgbmFt
ZXMgaGVyZSwgc28gcGFzcyB0cnVlIGFzIHRoZSBjaGVja2luZ0FsdGVybmF0ZU5hbWUgcGFyYW1l
dGVyLgotICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5
KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIGZvbnRDcmVhdGlvbkNvbnRleHQs
IHRydWUpOworICAgICAgICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9u
dEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBmb250Q3JlYXRp
b25Db250ZXh0LCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9mb250UmVxdWVzdCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBhZTExYThiOWNlOGUwZjdhZjJl
MWM3MjlhMWEzNWQ1OTg0NmVlOTg2Li42NzA0Y2E5ZDQ5N2U1NzM4MmM0ZDllNTM4Yjk0MGI1NjYz
YzRkNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNjUsNyAr
NjUsNiBAQCBzdGF0aWMgdW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7CiBDU1NGb250U2VsZWN0b3I6
OkNTU0ZvbnRTZWxlY3RvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX2ZvbnRDYWNoZShjb250ZXh0LmZvbnRDYWNoZSgpKQogICAgICwgbV9jc3NGb250RmFjZVNl
dChDU1NGb250RmFjZVNldDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb250TW9kaWZpZWRPYnNl
cnZlcihbdGhpc10geyBmb250TW9kaWZpZWQoKTsgfSkKICAgICAsIG1fdW5pcXVlSWQoKytmb250
U2VsZWN0b3JJZCkKQEAgLTgxLDcgKzgwLDcgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2Vs
ZWN0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG1fZm9u
dEZhbWlseU5hbWVzLnVuY2hlY2tlZEFwcGVuZChmYW1pbHlOYW1lKTsKICAgICB9CiAKLSAgICBt
X2ZvbnRDYWNoZS0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRU
aHJlYWQoKS5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fY3NzRm9udEZhY2VTZXQtPmFkZEZvbnRN
b2RpZmllZE9ic2VydmVyKG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIpOwogICAgIExPRyhGb250cywg
IkNTU0ZvbnRTZWxlY3RvciAlcCBjdG9yIiwgdGhpcyk7CiAKQEAgLTkzLDcgKzkyLDcgQEAgQ1NT
Rm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKICAgICBMT0coRm9udHMsICJDU1NGb250
U2VsZWN0b3IgJXAgZHRvciIsIHRoaXMpOwogCiAgICAgY2xlYXJGb250cygpOwotICAgIG1fZm9u
dENhY2hlLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZCgpLnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKIEZvbnRGYWNlU2V0KiBDU1NGb250U2Vs
ZWN0b3I6OmZvbnRGYWNlU2V0SWZFeGlzdHMoKQpAQCAtMzU5LDcgKzM1OCw3IEBAIEZvbnRSYW5n
ZXMgQ1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyCiAKICAgICBpZiAoIXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QpCiAg
ICAgICAgIHJlc29sdmVBbmRBc3NpZ25HZW5lcmljRmFtaWx5KCk7Ci0gICAgYXV0byBmb250ID0g
bV9mb250Q2FjaGUtPmZvbnRGb3JGYW1pbHkoKmZvbnREZXNjcmlwdGlvbkZvckxvb2t1cCwgZmFt
aWx5Rm9yTG9va3VwLCB7IHsgfSwgeyB9LCBmb250UGFsZXR0ZVZhbHVlcyB9KTsKKyAgICBhdXRv
IGZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yRmFtaWx5KCpmb250
RGVzY3JpcHRpb25Gb3JMb29rdXAsIGZhbWlseUZvckxvb2t1cCwgeyB7IH0sIHsgfSwgZm9udFBh
bGV0dGVWYWx1ZXMgfSk7CiAgICAgaWYgKGRvY3VtZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkKICAgICAgICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgZmFt
aWx5Rm9yTG9va3VwLnN0cmluZygpLCAhIWZvbnQpOwogICAgIHJldHVybiBGb250UmFuZ2VzIHsg
V1RGTW92ZShmb250KSB9OwpAQCAtMzkwLDcgKzM4OSw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250
U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2Ny
aXB0CiAgICAgaWYgKCFtX2NvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkuZm9udEZhbGxiYWNrUHJl
ZmVyc1BpY3RvZ3JhcGhzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvJiBwaWN0
b2dyYXBoRm9udEZhbWlseSA9IG1fY29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKS5mb250R2VuZXJp
Y0ZhbWlsaWVzLnBpY3RvZ3JhcGhGb250RmFtaWx5KCk7Ci0gICAgYXV0byBmb250ID0gbV9mb250
Q2FjaGUtPmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBwaWN0b2dyYXBoRm9udEZhbWls
eSk7CisgICAgYXV0byBmb250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZv
ckZhbWlseShmb250RGVzY3JpcHRpb24sIHBpY3RvZ3JhcGhGb250RmFtaWx5KTsKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNz
RW5hYmxlZCgpICYmIGlzPERvY3VtZW50PihtX2NvbnRleHQpKQogICAgICAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoZG93bmNhc3Q8RG9jdW1lbnQ+KCptX2Nv
bnRleHQpLCBwaWN0b2dyYXBoRm9udEZhbWlseSwgISFmb250KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5oCmluZGV4IDE0YTA0NTQ5ZDQxMDhjZTUzMjkyNTgzYjM4ZTQ3MDMyN2Yx
OTRiYTUuLmZiOGVjODkyMWMzYzViYjlhYTczZTk1ZTU1YWQyMTA5N2JlNWNjMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTcyLDcgKzcyLDYgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkRm9udEZhY2VSdWxlKFN0eWxlUnVsZUZvbnRGYWNlJiwgYm9vbCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKICAgICB2b2lkIGFkZEZvbnRQYWxldHRl
VmFsdWVzUnVsZShTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyYpOwogCi0gICAgRm9udENhY2hl
JiBmb250Q2FjaGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZvbnRDYWNoZS5nZXQoKTsgfQog
ICAgIHZvaWQgZm9udENhY2hlSW52YWxpZGF0ZWQoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0OwpAQCAtMTIzLDcgKzEyMiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBlbmRp
bmdGb250RmFjZVJ1bGU+IG1fc3RhZ2luZ0FyZWE7CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWY8Rm9udENhY2hlPiBtX2ZvbnRDYWNoZTsK
ICAgICBSZWZQdHI8Rm9udEZhY2VTZXQ+IG1fZm9udEZhY2VTZXQ7CiAgICAgUmVmPENTU0ZvbnRG
YWNlU2V0PiBtX2Nzc0ZvbnRGYWNlU2V0OwogICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50
Kj4gbV9jbGllbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCmluZGV4IGE1NmUzMGQyNDg3MDczMDY0MmIzMjc1NTIxOGM1YTI1NjBhNGQ2NzEuLjk1
NDQ2Nzk0MzdmOGUxZTAxNDczY2I2YTcwY2Q1ZDA3MmZjNzFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250
TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3cuaCIKQEAgLTIyMywxMSArMjIyLDYgQEAgdm9pZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpCiB7
CiB9CiAKLUZvbnRDYWNoZSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9udENhY2hlKCkKLXsK
LSAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKTsKLX0KLQogQ1NTVmFsdWVQb29sJiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpjc3NWYWx1ZVBvb2woKQogewogICAgIHJldHVybiBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggYWYzYjExYzhjMzk1NDY3ZWFkYTA3NzU4ZTY0ZmQyYWE2NDVkNDYx
NS4uMzUzM2MyMGUyZWU1Nzk2MGI1NGJmZTE1MzZkZTNmYjJmOGNjYTE4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC02Niw3ICs2Niw2IEBAIGNs
YXNzIERhdGFiYXNlQ29udGV4dDsKIGNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBFdmVudExvb3BU
YXNrR3JvdXA7CiBjbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZv
bnRMb2FkUmVxdWVzdDsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgUGVybWlzc2lvbkNvbnRy
b2xsZXI7CkBAIC0xNjgsNyArMTY3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJik7CiAKLSAgICB2aXJ0dWFsIEZv
bnRDYWNoZSYgZm9udENhY2hlKCk7CiAgICAgdmlydHVhbCBDU1NGb250U2VsZWN0b3IqIGNzc0Zv
bnRTZWxlY3RvcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIENTU1ZhbHVlUG9v
bCYgY3NzVmFsdWVQb29sKCk7CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU3RyaW5nJiB1cmwsIGJvb2wgaXNTVkcsIGJvb2wgaXNJ
bml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRy
aWJ1dGVDaGFuZ2VzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRB
dHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KaW5kZXggZDQzMWY3MjJlMjRhYWIzYmQxNzcyOGI0MzU4
Yjc4Njk4Yjc4NmY0Yi4uODZiOTMyMTA3NmNlNWY2ZTkwMGU3ODE4OTc0NDVjY2FiMjIyZjI2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hh
bmdlc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJp
YnV0ZUNoYW5nZXNDb2NvYS5tbQpAQCAtNDgsNyArNDgsNyBAQCBjb25zdCBTdHJpbmcmIEZvbnRD
aGFuZ2VzOjpwbGF0Zm9ybUZvbnRGYW1pbHlOYW1lRm9yQ1NTKCkgY29uc3QKICAgICBGb250RGVz
Y3JpcHRpb24gZGVzY3JpcHRpb247CiAgICAgZGVzY3JpcHRpb24uc2V0SXNJdGFsaWMobV9pdGFs
aWMudmFsdWVfb3IoZmFsc2UpKTsKICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVj
dGlvblZhbHVlIHsgbV9ib2xkLnZhbHVlX29yKGZhbHNlKSA/IDkwMCA6IDUwMCB9KTsKLSAgICBp
ZiAoYXV0byBmb250ID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGRlc2Ny
aXB0aW9uLCBtX2ZvbnRGYW1pbHkpKQorICAgIGlmIChhdXRvIGZvbnQgPSBGb250Q2FjaGU6OmZv
ckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBtX2ZvbnRGYW1pbHkp
KQogICAgICAgICBmb250TmFtZUZyb21EZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ1RGb250Q29weVBv
c3RTY3JpcHROYW1lKGZvbnQtPmdldENURm9udCgpKSk7CiAKICAgICBpZiAoZm9udE5hbWVGcm9t
RGVzY3JpcHRpb24gJiYgQ0ZTdHJpbmdDb21wYXJlKGNmRm9udE5hbWUuZ2V0KCksIGZvbnROYW1l
RnJvbURlc2NyaXB0aW9uLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
aW5kZXggNjNjMTEzZTJlYTEwZGUxYjg2ZjUwNWIzNDNjMTJjNjc0ZmJiZDE3ZS4uNzlhMzI0NTBh
ZDQ2ZDRhMWRkZDczZTljOTFiNjVmZDhkYzMzYjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTg5Nyw3ICs4
OTcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
Pj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcgogewogICAgIGF1dG8gZm9udEZhbWlseU5h
bWVzID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKIAotICAgIFZlY3RvcjxTdHJp
bmc+IHN5c3RlbUZvbnRGYW1pbGllcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc3lzdGVtRm9u
dEZhbWlsaWVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gc3lzdGVtRm9udEZhbWlsaWVzID0gRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc3lzdGVtRm9udEZhbWlsaWVzKCk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBmYW1pbHlOYW1lIDogc3lzdGVtRm9udEZhbWlsaWVzKQogICAgICAgICBm
b250RmFtaWx5TmFtZXMtPmFkZEl0ZW0oZmFtaWx5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
bW9yeVJlbGVhc2UuY3BwCmluZGV4IGVmNzk1MzBlN2M1YzIwYzQxODQwNjllZGM1ODY1ZGMyOGI5
OTNmNmYuLmJiYTk1ZmEzZTY3OWNhZmIxYjI5MTQ4MDU3ZGYyN2JjYjA2ODEyYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtNzAsOCArNzAsOSBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkoTWFpbnRhaW5NZW1vcnlDYWNoZSBtYWludGFpbk1l
bW9yeUNhY2hlKQogewogICAgIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5wdXJnZUNhY2hlcygp
OwogCi0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsK
LSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmNsZWFyV2lkdGhDYWNoZXMoKTsKKyAgICAvLyBG
SVhNRTogQ2xlYXIgdGhlc2UgZm9udCBjYWNoZXMgaW4gd29ya2VycyB0b28/CisgICAgRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY2xlYXJXaWR0aENhY2hlcygpOwogCiAgICAgVGV4
dFBhaW50ZXI6OmNsZWFyR2x5cGhEaXNwbGF5TGlzdHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1By
b2Nlc3NXYXJtaW5nLmNwcAppbmRleCAzZTNmM2FkODJhNGRkMjkzMzk5MjUwMjU1ZDdkZmMzNTNi
YTFiMzc1Li5lYzgwYWU0M2FiZTc5MTM2OTc4YzdmZDAwMzkwYzIxNmI2OWI3NzM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFBy
b2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHkoKQogICAgIGNvbW1vblZNKCk7CiAKICAgICAv
LyBQcmV3YXJtIGZvbnQgY2FjaGUKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnByZXdhcm1H
bG9iYWxseSgpOworICAgIEZvbnRDYWNoZTo6cHJld2FybUdsb2JhbGx5KCk7CiAKICNpZiBFTkFC
TEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAgVGVsZXBob25lTnVtYmVyRGV0ZWN0
b3I6OnByZXdhcm0oKTsKQEAgLTg2LDEyICs4NiwxMiBAQCB2b2lkIFByb2Nlc3NXYXJtaW5nOjpw
cmV3YXJtR2xvYmFsbHkoKQogCiBXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24gUHJvY2Vzc1dh
cm1pbmc6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKQogewotICAgIHJldHVybiB7IEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIH07CisgICAgcmV0
dXJuIHsgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY29sbGVjdFByZXdhcm1JbmZvcm1h
dGlvbigpIH07CiB9CiAKIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRp
b24oY29uc3QgUHJld2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mbykKIHsKLSAgICBGb250Q2Fj
aGU6OnNpbmdsZXRvbigpLnByZXdhcm0ocHJld2FybUluZm8uZm9udENhY2hlKTsKKyAgICBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3YXJtKHByZXdhcm1JbmZvLmZvbnRDYWNoZSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCAzOWUwYTlmNTA3
OTdiODRmYTg0Zjc5ZDQ5OTMwMmIzNTVhNTIxNTU3Li43OGQ2ODBjYWNhZmJhMzQ4MDJhZWMzY2Nh
MjkxY2QxMDdiM2NhOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC01
Nyw3ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgaW52YWxpZGF0
ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShQYWdlKiBwYWdlKQogewotICAgIEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKKyAgICAvLyBGSVhNRTog
Q2FsbCBpbnZhbGlkYXRlRm9udENhc2NhZGVDYWNoZSgpIG9uIGFsbCB3b3JrZXJzLgorICAgIEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCk7
CiAgICAgaWYgKHBhZ2UpCiAgICAgICAgIHBhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZy
YW1lcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xv
YmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNw
cAppbmRleCAyNjI5NTQ3MGU3MTBhNWQ5M2Y1NTg5YTY3ZTdmYWM0OTg0NTliOGJlLi42NWIxNzY1
OTkyMDQ1YWI4MWI5ODA0M2VjNTUxNzZlNWFmZDM0NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZUNhY2hlLmgiCiAjaW5jbHVkZSAiVGV4dENvZGVj
SUNVLmgiCkBAIC02Myw2ICs2NCw4IEBAIHZvaWQgVGhyZWFkR2xvYmFsRGF0YTo6ZGVzdHJveSgp
CiAgICAgbV9ldmVudE5hbWVzID0gbnVsbHB0cjsKICAgICBtX3RocmVhZFRpbWVycyA9IG51bGxw
dHI7CiAgICAgbV9xdWFsaWZpZWROYW1lQ2FjaGUgPSBudWxscHRyOworICAgIGlmIChtX2ZvbnRD
YWNoZSkKKyAgICAgICAgbV9mb250Q2FjaGUtPmludmFsaWRhdGUoKTsKIH0KIAogI2lmIFVTRShX
RUJfVEhSRUFEKQpAQCAtMTM5LDQgKzE0MiwxMCBAQCB2b2lkIFRocmVhZEdsb2JhbERhdGE6Omlu
aXRpYWxpemVNaW1lVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgbV9NSU1FVHlw
ZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSA9IE1JTUVUeXBlUmVnaXN0cnk6OmNyZWF0ZU1JTUVU
eXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiB9CiAKK3ZvaWQgVGhyZWFkR2xvYmFsRGF0
YTo6aW5pdGlhbGl6ZUZvbnRDYWNoZSgpCit7CisgICAgQVNTRVJUKCFtX2ZvbnRDYWNoZSk7Cisg
ICAgbV9mb250Q2FjaGUgPSBGb250Q2FjaGU6OmNyZWF0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9i
YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKaW5k
ZXggYzAyYTVhMmYxYjU0ODA5NTQ2MTkxMWE5MmE1OTMxZGYyZjA3ZTg0Mi4uYjVjMmQxOTEwNDE2
ZmE5ODRjMWUyZjVhNTExZWI5YzIyOTkzNzc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RocmVhZEdsb2JhbERhdGEuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBRdWFs
aWZpZWROYW1lQ2FjaGU7CiBjbGFzcyBUaHJlYWRUaW1lcnM7CiAKQEAgLTk1LDExICs5NiwxOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0luUmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5SZW1vdmVBbGxFdmVudExpc3RlbmVyczsgfQogICAgIHZvaWQgc2V0SXNJ
blJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKGJvb2wgdmFsdWUpIHsgbV9pc0luUmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMgPSB2YWx1ZTsgfQogCisgICAgRm9udENhY2hlJiBmb250Q2FjaGUoKQorICAg
IHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX2ZvbnRDYWNoZSkpCisgICAgICAgICAgICBpbml0
aWFsaXplRm9udENhY2hlKCk7CisgICAgICAgIHJldHVybiAqbV9mb250Q2FjaGU7CisgICAgfQor
CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUNhY2hlZFJlc291
cmNlUmVxdWVzdEluaXRpYXRvcnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxp
emVFdmVudE5hbWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplUXVhbGlm
aWVkTmFtZUNhY2hlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTWltZVR5
cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemVGb250Q2FjaGUoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNvdXJj
ZVJlcXVlc3RJbml0aWF0b3JzPiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50TmFtZXM+IG1fZXZlbnROYW1lczsKQEAgLTEwOCw2ICsx
MTcsNyBAQCBwcml2YXRlOgogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIG1fY3VycmVudFN0YXRl
IHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJQ1VDb252ZXJ0ZXJXcmFwcGVyPiBt
X2NhY2hlZENvbnZlcnRlcklDVTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3Ry
eVRocmVhZEdsb2JhbERhdGE+IG1fTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYWNoZT4gbV9mb250Q2FjaGU7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgYm9vbCBtX2lzTWFpblRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVk
MzM3Yy4uNGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVlMTAzZmJhZjIxZjU3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYwLDE1ICs2MCwxMCBAQCBE
RUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEZvbnQpOwogCiBSZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2lu
IG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmlsaXR5
LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlz
aWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgbnVsbHB0cikpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3Rp
dGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllcikpOwogfQog
Ci1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEs
IEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50
YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHks
IG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0
YSkpOwotfQotCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9u
dEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JW
ZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
Zm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKIHsKICAgICBib29sIHdyYXBwaW5n
OwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250
RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpAQCAtNzYsMTAgKzcxLDEw
IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsCiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKGZvbnRTaXplKTsKICAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBwYXNzIGluIGFu
eSBtZWFuaW5nZnVsIGRhdGEgZm9yIHRoZSBsYXN0IGZldyBhcmd1bWVudHM/CiAgICAgYXV0byBw
bGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSgqY3Vz
dG9tRm9udERhdGEsIGRlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMs
IHsgfSk7Ci0gICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtRGF0YSksIG9y
aWdpbiwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKTsKKyAgICByZXR1cm4gRm9udDo6Y3JlYXRl
KFdURk1vdmUocGxhdGZvcm1EYXRhKSwgb3JpZ2luKTsKIH0KIAotRm9udDo6Rm9udChjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlh
bCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFj
ayBvcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBGb250Q2FjaGUqIGZvbnRDYWNo
ZUZvclZlcnRpY2FsRGF0YSkKK0ZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNp
YmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFj
aywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKICAgICA6IG1fcGxhdGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkKICAg
ICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKQEAgLTEwMCwxMSArOTUsOSBAQCBGb250OjpG
b250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwg
SW50ZXJzdGl0aWFsIGludAogICAgIHBsYXRmb3JtQ2hhcldpZHRoSW5pdCgpOwogI2lmIEVOQUJM
RShPUEVOVFlQRV9WRVJUSUNBTCkKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkg
PT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbCAmJiBvcmllbnRhdGlvbkZhbGxiYWNrID09IE9y
aWVudGF0aW9uRmFsbGJhY2s6Ok5vKSB7Ci0gICAgICAgIG1fdmVydGljYWxEYXRhID0gZm9udENh
Y2hlRm9yVmVydGljYWxEYXRhID8gZm9udENhY2hlRm9yVmVydGljYWxEYXRhLT52ZXJ0aWNhbERh
dGEocGxhdGZvcm1EYXRhKSA6IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkudmVydGljYWxEYXRhKHBs
YXRmb3JtRGF0YSk7CisgICAgICAgIG1fdmVydGljYWxEYXRhID0gRm9udENhY2hlOjpmb3JDdXJy
ZW50VGhyZWFkKCkudmVydGljYWxEYXRhKHBsYXRmb3JtRGF0YSk7CiAgICAgICAgIG1faGFzVmVy
dGljYWxHbHlwaHMgPSBtX3ZlcnRpY2FsRGF0YS5nZXQoKSAmJiBtX3ZlcnRpY2FsRGF0YS0+aGFz
VmVydGljYWxNZXRyaWNzKCk7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZm9udENh
Y2hlRm9yVmVydGljYWxEYXRhKTsKICNlbmRpZgogfQogCkBAIC01OTYsMTMgKzU4OSwxMyBAQCBz
dGF0aWMgU3lzdGVtRmFsbGJhY2tDYWNoZSYgc3lzdGVtRmFsbGJhY2tDYWNoZSgpCiAgICAgcmV0
dXJuIG1hcC5nZXQoKTsKIH0KIAotUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZhbGxiYWNrRm9u
dEZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgSXNGb3JQbGF0Zm9ybUZvbnQgaXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNo
ZSYgZm9udENhY2hlKSBjb25zdAorUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZhbGxiYWNrRm9u
dEZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgSXNGb3JQbGF0Zm9ybUZvbnQgaXNGb3JQbGF0Zm9ybUZvbnQpIGNvbnN0CiB7
CiAgICAgYXV0byBmb250QWRkUmVzdWx0ID0gc3lzdGVtRmFsbGJhY2tDYWNoZSgpLmFkZCh0aGlz
LCBDaGFyYWN0ZXJGYWxsYmFja01hcCgpKTsKIAogICAgIGlmICghY2hhcmFjdGVyKSB7CiAgICAg
ICAgIFVDaGFyIGNvZGVVbml0ID0gMDsKLSAgICAgICAgcmV0dXJuIGZvbnRDYWNoZS5zeXN0ZW1G
YWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250
LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgJmNvZGVVbml0LCAxKTsKKyAgICAg
ICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3RlbUZhbGxiYWNrRm9y
Q2hhcmFjdGVycyhkZXNjcmlwdGlvbiwgdGhpcywgaXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNo
ZTo6UHJlZmVyQ29sb3JlZEZvbnQ6Ok5vLCAmY29kZVVuaXQsIDEpOwogICAgIH0KIAogICAgIGF1
dG8ga2V5ID0gQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkgeyBkZXNjcmlwdGlvbi5jb21wdXRlZExv
Y2FsZSgpLCBjaGFyYWN0ZXIsIGlzRm9yUGxhdGZvcm1Gb250ICE9IElzRm9yUGxhdGZvcm1Gb250
OjpObyB9OwpAQCAtNjE3LDcgKzYxMCw3IEBAIFJlZlB0cjxGb250PiBGb250OjpzeXN0ZW1GYWxs
YmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0IEZvbnRECiAgICAg
ICAgICAgICBjb2RlVW5pdHNbMV0gPSBVMTZfVFJBSUwoY2hhcmFjdGVyKTsKICAgICAgICAgICAg
IGNvZGVVbml0c0xlbmd0aCA9IDI7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBmb250ID0gZm9u
dENhY2hlLnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhkZXNjcmlwdGlvbiwgdGhpcywgaXNG
b3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6Ok5vLCBjb2RlVW5p
dHMsIGNvZGVVbml0c0xlbmd0aCkuZ2V0KCk7CisgICAgICAgIGF1dG8gZm9udCA9IEZvbnRDYWNo
ZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhkZXNjcmlw
dGlvbiwgdGhpcywgaXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZv
bnQ6Ok5vLCBjb2RlVW5pdHMsIGNvZGVVbml0c0xlbmd0aCkuZ2V0KCk7CiAgICAgICAgIGlmIChm
b250KQogICAgICAgICAgICAgZm9udC0+bV9pc1VzZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGUgPSB0
cnVlOwogICAgICAgICByZXR1cm4gZm9udDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li43
NDQyMDA0ZjAwYjVkYmEyN2YzYzMyZTY2N2IzNmJjY2Y3ODUxNGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04MSwxMSArODEsOCBAQCBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBJbnRlcnN0aXRpYWwgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xh
c3MgVmlzaWJpbGl0eSA6IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNs
YXNzIE9yaWVudGF0aW9uRmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBP
cmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAot
ICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxs
YmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENh
Y2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAotICAg
ICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFj
ayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiA9IE9y
aWdpbjo6TG9jYWwsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sIFZpc2liaWxpdHkg
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25G
YWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApAQCAtMTY0LDcgKzE2MSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHN1cHBvcnRzQ29kZVBvaW50KFVDaGFyMzIpIGNvbnN0OwogICAgIGJvb2wgcGxh
dGZvcm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyLCBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHZh
cmlhdGlvbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8Rm9udD4gc3lzdGVt
RmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IElzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGUmKSBjb25zdDsKKyAgICBSZWZQdHI8Rm9udD4g
c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYsIElzRm9yUGxhdGZvcm1Gb250KSBjb25zdDsKIAogICAgIGNvbnN0IEdseXBoUGFnZSog
Z2x5cGhQYWdlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpIGNvbnN0OwogCkBAIC0yMDksNyArMjA2LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRm9udChj
b25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWwsIFZpc2liaWxpdHks
IE9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiwgRm9udENhY2hlKik7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9udChjb25zdCBGb250
UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWwsIFZpc2liaWxpdHksIE9yaWVudGF0
aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPik7
CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogICAgIHZvaWQgcGxhdGZvcm1HbHlwaEluaXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmlu
ZGV4IGNmMTJjZDc4YmQyNTY1MzlhYzBkYmI0ZmExOGI1ZTFiZDVhYjIxMDIuLjFiMTJjN2U0OWI1
NGE0ZTY4M2M0ZTVkMThiNjVkYTAyNDk2MWE0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMzUsNyArMzUsOSBAQAogI2luY2x1ZGUg
IkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIldl
YktpdEZvbnRGYW1pbHlOYW1lcy5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTQ4LDE2ICsx
NTAsMTQgQEAgc3RydWN0IEZvbnRDYWNoZTo6Rm9udERhdGFDYWNoZXMgewogI2VuZGlmCiB9Owog
Ci1SZWY8Rm9udENhY2hlPiBGb250Q2FjaGU6OmNyZWF0ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dENhY2hlPiBGb250Q2FjaGU6OmNyZWF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udENhY2hlKCkpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udENhY2hlPihuZXcgRm9udENhY2hlKTsKIH0KIAotRm9udENhY2hl
JiBGb250Q2FjaGU6OnNpbmdsZXRvbigpCitGb250Q2FjaGUmIEZvbnRDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGb250Q2Fj
aGU+IGdsb2JhbEZvbnRDYWNoZTsKLSAgICByZXR1cm4gZ2xvYmFsRm9udENhY2hlOworICAgIHJl
dHVybiB0aHJlYWRHbG9iYWxEYXRhKCkuZm9udENhY2hlKCk7CiB9CiAKIEZvbnRDYWNoZTo6Rm9u
dENhY2hlKCkKQEAgLTI4MSw3ICsyODEsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpmb250Rm9y
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKICNlbmRp
ZgogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnREYXRhQ2FjaGVzLT5kYXRhLmVuc3VyZShw
bGF0Zm9ybURhdGEsIFsmXSB7Ci0gICAgICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1E
YXRhLCBGb250OjpPcmlnaW46OkxvY2FsLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIEZvbnQ6OmNy
ZWF0ZShwbGF0Zm9ybURhdGEsIEZvbnQ6Ok9yaWdpbjo6TG9jYWwpOwogICAgIH0pOwogCiAgICAg
QVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnBsYXRmb3JtRGF0YSgpID09IHBsYXRm
b3JtRGF0YSk7CkBAIC00ODksNiArNDg5LDE0IEBAIHZvaWQgRm9udENhY2hlOjppbnZhbGlkYXRl
KCkKICAgICBwdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAordm9pZCBGb250Q2FjaGU6Omlu
dmFsaWRhdGVBbGxGb250Q2FjaGVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgLy8gRklYTUU6IEludmFsaWRhdGUgRm9udENhY2hlcyBpbiB3b3JrZXJzIHRvby4KKyAg
ICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZhbGlkYXRlKCk7Cit9CisKICNpZiAh
UExBVEZPUk0oQ09DT0EpCiAKIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIEZvbnRDYWNo
ZTo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDllYzU0ZjYzYjNhYmNlOWQwM2VhNjYw
ZWZmMTVkYTM5OTYyMzUyMDIuLjMzNmU5YjM2N2M1YTk4Y2ZlZWE5N2MyNGI3MmZlNTQ5NjI0ZmFj
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBA
IC0yODAsMTQgKzI4MCwxMSBAQCBzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHMg
OiBIYXNoVHJhaXRzPEZvbnRDYXNjYWRlQ2FjaGVLZXk+IHsKIAogdXNpbmcgRm9udENhc2NhZGVD
YWNoZSA9IEhhc2hNYXA8Rm9udENhc2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
YXNjYWRlQ2FjaGVFbnRyeT4sIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoLCBGb250Q2FzY2FkZUNh
Y2hlS2V5SGFzaFRyYWl0cz47CiAKLWNsYXNzIEZvbnRDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEZvbnRDYWNoZT4gewotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxGb250Q2FjaGUs
IE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwotCitjbGFzcyBGb250Q2FjaGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEZvbnRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Rm9udENhY2hlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgRm9udENhY2hlJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMgRm9udENhY2hl
JiBmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKFJlZlB0cjxGb250U2VsZWN0b3I+KTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYWNoZT4gY3JlYXRlKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEZvbnRDYWNoZSYgZm9yQ3VycmVudFRocmVhZCgpOwogCiAgICAg
fkZvbnRDYWNoZSgpOwogCkBAIC0zMjQsNiArMzIxLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWdu
ZWQgc2hvcnQgZ2VuZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdGlvbjsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGludmFsaWRhdGVBbGxGb250Q2FjaGVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzaXplX3QgZm9udENvdW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IGluYWN0aXZl
Rm9udENvdW50KCk7CkBAIC0zNTksNyArMzU3LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgUHJl
d2FybUluZm9ybWF0aW9uIGNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHByZXdhcm0oY29uc3QgUHJld2FybUluZm9ybWF0aW9uJik7Ci0gICAgdm9pZCBwcmV3YXJt
R2xvYmFsbHkoKTsKKyAgICBzdGF0aWMgdm9pZCBwcmV3YXJtR2xvYmFsbHkoKTsKIAogcHJpdmF0
ZToKICAgICBGb250Q2FjaGUoKTsKQEAgLTQ0NSw5ICs0NDMsNCBAQCBzdGQ6Om9wdGlvbmFsPEZv
bnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uPiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlv
bjo6ZGVjbwogICAgIHJldHVybiBwcmV3YXJtSW5mb3JtYXRpb247CiB9CiAKLWlubGluZSBGb250
Q2FjaGUmIEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihSZWZQdHI8
Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpCi17Ci0gICAgcmV0dXJuIGZvbnRTZWxlY3RvciA/
IGZvbnRTZWxlY3Rvci0+Zm9udENhY2hlKCkgOiBGb250Q2FjaGU6OnNpbmdsZXRvbigpOwotfQot
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKaW5kZXggNmMxZDM0NzNkNTc1MThhYjgzMTgyMjhhOTA0NzhjNzJiZWFhNDc4MC4uYTI2YWNl
YzA2ZmFlZmJjOWRhYTNkOTcyN2FhNjBkYmI0NTkyZTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IGJvb2wgRm9udENhc2NhZGU6OmlzQ3VycmVudChjb25zdCBGb250U2VsZWN0b3ImIGZvbnRTZWxl
Y3RvcikgY29uc3QKIHsKICAgICBpZiAoIW1fZm9udHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAobV9mb250cy0+Z2VuZXJhdGlvbigpICE9IGZvbnRTZWxlY3Rvci5mb250Q2FjaGUo
KS5nZW5lcmF0aW9uKCkpCisgICAgaWYgKG1fZm9udHMtPmdlbmVyYXRpb24oKSAhPSBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQoKS5nZW5lcmF0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAobV9mb250cy0+Zm9udFNlbGVjdG9yVmVyc2lvbigpICE9IGZvbnRTZWxlY3Rv
ci52ZXJzaW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGVGb250cyhSZWY8Rm9udENhc2NhZGVGb250cz4mJiBmb250
cykgY29uc3QKIAogdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+
JiYgZm9udFNlbGVjdG9yKSBjb25zdAogewotICAgIEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGlu
Z0JhY2tUb1NpbmdsZXRvbihmb250U2VsZWN0b3IpLnVwZGF0ZUZvbnRDYXNjYWRlKCp0aGlzLCBX
VEZNb3ZlKGZvbnRTZWxlY3RvcikpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgp
LnVwZGF0ZUZvbnRDYXNjYWRlKCp0aGlzLCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpOwogfQogCiBH
bHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0VGV4dChDb2RlUGF0aCBjb2RlUGF0aFRvVXNl
LCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0
RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IGEyNDJk
MzY1Zjg5ZGJhOWM3ZGFkODBmNjk4N2NiNDVkZmNmNGFkZTguLmQzNjJmZmUyZGY3YzVlZTNiZTMz
MGFjNjhmZWM0ZGI5MjU5NmNlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgRm9u
dENhc2NhZGVGb250czo6Rm9udENhc2NhZGVGb250cyhSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZv
bnRTZWxlY3RvcikKICAgICA6IG1fY2FjaGVkUHJpbWFyeUZvbnQobnVsbHB0cikKICAgICAsIG1f
Zm9udFNlbGVjdG9yKGZvbnRTZWxlY3RvcikKICAgICAsIG1fZm9udFNlbGVjdG9yVmVyc2lvbiht
X2ZvbnRTZWxlY3RvciA/IG1fZm9udFNlbGVjdG9yLT52ZXJzaW9uKCkgOiAwKQotICAgICwgbV9n
ZW5lcmF0aW9uKEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihtX2Zv
bnRTZWxlY3RvcikuZ2VuZXJhdGlvbigpKQorICAgICwgbV9nZW5lcmF0aW9uKEZvbnRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCgpLmdlbmVyYXRpb24oKSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpCkBAIC0xMTMsMTAgKzExMywxMCBAQCBGb250Q2FzY2Fk
ZUZvbnRzOjpGb250Q2FzY2FkZUZvbnRzKFJlZlB0cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVj
dG9yKQogRm9udENhc2NhZGVGb250czo6Rm9udENhc2NhZGVGb250cyhjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAgICAgOiBtX2NhY2hlZFByaW1hcnlGb250KG51bGxwdHIp
CiAgICAgLCBtX2ZvbnRTZWxlY3RvclZlcnNpb24oMCkKLSAgICAsIG1fZ2VuZXJhdGlvbihGb250
Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSkKKyAgICAsIG1fZ2VuZXJhdGlvbihGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5nZW5lcmF0aW9uKCkpCiAgICAgLCBtX2lzRm9yUGxh
dGZvcm1Gb250KHRydWUpCiB7Ci0gICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChG
b250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvclBsYXRmb3JtRGF0YShwbGF0
Zm9ybURhdGEpKSk7CisgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChGb250UmFu
Z2VzKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JQbGF0Zm9ybURhdGEocGxh
dGZvcm1EYXRhKSkpOwogfQogCiBGb250Q2FzY2FkZUZvbnRzOjp+Rm9udENhc2NhZGVGb250cygp
ID0gZGVmYXVsdDsKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgRm9udFJhbmdlcyByZWFsaXpl
TmV4dEZhbGxiYWNrKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLAog
ewogICAgIEFTU0VSVChpbmRleCA8IGRlc2NyaXB0aW9uLmVmZmVjdGl2ZUZhbWlseUNvdW50KCkp
OwogCi0gICAgYXV0byYgZm9udENhY2hlID0gRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFj
a1RvU2luZ2xldG9uKGZvbnRTZWxlY3Rvcik7CisgICAgYXV0byYgZm9udENhY2hlID0gRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCk7CiAgICAgd2hpbGUgKGluZGV4IDwgZGVzY3JpcHRpb24u
ZWZmZWN0aXZlRmFtaWx5Q291bnQoKSkgewogICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1h
a2VWaXNpdG9yKFsmXShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpIC0+IEZvbnRSYW5nZXMgewog
ICAgICAgICAgICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCkBAIC0xODEsNyArMTgxLDcgQEAgY29u
c3QgRm9udFJhbmdlcyYgRm9udENhc2NhZGVGb250czo6cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQo
Y29uc3QgRm9udENhc2NhZGVEZXMKICAgICAgICAgcmV0dXJuIG1fcmVhbGl6ZWRGYWxsYmFja1Jh
bmdlc1tpbmRleF07CiAKICAgICBBU1NFUlQoaW5kZXggPT0gbV9yZWFsaXplZEZhbGxiYWNrUmFu
Z2VzLnNpemUoKSk7Ci0gICAgQVNTRVJUKEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tU
b1NpbmdsZXRvbihtX2ZvbnRTZWxlY3RvcikuZ2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbik7
CisgICAgQVNTRVJUKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmdlbmVyYXRpb24oKSA9
PSBtX2dlbmVyYXRpb24pOwogCiAgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChG
b250UmFuZ2VzKCkpOwogICAgIGF1dG8mIGZvbnRSYW5nZXMgPSBtX3JlYWxpemVkRmFsbGJhY2tS
YW5nZXMubGFzdCgpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIGNvbnN0IEZvbnRSYW5nZXMmIEZvbnRD
YXNjYWRlRm9udHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0IEZvbnRDYXNjYWRlRGVz
CiAgICAgICAgIGlmIChmb250UmFuZ2VzLmlzTnVsbCgpICYmIG1fZm9udFNlbGVjdG9yKQogICAg
ICAgICAgICAgZm9udFJhbmdlcyA9IG1fZm9udFNlbGVjdG9yLT5mb250UmFuZ2VzRm9yRmFtaWx5
KGRlc2NyaXB0aW9uLCBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5k
YXJkRmFtaWx5KSk7CiAgICAgICAgIGlmIChmb250UmFuZ2VzLmlzTnVsbCgpKQotICAgICAgICAg
ICAgZm9udFJhbmdlcyA9IEZvbnRSYW5nZXMoRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFj
a1RvU2luZ2xldG9uKG1fZm9udFNlbGVjdG9yKS5sYXN0UmVzb3J0RmFsbGJhY2tGb250KGRlc2Ny
aXB0aW9uKSk7CisgICAgICAgICAgICBmb250UmFuZ2VzID0gRm9udFJhbmdlcyhGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5sYXN0UmVzb3J0RmFsbGJhY2tGb250KGRlc2NyaXB0aW9uKSk7
CiAgICAgICAgIHJldHVybiBmb250UmFuZ2VzOwogICAgIH0KIApAQCAtMzUxLDcgKzM1MSw3IEBA
IEdseXBoRGF0YSBGb250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayhV
Q2hhcjMyIGNoYXJhY3RlciwgY29uc3QKICAgICBpZiAoIWZvbnQpCiAgICAgICAgIGZvbnQgPSAm
cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQoZGVzY3JpcHRpb24sIDApLmZvbnRGb3JGaXJzdFJhbmdl
KCk7CiAKLSAgICBhdXRvIHN5c3RlbUZhbGxiYWNrRm9udCA9IGZvbnQtPnN5c3RlbUZhbGxiYWNr
Rm9udEZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGRlc2NyaXB0aW9uLCBtX2lzRm9yUGxhdGZvcm1G
b250ID8gSXNGb3JQbGF0Zm9ybUZvbnQ6OlllcyA6IElzRm9yUGxhdGZvcm1Gb250OjpObywgRm9u
dENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKG1fZm9udFNlbGVjdG9yKSk7
CisgICAgYXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBmb250LT5zeXN0ZW1GYWxsYmFja0ZvbnRG
b3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBkZXNjcmlwdGlvbiwgbV9pc0ZvclBsYXRmb3JtRm9udCA/
IElzRm9yUGxhdGZvcm1Gb250OjpZZXMgOiBJc0ZvclBsYXRmb3JtRm9udDo6Tm8pOwogICAgIGlm
ICghc3lzdGVtRmFsbGJhY2tGb250KQogICAgICAgICByZXR1cm4gR2x5cGhEYXRhKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9yLmgKaW5kZXgg
NjU0OGU3NmY5OTYxZmY3ZTFhNTg5ZjVjYmIxYzA1NzJlYmJhZDg4Yy4uYTljMjM3NjY2YzFiM2M2
ZGYyODY1MTEyOGZjYzc5OWY0NzE2YWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9yLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmco
Y29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkg
PSAwOwogCi0gICAgdmlydHVhbCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9udENhY2hlSW52YWxpZGF0ZWQoKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcyhGb250U2VsZWN0b3JDbGllbnQm
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwCmluZGV4IGM3MTdlM2I2YzQwMDNjMjUy
NWU2MDM0ODk3NzFiZDVkNGFiYjVkMWEuLjgzMTVjMjEzYTJlMzY1Y2RhMTkxNmY5NzUyOGU4ODli
NTg2YjgzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwCkBAIC0xMzgsNyArMTM4LDcg
QEAgY29uc3QgRm9udCogRm9udENhc2NhZGU6OmZvbnRGb3JDb21iaW5pbmdDaGFyYWN0ZXJTZXF1
ZW5jZShjb25zdCBVQ2hhciogb3JpZ2luYWwKICAgICAgICAgICAgIHJldHVybiBmYWxsYmFja0Zv
bnQ7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gc3lzdGVtRmFsbGJhY2sgPSBGb250Q2FjaGU6OmZv
bnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oZm9udFNlbGVjdG9yKCkpLnN5c3RlbUZhbGxi
YWNrRm9yQ2hhcmFjdGVycyhtX2ZvbnREZXNjcmlwdGlvbiwgYmFzZUZvbnQsIElzRm9yUGxhdGZv
cm1Gb250OjpObywgcHJlZmVyQ29sb3JlZEZvbnQgPyBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRG
b250OjpZZXMgOiBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgY2hhcmFjdGVycywg
bGVuZ3RoKSkgeworICAgIGlmIChhdXRvIHN5c3RlbUZhbGxiYWNrID0gRm9udENhY2hlOjpmb3JD
dXJyZW50VGhyZWFkKCkuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKG1fZm9udERlc2NyaXB0
aW9uLCBiYXNlRm9udCwgSXNGb3JQbGF0Zm9ybUZvbnQ6Ok5vLCBwcmVmZXJDb2xvcmVkRm9udCA/
IEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6OlllcyA6IEZvbnRDYWNoZTo6UHJlZmVyQ29s
b3JlZEZvbnQ6Ok5vLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CiAgICAgICAgIGlmIChzeXN0ZW1G
YWxsYmFjay0+Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY2hhcmFjdGVycywg
bGVuZ3RoKSAmJiAoIXByZWZlckNvbG9yZWRGb250IHx8IHN5c3RlbUZhbGxiYWNrLT5wbGF0Zm9y
bURhdGEoKS5pc0NvbG9yQml0bWFwRm9udCgpKSkKICAgICAgICAgICAgIHJldHVybiBzeXN0ZW1G
YWxsYmFjay5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDE3Mjc0YmZjMzQ5
ZDQzOWRiMzI2NzdmMWFlZWE2ZjI1YTViYTc2M2EuLmNhZGVhZWE2ZjI5MWQ2M2Y2ZmRlOTI2ZTcw
NjNmOGQ4MWJhNDQ5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTc1Nyw3ICs3NTcs
NyBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKCk7CiAKIHN0YXRpYyB2b2lkIGZv
bnRDYWNoZVJlZ2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlm
aWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lk
ICosIENGRGljdGlvbmFyeVJlZikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKG9ic2VydmVyLCBvYnNl
cnZlciA9PSAmRm9udENhY2hlOjpzaW5nbGV0b24oKSk7CisgICAgQVNTRVJUX1VOVVNFRChvYnNl
cnZlciwgaXNNYWluVGhyZWFkKCkgJiYgb2JzZXJ2ZXIgPT0gJkZvbnRDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCgpKTsKIAogICAgIGludmFsaWRhdGVGb250Q2FjaGUoKTsKIH0KQEAgLTEyNDksMTMg
KzEyNDksMTYgQEAgc3RhdGljIEZvbnRMb29rdXAgcGxhdGZvcm1Gb250TG9va3VwV2l0aEZhbWls
eShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIEZvbnRTZWwKIHN0YXRpYyB2b2lkIGludmFsaWRh
dGVGb250Q2FjaGUoKQogewogICAgIGVuc3VyZU9uTWFpblRocmVhZChbXSB7CisgICAgICAgIC8v
IEZJWE1FOiBXb3JrZXJzIG5lZWQgdG8gYWNjZXNzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LgogICAgICAgICBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY2xlYXIo
KTsKKyAgICAgICAgLy8gRklYTUU6IFdvcmtlcnMgbmVlZCB0byBhY2Nlc3MgRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLgogICAgICAgICBjbGVhckZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHRDYWNoZSgpOwogCisgICAgICAgIC8vIEZJWE1FOiBXb3JrZXJzIG5lZWQg
dG8gYWNjZXNzIEZvbnREYXRhYmFzZS4KICAgICAgICAgRm9udERhdGFiYXNlOjpzaW5nbGV0b25B
bGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFyKCk7CiAgICAgICAgIEZvbnREYXRhYmFz
ZTo6c2luZ2xldG9uRGlzYWxsb3dpbmdVc2VySW5zdGFsbGVkRm9udHMoKS5jbGVhcigpOwogCi0g
ICAgICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOworICAgICAgICBGb250
Q2FjaGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEyODcs
NyArMTI5MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250V2l0aEZhbWlseVNw
ZWNpYWxDYXNlKGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwKIAogICAgIGlmIChmYW1pbHkuc3Rh
cnRzV2l0aCgiVUlDVEZvbnRUZXh0U3R5bGUiKSkgewogICAgICAgICBjb25zdCBhdXRvJiByZXF1
ZXN0ID0gZm9udERlc2NyaXB0aW9uLmZvbnRTZWxlY3Rpb25SZXF1ZXN0KCk7Ci0gICAgICAgIENU
Rm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IChpc0ZvbnRXZWlnaHRCb2xkKHJlcXVlc3Qud2Vp
Z2h0KSB8fCBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZv
ckFjY2Vzc2liaWxpdHkoKSA/IGtDVEZvbnRUcmFpdEJvbGQgOiAwKSB8IChpc0l0YWxpYyhyZXF1
ZXN0LnNsb3BlKSA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOworICAgICAgICBDVEZvbnRTeW1i
b2xpY1RyYWl0cyB0cmFpdHMgPSAoaXNGb250V2VpZ2h0Qm9sZChyZXF1ZXN0LndlaWdodCkgfHwg
Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eSgpID8ga0NURm9udFRyYWl0Qm9sZCA6IDApIHwgKGlzSXRhbGljKHJlcXVl
c3Quc2xvcGUpID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7CiAgICAgICAgIGF1dG8gZGVzY3Jp
cHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUoZmFtaWx5
LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lQ29jb2E6OnNpbmds
ZXRvbigpLmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkTG9j
YWxlKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgICAgICBpZiAodHJh
aXRzKQogICAgICAgICAgICAgZGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNy
ZWF0ZUNvcHlXaXRoU3ltYm9saWNUcmFpdHMoZGVzY3JpcHRvci5nZXQoKSwgdHJhaXRzLCB0cmFp
dHMpKTsKQEAgLTE2OTYsNyArMTY5OSw3IEBAIHZvaWQgRm9udENhY2hlOjpwcmV3YXJtR2xvYmFs
bHkoKQogCiAgICAgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gcHJld2FybUluZm87CiAg
ICAgcHJld2FybUluZm8uc2VlbkZhbWlsaWVzID0gV1RGTW92ZShmYW1pbGllcyk7Ci0gICAgRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5wcmV3YXJtKHByZXdhcm1JbmZvKTsKKyAgICBGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3YXJtKHByZXdhcm1JbmZvKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IGFk
YmNjMjQ0OGYxZWU5ZTU4Mjg0ZjMyZGEzNzYzZjYzMDllYzc3OTUuLjNiNGRhNGY1MjdiYzg0ZTVh
NDcxNjhhOTk0NmU3ZmI2ODc3NGU3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgRm9udFJhbmdlcyBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm8KIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsKIAotICAgIHJldHVybiBG
b250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvclBsYXRmb3JtRGF0YSgqZm9u
dFBsYXRmb3JtRGF0YSkpOworICAgIHJldHVybiBGb250UmFuZ2VzKEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpLmZvbnRGb3JQbGF0Zm9ybURhdGEoKmZvbnRQbGF0Zm9ybURhdGEpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmluZGV4IGYzZTZm
YmM4ODJhMGMyZDUxNWI4ZThmNjFmNjljMWQyZTNiZTIzOTcuLjU3NjJlMDg5M2Q5OTNiNDM5Yjkw
NTg5MmIxNjI1Njc2MDliNWJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeQogICAg
IHJlc3VsdC5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IGFsbG93VXNlckluc3RhbGxlZEZvbnRz
OwogCiAgICAgYXV0byB3ZWlnaHQgPSBkZXNjcmlwdGlvbi53ZWlnaHQoKTsKLSAgICBpZiAoRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5zaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmls
aXR5KCkpCisgICAgaWYgKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnNob3VsZE1vY2tC
b2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgd2VpZ2h0ID0gd2VpZ2h0
ICsgRm9udFNlbGVjdGlvblZhbHVlKDIwMCk7CiAKICAgICByZXN1bHQud2VpZ2h0ID0gbWFwV2Vp
Z2h0KHdlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KaW5k
ZXggMzMyZDFlZjI2YTllYjhjM2FhYzQ5ZTIxYTFiOTkwYmViMmRkYzRkYy4uOTc2ODEzMmQ3MGM4
YTkzOTA3ZDA5OWZiYWJlMjZmNDBmYjFlNWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250
cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciog
Y3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBGb250UGxhdGZvcm1EYXRhIHJ1bkZvbnRQbGF0Zm9y
bURhdGEocnVuQ1RGb250LCBDVEZvbnRHZXRTaXplKHJ1bkNURm9udCkpOwotICAgICAgICAgICAg
ICAgICAgICBydW5Gb250ID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yUGxhdGZvcm1E
YXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLnB0cigpOworICAgICAgICAgICAgICAgICAgICBydW5G
b250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvclBsYXRmb3JtRGF0YShy
dW5Gb250UGxhdGZvcm1EYXRhKS5wdHIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKG1fZmFsbGJhY2tGb250cyAmJiBydW5Gb250ICE9ICZtX2ZvbnQucHJpbWFyeUZv
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgbV9mYWxsYmFja0ZvbnRzLT5hZGQocnVuRm9udCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENh
Y2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwCmluZGV4IGNiNGNkYzA1OWE3N2FjYmVkYmZiYzFlMTJiMDA1MGU2ZTgxNTJhYjQu
LjkxMWRkNWNhMDA3MzI4Y2Q1OWZkOWYwMTE2ODA4OTNkYTc4NDg0NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+KiBnZXRMaW5rZWRG
b250cyhTdHJpbmcmIGZhbWlseSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY29u
c3QgVmVjdG9yPERXT1JELCA0PiYgZ2V0Q0pLQ29kZVBhZ2VNYXNrcygpCitzdGF0aWMgY29uc3Qg
VmVjdG9yPERXT1JELCA0PiYgZ2V0Q0pLQ29kZVBhZ2VNYXNrcyhGb250Q2FjaGUmIGZvbnRDYWNo
ZSkKIHsKICAgICAvLyBUaGUgZGVmYXVsdCBvcmRlciBpbiB3aGljaCB3ZSBsb29rIGZvciBhIGZv
bnQgZm9yIGEgQ0pLIGNoYXJhY3Rlci4gSWYgdGhlIHVzZXIncyBkZWZhdWx0IGNvZGUgcGFnZSBp
cwogICAgIC8vIG9uZSBvZiB0aGVzZSwgd2Ugd2lsbCB1c2UgaXQgZmlyc3QuCkBAIC0xNjEsNyAr
MTYxLDcgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxEV09SRCwgND4mIGdldENKS0NvZGVQYWdlTWFz
a3MoKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgICBJTUxhbmdGb250TGlua1R5
cGUqIGxhbmdGb250TGluayA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0Rm9udExpbmtJbnRl
cmZhY2UoKTsKKyAgICAgICAgSU1MYW5nRm9udExpbmtUeXBlKiBsYW5nRm9udExpbmsgPSBmb250
Q2FjaGUuZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICAgICAgICAgaWYgKCFsYW5nRm9udExpbmsp
CiAgICAgICAgICAgICByZXR1cm4gY29kZVBhZ2VNYXNrczsKIApAQCAtMjU3LDcgKzI1Nyw3IEBA
IFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25z
dCBGb250RGVzY3JpcHRpb24mIGRlc2NyCiAgICAgICAgICAgICAgICAgLy8gVGhlIENKSyBjaGFy
YWN0ZXIgbWF5IGJlbG9uZyB0byBtdWx0aXBsZSBjb2RlIHBhZ2VzLiBXZSB3YW50IHRvCiAgICAg
ICAgICAgICAgICAgLy8gZG8gZm9udCBsaW5raW5nIGFnYWluc3QgYSBzaW5nbGUgb25lIG9mIHRo
ZW0sIHByZWZlcnJpbmcgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICAvLyBjb2RlIHBhZ2Ug
Zm9yIHRoZSB1c2VyJ3MgbG9jYWxlLgotICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxEV09S
RCwgND4mIENKS0NvZGVQYWdlTWFza3MgPSBnZXRDSktDb2RlUGFnZU1hc2tzKCk7CisgICAgICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPERXT1JELCA0PiYgQ0pLQ29kZVBhZ2VNYXNrcyA9IGdldENK
S0NvZGVQYWdlTWFza3MoKnRoaXMpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUNvZGVQ
YWdlcyA9IENKS0NvZGVQYWdlTWFza3Muc2l6ZSgpOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1Db2RlUGFnZXMgJiYgIWhmb250OyArK2kpIHsKICAgICAgICAg
ICAgICAgICAgICAgaGZvbnQgPSBjcmVhdGVNTGFuZ0ZvbnQobGFuZ0ZvbnRMaW5rLCBoZGMsIENK
S0NvZGVQYWdlTWFza3NbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAKaW5kZXggMWZjMDlmMzJlN2UxMmEwMzYyZTkzNDQyODgxN2FhZjBmODZhOGNjMy4u
ZTI5YzVjYWY0NzkyZDNmODkyMjMzMjJhYjhjNmE4ZDIwMDRkYzM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0xMzEsNyArMTMxLDggQEAgdm9p
ZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3Mp
CiAjZW5kaWYKIAogICAgIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zZXRTaG91bGRNb2NrQm9s
ZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KG1fc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eSk7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5zZXRTaG91bGRNb2Nr
Qm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KG1fc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250
Rm9yQWNjZXNzaWJpbGl0eSk7CisgICAgLy8gRklYTUU6IENhbGwgc2V0U2hvdWxkTW9ja0JvbGRT
eXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpIG9uIGFsbCB3b3JrZXJzLgorICAgIEZvbnRDYWNo
ZTo6Zm9yQ3VycmVudFRocmVhZCgpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vz
c2liaWxpdHkobV9zaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KTsKIAog
I2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgQXVkaW9Db250ZXh0OjpzZXREZWZhdWx0U2FtcGxl
UmF0ZUZvclRlc3Rpbmcoc3RkOjpudWxsb3B0KTsKQEAgLTU3MCw3ICs1NzEsOCBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRG
b3JBY2Nlc3NpYmlsaXR5KAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigp
LnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkocmVxdWlyZXMpOwot
ICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eShyZXF1aXJlcyk7CisgICAgLy8gRklYTUU6IENhbGwgc2V0U2hvdWxkTW9j
a0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpIG9uIGFsbCB3b3JrZXJzLgorICAgIEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZv
ckFjY2Vzc2liaWxpdHkocmVxdWlyZXMpOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0MmU5YzBkNjg1OGVjOTFjMzE5Y2IyMzM0Y2Uw
YjIyMTUzMzFmYTZjLi44ZTk5N2M0NWI4NGZmMDE1OTBlMmYyZTdiOWZiMmUyNDFlOWMzM2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xODUyLDcgKzE4NTIsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxp
Z2h0ZWQoYm9vbCBmbGFnKQogCiB2b2lkIEludGVybmFsczo6aW52YWxpZGF0ZUZvbnRDYWNoZSgp
CiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbnZhbGlkYXRlKCk7CisgICAgRm9udENh
Y2hlOjppbnZhbGlkYXRlQWxsRm9udENhY2hlcygpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0
Rm9udFNtb290aGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEy
OGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjQzM2Q5ZTFhNDVjMjk4ODU0MmIwNWU3NGI0NzE3YTc3
MDU3MjhiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPEZvbnQ+IFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6Y3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKIHsK
ICAgICBBU1NFUlQobV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICBBU1NFUlQobV9jb250
ZXh0KTsKLSAgICByZXR1cm4gRm9udDo6Y3JlYXRlKG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS0+
Zm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y0l0YWxpYywgZm9udENyZWF0aW9uQ29udGV4dCksIEZvbnQ6Ok9yaWdpbjo6UmVtb3RlLCAmbV9j
b250ZXh0LT5mb250Q2FjaGUoKSk7CisgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEtPmZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBzeW50aGV0
aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRDcmVhdGlvbkNvbnRleHQpLCBGb250OjpPcmln
aW46OlJlbW90ZSk7CiB9CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpzZXRDbGllbnQo
Rm9udExvYWRSZXF1ZXN0Q2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGQxYmU2MzZmMTJhOWEwYjg3MGIzM2JjYTE2NDZm
NGFlMDI0MTdjMTEuLjA5YTNmNDBmZTUzMzg1NjBjMDNjZjNhYmQ4MDFjN2ZiMzEyYzlmOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0zNCw3
ICszNCw2IEBACiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3kuaCIKICNpbmNsdWRlICJDcnlwdG8uaCIKLSNpbmNsdWRlICJGb250Q2FjaGUuaCIK
ICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udEZhY2VT
ZXQuaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uUHJveHkuaCIKQEAgLTY0LDYgKzYzLDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MjYsMTMgKzUyNiw2IEBAIENTU0ZvbnRTZWxl
Y3RvciogV29ya2VyR2xvYmFsU2NvcGU6OmNzc0ZvbnRTZWxlY3RvcigpCiAgICAgcmV0dXJuIG1f
Y3NzRm9udFNlbGVjdG9yLmdldCgpOwogfQogCi1Gb250Q2FjaGUmIFdvcmtlckdsb2JhbFNjb3Bl
Ojpmb250Q2FjaGUoKQotewotICAgIGlmICghbV9mb250Q2FjaGUpCi0gICAgICAgIG1fZm9udENh
Y2hlID0gRm9udENhY2hlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gKm1fZm9udENhY2hlOwotfQot
CiBSZWY8Rm9udEZhY2VTZXQ+IFdvcmtlckdsb2JhbFNjb3BlOjpmb250cygpCiB7CiAgICAgQVNT
RVJUKGNzc0ZvbnRTZWxlY3RvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaAppbmRleCAzNWQ3M2FjY2VlMzI3ZWI4OWRmOTNhM2ZiNGNmOTA1MzE5OGE3Nzc4
Li5jMDFhZDhlZmY3NzRmYmUxNjU1MzQ3OTBiNjA4OGJmY2FjZGMwZjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVi
bGljOgogCiAgICAgQ1NTVmFsdWVQb29sJiBjc3NWYWx1ZVBvb2woKSBmaW5hbDsKICAgICBDU1NG
b250U2VsZWN0b3IqIGNzc0ZvbnRTZWxlY3RvcigpIGZpbmFsOwotICAgIEZvbnRDYWNoZSYgZm9u
dENhY2hlKCkgZmluYWw7CiAgICAgUmVmPEZvbnRGYWNlU2V0PiBmb250cygpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVzdChTdHJpbmcmIHVybCwg
Ym9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVl
LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKSBmaW5hbDsKICAgICB2b2lkIGJlZ2luTG9hZGluZ0Zv
bnRTb29uKEZvbnRMb2FkUmVxdWVzdCYpIGZpbmFsOwpAQCAtMjE5LDcgKzIxOCw2IEBAIHByaXZh
dGU6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTVmFsdWVQb29sPiBtX2Nzc1ZhbHVl
UG9vbDsKICAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2Nzc0ZvbnRTZWxlY3RvcjsKLSAg
ICBSZWZQdHI8Rm9udENhY2hlPiBtX2ZvbnRDYWNoZTsKICAgICBSZWZlcnJlclBvbGljeSBtX3Jl
ZmVycmVyUG9saWN5OwogICAgIFNldHRpbmdzOjpWYWx1ZXMgbV9zZXR0aW5nc1ZhbHVlczsKICAg
ICBXb3JrZXJUeXBlIG1fd29ya2VyVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCA5NDMwNGI3MTFmZDRmYWVhM2IyMGU3MzljOTk2YTQ3YjhjNzJhZDM0Li4x
Yjk1MzI1YjNhMWE3NzgzMjY0MzI2ZjM5MGQ5NGI3YzMxZjQwMGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04NjcsNyArODY3LDggQEAgdm9pZCBXZWJQcm9j
ZXNzOjp0ZXJtaW5hdGUoKQogewogI2lmbmRlZiBOREVCVUcKICAgICBHQ0NvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24o
KS5pbnZhbGlkYXRlKCk7CisgICAgLy8gRklYTUU6IFdoYXQgYWJvdXQgRm9udENhY2hlcyBvbiB3
b3JrZXIgdGhyZWFkcz8KKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZhbGlk
YXRlKCk7CiAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnNldERpc2FibGVkKHRydWUpOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29y
ZVN0YXRpc3RpY3MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLm1tCmluZGV4IDkyOGFlN2Q1MWUzZjBiN2Q5MTAyMGM3ZGEyODhlZGUyNDVjMzg1OTUu
LjQxYWQxYjA5ODc4OWRlY2RkYTA0NWMzODU2MTc0NGM5ZjBkMGE5MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpAQCAtMTQwLDE3
ICsxNDAsMTcgQEAgKyAoc2l6ZV90KWljb25zV2l0aERhdGFDb3VudAogCiArIChzaXplX3QpY2Fj
aGVkRm9udERhdGFDb3VudAogewotICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZv
bnRDb3VudCgpOworICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250
Q291bnQoKTsKIH0KIAogKyAoc2l6ZV90KWNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudAogewot
ICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmluYWN0aXZlRm9udENvdW50KCk7Cisg
ICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmluYWN0aXZlRm9udENvdW50
KCk7CiB9CiAKICsgKHZvaWQpcHVyZ2VJbmFjdGl2ZUZvbnREYXRhCiB7Ci0gICAgRm9udENhY2hl
OjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2FjaGU6OmZv
ckN1cnJlbnRUaHJlYWQoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAogKyAoc2l6ZV90
KWdseXBoUGFnZUNvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKaW5kZXggOWM5NmE2N2U5ZDBjMWY5MDQ0MmYwYjQwYzQ0ODI2YjVjNTZiNWEzMy4u
MzU2OTgzYzUyYjM3NDhhNGNkYmNhNWFkOTFmOTUzNTEyYTg4OWJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBA
IEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhQ291bnQoX091dF8gVUlO
VCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
LSAgICAqY291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Q291bnQoKTsK
KyAgICAqY291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udENv
dW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIxOCwxMyArMjE4LDEzIEBAIEhSRVNV
TFQgV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudChfT3V0XyBV
SU5UICpjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwotICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmluYWN0aXZlRm9u
dENvdW50KCk7CisgICAgKmNvdW50ID0gKFVJTlQpIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLmluYWN0aXZlRm9udENvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQg
V2ViQ29yZVN0YXRpc3RpY3M6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh2b2lkKQogewotICAgIEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446089</attachid>
            <date>2021-12-06 16:01:06 -0800</date>
            <delta_ts>2021-12-06 16:37:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233747-20211207110104.patch</filename>
            <type>text/plain</type>
            <size>63134</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYzNDUxZjJlZjJkZDli
MTMyMjViMDM3NWViZjg4NzAzZTk4OTdjYi4uMmE0ZmQ1ZGEyZDUwYmNjZDQxNDcyNzVlMTQwMzE4
NzdmMjQwZjM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MCBAQAorMjAyMS0xMi0wMSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENh
Y2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFk
R2xvYmFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
VGhlcmUgYXJlIHZhcmlvdXMgcGxhY2VzIGluIGZvbnQgY29kZSB3aGVyZSB3ZSBuZWVkIGFjY2Vz
cyB0byBhCisgICAgICAgIEZvbnRDYWNoZSBpbnN0YW5jZS4gQ3VycmVudGx5IHdlOgorCisgICAg
ICAgIC0gYXNzdW1lIHRoYXQgd2UncmUgb24gdGhlIG1haW4gdGhyZWFkIGFuZCBjYWxsCisgICAg
ICAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKSwgb3IKKyAgICAgICAgLSBnZXQgYSBGb250Q2Fj
aGUgb2ZmIFdvcmtlckdsb2JhbFNjb3BlIGFuZCBwYXNzIGl0IGRvd24gKG9yIHN0b3JlIGl0KQor
ICAgICAgICAgIHdoZXJlIGl0J3MgbmVlZGVkLCB0aGVuIHBhc3MgaXQgdG8gZm9udENhY2hlRmFs
bGluZ0JhY2tUb1NpbmdsZXRvbi4KKworICAgICAgICBIYXZpbmcgdG8gdGhyZWFkIHRocm91Z2gs
IG9yIHN0b3JlLCB0aGUgRm9udENhY2hlIHBvaW50ZXIgaXMKKyAgICAgICAgaW5jb252ZW5pZW50
LCBhbmQgdGhlcmUgYXJlIHNvbWUgcGxhY2VzIHdoZXJlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRv
CisgICAgICAgIGEgRm9udENhY2hlIHBvaW50ZXIsIGJ1dCB3ZSdyZSBvbiBhIHdvcmtlciwgYW5k
IHdlIGNhbGwKKyAgICAgICAgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbiBhbmQgd3Jv
bmdseSBnZXQgYmFjayB0aGUgbWFpbiB0aHJlYWQncworICAgICAgICBpbnN0YW5jZS4KKworICAg
ICAgICBJIHRoaW5rIGl0IHdvdWxkIGJlIGNsZWFuZXIgaWYgd2UgbW92ZWQgYm90aCB0aGUgbWFp
biB0aHJlYWQgRm9udENhY2hlCisgICAgICAgIHNpbmdsZXRvbiwgYW5kIHRoZSBvbmUgc3RvcmVk
IG9uIGEgV29ya2VyR2xvYmFsU2NvcGUsIHRvCisgICAgICAgIFRocmVhZEdsb2JhbERhdGEsIHdo
aWNoIGlzIGVhc2lseSBnbG9iYWxseSBhY2Nlc3NpYmxlLiBQZXJmb3JtaW5nIGEKKyAgICAgICAg
VExTIGxvb2t1cCBpcyBjaGVhcCB0aGVzZSBkYXlzLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlOjpmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpmb250
Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKToKKyAgICAgICAgUmVtb3ZlIGZvbnRDYWNoZUZh
bGxpbmdCYWNrVG9TaW5nbGV0b24gYW5kIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aAorICAgICAg
ICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZh
Y2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2Fs
Rm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZCk6CisgICAgICAgIFJlcGxhY2UgZ2V0dGluZyB0
aGUgRm9udENhY2hlIGZyb20gdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgd2l0aCBhCisgICAg
ICAgIGNhbGwgdG8gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2hhbmdlczo6cGxhdGZvcm1Gb250RmFtaWx5TmFtZUZvckNT
UyBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkU3lz
dGVtRm9udEZhbWlseU5hbWVzKToKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KToKKyAgICAgICAgKiBw
YWdlL1Byb2Nlc3NXYXJtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5n
OjpwcmV3YXJtR2xvYmFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OmNv
bGxlY3RQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1p
bmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlDaGFu
Z2UpOgorICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIEZvbnRDYWNoZTo6c2luZ2xldG9uIHdpdGgg
Y2FsbHMgdG8KKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAg
ICAgICAgUmVtb3ZlIENTU0ZvbnRTZWxlY3Rvcjo6bV9mb250Q2FjaGUgYW5kIHVzZQorICAgICAg
ICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQgaW5zdGVhZC4gRm9yIHRoZSBDU1NGb250U2Vs
ZWN0b3IKKyAgICAgICAgZGVzdHJ1Y3Rvciwgd2UgY2FsbCBmb3JDdXJyZW50VGhyZWFkSWZOb3RE
ZXN0cm95ZWQgc2luY2UgaXQKKyAgICAgICAgY2FuIHJ1biBhZnRlciBUaHJlYWRHbG9iYWxEYXRh
OjpkZXN0cm95IGhhcyBiZWVuIGNhbGxlZCBmb3IKKyAgICAgICAgYSB3b3JrZXIsIGFuZCB3ZSBk
b24ndCB3YW50IHRvIGNhdXNlIGEgZnJlc2ggRm9udENhY2hlIG9iamVjdCB0byBiZQorICAgICAg
ICBjcmVhdGVkIGF0IHRoaXMgcG9pbnQuCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSk6CisgICAg
ICAgIFJlbW92ZSB0aGUgRm9udENhY2hlIG1lbWJlci4KKworICAgICAgICAqIHBsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRo
cmVhZEdsb2JhbERhdGE6OmNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YTo6ZXZlbnROYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRh
OjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0
YTo6VGhyZWFkR2xvYmFsRGF0YTo6bWltZVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YTo6Zm9u
dENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2Jh
bERhdGE6OmZvbnRDYWNoZUlmTm90RGVzdHJveWVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OmRl
c3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6aW5pdGlhbGl6ZUZv
bnRDYWNoZSk6CisgICAgICAgIEFkZCBhY2Nlc3NvcnMgZm9yIGEgbGF6aWx5IGNyZWF0ZWQgRm9u
dENhY2hlLiBBbHNvIHJlY29yZCB3aGV0aGVyCisgICAgICAgIGRlc3Ryb3kgaGFzIGJlZW4gY2Fs
bGVkIG9uIHRoZSBUaHJlYWRHbG9iYWxEYXRhIHNvIHRoYXQKKyAgICAgICAgZm9udENhY2hlSWZO
b3REZXN0cm95ZWQgY2FuIGNoZWNrIGl0LCBhbmQgdGhlIG90aGVyIGxhenkgb2JqZWN0CisgICAg
ICAgIGNyZWF0aW9uIG1ldGhvZHMgY2FuIGFzc2VydCBkZXN0cm95IGhhc24ndCBiZWVuIGNhbGxl
ZCB5ZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fj
aGU6OmZvbnRGb3JQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6
Y3JlYXRlRm9udCk6CisgICAgICAgIFJlbW92ZSBGb250Q2FjaGUgYXJndW1lbnRzIGFuZCB1c2Ug
Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkIGluCisgICAgICAgIHRoZWlyIHBsYWNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Y3JlYXRlKToKKyAgICAgICAgQ2hhbmdlIGZhY3RvcnkgZnVuY3Rpb24g
dG8gcmV0dXJuIGEgdW5pcXVlX3B0ci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c2lu
Z2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCk6
CisgICAgICAgIFJlcGxhY2UgRm9udENhY2hlOjpzaW5nbGV0b24gd2l0aCBGb250Q2FjaGU6OmZv
ckN1cnJlbnRUaHJlYWQsIHdoaWNoCisgICAgICAgIGxvb2tzIHVwIHRoZSBGb250Q2FjaGUgb24g
VGhyZWFkR2xvYmFsRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0
ZUFsbEZvbnRDYWNoZXMpOgorICAgICAgICBOZXcgZnVuY3Rpb24gdGhhdCB3aWxsIGluIHRoZSBm
dXR1cmUgaW52YWxpZGF0ZSB0aGUgbWFpbiB0aHJlYWQgYW5kCisgICAgICAgIGFsbCB3b3JrZXIg
dGhyZWFkIEZvbnRDYWNoZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaDoKKyAgICAgICAgUmVtb3ZlIHJlZmNvdW50aW5nIGZyb20gRm9udENhY2hlIHNpbmNlIHdl
IG5vIGxvbmdlciBuZWVkIHRvIHN0b3JlIGEKKyAgICAgICAgc3Ryb25nIHJlZmVyZW5jZSB0byBp
dCBvbiBvdGhlciBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpmb250Q2Fj
aGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
Ojppc0N1cnJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnVwZGF0
ZSBjb25zdCk6CisgICAgICAgIENhbGwgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkIGluc3Rl
YWQgb2YgZ2V0dGluZyBpdCBmcm9tIHRoZQorICAgICAgICBGb250U2VsZWN0b3IuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhbGl6ZU5leHRGYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZUZvbnRzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlIGNv
bnN0KToKKyAgICAgICAgVXNlIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICBSZW1vdmUgZm9u
dENhY2hlIG1ldGhvZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRDYWNoZVJlZ2lzdGVyZWRG
b250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpmb250
V2l0aEZhbWlseVNwZWNpYWxDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cHJl
d2FybUdsb2JhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1Gb250UGFy
YW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9s
bGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkpOgorICAg
ICAgICBVc2UgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aW52YWxpZGF0ZUZvbnRDYWNoZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnZhbGlkYXRlRm9udENhY2hlKToKKyAg
ICAgICAgQ2FsbCB0aGUgbmV3IEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldENKS0NvZGVQYWdlTWFza3MpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMpOgorICAgICAgICBVc2UgdGhlIEZv
bnRDYWNoZSBpbnN0YW5jZSB3ZSBoYXZlIGFjY2VzcyB0byByYXRoZXIgdGhhbiBjYWxsCisgICAg
ICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmZvbnRDYWNoZSk6CisgICAgICAgIFJl
bW92ZSB0aGUgRm9udENhY2hlIG1lbWJlciBhbmQgYWNjZXNzb3IuCisKIDIwMjEtMTItMDQgIEFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQ29tcHV0
ZSBpc0ZpcnN0Qm94L2lzTGFzdEJveCBmb3IgdGV4dCBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRjNGQ3
NTdiMmE1ODRkNDQ5ZjA1NGFmMjRkODFiZDZjYzRjNTIyNWIuLmJiZjU2MzM0MzE5ZTk3NDk2NWZl
OWI1YjdhNDYzNDU4NGJhNGViZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTIt
MDEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
IEZvbnRDYWNoZSBzaW5nbGV0b24gYW5kIGluc3RhbmNlIG9uIFdvcmtlckdsb2JhbFNjb3BlIHRv
IFRocmVhZEdsb2JhbERhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIG1haW4gdGhyZWEg
Y2FsbGVycyBvZiBGb250Q2FjaGU6OnNpbmdsZXRvbigpIHRvIHVzZQorICAgICAgICBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQoKS4KKwogMjAyMS0xMi0wNCAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4MzNkZTkyZDEuLmMwMDg4MTNm
MGYwMjE0ZTY0ZjVlMGU5NzdkODY5M2I1MzE5ZmEyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxo
ZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENhY2hlIHNpbmdsZXRvbiBhbmQg
aW5zdGFuY2Ugb24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFkR2xvYmFsRGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLm1tOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBjYWNoZWRGb250RGF0YUNv
dW50XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGNhY2hlZEZvbnREYXRhSW5hY3Rp
dmVDb3VudF0pOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBwdXJnZUluYWN0aXZlRm9u
dERhdGFdKToKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIG1haW4gdGhyZWFkIGNhbGxlcnMgb2Yg
Rm9udENhY2hlOjpzaW5nbGV0b24oKSB0byB1c2UKKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJy
ZW50VGhyZWFkKCkuCisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVx
dWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZi
MGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLmE0MDExNjQ1MzI2MWFiMzhkNDdlODE4ZjYw
MDhkZjBiNDhkM2Q5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgRm9udENhY2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2Vy
R2xvYmFsU2NvcGUgdG8gVGhyZWFkR2xvYmFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
U3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50KToKKyAgICAgICAgKFdlYkNv
cmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgorICAgICAgICBVcGRhdGUgZXhp
c3RpbmcgbWFpbiB0aHJlYWQgY2FsbGVycyBvZiBGb250Q2FjaGU6OnNpbmdsZXRvbigpIHRvIHVz
ZQorICAgICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS4KKwogMjAyMS0xMi0wMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgV2Vi
IExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5jcHAKaW5kZXggMTM0OTQ4Y2JmZGI3N2Q2YzI1Mjc3NjQxNDkxZTc5ZmExM2Vj
ODE1ZC4uZWIzYmMwYjMyMjRkNzVhNjEyM2RjMmJhZDc5NjgzYzc3YjlhODU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC0zOTYsMTMgKzM5Niw2IEBAIERvY3VtZW50KiBDU1NG
b250RmFjZTo6ZG9jdW1lbnQoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1Gb250Q2FjaGUm
IENTU0ZvbnRGYWNlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKCkKLXsKLSAgICBp
ZiAobV93cmFwcGVyICYmIG1fd3JhcHBlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAg
ICAgICByZXR1cm4gbV93cmFwcGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmZvbnRDYWNo
ZSgpOwotICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpOwotfQotCiBib29sIENTU0Zv
bnRGYWNlOjpjb21wdXRlRmFpbHVyZVN0YXRlKCkgY29uc3QKIHsKICAgICBpZiAoc3RhdHVzKCkg
PT0gU3RhdHVzOjpGYWlsdXJlKQpAQCAtNjc2LDkgKzY2OSw4IEBAIFJlZlB0cjxGb250PiBDU1NG
b250RmFjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9v
bCBzeW50CiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5zdGF0dXMoKSkgewogICAgICAgICBjYXNl
IENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OlBlbmRpbmc6CiAgICAgICAgIGNhc2UgQ1NTRm9u
dEZhY2VTb3VyY2U6OlN0YXR1czo6TG9hZGluZzogewotICAgICAgICAgICAgYXV0byYgZm9udENh
Y2hlID0gZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbigpOwogICAgICAgICAgICAgRm9u
dDo6VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gV2ViQ29yZTo6dmlzaWJpbGl0eShzdGF0dXMoKSwg
Zm9udExvYWRUaW1pbmcoKSk7Ci0gICAgICAgICAgICByZXR1cm4gRm9udDo6Y3JlYXRlKGZvbnRD
YWNoZS5sYXN0UmVzb3J0RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlvbiktPnBsYXRmb3JtRGF0
YSgpLCBGb250OjpPcmlnaW46OkxvY2FsLCAmZm9udENhY2hlLCBGb250OjpJbnRlcnN0aXRpYWw6
OlllcywgdmlzaWJpbGl0eSk7CisgICAgICAgICAgICByZXR1cm4gRm9udDo6Y3JlYXRlKEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2Ny
aXB0aW9uKS0+cGxhdGZvcm1EYXRhKCksIEZvbnQ6Ok9yaWdpbjo6TG9jYWwsIEZvbnQ6OkludGVy
c3RpdGlhbDo6WWVzLCB2aXNpYmlsaXR5KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU0Zv
bnRGYWNlU291cmNlOjpTdGF0dXM6OlN1Y2Nlc3M6IHsKICAgICAgICAgICAgIEZvbnRDcmVhdGlv
bkNvbnRleHQgZm9udENyZWF0aW9uQ29udGV4dCB7IG1fZmVhdHVyZVNldHRpbmdzLCBtX2ZvbnRT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMsIGZvbnRQYWxldHRlVmFsdWVzIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZS5oCmluZGV4IDc4OTkzZWZlZjU3YjVlNjc5OTZhZDFiZGFlZjg3NzE3ZmExNjBkZTgu
LjFiOGNlYWE2ZTI1MWZmOGViZTU3YmY0MDE1ZmExMmExNmE1MTRlYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oCkBAIC00Niw3ICs0Niw2IEBAIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKIGNs
YXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlOwogY2xhc3MgQ1NTVmFsdWU7CiBjbGFzcyBDU1NWYWx1
ZUxpc3Q7Ci1jbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udDsKQEAgLTE3NCw3ICsxNzMsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgdGltZW91dEZpcmVkKCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQo
KTsKLSAgICBGb250Q2FjaGUmIGZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oKTsKIAog
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fZmFtaWxpZXM7CiAgICAgVmVjdG9yPFVuaWNvZGVS
YW5nZT4gbV9yYW5nZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCBh
NzZhYWNlOTc0NDRlMjNiNWFiMDNhZTVjMDQ5YTQ0ZDc0ZGZhZmFhLi42MmVlY2I1YTVkMjQxZGNi
ZThiMjQ5MzViYjZjMmYzMjg5NDkxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNl
dC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2Nh
bEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBmYW1pbAogICAgIGlm
ICghbV9vd25pbmdGb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxl
ZEZvbnRzID0gbV9vd25pbmdGb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2V0dGluZ3NWYWx1ZXMoKS5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyA/IEFsbG93VXNl
ckluc3RhbGxlZEZvbnRzOjpZZXMgOiBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm87Ci0gICAg
VmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcyA9IG1fb3duaW5n
Rm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmZvbnRDYWNoZSgpLmdldEZv
bnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShmYW1pbHlOYW1lLCBhbGxvd1VzZXJJbnN0
YWxsZWRGb250cyk7CisgICAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IGNhcGFi
aWxpdGllcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmdldEZvbnRTZWxlY3Rpb25D
YXBhYmlsaXRpZXNJbkZhbWlseShmYW1pbHlOYW1lLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7
CiAgICAgaWYgKGNhcGFiaWxpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2
Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uYWViNGI2Y2M1MGExMjZjOTgzMGQ2MDZhYmIwYzNh
OGM2OWE5YzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KG1fZmFt
aWx5TmFtZU9yVVJJKTsKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoMSk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U2hvdWxkQWxsb3dVc2VySW5z
dGFsbGVkRm9udHMobV9mYWNlLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOwotICAgICAgICAg
ICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVz
Y3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCB7IH0sIHRydWUpOworICAgICAgICAgICAgc3Vj
Y2VzcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoZm9udERl
c2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgeyB9LCB0cnVlKTsKICAgICAgICAgICAgIGlm
IChkb2N1bWVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgbV9mYW1pbHlOYW1lT3JVUkku
c3RyaW5nKCksIHN1Y2Nlc3MpOwogICAgICAgICB9CkBAIC0yMTAsNyArMjEwLDcgQEAgUmVmUHRy
PEZvbnQ+IENTU0ZvbnRGYWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBib28KIAogICAgICAgICAvLyBXZSdyZSBsb2NhbC4gSnVzdCByZXR1cm4g
YSBGb250IGZyb20gdGhlIG5vcm1hbCBjYWNoZS4KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBjaGVjayBhbHRlcm5hdGUgZm9udCBmYW1pbHkgbmFtZXMgaGVyZSwgc28gcGFzcyB0cnVlIGFz
IHRoZSBjaGVja2luZ0FsdGVybmF0ZU5hbWUgcGFyYW1ldGVyLgotICAgICAgICByZXR1cm4gRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1p
bHlOYW1lT3JVUkksIGZvbnRDcmVhdGlvbkNvbnRleHQsIHRydWUpOworICAgICAgICByZXR1cm4g
Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRp
b24sIG1fZmFtaWx5TmFtZU9yVVJJLCBmb250Q3JlYXRpb25Db250ZXh0LCB0cnVlKTsKICAgICB9
CiAKICAgICBpZiAobV9mb250UmVxdWVzdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcAppbmRleCBhZTExYThiOWNlOGUwZjdhZjJlMWM3MjlhMWEzNWQ1OTg0NmVlOTg2Li45
NDgxODBhODIxMmNkMDVkODdmMDU3Y2VmYjFkMDM2NDBjMDFjY2FmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNjUsNyArNjUsNiBAQCBzdGF0aWMgdW5zaWduZWQg
Zm9udFNlbGVjdG9ySWQ7CiBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0
KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2ZvbnRDYWNoZShjb250ZXh0LmZv
bnRDYWNoZSgpKQogICAgICwgbV9jc3NGb250RmFjZVNldChDU1NGb250RmFjZVNldDo6Y3JlYXRl
KHRoaXMpKQogICAgICwgbV9mb250TW9kaWZpZWRPYnNlcnZlcihbdGhpc10geyBmb250TW9kaWZp
ZWQoKTsgfSkKICAgICAsIG1fdW5pcXVlSWQoKytmb250U2VsZWN0b3JJZCkKQEAgLTgxLDcgKzgw
LDcgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG1fZm9udEZhbWlseU5hbWVzLnVuY2hlY2tlZEFw
cGVuZChmYW1pbHlOYW1lKTsKICAgICB9CiAKLSAgICBtX2ZvbnRDYWNoZS0+YWRkQ2xpZW50KCp0
aGlzKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5hZGRDbGllbnQoKnRoaXMp
OwogICAgIG1fY3NzRm9udEZhY2VTZXQtPmFkZEZvbnRNb2RpZmllZE9ic2VydmVyKG1fZm9udE1v
ZGlmaWVkT2JzZXJ2ZXIpOwogICAgIExPRyhGb250cywgIkNTU0ZvbnRTZWxlY3RvciAlcCBjdG9y
IiwgdGhpcyk7CiAKQEAgLTkzLDcgKzkyLDkgQEAgQ1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNl
bGVjdG9yKCkKICAgICBMT0coRm9udHMsICJDU1NGb250U2VsZWN0b3IgJXAgZHRvciIsIHRoaXMp
OwogCiAgICAgY2xlYXJGb250cygpOwotICAgIG1fZm9udENhY2hlLT5yZW1vdmVDbGllbnQoKnRo
aXMpOworCisgICAgaWYgKGF1dG8gZm9udENhY2hlID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkSWZOb3REZXN0cm95ZWQoKSkKKyAgICAgICAgZm9udENhY2hlLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwogfQogCiBGb250RmFjZVNldCogQ1NTRm9udFNlbGVjdG9yOjpmb250RmFjZVNldElmRXhp
c3RzKCkKQEAgLTM1OSw3ICszNjAsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6Zm9u
dFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogCiAgICAg
aWYgKCFyZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0KQogICAgICAgICByZXNvbHZlQW5kQXNzaWdu
R2VuZXJpY0ZhbWlseSgpOwotICAgIGF1dG8gZm9udCA9IG1fZm9udENhY2hlLT5mb250Rm9yRmFt
aWx5KCpmb250RGVzY3JpcHRpb25Gb3JMb29rdXAsIGZhbWlseUZvckxvb2t1cCwgeyB7IH0sIHsg
fSwgZm9udFBhbGV0dGVWYWx1ZXMgfSk7CisgICAgYXV0byBmb250ID0gRm9udENhY2hlOjpmb3JD
dXJyZW50VGhyZWFkKCkuZm9udEZvckZhbWlseSgqZm9udERlc2NyaXB0aW9uRm9yTG9va3VwLCBm
YW1pbHlGb3JMb29rdXAsIHsgeyB9LCB7IH0sIGZvbnRQYWxldHRlVmFsdWVzIH0pOwogICAgIGlm
IChkb2N1bWVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWQoKS5sb2dGb250TG9hZCgqZG9jdW1lbnQsIGZhbWlseUZvckxvb2t1cC5zdHJpbmcoKSwg
ISFmb250KTsKICAgICByZXR1cm4gRm9udFJhbmdlcyB7IFdURk1vdmUoZm9udCkgfTsKQEAgLTM5
MCw3ICszOTEsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRB
dChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgIGlmICghbV9jb250ZXh0
LT5zZXR0aW5nc1ZhbHVlcygpLmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocykKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byYgcGljdG9ncmFwaEZvbnRGYW1pbHkgPSBtX2Nv
bnRleHQtPnNldHRpbmdzVmFsdWVzKCkuZm9udEdlbmVyaWNGYW1pbGllcy5waWN0b2dyYXBoRm9u
dEZhbWlseSgpOwotICAgIGF1dG8gZm9udCA9IG1fZm9udENhY2hlLT5mb250Rm9yRmFtaWx5KGZv
bnREZXNjcmlwdGlvbiwgcGljdG9ncmFwaEZvbnRGYW1pbHkpOworICAgIGF1dG8gZm9udCA9IEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9u
LCBwaWN0b2dyYXBoRm9udEZhbWlseSk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSAmJiBpczxEb2N1bWVu
dD4obV9jb250ZXh0KSkKICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxv
Z0ZvbnRMb2FkKGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KSwgcGljdG9ncmFwaEZvbnRG
YW1pbHksICEhZm9udCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCAx
NGEwNDU0OWQ0MTA4Y2U1MzI5MjU4M2IzOGU0NzAzMjdmMTk0YmE1Li5mYjhlYzg5MjFjM2M1YmI5
YWE3M2U5NWU1NWFkMjEwOTdiZTVjYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEZvbnRGYWNlUnVsZShT
dHlsZVJ1bGVGb250RmFjZSYsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSk7CiAgICAgdm9pZCBhZGRGb250UGFsZXR0ZVZhbHVlc1J1bGUoU3R5bGVSdWxlRm9u
dFBhbGV0dGVWYWx1ZXMmKTsKIAotICAgIEZvbnRDYWNoZSYgZm9udENhY2hlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9mb250Q2FjaGUuZ2V0KCk7IH0KICAgICB2b2lkIGZvbnRDYWNoZUludmFs
aWRhdGVkKCkgZmluYWw7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTEyMyw3ICsx
MjIsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxQZW5kaW5nRm9udEZhY2VSdWxlPiBtX3N0YWdp
bmdBcmVhOwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7
Ci0gICAgUmVmPEZvbnRDYWNoZT4gbV9mb250Q2FjaGU7CiAgICAgUmVmUHRyPEZvbnRGYWNlU2V0
PiBtX2ZvbnRGYWNlU2V0OwogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NGb250RmFjZVNl
dDsKICAgICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBhNTZlMzBkMjQ4
NzA3MzA2NDJiMzI3NTUyMThjNWEyNTYwYTRkNjcxLi45NTQ0Njc5NDM3ZjhlMWUwMTQ3M2NiNmE3
MGNkNWQwNzJmYzcxYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCi0jaW5j
bHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCkBA
IC0yMjMsMTEgKzIyMiw2IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmKQogewogfQogCi1Gb250Q2FjaGUmIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSgpCi17Ci0gICAgcmV0dXJuIEZvbnRDYWNoZTo6
c2luZ2xldG9uKCk7Ci19Ci0KIENTU1ZhbHVlUG9vbCYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
Y3NzVmFsdWVQb29sKCkKIHsKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFmM2Ix
MWM4YzM5NTQ2N2VhZGEwNzc1OGU2NGZkMmFhNjQ1ZDQ2MTUuLjM1MzNjMjBlMmVlNTc5NjBiNTRi
ZmUxNTM2ZGUzZmIyZjhjY2ExODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaApAQCAtNjYsNyArNjYsNiBAQCBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBj
bGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRU
YXJnZXQ7Ci1jbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBN
ZXNzYWdlUG9ydDsKIGNsYXNzIFBlcm1pc3Npb25Db250cm9sbGVyOwpAQCAtMTY4LDcgKzE2Nyw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGNvbnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwog
ICAgIHZpcnR1YWwgQ1NTRm9udFNlbGVjdG9yKiBjc3NGb250U2VsZWN0b3IoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpOwogICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0
KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJB
Z2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1t
CmluZGV4IGQ0MzFmNzIyZTI0YWFiM2JkMTc3MjhiNDM1OGI3ODY5OGI3ODZmNGIuLjg2YjkzMjEw
NzZjZTVmNmU5MDBlNzgxODk3NDQ1Y2NhYjIyMmYyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KQEAg
LTQ4LDcgKzQ4LDcgQEAgY29uc3QgU3RyaW5nJiBGb250Q2hhbmdlczo6cGxhdGZvcm1Gb250RmFt
aWx5TmFtZUZvckNTUygpIGNvbnN0CiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwog
ICAgIGRlc2NyaXB0aW9uLnNldElzSXRhbGljKG1faXRhbGljLnZhbHVlX29yKGZhbHNlKSk7CiAg
ICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSB7IG1fYm9sZC52YWx1
ZV9vcihmYWxzZSkgPyA5MDAgOiA1MDAgfSk7Ci0gICAgaWYgKGF1dG8gZm9udCA9IEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwgbV9mb250RmFtaWx5KSkK
KyAgICBpZiAoYXV0byBmb250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZv
ckZhbWlseShkZXNjcmlwdGlvbiwgbV9mb250RmFtaWx5KSkKICAgICAgICAgZm9udE5hbWVGcm9t
RGVzY3JpcHRpb24gPSBhZG9wdENGKENURm9udENvcHlQb3N0U2NyaXB0TmFtZShmb250LT5nZXRD
VEZvbnQoKSkpOwogCiAgICAgaWYgKGZvbnROYW1lRnJvbURlc2NyaXB0aW9uICYmIENGU3RyaW5n
Q29tcGFyZShjZkZvbnROYW1lLmdldCgpLCBmb250TmFtZUZyb21EZXNjcmlwdGlvbi5nZXQoKSwg
MCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDYzYzExM2UyZWExMGRlMWI4
NmY1MDViMzQzYzEyYzY3NGZiYmQxN2UuLjc5YTMyNDUwYWQ0NmQ0YTFkZGQ3M2U5YzkxYjY1ZmQ4
ZGMzM2I2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC04OTcsNyArODk3LDcgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4+IEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRTdXBwb3IKIHsKICAgICBhdXRvIGZvbnRGYW1pbHlOYW1lcyA9IEpTT046OkFycmF5T2Y8U3Ry
aW5nPjo6Y3JlYXRlKCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBzeXN0ZW1Gb250RmFtaWxpZXMg
PSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnN5c3RlbUZvbnRGYW1pbGllcygpOworICAgIFZlY3Rv
cjxTdHJpbmc+IHN5c3RlbUZvbnRGYW1pbGllcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLnN5c3RlbUZvbnRGYW1pbGllcygpOwogICAgIGZvciAoY29uc3QgYXV0byYgZmFtaWx5TmFt
ZSA6IHN5c3RlbUZvbnRGYW1pbGllcykKICAgICAgICAgZm9udEZhbWlseU5hbWVzLT5hZGRJdGVt
KGZhbWlseU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJl
bGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBl
Zjc5NTMwZTdjNWMyMGM0MTg0MDY5ZWRjNTg2NWRjMjhiOTkzZjZmLi5iYmE5NWZhM2U2NzljYWZi
MWIyOTE0ODA1N2RmMjdiY2IwNjgxMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFz
ZS5jcHAKQEAgLTcwLDggKzcwLDkgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVt
b3J5KE1haW50YWluTWVtb3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKIHsKICAgICBSZW5k
ZXJUaGVtZTo6c2luZ2xldG9uKCkucHVyZ2VDYWNoZXMoKTsKIAotICAgIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0
b24oKS5jbGVhcldpZHRoQ2FjaGVzKCk7CisgICAgLy8gRklYTUU6IENsZWFyIHRoZXNlIGZvbnQg
Y2FjaGVzIGluIHdvcmtlcnMgdG9vPworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgp
LnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLmNsZWFyV2lkdGhDYWNoZXMoKTsKIAogICAgIFRleHRQYWludGVyOjpjbGVhckdseXBoRGlz
cGxheUxpc3RzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dh
cm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5kZXgg
M2UzZjNhZDgyYTRkZDI5MzM5OTI1MDI1NWQ3ZGZjMzUzYmExYjM3NS4uZWM4MGFlNDNhYmU3OTEz
Njk3OGM3ZmQwMDM5MGMyMTZiNjliNzczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qcm9jZXNzV2FybWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2Fy
bWluZy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybUds
b2JhbGx5KCkKICAgICBjb21tb25WTSgpOwogCiAgICAgLy8gUHJld2FybSBmb250IGNhY2hlCi0g
ICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wcmV3YXJtR2xvYmFsbHkoKTsKKyAgICBGb250Q2Fj
aGU6OnByZXdhcm1HbG9iYWxseSgpOwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OKQogICAgIFRlbGVwaG9uZU51bWJlckRldGVjdG9yOjpwcmV3YXJtKCk7CkBAIC04Niwx
MiArODYsMTIgQEAgdm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KCkKIAogV2Vi
Q29yZTo6UHJld2FybUluZm9ybWF0aW9uIFByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUlu
Zm9ybWF0aW9uKCkKIHsKLSAgICByZXR1cm4geyBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmNvbGxl
Y3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9OworICAgIHJldHVybiB7IEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpLmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9OwogfQogCiB2b2lkIFBy
b2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKGNvbnN0IFByZXdhcm1JbmZvcm1h
dGlvbiYgcHJld2FybUluZm8pCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wcmV3YXJt
KHByZXdhcm1JbmZvLmZvbnRDYWNoZSk7CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFk
KCkucHJld2FybShwcmV3YXJtSW5mby5mb250Q2FjaGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzQmFzZS5jcHAKaW5kZXggMzllMGE5ZjUwNzk3Yjg0ZmE4NGY3OWQ0OTkzMDJiMzU1
YTUyMTU1Ny4uYzMxODhiOTVhMzY1NDdmMTE5OTc2M2JiNzc5ZmZmOGQ4YmIzOWY5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNTcsNyArNTcsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hh
bmdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbnZhbGlkYXRl
Rm9udENhc2NhZGVDYWNoZSgpOworICAgIC8vIE5vIG5lZWQgdG8gaW52YWxpZGF0ZSBGb250Q2Fz
Y2FkZUNhY2hlcyBpbiB3b3JrZXIgdGhyZWFkcywgc2luY2Ugd29ya2VycworICAgIC8vIGRvIG5v
dCByZXNwb25kIHRvIGNoYW5nZXMgaW4gU2V0dGluZ3MgdmFsdWVzLgorICAgIEZvbnRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCgpLmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCk7CisKICAgICBp
ZiAocGFnZSkKICAgICAgICAgcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4
IDI2Mjk1NDcwZTcxMGE1ZDkzZjU1ODlhNjdlN2ZhYzQ5ODQ1OWI4YmUuLmFhMjFjZjViNmQwNzFl
ZTRmOGFkYjExNDA5MmNhN2MyOTMwMzgzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
I2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJRdWFsaWZpZWROYW1lQ2FjaGUuaCIKICNpbmNsdWRlICJUZXh0Q29kZWNJQ1UuaCIK
QEAgLTU4LDExICs1OSwxOCBAQCBUaHJlYWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSgp
ID0gZGVmYXVsdDsKIAogdm9pZCBUaHJlYWRHbG9iYWxEYXRhOjpkZXN0cm95KCkKIHsKKyAgICBt
X2Rlc3Ryb3llZCA9IHRydWU7CisKICAgICBtX2NhY2hlZENvbnZlcnRlcklDVSA9IG51bGxwdHI7
CiAKKyAgICAvLyBUaGUgVGhyZWFkR2xvYmFsRGF0YSBkZXN0cnVjdG9yIGlzIGNhbGxlZCB1bmRl
ciB0aGUgVExTIGRlc3RydWN0aW9uCisgICAgLy8gY2FsbGJhY2ssIHdoaWNoIGlzIGxhdGVyIHRo
YW4gd2hlbiB0aGUgc3RhdGljIGF0b20gdGFibGUgaXMgZGVzdHJveWVkLgorICAgIC8vIFRvIGF2
b2lkIEF0b21TdHJpbmdzIGJlaW5nIGRlc3Ryb3llZCBhZnRlciB0aGUgdGFibGUsIHdlIGNsZWFy
IG9iamVjdHMKKyAgICAvLyB0aGF0IGhhdmUgQXRvbVN0cmluZ3MgaW4gdGhlbS4KICAgICBtX2V2
ZW50TmFtZXMgPSBudWxscHRyOwogICAgIG1fdGhyZWFkVGltZXJzID0gbnVsbHB0cjsKICAgICBt
X3F1YWxpZmllZE5hbWVDYWNoZSA9IG51bGxwdHI7CisgICAgbV9mb250Q2FjaGUgPSBudWxscHRy
OwogfQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCkBAIC0xMzksNCArMTQ3LDEwIEBAIHZvaWQgVGhy
ZWFkR2xvYmFsRGF0YTo6aW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRh
KCkKICAgICBtX01JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhID0gTUlNRVR5cGVSZWdp
c3RyeTo6Y3JlYXRlTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEoKTsKIH0KIAordm9p
ZCBUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplRm9udENhY2hlKCkKK3sKKyAgICBBU1NFUlQo
IW1fZm9udENhY2hlKTsKKyAgICBtX2ZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6Y3JlYXRlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVh
ZEdsb2JhbERhdGEuaAppbmRleCBjMDJhNWEyZjFiNTQ4MDk1NDYxOTExYTkyYTU5MzFkZjJmMDdl
ODQyLi40ZDk4YWVkMDZkYTExNDUyNDFlODQzNDYwYzQzNDE5MmI1YWJlZjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCkBAIC0zNyw2ICszNyw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZvbnRD
YWNoZTsKIGNsYXNzIFF1YWxpZmllZE5hbWVDYWNoZTsKIGNsYXNzIFRocmVhZFRpbWVyczsKIApA
QCAtNTksMjQgKzYwLDI4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENhY2hlZFJlc291cmNlUmVx
dWVzdEluaXRpYXRvcnMmIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKQogICAgIHsK
KyAgICAgICAgQVNTRVJUKCFtX2Rlc3Ryb3llZCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9j
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKSkKICAgICAgICAgICAgIGluaXRpYWxpemVD
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCk7CiAgICAgICAgIHJldHVybiAqbV9jYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzOwogICAgIH0KICAgICBFdmVudE5hbWVzJiBldmVu
dE5hbWVzKCkKICAgICB7CisgICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoIW1fZXZlbnROYW1lcykpCiAgICAgICAgICAgICBpbml0aWFsaXplRXZlbnRO
YW1lcygpOwogICAgICAgICByZXR1cm4gKm1fZXZlbnROYW1lczsKICAgICB9CiAgICAgUXVhbGlm
aWVkTmFtZUNhY2hlJiBxdWFsaWZpZWROYW1lQ2FjaGUoKQogICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2Rlc3Ryb3llZCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9xdWFsaWZpZWROYW1lQ2Fj
aGUpKQogICAgICAgICAgICAgaW5pdGlhbGl6ZVF1YWxpZmllZE5hbWVDYWNoZSgpOwogICAgICAg
ICByZXR1cm4gKm1fcXVhbGlmaWVkTmFtZUNhY2hlOwogICAgIH0KICAgICBjb25zdCBNSU1FVHlw
ZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSYgbWltZVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERh
dGEoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2Rlc3Ryb3llZCk7CiAgICAgICAgIGlmIChV
TkxJS0VMWSghbV9NSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSkpCiAgICAgICAgICAg
ICBpbml0aWFsaXplTWltZVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEoKTsKICAgICAgICAg
cmV0dXJuICptX01JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhOwpAQCAtOTUsMTEgKzEw
MCwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0luUmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBj
b25zdCB7IHJldHVybiBtX2lzSW5SZW1vdmVBbGxFdmVudExpc3RlbmVyczsgfQogICAgIHZvaWQg
c2V0SXNJblJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKGJvb2wgdmFsdWUpIHsgbV9pc0luUmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMgPSB2YWx1ZTsgfQogCisgICAgRm9udENhY2hlJiBmb250Q2FjaGUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2Rlc3Ryb3llZCk7CisgICAgICAgIGlmIChVTkxJ
S0VMWSghbV9mb250Q2FjaGUpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUZvbnRDYWNoZSgpOwor
ICAgICAgICByZXR1cm4gKm1fZm9udENhY2hlOworICAgIH0KKworICAgIEZvbnRDYWNoZSogZm9u
dENhY2hlSWZOb3REZXN0cm95ZWQoKSB7IHJldHVybiBtX2Rlc3Ryb3llZCA/IG51bGxwdHIgOiAm
Zm9udENhY2hlKCk7IH0KKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRp
YWxpemVDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbml0aWFsaXplRXZlbnROYW1lcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5pdGlhbGl6ZVF1YWxpZmllZE5hbWVDYWNoZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0aWFsaXplRm9udENhY2hlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4gbV9jYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBtX2V2ZW50TmFt
ZXM7CkBAIC0xMDgsMTIgKzEyNCwxNCBAQCBwcml2YXRlOgogICAgIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIG1fY3VycmVudFN0YXRlIHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJQ1VD
b252ZXJ0ZXJXcmFwcGVyPiBtX2NhY2hlZENvbnZlcnRlcklDVTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+IG1fTUlNRVR5cGVSZWdpc3RyeVRo
cmVhZEdsb2JhbERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYWNoZT4gbV9mb250Q2Fj
aGU7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2lzTWFpblRocmVhZDsKICNlbmRpZgog
CiAgICAgYm9vbCBtX2lzSW5SZW1vdmVBbGxFdmVudExpc3RlbmVycyB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2Rlc3Ryb3llZCB7IGZhbHNlIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBmcmllbmQg
VGhyZWFkR2xvYmFsRGF0YSYgdGhyZWFkR2xvYmFsRGF0YSgpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhk
ZmI5NjkwNzg3OTVkMzM3Yy4uNGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVlMTAzZmJhZjIxZjU3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYwLDE1
ICs2MCwxMCBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEZvbnQpOwog
CiBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0
eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudGlmaWVyKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVy
c3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgbnVs
bHB0cikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmln
aW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRp
ZmllcikpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JW
ZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJp
bGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWws
IHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YSkpOwotfQotCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBm
b250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250
U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKIHsKICAgICBi
b29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpAQCAt
NzYsMTAgKzcxLDEwIEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsCiAgICAgZGVzY3JpcHRpb24u
c2V0Q29tcHV0ZWRTaXplKGZvbnRTaXplKTsKICAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhp
cyBwYXNzIGluIGFueSBtZWFuaW5nZnVsIGRhdGEgZm9yIHRoZSBsYXN0IGZldyBhcmd1bWVudHM/
CiAgICAgYXV0byBwbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3Vz
dG9tRGF0YSgqY3VzdG9tRm9udERhdGEsIGRlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50
aGV0aWNJdGFsaWMsIHsgfSk7Ci0gICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShXVEZNb3ZlKHBsYXRm
b3JtRGF0YSksIG9yaWdpbiwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKTsKKyAgICByZXR1cm4g
Rm9udDo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1EYXRhKSwgb3JpZ2luKTsKIH0KIAotRm9udDo6
Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4s
IEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50
YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBGb250Q2Fj
aGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK0ZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJz
dGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50
YXRpb25GYWxsYmFjaywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICA6IG1fcGxhdGZvcm1EYXRhKHBsYXRm
b3JtRGF0YSkKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKQEAgLTEwMCwxMSArOTUs
OSBAQCBGb250OjpGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3Jp
Z2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludAogICAgIHBsYXRmb3JtQ2hhcldpZHRoSW5pdCgp
OwogI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKICAgICBpZiAocGxhdGZvcm1EYXRhLm9y
aWVudGF0aW9uKCkgPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbCAmJiBvcmllbnRhdGlvbkZh
bGxiYWNrID09IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vKSB7Ci0gICAgICAgIG1fdmVydGljYWxE
YXRhID0gZm9udENhY2hlRm9yVmVydGljYWxEYXRhID8gZm9udENhY2hlRm9yVmVydGljYWxEYXRh
LT52ZXJ0aWNhbERhdGEocGxhdGZvcm1EYXRhKSA6IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkudmVy
dGljYWxEYXRhKHBsYXRmb3JtRGF0YSk7CisgICAgICAgIG1fdmVydGljYWxEYXRhID0gRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkudmVydGljYWxEYXRhKHBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgIG1faGFzVmVydGljYWxHbHlwaHMgPSBtX3ZlcnRpY2FsRGF0YS5nZXQoKSAmJiBtX3ZlcnRp
Y2FsRGF0YS0+aGFzVmVydGljYWxNZXRyaWNzKCk7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZm9udENhY2hlRm9yVmVydGljYWxEYXRhKTsKICNlbmRpZgogfQogCkBAIC01OTYsMTMg
KzU4OSwxMyBAQCBzdGF0aWMgU3lzdGVtRmFsbGJhY2tDYWNoZSYgc3lzdGVtRmFsbGJhY2tDYWNo
ZSgpCiAgICAgcmV0dXJuIG1hcC5nZXQoKTsKIH0KIAotUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3Rl
bUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udERl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgSXNGb3JQbGF0Zm9ybUZvbnQgaXNGb3JQbGF0Zm9ybUZv
bnQsIEZvbnRDYWNoZSYgZm9udENhY2hlKSBjb25zdAorUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3Rl
bUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udERl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgSXNGb3JQbGF0Zm9ybUZvbnQgaXNGb3JQbGF0Zm9ybUZv
bnQpIGNvbnN0CiB7CiAgICAgYXV0byBmb250QWRkUmVzdWx0ID0gc3lzdGVtRmFsbGJhY2tDYWNo
ZSgpLmFkZCh0aGlzLCBDaGFyYWN0ZXJGYWxsYmFja01hcCgpKTsKIAogICAgIGlmICghY2hhcmFj
dGVyKSB7CiAgICAgICAgIFVDaGFyIGNvZGVVbml0ID0gMDsKLSAgICAgICAgcmV0dXJuIGZvbnRD
YWNoZS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9y
UGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgJmNvZGVVbml0
LCAxKTsKKyAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3Rl
bUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhkZXNjcmlwdGlvbiwgdGhpcywgaXNGb3JQbGF0Zm9ybUZv
bnQsIEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6Ok5vLCAmY29kZVVuaXQsIDEpOwogICAg
IH0KIAogICAgIGF1dG8ga2V5ID0gQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkgeyBkZXNjcmlwdGlv
bi5jb21wdXRlZExvY2FsZSgpLCBjaGFyYWN0ZXIsIGlzRm9yUGxhdGZvcm1Gb250ICE9IElzRm9y
UGxhdGZvcm1Gb250OjpObyB9OwpAQCAtNjE3LDcgKzYxMCw3IEBAIFJlZlB0cjxGb250PiBGb250
OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0
IEZvbnRECiAgICAgICAgICAgICBjb2RlVW5pdHNbMV0gPSBVMTZfVFJBSUwoY2hhcmFjdGVyKTsK
ICAgICAgICAgICAgIGNvZGVVbml0c0xlbmd0aCA9IDI7CiAgICAgICAgIH0KLSAgICAgICAgYXV0
byBmb250ID0gZm9udENhY2hlLnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhkZXNjcmlwdGlv
biwgdGhpcywgaXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6
Ok5vLCBjb2RlVW5pdHMsIGNvZGVVbml0c0xlbmd0aCkuZ2V0KCk7CisgICAgICAgIGF1dG8gZm9u
dCA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFj
dGVycyhkZXNjcmlwdGlvbiwgdGhpcywgaXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNoZTo6UHJl
ZmVyQ29sb3JlZEZvbnQ6Ok5vLCBjb2RlVW5pdHMsIGNvZGVVbml0c0xlbmd0aCkuZ2V0KCk7CiAg
ICAgICAgIGlmIChmb250KQogICAgICAgICAgICAgZm9udC0+bV9pc1VzZWRJblN5c3RlbUZhbGxi
YWNrQ2FjaGUgPSB0cnVlOwogICAgICAgICByZXR1cm4gZm9udDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4Mjll
MTViYmFiNmY0Li43NDQyMDA0ZjAwYjVkYmEyN2YzYzMyZTY2N2IzNmJjY2Y3ODUxNGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04MSwxMSArODEsOCBAQCBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBJbnRlcnN0aXRpYWwgOiBib29sIHsgTm8sIFllcyB9Owog
ICAgIGVudW0gY2xhc3MgVmlzaWJpbGl0eSA6IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsK
ICAgICBlbnVtIGNsYXNzIE9yaWVudGF0aW9uRmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0
aXRpYWw6Ok5vLAotICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3Jp
ZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRD
YWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRp
YWw6Ok5vLAotICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50
YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYs
IE9yaWdpbiA9IE9yaWdpbjo6TG9jYWwsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8s
IFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0g
T3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApAQCAtMTY0LDcgKzE2MSw3
IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQ29kZVBvaW50KFVDaGFyMzIpIGNvbnN0Owog
ICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyLCBzdGQ6Om9wdGlvbmFs
PFVDaGFyMzI+IHZhcmlhdGlvbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8
Rm9udD4gc3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYsIElzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGUmKSBjb25zdDsKKyAgICBS
ZWZQdHI8Rm9udD4gc3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIElzRm9yUGxhdGZvcm1Gb250KSBjb25zdDsKIAogICAgIGNvbnN0
IEdseXBoUGFnZSogZ2x5cGhQYWdlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpIGNvbnN0OwogCkBAIC0y
MDksNyArMjA2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWws
IFZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiwgRm9udENhY2hlKik7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9u
dChjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWwsIFZpc2liaWxp
dHksIE9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogICAgIHZvaWQgcGxhdGZv
cm1HbHlwaEluaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwCmluZGV4IGNmMTJjZDc4YmQyNTY1MzlhYzBkYmI0ZmExOGI1ZTFiZDVhYjIxMDIu
LjQzYWU5M2MyOTQ5NjIzMWM1NmNiZTZiMDc4YWU5YzE4NzZjODQ0MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMzUsNyArMzUsOSBA
QAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgog
I2luY2x1ZGUgIldlYktpdEZvbnRGYW1pbHlOYW1lcy5oIgorI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldFRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpA
QCAtMTQ4LDE2ICsxNTAsMTkgQEAgc3RydWN0IEZvbnRDYWNoZTo6Rm9udERhdGFDYWNoZXMgewog
I2VuZGlmCiB9OwogCi1SZWY8Rm9udENhY2hlPiBGb250Q2FjaGU6OmNyZWF0ZSgpCitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udENhY2hlPiBGb250Q2FjaGU6OmNyZWF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udENhY2hlKCkpOwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Rm9udENhY2hlPihuZXcgRm9udENhY2hlKTsKIH0K
IAotRm9udENhY2hlJiBGb250Q2FjaGU6OnNpbmdsZXRvbigpCitGb250Q2FjaGUmIEZvbnRDYWNo
ZTo6Zm9yQ3VycmVudFRocmVhZCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxGb250Q2FjaGU+IGdsb2JhbEZvbnRDYWNoZTsKLSAgICByZXR1cm4gZ2xvYmFsRm9udENh
Y2hlOworICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkuZm9udENhY2hlKCk7Cit9CisKK0Zv
bnRDYWNoZSogRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkSWZOb3REZXN0cm95ZWQoKQorewor
ICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkuZm9udENhY2hlSWZOb3REZXN0cm95ZWQoKTsK
IH0KIAogRm9udENhY2hlOjpGb250Q2FjaGUoKQpAQCAtMjgxLDcgKzI4Niw3IEBAIFJlZjxGb250
PiBGb250Q2FjaGU6OmZvbnRGb3JQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhKQogI2VuZGlmCiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udERhdGFD
YWNoZXMtPmRhdGEuZW5zdXJlKHBsYXRmb3JtRGF0YSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIEZv
bnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGEsIEZvbnQ6Ok9yaWdpbjo6TG9jYWwsIHRoaXMpOworICAg
ICAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRmb3JtRGF0YSwgRm9udDo6T3JpZ2luOjpMb2Nh
bCk7CiAgICAgfSk7CiAKICAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+cGxh
dGZvcm1EYXRhKCkgPT0gcGxhdGZvcm1EYXRhKTsKQEAgLTQ4OSw2ICs0OTQsMTQgQEAgdm9pZCBG
b250Q2FjaGU6OmludmFsaWRhdGUoKQogICAgIHB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogfQog
Cit2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMoKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBGSVhNRTogSW52YWxpZGF0ZSBGb250Q2FjaGVz
IGluIHdvcmtlcnMgdG9vLgorICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmludmFs
aWRhdGUoKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogRm9udENhY2hlOjpQcmV3YXJt
SW5mb3JtYXRpb24gRm9udENhY2hlOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggOWVj
NTRmNjNiM2FiY2U5ZDAzZWE2NjBlZmYxNWRhMzk5NjIzNTIwMi4uZDY0NDFlZmEyNmY0ZTc2MGU5
MDMwZmM4MDEyM2MzODFjZWJiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmgKQEAgLTI4MCwxNCArMjgwLDEyIEBAIHN0cnVjdCBGb250Q2FzY2Fk
ZUNhY2hlS2V5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8Rm9udENhc2NhZGVDYWNoZUtleT4gewog
CiB1c2luZyBGb250Q2FzY2FkZUNhY2hlID0gSGFzaE1hcDxGb250Q2FzY2FkZUNhY2hlS2V5LCBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udENhc2NhZGVDYWNoZUVudHJ5PiwgRm9udENhc2NhZGVDYWNoZUtl
eUhhc2gsIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzPjsKIAotY2xhc3MgRm9udENhY2hl
IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udENhY2hlPiB7Ci0gICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPEZvbnRDYWNoZSwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47Ci0KK2NsYXNzIEZv
bnRDYWNoZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udENhY2hlKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGb250Q2FjaGU+IGNyZWF0
ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGb250Q2FjaGUmIHNpbmdsZXRvbigpOwot
ICAgIHN0YXRpYyBGb250Q2FjaGUmIGZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oUmVm
UHRyPEZvbnRTZWxlY3Rvcj4pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udENhY2hl
PiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRm9udENhY2hlJiBmb3JDdXJy
ZW50VGhyZWFkKCk7CisgICAgc3RhdGljIEZvbnRDYWNoZSogZm9yQ3VycmVudFRocmVhZElmTm90
RGVzdHJveWVkKCk7CiAKICAgICB+Rm9udENhY2hlKCk7CiAKQEAgLTMyNCw2ICszMjIsNyBAQCBw
dWJsaWM6CiAKICAgICB1bnNpZ25lZCBzaG9ydCBnZW5lcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9nZW5lcmF0aW9uOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBmb250Q291bnQoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3QgaW5hY3RpdmVGb250Q291bnQoKTsKQEAgLTM1OSw3ICszNTgsNyBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1h
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24m
KTsKLSAgICB2b2lkIHByZXdhcm1HbG9iYWxseSgpOworICAgIHN0YXRpYyB2b2lkIHByZXdhcm1H
bG9iYWxseSgpOwogCiBwcml2YXRlOgogICAgIEZvbnRDYWNoZSgpOwpAQCAtNDQ1LDkgKzQ0NCw0
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24+IEZvbnRDYWNo
ZTo6UHJld2FybUluZm9ybWF0aW9uOjpkZWNvCiAgICAgcmV0dXJuIHByZXdhcm1JbmZvcm1hdGlv
bjsKIH0KIAotaW5saW5lIEZvbnRDYWNoZSYgRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFj
a1RvU2luZ2xldG9uKFJlZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxlY3RvcikKLXsKLSAgICBy
ZXR1cm4gZm9udFNlbGVjdG9yID8gZm9udFNlbGVjdG9yLT5mb250Q2FjaGUoKSA6IEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA2YzFkMzQ3M2Q1NzUxOGFiODMxODIyOGE5MDQ3
OGM3MmJlYWE0NzgwLi5hMjZhY2VjMDZmYWVmYmM5ZGFhM2Q5NzI3YWE2MGRiYjQ1OTJlMWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6aXNDdXJyZW50KGNvbnN0IEZv
bnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKSBjb25zdAogewogICAgIGlmICghbV9mb250cykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2ZvbnRzLT5nZW5lcmF0aW9uKCkgIT0gZm9u
dFNlbGVjdG9yLmZvbnRDYWNoZSgpLmdlbmVyYXRpb24oKSkKKyAgICBpZiAobV9mb250cy0+Z2Vu
ZXJhdGlvbigpICE9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmdlbmVyYXRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChtX2ZvbnRzLT5mb250U2VsZWN0b3JWZXJz
aW9uKCkgIT0gZm9udFNlbGVjdG9yLnZlcnNpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZUZvbnRzKFJlZjxGb250
Q2FzY2FkZUZvbnRzPiYmIGZvbnRzKSBjb25zdAogCiB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUo
UmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpIGNvbnN0CiB7Ci0gICAgRm9udENh
Y2hlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKGZvbnRTZWxlY3RvcikudXBkYXRl
Rm9udENhc2NhZGUoKnRoaXMsIFdURk1vdmUoZm9udFNlbGVjdG9yKSk7CisgICAgRm9udENhY2hl
Ojpmb3JDdXJyZW50VGhyZWFkKCkudXBkYXRlRm9udENhc2NhZGUoKnRoaXMsIFdURk1vdmUoZm9u
dFNlbGVjdG9yKSk7CiB9CiAKIEdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENv
ZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Rm9udHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVG
b250cy5jcHAKaW5kZXggYTI0MmQzNjVmODlkYmE5YzdkYWQ4MGY2OTg3Y2I0NWRmY2Y0YWRlOC4u
ZDM2MmZmZTJkZjdjNWVlM2JlMzMwYWM2OGZlYzRkYjkyNTk2Y2VmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBGb250Q2FzY2FkZUZvbnRzOjpGb250Q2FzY2FkZUZvbnRzKFJlZlB0
cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9yKQogICAgIDogbV9jYWNoZWRQcmltYXJ5Rm9u
dChudWxscHRyKQogICAgICwgbV9mb250U2VsZWN0b3IoZm9udFNlbGVjdG9yKQogICAgICwgbV9m
b250U2VsZWN0b3JWZXJzaW9uKG1fZm9udFNlbGVjdG9yID8gbV9mb250U2VsZWN0b3ItPnZlcnNp
b24oKSA6IDApCi0gICAgLCBtX2dlbmVyYXRpb24oRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5n
QmFja1RvU2luZ2xldG9uKG1fZm9udFNlbGVjdG9yKS5nZW5lcmF0aW9uKCkpCisgICAgLCBtX2dl
bmVyYXRpb24oRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZ2VuZXJhdGlvbigpKQogewog
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKQEAgLTExMywxMCAr
MTEzLDEwIEBAIEZvbnRDYXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMoUmVmUHRyPEZvbnRT
ZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiBGb250Q2FzY2FkZUZvbnRzOjpGb250Q2FzY2FkZUZv
bnRzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKICAgICA6IG1fY2FjaGVk
UHJpbWFyeUZvbnQobnVsbHB0cikKICAgICAsIG1fZm9udFNlbGVjdG9yVmVyc2lvbigwKQotICAg
ICwgbV9nZW5lcmF0aW9uKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2VuZXJhdGlvbigpKQorICAg
ICwgbV9nZW5lcmF0aW9uKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmdlbmVyYXRpb24o
KSkKICAgICAsIG1faXNGb3JQbGF0Zm9ybUZvbnQodHJ1ZSkKIHsKLSAgICBtX3JlYWxpemVkRmFs
bGJhY2tSYW5nZXMuYXBwZW5kKEZvbnRSYW5nZXMoRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250
Rm9yUGxhdGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkpKTsKKyAgICBtX3JlYWxpemVkRmFsbGJhY2tS
YW5nZXMuYXBwZW5kKEZvbnRSYW5nZXMoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9u
dEZvclBsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpKSk7CiB9CiAKIEZvbnRDYXNjYWRlRm9udHM6
On5Gb250Q2FzY2FkZUZvbnRzKCkgPSBkZWZhdWx0OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRp
YyBGb250UmFuZ2VzIHJlYWxpemVOZXh0RmFsbGJhY2soY29uc3QgRm9udENhc2NhZGVEZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgZGVzY3JpcHRpb24uZWZm
ZWN0aXZlRmFtaWx5Q291bnQoKSk7CiAKLSAgICBhdXRvJiBmb250Q2FjaGUgPSBGb250Q2FjaGU6
OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oZm9udFNlbGVjdG9yKTsKKyAgICBhdXRv
JiBmb250Q2FjaGUgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKTsKICAgICB3aGlsZSAo
aW5kZXggPCBkZXNjcmlwdGlvbi5lZmZlY3RpdmVGYW1pbHlDb3VudCgpKSB7CiAgICAgICAgIGF1
dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEF0b21TdHJpbmcmIGZhbWls
eSkgLT4gRm9udFJhbmdlcyB7CiAgICAgICAgICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKQEAg
LTE4MSw3ICsxODEsNyBAQCBjb25zdCBGb250UmFuZ2VzJiBGb250Q2FzY2FkZUZvbnRzOjpyZWFs
aXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250Q2FzY2FkZURlcwogICAgICAgICByZXR1cm4g
bV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzW2luZGV4XTsKIAogICAgIEFTU0VSVChpbmRleCA9PSBt
X3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuc2l6ZSgpKTsKLSAgICBBU1NFUlQoRm9udENhY2hlOjpm
b250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKG1fZm9udFNlbGVjdG9yKS5nZW5lcmF0aW9u
KCkgPT0gbV9nZW5lcmF0aW9uKTsKKyAgICBBU1NFUlQoRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkKCkuZ2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbik7CiAKICAgICBtX3JlYWxpemVkRmFs
bGJhY2tSYW5nZXMuYXBwZW5kKEZvbnRSYW5nZXMoKSk7CiAgICAgYXV0byYgZm9udFJhbmdlcyA9
IG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5sYXN0KCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgY29u
c3QgRm9udFJhbmdlcyYgRm9udENhc2NhZGVGb250czo6cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQo
Y29uc3QgRm9udENhc2NhZGVEZXMKICAgICAgICAgaWYgKGZvbnRSYW5nZXMuaXNOdWxsKCkgJiYg
bV9mb250U2VsZWN0b3IpCiAgICAgICAgICAgICBmb250UmFuZ2VzID0gbV9mb250U2VsZWN0b3It
PmZvbnRSYW5nZXNGb3JGYW1pbHkoZGVzY3JpcHRpb24sIGZhbWlseU5hbWVzRGF0YS0+YXQoRmFt
aWx5TmFtZXNJbmRleDo6U3RhbmRhcmRGYW1pbHkpKTsKICAgICAgICAgaWYgKGZvbnRSYW5nZXMu
aXNOdWxsKCkpCi0gICAgICAgICAgICBmb250UmFuZ2VzID0gRm9udFJhbmdlcyhGb250Q2FjaGU6
OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24obV9mb250U2VsZWN0b3IpLmxhc3RSZXNv
cnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBG
b250UmFuZ2VzKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmxhc3RSZXNvcnRGYWxsYmFj
a0ZvbnQoZGVzY3JpcHRpb24pKTsKICAgICAgICAgcmV0dXJuIGZvbnRSYW5nZXM7CiAgICAgfQog
CkBAIC0zNTEsNyArMzUxLDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0
YUZvclN5c3RlbUZhbGxiYWNrKFVDaGFyMzIgY2hhcmFjdGVyLCBjb25zdAogICAgIGlmICghZm9u
dCkKICAgICAgICAgZm9udCA9ICZyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChkZXNjcmlwdGlvbiwg
MCkuZm9udEZvckZpcnN0UmFuZ2UoKTsKIAotICAgIGF1dG8gc3lzdGVtRmFsbGJhY2tGb250ID0g
Zm9udC0+c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZGVzY3JpcHRp
b24sIG1faXNGb3JQbGF0Zm9ybUZvbnQgPyBJc0ZvclBsYXRmb3JtRm9udDo6WWVzIDogSXNGb3JQ
bGF0Zm9ybUZvbnQ6Ok5vLCBGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0
b24obV9mb250U2VsZWN0b3IpKTsKKyAgICBhdXRvIHN5c3RlbUZhbGxiYWNrRm9udCA9IGZvbnQt
PnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGRlc2NyaXB0aW9uLCBt
X2lzRm9yUGxhdGZvcm1Gb250ID8gSXNGb3JQbGF0Zm9ybUZvbnQ6OlllcyA6IElzRm9yUGxhdGZv
cm1Gb250OjpObyk7CiAgICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnQpCiAgICAgICAgIHJldHVy
biBHbHlwaERhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250U2VsZWN0b3IuaAppbmRleCA2NTQ4ZTc2Zjk5NjFmZjdlMWE1ODlmNWNiYjFjMDU3MmViYmFk
ODhjLi5hOWMyMzc2NjZjMWIzYzZkZjI4NjUxMTI4ZmNjNzk5ZjQ3MTZhZWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaApAQCAtNTUsNyAr
NTUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFy
dEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3Qg
QXRvbVN0cmluZyYgZmFtaWx5KSA9IDA7CiAKLSAgICB2aXJ0dWFsIEZvbnRDYWNoZSYgZm9udENh
Y2hlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmb250Q2FjaGVJbnZhbGlkYXRlZCgp
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tz
KEZvbnRTZWxlY3RvckNsaWVudCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKaW5k
ZXggYzcxN2UzYjZjNDAwM2MyNTI1ZTYwMzQ4OTc3MWJkNWQ0YWJiNWQxYS4uODMxNWMyMTNhMmUz
NjVjZGExOTE2Zjk3NTI4ZTg4OWI1ODZiODM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZvckNv
bWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBvcmlnaW5hbAogICAgICAgICAg
ICAgcmV0dXJuIGZhbGxiYWNrRm9udDsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzeXN0ZW1GYWxs
YmFjayA9IEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihmb250U2Vs
ZWN0b3IoKSkuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKG1fZm9udERlc2NyaXB0aW9uLCBi
YXNlRm9udCwgSXNGb3JQbGF0Zm9ybUZvbnQ6Ok5vLCBwcmVmZXJDb2xvcmVkRm9udCA/IEZvbnRD
YWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6OlllcyA6IEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZv
bnQ6Ok5vLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgaWYgKGF1dG8gc3lzdGVtRmFsbGJh
Y2sgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJh
Y3RlcnMobV9mb250RGVzY3JpcHRpb24sIGJhc2VGb250LCBJc0ZvclBsYXRmb3JtRm9udDo6Tm8s
IHByZWZlckNvbG9yZWRGb250ID8gRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6WWVzIDog
Rm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sIGNoYXJhY3RlcnMsIGxlbmd0aCkpIHsK
ICAgICAgICAgaWYgKHN5c3RlbUZhbGxiYWNrLT5jYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJT
ZXF1ZW5jZShjaGFyYWN0ZXJzLCBsZW5ndGgpICYmICghcHJlZmVyQ29sb3JlZEZvbnQgfHwgc3lz
dGVtRmFsbGJhY2stPnBsYXRmb3JtRGF0YSgpLmlzQ29sb3JCaXRtYXBGb250KCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHN5c3RlbUZhbGxiYWNrLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAKaW5kZXggMTcyNzRiZmMzNDlkNDM5ZGIzMjY3N2YxYWVlYTZmMjVhNWJhNzYzYS4uY2FkZWFl
YTZmMjkxZDYzZjZmZGU5MjZlNzA2M2Y4ZDgxYmE0NDlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcApAQCAtNzU3LDcgKzc1Nyw3IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUo
KTsKIAogc3RhdGljIHZvaWQgZm9udENhY2hlUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNh
dGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZT
dHJpbmdSZWYsIGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewotICAgIEFTU0VSVF9V
TlVTRUQob2JzZXJ2ZXIsIG9ic2VydmVyID09ICZGb250Q2FjaGU6OnNpbmdsZXRvbigpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKG9ic2VydmVyLCBpc01haW5UaHJlYWQoKSAmJiBvYnNlcnZlciA9PSAm
Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkpOwogCiAgICAgaW52YWxpZGF0ZUZvbnRDYWNo
ZSgpOwogfQpAQCAtMTI0OSwxMyArMTI0OSwxNiBAQCBzdGF0aWMgRm9udExvb2t1cCBwbGF0Zm9y
bUZvbnRMb29rdXBXaXRoRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgRm9udFNlbAog
c3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpCiB7CiAgICAgZW5zdXJlT25NYWluVGhy
ZWFkKFtdIHsKKyAgICAgICAgLy8gRklYTUU6IFdvcmtlcnMgbmVlZCB0byBhY2Nlc3MgU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQuCiAgICAgICAgIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzaW5nbGV0b24oKS5jbGVhcigpOworICAgICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRv
IGFjY2VzcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuCiAgICAgICAgIGNs
ZWFyRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCk7CiAKKyAgICAgICAgLy8g
RklYTUU6IFdvcmtlcnMgbmVlZCB0byBhY2Nlc3MgRm9udERhdGFiYXNlLgogICAgICAgICBGb250
RGF0YWJhc2U6OnNpbmdsZXRvbkFsbG93aW5nVXNlckluc3RhbGxlZEZvbnRzKCkuY2xlYXIoKTsK
ICAgICAgICAgRm9udERhdGFiYXNlOjpzaW5nbGV0b25EaXNhbGxvd2luZ1VzZXJJbnN0YWxsZWRG
b250cygpLmNsZWFyKCk7CiAKLSAgICAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbnZhbGlk
YXRlKCk7CisgICAgICAgIEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMoKTsKICAg
ICB9KTsKIH0KIApAQCAtMTI4Nyw3ICsxMjkwLDcgQEAgc3RhdGljIFJldGFpblB0cjxDVEZvbnRS
ZWY+IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LAog
CiAgICAgaWYgKGZhbWlseS5zdGFydHNXaXRoKCJVSUNURm9udFRleHRTdHlsZSIpKSB7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIHJlcXVlc3QgPSBmb250RGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJl
cXVlc3QoKTsKLSAgICAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKGlzRm9udFdl
aWdodEJvbGQocmVxdWVzdC53ZWlnaHQpIHx8IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxk
TW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpID8ga0NURm9udFRyYWl0Qm9sZCA6
IDApIHwgKGlzSXRhbGljKHJlcXVlc3Quc2xvcGUpID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7
CisgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IChpc0ZvbnRXZWlnaHRCb2xk
KHJlcXVlc3Qud2VpZ2h0KSB8fCBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zaG91bGRN
b2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgPyBrQ1RGb250VHJhaXRCb2xkIDog
MCkgfCAoaXNJdGFsaWMocmVxdWVzdC5zbG9wZSkgPyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsK
ICAgICAgICAgYXV0byBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aFRleHRTdHlsZShmYW1pbHkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgUmVu
ZGVyVGhlbWVDb2NvYTo6c2luZ2xldG9uKCkuY29udGVudFNpemVDYXRlZ29yeSgpLCBmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRMb2NhbGUoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAgICAgICAgIGlmICh0cmFpdHMpCiAgICAgICAgICAgICBkZXNjcmlwdG9yID0gYWRvcHRD
RihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0cyhkZXNjcmlwdG9y
LmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwpAQCAtMTY5Niw3ICsxNjk5LDcgQEAgdm9pZCBGb250
Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpCiAKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1h
dGlvbiBwcmV3YXJtSW5mbzsKICAgICBwcmV3YXJtSW5mby5zZWVuRmFtaWxpZXMgPSBXVEZNb3Zl
KGZhbWlsaWVzKTsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnByZXdhcm0ocHJld2FybUlu
Zm8pOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0ocHJld2FybUlu
Zm8pOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25D
b3JlVGV4dC5jcHAKaW5kZXggYWRiY2MyNDQ4ZjFlZTllNTgyODRmMzJkYTM3NjNmNjMwOWVjNzc5
NS4uM2I0ZGE0ZjUyN2JjODRlNWE0NzE2OGE5OTQ2ZTdmYjY4Nzc0ZTdlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5n
ZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogCiAgICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURh
dGEpOwogCi0gICAgcmV0dXJuIEZvbnRSYW5nZXMoRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250
Rm9yUGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRhKSk7CisgICAgcmV0dXJuIEZvbnRSYW5n
ZXMoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvclBsYXRmb3JtRGF0YSgqZm9u
dFBsYXRmb3JtRGF0YSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5jcHAKaW5kZXggZjNlNmZiYzg4MmEwYzJkNTE1YjhlOGY2MWY2OWMxZDJlM2JlMjM5Ny4u
NTc2MmUwODkzZDk5M2I0MzliOTA1ODkyYjE2MjU2NzYwOWI1YmQ1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQ6OnN5CiAgICAgcmVzdWx0LmFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gYWxs
b3dVc2VySW5zdGFsbGVkRm9udHM7CiAKICAgICBhdXRvIHdlaWdodCA9IGRlc2NyaXB0aW9uLndl
aWdodCgpOwotICAgIGlmIChGb250Q2FjaGU6OnNpbmdsZXRvbigpLnNob3VsZE1vY2tCb2xkU3lz
dGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSkKKyAgICBpZiAoRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpKQogICAg
ICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUoMjAwKTsKIAogICAgIHJl
c3VsdC53ZWlnaHQgPSBtYXBXZWlnaHQod2VpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQppbmRleCAzMzJkMWVmMjZhOWViOGMzYWFjNDllMjFhMWI5OTBiZWIy
ZGRjNGRjLi45NzY4MTMyZDcwYzhhOTM5MDdkMDk5ZmJhYmUyNmY0MGZiMWU1ZGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yNDIsNyArMjQyLDcgQEAg
dm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFy
YWN0ZXJzKGNvbnN0IFVDaGFyKiBjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEZvbnRQbGF0Zm9y
bURhdGEgcnVuRm9udFBsYXRmb3JtRGF0YShydW5DVEZvbnQsIENURm9udEdldFNpemUocnVuQ1RG
b250KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJ1bkZvbnQgPSBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLmZvbnRGb3JQbGF0Zm9ybURhdGEocnVuRm9udFBsYXRmb3JtRGF0YSkucHRyKCk7CisgICAg
ICAgICAgICAgICAgICAgIHJ1bkZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5m
b250Rm9yUGxhdGZvcm1EYXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLnB0cigpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobV9mYWxsYmFja0ZvbnRzICYmIHJ1bkZvbnQg
IT0gJm1fZm9udC5wcmltYXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICBtX2ZhbGxiYWNr
Rm9udHMtPmFkZChydW5Gb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggY2I0Y2RjMDU5YTc3YWNiZWRiZmJj
MWUxMmIwMDUwZTZlODE1MmFiNC4uOTExZGQ1Y2EwMDczMjhjZDU5ZmQ5ZjAxMTY4MDg5M2RhNzg0
ODQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9y
PFN0cmluZz4qIGdldExpbmtlZEZvbnRzKFN0cmluZyYgZmFtaWx5KQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFnZU1h
c2tzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFnZU1hc2tz
KEZvbnRDYWNoZSYgZm9udENhY2hlKQogewogICAgIC8vIFRoZSBkZWZhdWx0IG9yZGVyIGluIHdo
aWNoIHdlIGxvb2sgZm9yIGEgZm9udCBmb3IgYSBDSksgY2hhcmFjdGVyLiBJZiB0aGUgdXNlcidz
IGRlZmF1bHQgY29kZSBwYWdlIGlzCiAgICAgLy8gb25lIG9mIHRoZXNlLCB3ZSB3aWxsIHVzZSBp
dCBmaXJzdC4KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPERXT1JELCA0
PiYgZ2V0Q0pLQ29kZVBhZ2VNYXNrcygpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAg
ICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAg
ICAgIElNTGFuZ0ZvbnRMaW5rVHlwZSogbGFuZ0ZvbnRMaW5rID0gRm9udENhY2hlOjpzaW5nbGV0
b24oKS5nZXRGb250TGlua0ludGVyZmFjZSgpOworICAgICAgICBJTUxhbmdGb250TGlua1R5cGUq
IGxhbmdGb250TGluayA9IGZvbnRDYWNoZS5nZXRGb250TGlua0ludGVyZmFjZSgpOwogICAgICAg
ICBpZiAoIWxhbmdGb250TGluaykKICAgICAgICAgICAgIHJldHVybiBjb2RlUGFnZU1hc2tzOwog
CkBAIC0yNTcsNyArMjU3LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJh
Y2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3IKICAgICAgICAgICAg
ICAgICAvLyBUaGUgQ0pLIGNoYXJhY3RlciBtYXkgYmVsb25nIHRvIG11bHRpcGxlIGNvZGUgcGFn
ZXMuIFdlIHdhbnQgdG8KICAgICAgICAgICAgICAgICAvLyBkbyBmb250IGxpbmtpbmcgYWdhaW5z
dCBhIHNpbmdsZSBvbmUgb2YgdGhlbSwgcHJlZmVycmluZyB0aGUgZGVmYXVsdAogICAgICAgICAg
ICAgICAgIC8vIGNvZGUgcGFnZSBmb3IgdGhlIHVzZXIncyBsb2NhbGUuCi0gICAgICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPERXT1JELCA0PiYgQ0pLQ29kZVBhZ2VNYXNrcyA9IGdldENKS0NvZGVQ
YWdlTWFza3MoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBDSktD
b2RlUGFnZU1hc2tzID0gZ2V0Q0pLQ29kZVBhZ2VNYXNrcygqdGhpcyk7CiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtQ29kZVBhZ2VzID0gQ0pLQ29kZVBhZ2VNYXNrcy5zaXplKCk7CiAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNvZGVQYWdlcyAmJiAhaGZv
bnQ7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBoZm9udCA9IGNyZWF0ZU1MYW5nRm9udChs
YW5nRm9udExpbmssIGhkYywgQ0pLQ29kZVBhZ2VNYXNrc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCAxZmMwOWYzMmU3ZTEyYTAzNjJlOTM0
NDI4ODE3YWFmMGY4NmE4Y2MzLi5lMjljNWNhZjQ3OTJkM2Y4OTIyMzMyMmFiOGM2YThkMjAwNGRj
MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAg
LTEzMSw3ICsxMzEsOCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRv
KFNldHRpbmdzJiBzZXR0aW5ncykKICNlbmRpZgogCiAgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRv
bigpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkobV9zaG91bGRN
b2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KTsKLSAgICBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkobV9zaG91
bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KTsKKyAgICAvLyBGSVhNRTogQ2Fs
bCBzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgb24gYWxsIHdv
cmtlcnMuCisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hvdWxkTW9ja0Jv
bGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZv
ckFjY2Vzc2liaWxpdHkpOwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBBdWRpb0NvbnRl
eHQ6OnNldERlZmF1bHRTYW1wbGVSYXRlRm9yVGVzdGluZyhzdGQ6Om51bGxvcHQpOwpAQCAtNTcw
LDcgKzU3MSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsU2V0dGluZ3M6OnNldFNob3Vs
ZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAgICBSZW5k
ZXJUaGVtZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNz
aWJpbGl0eShyZXF1aXJlcyk7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5zZXRTaG91bGRN
b2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHJlcXVpcmVzKTsKKyAgICAvLyBGSVhN
RTogQ2FsbCBzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgb24g
YWxsIHdvcmtlcnMuCisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hvdWxk
TW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShyZXF1aXJlcyk7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQyZTljMGQ2
ODU4ZWM5MWMzMTljYjIzMzRjZTBiMjIxNTMzMWZhNmMuLjhlOTk3YzQ1Yjg0ZmYwMTU5MGUyZjJl
N2I5ZmIyZTI0MWU5YzMzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTE4NTIsNyArMTg1Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TWFya2Vk
VGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sIGZsYWcpCiAKIHZvaWQgSW50ZXJuYWxzOjpp
bnZhbGlkYXRlRm9udENhY2hlKCkKIHsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFs
aWRhdGUoKTsKKyAgICBGb250Q2FjaGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVzKCk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjpzZXRGb250U21vb3RoaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5k
ZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uNDMzZDllMWE0NWMy
OTg4NTQyYjA1ZTc0YjQ3MTdhNzcwNTcyOGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8
Rm9udD4gV29ya2VyRm9udExvYWRSZXF1ZXN0OjpjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaQogewogICAgIEFTU0VSVChtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OwogICAgIEFTU0VSVChtX2NvbnRleHQpOwotICAgIHJldHVybiBGb250OjpjcmVhdGUobV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhLT5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgc3lu
dGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250Q3JlYXRpb25Db250ZXh0KSwgRm9udDo6
T3JpZ2luOjpSZW1vdGUsICZtX2NvbnRleHQtPmZvbnRDYWNoZSgpKTsKKyAgICByZXR1cm4gRm9u
dDo6Y3JlYXRlKG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS0+Zm9udFBsYXRmb3JtRGF0YShmb250
RGVzY3JpcHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udENyZWF0aW9u
Q29udGV4dCksIEZvbnQ6Ok9yaWdpbjo6UmVtb3RlKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OnNldENsaWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqIGNsaWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMTg3NmQxNTc3
MDhlNzExNGJlOGM3YWE0YjIxMjJhM2I0ODM1ZmFhMC4uODM1NWY1NmEwZGYwZjczN2EzN2JjOWRl
MzdiMWYwMWViMjNjNjE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyeXB0by5oIgotI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGb250RmFjZVNldC5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Qcm94eS5o
IgpAQCAtNjgsNiArNjcsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxT
dGFjay5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVh
ZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzMCwxMyAr
NTMwLDYgQEAgQ1NTRm9udFNlbGVjdG9yKiBXb3JrZXJHbG9iYWxTY29wZTo6Y3NzRm9udFNlbGVj
dG9yKCkKICAgICByZXR1cm4gbV9jc3NGb250U2VsZWN0b3IuZ2V0KCk7CiB9CiAKLUZvbnRDYWNo
ZSYgV29ya2VyR2xvYmFsU2NvcGU6OmZvbnRDYWNoZSgpCi17Ci0gICAgaWYgKCFtX2ZvbnRDYWNo
ZSkKLSAgICAgICAgbV9mb250Q2FjaGUgPSBGb250Q2FjaGU6OmNyZWF0ZSgpOwotICAgIHJldHVy
biAqbV9mb250Q2FjaGU7Ci19Ci0KIFJlZjxGb250RmFjZVNldD4gV29ya2VyR2xvYmFsU2NvcGU6
OmZvbnRzKCkKIHsKICAgICBBU1NFUlQoY3NzRm9udFNlbGVjdG9yKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGU2ZjRlMTIyY2I5ZmU4YTg2OTVl
NDMyNjJkMzNhYzgzMmIxZTQ4MTQuLjJmZTRmNzMyYjVlY2EyNWI5YTM3NmI4NjgwYWI4ZjMwZGQ3
OGVmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAg
LTEzOSw3ICsxMzksNiBAQCBwdWJsaWM6CiAKICAgICBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9v
bCgpIGZpbmFsOwogICAgIENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgZmluYWw7
Ci0gICAgRm9udENhY2hlJiBmb250Q2FjaGUoKSBmaW5hbDsKICAgICBSZWY8Rm9udEZhY2VTZXQ+
IGZvbnRzKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRS
ZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJ
blVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFsOwogICAg
IHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7CkBAIC0y
MjEsNyArMjIwLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NW
YWx1ZVBvb2w+IG1fY3NzVmFsdWVQb29sOwogICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1f
Y3NzRm9udFNlbGVjdG9yOwotICAgIFJlZlB0cjxGb250Q2FjaGU+IG1fZm9udENhY2hlOwogICAg
IFJlZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQb2xpY3k7CiAgICAgU2V0dGluZ3M6OlZhbHVlcyBt
X3NldHRpbmdzVmFsdWVzOwogICAgIFdvcmtlclR5cGUgbV93b3JrZXJUeXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGY2ZTg3NjI0NmJmZGQ2YWFkMDA3OWQw
ZWVjYTNiZjczZGJlNzBmYmUuLjkzMWIyODMzZTQ3ZmE2NGUyMDZjNjI0ZjdmODE0OTg0YTM2NzI4
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg2OSw3ICs4
NjksOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiB7CiAjaWZuZGVmIE5ERUJVRwog
ICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKLSAgICBG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGUoKTsKKyAgICAvLyBGSVhNRTogV2hhdCBh
Ym91dCBGb250Q2FjaGVzIG9uIHdvcmtlciB0aHJlYWRzPworICAgIEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpLmludmFsaWRhdGUoKTsKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCku
c2V0RGlzYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggOTI4YWU3ZDUxZTNmMGI3ZDkxMDIw
YzdkYTI4OGVkZTI0NWMzODU5NS4uNDFhZDFiMDk4Nzg5ZGVjZGRhMDQ1YzM4NTYxNzQ0YzlmMGQw
YTkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3Rh
dGlzdGljcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLm1tCkBAIC0xNDAsMTcgKzE0MCwxNyBAQCArIChzaXplX3QpaWNvbnNXaXRoRGF0YUNv
dW50CiAKICsgKHNpemVfdCljYWNoZWRGb250RGF0YUNvdW50CiB7Ci0gICAgcmV0dXJuIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuZm9udENvdW50KCk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpLmZvbnRDb3VudCgpOwogfQogCiArIChzaXplX3QpY2FjaGVkRm9udERh
dGFJbmFjdGl2ZUNvdW50CiB7Ci0gICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW5h
Y3RpdmVGb250Q291bnQoKTsKKyAgICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFk
KCkuaW5hY3RpdmVGb250Q291bnQoKTsKIH0KIAogKyAodm9pZClwdXJnZUluYWN0aXZlRm9udERh
dGEKIHsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgp
OworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnB1cmdlSW5hY3RpdmVGb250RGF0
YSgpOwogfQogCiArIChzaXplX3QpZ2x5cGhQYWdlQ291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCA5Yzk2YTY3ZTlkMGMxZjkwNDQyZjBi
NDBjNDQ4MjZiNWM1NmI1YTMzLi4zNTY5ODNjNTJiMzc0OGE0Y2RiY2E1YWQ5MWY5NTM1MTJhODg5
YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGlj
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3Bw
CkBAIC0yMTAsNyArMjEwLDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9u
dERhdGFDb3VudChfT3V0XyBVSU5UICpjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmZvbnRDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQoKS5mb250Q291bnQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjE4
LDEzICsyMTgsMTMgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFJ
bmFjdGl2ZUNvdW50KF9PdXRfIFVJTlQgKmNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkuaW5hY3RpdmVGb250Q291bnQoKTsKKyAgICAqY291bnQgPSAoVUlOVCkgRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuaW5hY3RpdmVGb250Q291bnQoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAogSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJbmFjdGl2ZUZvbnRE
YXRhKHZvaWQpCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9u
dERhdGEoKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wdXJnZUluYWN0aXZl
Rm9udERhdGEoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446095</attachid>
            <date>2021-12-06 16:37:22 -0800</date>
            <delta_ts>2021-12-07 13:51:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233747-20211207113720.patch</filename>
            <type>text/plain</type>
            <size>63200</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYzNDUxZjJlZjJkZDli
MTMyMjViMDM3NWViZjg4NzAzZTk4OTdjYi4uZTM3ZTNjNzIyN2JhYjZlNDA4ZjY4N2VlMzJiZTU1
NTc0MmYzODNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OSBAQAorMjAyMS0xMi0wMSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENh
Y2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFk
R2xvYmFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
VGhlcmUgYXJlIHZhcmlvdXMgcGxhY2VzIGluIGZvbnQgY29kZSB3aGVyZSB3ZSBuZWVkIGFjY2Vz
cyB0byBhCisgICAgICAgIEZvbnRDYWNoZSBpbnN0YW5jZS4gQ3VycmVudGx5IHdlOgorCisgICAg
ICAgIC0gYXNzdW1lIHRoYXQgd2UncmUgb24gdGhlIG1haW4gdGhyZWFkIGFuZCBjYWxsCisgICAg
ICAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKSwgb3IKKyAgICAgICAgLSBnZXQgYSBGb250Q2Fj
aGUgb2ZmIFdvcmtlckdsb2JhbFNjb3BlIGFuZCBwYXNzIGl0IGRvd24gKG9yIHN0b3JlIGl0KQor
ICAgICAgICAgIHdoZXJlIGl0J3MgbmVlZGVkLCB0aGVuIHBhc3MgaXQgdG8gZm9udENhY2hlRmFs
bGluZ0JhY2tUb1NpbmdsZXRvbi4KKworICAgICAgICBIYXZpbmcgdG8gdGhyZWFkIHRocm91Z2gs
IG9yIHN0b3JlLCB0aGUgRm9udENhY2hlIHBvaW50ZXIgaXMKKyAgICAgICAgaW5jb252ZW5pZW50
LCBhbmQgdGhlcmUgYXJlIHNvbWUgcGxhY2VzIHdoZXJlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRv
CisgICAgICAgIGEgRm9udENhY2hlIHBvaW50ZXIsIGJ1dCB3ZSdyZSBvbiBhIHdvcmtlciwgYW5k
IHdlIGNhbGwKKyAgICAgICAgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbiBhbmQgd3Jv
bmdseSBnZXQgYmFjayB0aGUgbWFpbiB0aHJlYWQncworICAgICAgICBpbnN0YW5jZS4KKworICAg
ICAgICBJIHRoaW5rIGl0IHdvdWxkIGJlIGNsZWFuZXIgaWYgd2UgbW92ZWQgYm90aCB0aGUgbWFp
biB0aHJlYWQgRm9udENhY2hlCisgICAgICAgIHNpbmdsZXRvbiwgYW5kIHRoZSBvbmUgc3RvcmVk
IG9uIGEgV29ya2VyR2xvYmFsU2NvcGUsIHRvCisgICAgICAgIFRocmVhZEdsb2JhbERhdGEsIHdo
aWNoIGlzIGVhc2lseSBnbG9iYWxseSBhY2Nlc3NpYmxlLiBQZXJmb3JtaW5nIGEKKyAgICAgICAg
VExTIGxvb2t1cCBpcyBjaGVhcCB0aGVzZSBkYXlzLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlOjpmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpmb250
Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKToKKyAgICAgICAgUmVtb3ZlIGZvbnRDYWNoZUZh
bGxpbmdCYWNrVG9TaW5nbGV0b24gYW5kIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aAorICAgICAg
ICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZh
Y2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2Fs
Rm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZCk6CisgICAgICAgIFJlcGxhY2UgZ2V0dGluZyB0
aGUgRm9udENhY2hlIGZyb20gdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgd2l0aCBhCisgICAg
ICAgIGNhbGwgdG8gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2hhbmdlczo6cGxhdGZvcm1Gb250RmFtaWx5TmFtZUZvckNT
UyBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkU3lz
dGVtRm9udEZhbWlseU5hbWVzKToKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KToKKyAgICAgICAgKiBw
YWdlL1Byb2Nlc3NXYXJtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5n
OjpwcmV3YXJtR2xvYmFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OmNv
bGxlY3RQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1p
bmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlDaGFu
Z2UpOgorICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIEZvbnRDYWNoZTo6c2luZ2xldG9uIHdpdGgg
Y2FsbHMgdG8KKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAg
ICAgICAgUmVtb3ZlIENTU0ZvbnRTZWxlY3Rvcjo6bV9mb250Q2FjaGUgYW5kIHVzZQorICAgICAg
ICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQgaW5zdGVhZC4gRm9yIHRoZSBDU1NGb250U2Vs
ZWN0b3IKKyAgICAgICAgZGVzdHJ1Y3Rvciwgd2UgY2FsbCBmb3JDdXJyZW50VGhyZWFkSWZOb3RE
ZXN0cm95ZWQgc2luY2UgaXQKKyAgICAgICAgY2FuIHJ1biBhZnRlciBUaHJlYWRHbG9iYWxEYXRh
OjpkZXN0cm95IGhhcyBiZWVuIGNhbGxlZCBmb3IKKyAgICAgICAgYSB3b3JrZXIsIGFuZCB3ZSBk
b24ndCB3YW50IHRvIGNhdXNlIGEgZnJlc2ggRm9udENhY2hlIG9iamVjdCB0byBiZQorICAgICAg
ICBjcmVhdGVkIGF0IHRoaXMgcG9pbnQuCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSk6CisgICAg
ICAgIFJlbW92ZSB0aGUgRm9udENhY2hlIG1lbWJlci4KKworICAgICAgICAqIHBsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRo
cmVhZEdsb2JhbERhdGE6OmNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YTo6ZXZlbnROYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRh
OjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0
YTo6VGhyZWFkR2xvYmFsRGF0YTo6bWltZVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YTo6Zm9u
dENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2Jh
bERhdGE6OmZvbnRDYWNoZUlmTm90RGVzdHJveWVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OmRl
c3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6aW5pdGlhbGl6ZUZv
bnRDYWNoZSk6CisgICAgICAgIEFkZCBhY2Nlc3NvcnMgZm9yIGEgbGF6aWx5IGNyZWF0ZWQgRm9u
dENhY2hlLiBBbHNvIHJlY29yZCB3aGV0aGVyCisgICAgICAgIGRlc3Ryb3kgaGFzIGJlZW4gY2Fs
bGVkIG9uIHRoZSBUaHJlYWRHbG9iYWxEYXRhIHNvIHRoYXQKKyAgICAgICAgZm9udENhY2hlSWZO
b3REZXN0cm95ZWQgY2FuIGNoZWNrIGl0LCBhbmQgdGhlIG90aGVyIGxhenkgb2JqZWN0CisgICAg
ICAgIGNyZWF0aW9uIG1ldGhvZHMgY2FuIGFzc2VydCBkZXN0cm95IGhhc24ndCBiZWVuIGNhbGxl
ZCB5ZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fj
aGU6OmZvbnRGb3JQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6
Y3JlYXRlRm9udCk6CisgICAgICAgIFJlbW92ZSBGb250Q2FjaGUgYXJndW1lbnRzIGFuZCB1c2Ug
Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkIGluCisgICAgICAgIHRoZWlyIHBsYWNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Y3JlYXRlKTogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCk6CisgICAgICAgIFJlcGxhY2UgRm9udENhY2hlOjpzaW5nbGV0b24gd2l0aCBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQsIHdoaWNoCisgICAgICAgIGxvb2tzIHVwIHRoZSBGb250
Q2FjaGUgb24gVGhyZWFkR2xvYmFsRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMpOgorICAgICAgICBOZXcgZnVuY3Rpb24gdGhhdCB3aWxs
IGluIHRoZSBmdXR1cmUgaW52YWxpZGF0ZSB0aGUgbWFpbiB0aHJlYWQgYW5kCisgICAgICAgIGFs
bCB3b3JrZXIgdGhyZWFkIEZvbnRDYWNoZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaDoKKyAgICAgICAgUmVtb3ZlIHJlZmNvdW50aW5nIGZyb20gRm9udENhY2hl
IHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIHRvIHN0b3JlIGEKKyAgICAgICAgc3Ryb25nIHJlZmVy
ZW5jZSB0byBpdCBvbiBvdGhlciBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
Ojpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKTogRGVsZXRlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjppc0N1cnJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OnVwZGF0ZSBjb25zdCk6CisgICAgICAgIENhbGwgRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkIGluc3RlYWQgb2YgZ2V0dGluZyBpdCBmcm9tIHRoZQorICAgICAgICBGb250U2VsZWN0b3Iu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhbGl6ZU5leHRGYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3RlclNl
cXVlbmNlIGNvbnN0KToKKyAgICAgICAgVXNlIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICBS
ZW1vdmUgZm9udENhY2hlIG1ldGhvZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRDYWNoZVJl
Z2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpmb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6cHJld2FybUdsb2JhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0
ZW1Gb250UGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsU2V0dGluZ3M6OnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxp
dHkpOgorICAgICAgICBVc2UgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvbnRDYWNoZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnZhbGlkYXRlRm9udENh
Y2hlKToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRD
YWNoZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENKS0NvZGVQYWdlTWFza3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMpOgorICAgICAgICBV
c2UgdGhlIEZvbnRDYWNoZSBpbnN0YW5jZSB3ZSBoYXZlIGFjY2VzcyB0byByYXRoZXIgdGhhbiBj
YWxsCisgICAgICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uLgorCisgICAgICAgICogd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmZvbnRDYWNoZSk6Cisg
ICAgICAgIFJlbW92ZSB0aGUgRm9udENhY2hlIG1lbWJlciBhbmQgYWNjZXNzb3IuCisKIDIwMjEt
MTItMDQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gQ29tcHV0ZSBpc0ZpcnN0Qm94L2lzTGFzdEJveCBmb3IgdGV4dCBjb250ZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGRjNGQ3NTdiMmE1ODRkNDQ5ZjA1NGFmMjRkODFiZDZjYzRjNTIyNWIuLmJiZjU2MzM0MzE5
ZTk3NDk2NWZlOWI1YjdhNDYzNDU4NGJhNGViZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjEtMTItMDEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIEZvbnRDYWNoZSBzaW5nbGV0b24gYW5kIGluc3RhbmNlIG9uIFdvcmtlckdsb2Jh
bFNjb3BlIHRvIFRocmVhZEdsb2JhbERhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIG1h
aW4gdGhyZWEgY2FsbGVycyBvZiBGb250Q2FjaGU6OnNpbmdsZXRvbigpIHRvIHVzZQorICAgICAg
ICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS4KKwogMjAyMS0xMi0wNCAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4MzNkZTkyZDEu
LmMwMDg4MTNmMGYwMjE0ZTY0ZjVlMGU5NzdkODY5M2I1MzE5ZmEyNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nv
cm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENhY2hlIHNpbmds
ZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFkR2xvYmFsRGF0
YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzQ3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBNaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBjYWNoZWRG
b250RGF0YUNvdW50XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGNhY2hlZEZvbnRE
YXRhSW5hY3RpdmVDb3VudF0pOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBwdXJnZUlu
YWN0aXZlRm9udERhdGFdKToKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIG1haW4gdGhyZWFkIGNh
bGxlcnMgb2YgRm9udENhY2hlOjpzaW5nbGV0b24oKSB0byB1c2UKKyAgICAgICAgRm9udENhY2hl
Ojpmb3JDdXJyZW50VGhyZWFkKCkuCisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRv
ci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAy
ZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLmE0MDExNjQ1MzI2MWFiMzhk
NDdlODE4ZjYwMDhkZjBiNDhkM2Q5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENhY2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ug
b24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFkR2xvYmFsRGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3RhdGlzdGljcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFDb3VudCk6CisgICAgICAg
IChXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgorICAgICAgICBV
cGRhdGUgZXhpc3RpbmcgbWFpbiB0aHJlYWQgY2FsbGVycyBvZiBGb250Q2FjaGU6OnNpbmdsZXRv
bigpIHRvIHVzZQorICAgICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS4KKwogMjAy
MS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJd
IE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggMTM0OTQ4Y2JmZGI3N2Q2YzI1Mjc3NjQxNDkx
ZTc5ZmExM2VjODE1ZC4uZWIzYmMwYjMyMjRkNzVhNjEyM2RjMmJhZDc5NjgzYzc3YjlhODU2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC0zOTYsMTMgKzM5Niw2IEBAIERvY3Vt
ZW50KiBDU1NGb250RmFjZTo6ZG9jdW1lbnQoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1G
b250Q2FjaGUmIENTU0ZvbnRGYWNlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKCkK
LXsKLSAgICBpZiAobV93cmFwcGVyICYmIG1fd3JhcHBlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQotICAgICAgICByZXR1cm4gbV93cmFwcGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmZvbnRDYWNoZSgpOwotICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpOwotfQotCiBi
b29sIENTU0ZvbnRGYWNlOjpjb21wdXRlRmFpbHVyZVN0YXRlKCkgY29uc3QKIHsKICAgICBpZiAo
c3RhdHVzKCkgPT0gU3RhdHVzOjpGYWlsdXJlKQpAQCAtNjc2LDkgKzY2OSw4IEBAIFJlZlB0cjxG
b250PiBDU1NGb250RmFjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgYm9vbCBzeW50CiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5zdGF0dXMoKSkgewogICAg
ICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OlBlbmRpbmc6CiAgICAgICAgIGNh
c2UgQ1NTRm9udEZhY2VTb3VyY2U6OlN0YXR1czo6TG9hZGluZzogewotICAgICAgICAgICAgYXV0
byYgZm9udENhY2hlID0gZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbigpOwogICAgICAg
ICAgICAgRm9udDo6VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gV2ViQ29yZTo6dmlzaWJpbGl0eShz
dGF0dXMoKSwgZm9udExvYWRUaW1pbmcoKSk7Ci0gICAgICAgICAgICByZXR1cm4gRm9udDo6Y3Jl
YXRlKGZvbnRDYWNoZS5sYXN0UmVzb3J0RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlvbiktPnBs
YXRmb3JtRGF0YSgpLCBGb250OjpPcmlnaW46OkxvY2FsLCAmZm9udENhY2hlLCBGb250OjpJbnRl
cnN0aXRpYWw6OlllcywgdmlzaWJpbGl0eSk7CisgICAgICAgICAgICByZXR1cm4gRm9udDo6Y3Jl
YXRlKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQo
Zm9udERlc2NyaXB0aW9uKS0+cGxhdGZvcm1EYXRhKCksIEZvbnQ6Ok9yaWdpbjo6TG9jYWwsIEZv
bnQ6OkludGVyc3RpdGlhbDo6WWVzLCB2aXNpYmlsaXR5KTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OlN1Y2Nlc3M6IHsKICAgICAgICAgICAgIEZv
bnRDcmVhdGlvbkNvbnRleHQgZm9udENyZWF0aW9uQ29udGV4dCB7IG1fZmVhdHVyZVNldHRpbmdz
LCBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMsIGZvbnRQYWxldHRlVmFsdWVzIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDc4OTkzZWZlZjU3YjVlNjc5OTZhZDFiZGFlZjg3NzE3
ZmExNjBkZTguLjFiOGNlYWE2ZTI1MWZmOGViZTU3YmY0MDE1ZmExMmExNmE1MTRlYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC00Niw3ICs0Niw2IEBAIGNsYXNzIENTU0ZvbnRTZWxl
Y3RvcjsKIGNsYXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlOwogY2xhc3MgQ1NTVmFsdWU7CiBjbGFz
cyBDU1NWYWx1ZUxpc3Q7Ci1jbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250Q3JlYXRpb25Db250
ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udDsKQEAgLTE3NCw3ICsxNzMs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgdGltZW91dEZpcmVkKCk7CiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKTsKLSAgICBGb250Q2FjaGUmIGZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0
b24oKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fZmFtaWxpZXM7CiAgICAgVmVjdG9y
PFVuaWNvZGVSYW5nZT4gbV9yYW5nZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNw
cAppbmRleCBhNzZhYWNlOTc0NDRlMjNiNWFiMDNhZTVjMDQ5YTQ0ZDc0ZGZhZmFhLi42MmVlY2I1
YTVkMjQxZGNiZThiMjQ5MzViYjZjMmYzMjg5NDkxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNldC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0Ojpl
bnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBmYW1p
bAogICAgIGlmICghbV9vd25pbmdGb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNl
ckluc3RhbGxlZEZvbnRzID0gbV9vd25pbmdGb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyA/
IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgOiBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6
Tm87Ci0gICAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcyA9
IG1fb3duaW5nRm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmZvbnRDYWNo
ZSgpLmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShmYW1pbHlOYW1lLCBhbGxv
d1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRp
ZXM+IGNhcGFiaWxpdGllcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmdldEZvbnRT
ZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShmYW1pbHlOYW1lLCBhbGxvd1VzZXJJbnN0YWxs
ZWRGb250cyk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRh
MDU5NGM1YmY2Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uYWViNGI2Y2M1MGExMjZjOTgzMGQ2
MDZhYmIwYzNhOGM2OWE5YzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFt
aWx5KG1fZmFtaWx5TmFtZU9yVVJJKTsKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRD
b21wdXRlZFNpemUoMSk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U2hvdWxkQWxs
b3dVc2VySW5zdGFsbGVkRm9udHMobV9mYWNlLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOwot
ICAgICAgICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWls
eShmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCB7IH0sIHRydWUpOworICAgICAg
ICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1p
bHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgeyB9LCB0cnVlKTsKICAgICAg
ICAgICAgIGlmIChkb2N1bWVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgbV9mYW1pbHlO
YW1lT3JVUkkuc3RyaW5nKCksIHN1Y2Nlc3MpOwogICAgICAgICB9CkBAIC0yMTAsNyArMjEwLDcg
QEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNlU291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28KIAogICAgICAgICAvLyBXZSdyZSBsb2NhbC4gSnVz
dCByZXR1cm4gYSBGb250IGZyb20gdGhlIG5vcm1hbCBjYWNoZS4KICAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBjaGVjayBhbHRlcm5hdGUgZm9udCBmYW1pbHkgbmFtZXMgaGVyZSwgc28gcGFz
cyB0cnVlIGFzIHRoZSBjaGVja2luZ0FsdGVybmF0ZU5hbWUgcGFyYW1ldGVyLgotICAgICAgICBy
ZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlv
biwgbV9mYW1pbHlOYW1lT3JVUkksIGZvbnRDcmVhdGlvbkNvbnRleHQsIHRydWUpOworICAgICAg
ICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvckZhbWlseShmb250
RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBmb250Q3JlYXRpb25Db250ZXh0LCB0cnVl
KTsKICAgICB9CiAKICAgICBpZiAobV9mb250UmVxdWVzdCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcAppbmRleCBhZTExYThiOWNlOGUwZjdhZjJlMWM3MjlhMWEzNWQ1OTg0
NmVlOTg2Li45NDgxODBhODIxMmNkMDVkODdmMDU3Y2VmYjFkMDM2NDBjMDFjY2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNjUsNyArNjUsNiBAQCBzdGF0aWMg
dW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7CiBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3Rv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZjb250ZXh0KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2ZvbnRDYWNoZShj
b250ZXh0LmZvbnRDYWNoZSgpKQogICAgICwgbV9jc3NGb250RmFjZVNldChDU1NGb250RmFjZVNl
dDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb250TW9kaWZpZWRPYnNlcnZlcihbdGhpc10geyBm
b250TW9kaWZpZWQoKTsgfSkKICAgICAsIG1fdW5pcXVlSWQoKytmb250U2VsZWN0b3JJZCkKQEAg
LTgxLDcgKzgwLDcgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIG1fZm9udEZhbWlseU5hbWVzLnVu
Y2hlY2tlZEFwcGVuZChmYW1pbHlOYW1lKTsKICAgICB9CiAKLSAgICBtX2ZvbnRDYWNoZS0+YWRk
Q2xpZW50KCp0aGlzKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5hZGRDbGll
bnQoKnRoaXMpOwogICAgIG1fY3NzRm9udEZhY2VTZXQtPmFkZEZvbnRNb2RpZmllZE9ic2VydmVy
KG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIpOwogICAgIExPRyhGb250cywgIkNTU0ZvbnRTZWxlY3Rv
ciAlcCBjdG9yIiwgdGhpcyk7CiAKQEAgLTkzLDcgKzkyLDkgQEAgQ1NTRm9udFNlbGVjdG9yOjp+
Q1NTRm9udFNlbGVjdG9yKCkKICAgICBMT0coRm9udHMsICJDU1NGb250U2VsZWN0b3IgJXAgZHRv
ciIsIHRoaXMpOwogCiAgICAgY2xlYXJGb250cygpOwotICAgIG1fZm9udENhY2hlLT5yZW1vdmVD
bGllbnQoKnRoaXMpOworCisgICAgaWYgKGF1dG8gZm9udENhY2hlID0gRm9udENhY2hlOjpmb3JD
dXJyZW50VGhyZWFkSWZOb3REZXN0cm95ZWQoKSkKKyAgICAgICAgZm9udENhY2hlLT5yZW1vdmVD
bGllbnQoKnRoaXMpOwogfQogCiBGb250RmFjZVNldCogQ1NTRm9udFNlbGVjdG9yOjpmb250RmFj
ZVNldElmRXhpc3RzKCkKQEAgLTM1OSw3ICszNjAsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxl
Y3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cgogCiAgICAgaWYgKCFyZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0KQogICAgICAgICByZXNvbHZl
QW5kQXNzaWduR2VuZXJpY0ZhbWlseSgpOwotICAgIGF1dG8gZm9udCA9IG1fZm9udENhY2hlLT5m
b250Rm9yRmFtaWx5KCpmb250RGVzY3JpcHRpb25Gb3JMb29rdXAsIGZhbWlseUZvckxvb2t1cCwg
eyB7IH0sIHsgfSwgZm9udFBhbGV0dGVWYWx1ZXMgfSk7CisgICAgYXV0byBmb250ID0gRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvckZhbWlseSgqZm9udERlc2NyaXB0aW9uRm9y
TG9va3VwLCBmYW1pbHlGb3JMb29rdXAsIHsgeyB9LCB7IH0sIGZvbnRQYWxldHRlVmFsdWVzIH0p
OwogICAgIGlmIChkb2N1bWVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dGb250TG9hZCgqZG9jdW1lbnQsIGZhbWlseUZvckxvb2t1cC5z
dHJpbmcoKSwgISFmb250KTsKICAgICByZXR1cm4gRm9udFJhbmdlcyB7IFdURk1vdmUoZm9udCkg
fTsKQEAgLTM5MCw3ICszOTEsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxs
YmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgIGlmICgh
bV9jb250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpLmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBo
cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byYgcGljdG9ncmFwaEZvbnRGYW1p
bHkgPSBtX2NvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkuZm9udEdlbmVyaWNGYW1pbGllcy5waWN0
b2dyYXBoRm9udEZhbWlseSgpOwotICAgIGF1dG8gZm9udCA9IG1fZm9udENhY2hlLT5mb250Rm9y
RmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgcGljdG9ncmFwaEZvbnRGYW1pbHkpOworICAgIGF1dG8g
Zm9udCA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoZm9udERl
c2NyaXB0aW9uLCBwaWN0b2dyYXBoRm9udEZhbWlseSk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSAmJiBp
czxEb2N1bWVudD4obV9jb250ZXh0KSkKICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ0ZvbnRMb2FkKGRvd25jYXN0PERvY3VtZW50PigqbV9jb250ZXh0KSwgcGljdG9n
cmFwaEZvbnRGYW1pbHksICEhZm9udCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
aAppbmRleCAxNGEwNDU0OWQ0MTA4Y2U1MzI5MjU4M2IzOGU0NzAzMjdmMTk0YmE1Li5mYjhlYzg5
MjFjM2M1YmI5YWE3M2U5NWU1NWFkMjEwOTdiZTVjYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5oCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEZvbnRG
YWNlUnVsZShTdHlsZVJ1bGVGb250RmFjZSYsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNl
ckFnZW50U2hhZG93VHJlZSk7CiAgICAgdm9pZCBhZGRGb250UGFsZXR0ZVZhbHVlc1J1bGUoU3R5
bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMmKTsKIAotICAgIEZvbnRDYWNoZSYgZm9udENhY2hlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9mb250Q2FjaGUuZ2V0KCk7IH0KICAgICB2b2lkIGZvbnRD
YWNoZUludmFsaWRhdGVkKCkgZmluYWw7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAg
LTEyMyw3ICsxMjIsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxQZW5kaW5nRm9udEZhY2VSdWxl
PiBtX3N0YWdpbmdBcmVhOwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBt
X2NvbnRleHQ7Ci0gICAgUmVmPEZvbnRDYWNoZT4gbV9mb250Q2FjaGU7CiAgICAgUmVmUHRyPEZv
bnRGYWNlU2V0PiBtX2ZvbnRGYWNlU2V0OwogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NG
b250RmFjZVNldDsKICAgICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBh
NTZlMzBkMjQ4NzA3MzA2NDJiMzI3NTUyMThjNWEyNTYwYTRkNjcxLi45NTQ0Njc5NDM3ZjhlMWUw
MTQ3M2NiNmE3MGNkNWQwNzJmYzcxYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRGF0YWJh
c2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50
LmgiCi0jaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2lu
ZG93LmgiCkBAIC0yMjMsMTEgKzIyMiw2IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmKQogewogfQogCi1Gb250Q2Fj
aGUmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSgpCi17Ci0gICAgcmV0dXJuIEZv
bnRDYWNoZTo6c2luZ2xldG9uKCk7Ci19Ci0KIENTU1ZhbHVlUG9vbCYgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6Y3NzVmFsdWVQb29sKCkKIHsKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmlu
ZGV4IGFmM2IxMWM4YzM5NTQ2N2VhZGEwNzc1OGU2NGZkMmFhNjQ1ZDQ2MTUuLjM1MzNjMjBlMmVl
NTc5NjBiNTRiZmUxNTM2ZGUzZmIyZjhjY2ExODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjYsNyArNjYsNiBAQCBjbGFzcyBEYXRhYmFzZUNv
bnRleHQ7CiBjbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xh
c3MgRXZlbnRUYXJnZXQ7Ci1jbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250TG9hZFJlcXVlc3Q7
CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIFBlcm1pc3Npb25Db250cm9sbGVyOwpAQCAtMTY4
LDcgKzE2Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBGb250Q2FjaGUmIGZvbnRD
YWNoZSgpOwogICAgIHZpcnR1YWwgQ1NTRm9udFNlbGVjdG9yKiBjc3NGb250U2VsZWN0b3IoKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9v
bCgpOwogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExv
YWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1l
bnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0Nv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdl
c0NvY29hLm1tCmluZGV4IGQ0MzFmNzIyZTI0YWFiM2JkMTc3MjhiNDM1OGI3ODY5OGI3ODZmNGIu
Ljg2YjkzMjEwNzZjZTVmNmU5MDBlNzgxODk3NDQ1Y2NhYjIyMmYyNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29j
b2EubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgY29uc3QgU3RyaW5nJiBGb250Q2hhbmdlczo6cGxhdGZv
cm1Gb250RmFtaWx5TmFtZUZvckNTUygpIGNvbnN0CiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uOwogICAgIGRlc2NyaXB0aW9uLnNldElzSXRhbGljKG1faXRhbGljLnZhbHVlX29yKGZh
bHNlKSk7CiAgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSB7IG1f
Ym9sZC52YWx1ZV9vcihmYWxzZSkgPyA5MDAgOiA1MDAgfSk7Ci0gICAgaWYgKGF1dG8gZm9udCA9
IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwgbV9mb250
RmFtaWx5KSkKKyAgICBpZiAoYXV0byBmb250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFk
KCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwgbV9mb250RmFtaWx5KSkKICAgICAgICAgZm9u
dE5hbWVGcm9tRGVzY3JpcHRpb24gPSBhZG9wdENGKENURm9udENvcHlQb3N0U2NyaXB0TmFtZShm
b250LT5nZXRDVEZvbnQoKSkpOwogCiAgICAgaWYgKGZvbnROYW1lRnJvbURlc2NyaXB0aW9uICYm
IENGU3RyaW5nQ29tcGFyZShjZkZvbnROYW1lLmdldCgpLCBmb250TmFtZUZyb21EZXNjcmlwdGlv
bi5nZXQoKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDYzYzExM2Uy
ZWExMGRlMWI4NmY1MDViMzQzYzEyYzY3NGZiYmQxN2UuLjc5YTMyNDUwYWQ0NmQ0YTFkZGQ3M2U5
YzkxYjY1ZmQ4ZGMzM2I2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC04OTcsNyArODk3LDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4+IEluc3BlY3RvckNT
U0FnZW50OjpnZXRTdXBwb3IKIHsKICAgICBhdXRvIGZvbnRGYW1pbHlOYW1lcyA9IEpTT046OkFy
cmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBzeXN0ZW1Gb250
RmFtaWxpZXMgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnN5c3RlbUZvbnRGYW1pbGllcygpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHN5c3RlbUZvbnRGYW1pbGllcyA9IEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpLnN5c3RlbUZvbnRGYW1pbGllcygpOwogICAgIGZvciAoY29uc3QgYXV0byYg
ZmFtaWx5TmFtZSA6IHN5c3RlbUZvbnRGYW1pbGllcykKICAgICAgICAgZm9udEZhbWlseU5hbWVz
LT5hZGRJdGVtKGZhbWlseU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cAppbmRleCBlZjc5NTMwZTdjNWMyMGM0MTg0MDY5ZWRjNTg2NWRjMjhiOTkzZjZmLi5iYmE5NWZh
M2U2NzljYWZiMWIyOTE0ODA1N2RmMjdiY2IwNjgxMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVt
b3J5UmVsZWFzZS5jcHAKQEAgLTcwLDggKzcwLDkgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNy
aXRpY2FsTWVtb3J5KE1haW50YWluTWVtb3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKIHsK
ICAgICBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkucHVyZ2VDYWNoZXMoKTsKIAotICAgIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7Ci0gICAgRm9udENhY2hl
OjpzaW5nbGV0b24oKS5jbGVhcldpZHRoQ2FjaGVzKCk7CisgICAgLy8gRklYTUU6IENsZWFyIHRo
ZXNlIGZvbnQgY2FjaGVzIGluIHdvcmtlcnMgdG9vPworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCgpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpLmNsZWFyV2lkdGhDYWNoZXMoKTsKIAogICAgIFRleHRQYWludGVyOjpjbGVh
ckdseXBoRGlzcGxheUxpc3RzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5j
cHAKaW5kZXggM2UzZjNhZDgyYTRkZDI5MzM5OTI1MDI1NWQ3ZGZjMzUzYmExYjM3NS4uZWM4MGFl
NDNhYmU3OTEzNjk3OGM3ZmQwMDM5MGMyMTZiNjliNzczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cm9jZXNzV2FybWluZy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBQcm9jZXNzV2FybWluZzo6
cHJld2FybUdsb2JhbGx5KCkKICAgICBjb21tb25WTSgpOwogCiAgICAgLy8gUHJld2FybSBmb250
IGNhY2hlCi0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wcmV3YXJtR2xvYmFsbHkoKTsKKyAg
ICBGb250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpOwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKQogICAgIFRlbGVwaG9uZU51bWJlckRldGVjdG9yOjpwcmV3YXJtKCk7
CkBAIC04NiwxMiArODYsMTIgQEAgdm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5
KCkKIAogV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uIFByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0
UHJld2FybUluZm9ybWF0aW9uKCkKIHsKLSAgICByZXR1cm4geyBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9OworICAgIHJldHVybiB7IEZvbnRDYWNo
ZTo6Zm9yQ3VycmVudFRocmVhZCgpLmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9OwogfQog
CiB2b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKGNvbnN0IFByZXdh
cm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm8pCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24o
KS5wcmV3YXJtKHByZXdhcm1JbmZvLmZvbnRDYWNoZSk7CisgICAgRm9udENhY2hlOjpmb3JDdXJy
ZW50VGhyZWFkKCkucHJld2FybShwcmV3YXJtSW5mby5mb250Q2FjaGUpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggMzllMGE5ZjUwNzk3Yjg0ZmE4NGY3OWQ0
OTkzMDJiMzU1YTUyMTU1Ny4uYzMxODhiOTVhMzY1NDdmMTE5OTc2M2JiNzc5ZmZmOGQ4YmIzOWY5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNTcsNyArNTcsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmlj
RmFtaWx5Q2hhbmdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5p
bnZhbGlkYXRlRm9udENhc2NhZGVDYWNoZSgpOworICAgIC8vIE5vIG5lZWQgdG8gaW52YWxpZGF0
ZSBGb250Q2FzY2FkZUNhY2hlcyBpbiB3b3JrZXIgdGhyZWFkcywgc2luY2Ugd29ya2VycworICAg
IC8vIGRvIG5vdCByZXNwb25kIHRvIGNoYW5nZXMgaW4gU2V0dGluZ3MgdmFsdWVzLgorICAgIEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCk7
CisKICAgICBpZiAocGFnZSkKICAgICAgICAgcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxs
RnJhbWVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwCmluZGV4IDI2Mjk1NDcwZTcxMGE1ZDkzZjU1ODlhNjdlN2ZhYzQ5ODQ1OWI4YmUuLjY0OGJk
ODY3ZTE1ZTU0YTkzYTM5YzZiZTZhOTgwMDA4ZjI3N2Y5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lQ2FjaGUuaCIKICNpbmNsdWRlICJUZXh0Q29k
ZWNJQ1UuaCIKQEAgLTU4LDExICs1OSwxOCBAQCBUaHJlYWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xv
YmFsRGF0YSgpID0gZGVmYXVsdDsKIAogdm9pZCBUaHJlYWRHbG9iYWxEYXRhOjpkZXN0cm95KCkK
IHsKKyAgICBtX2Rlc3Ryb3llZCA9IHRydWU7CisKICAgICBtX2NhY2hlZENvbnZlcnRlcklDVSA9
IG51bGxwdHI7CiAKKyAgICAvLyBUaGUgVGhyZWFkR2xvYmFsRGF0YSBkZXN0cnVjdG9yIGlzIGNh
bGxlZCB1bmRlciB0aGUgVExTIGRlc3RydWN0aW9uCisgICAgLy8gY2FsbGJhY2ssIHdoaWNoIGlz
IGxhdGVyIHRoYW4gd2hlbiB0aGUgc3RhdGljIGF0b20gdGFibGUgaXMgZGVzdHJveWVkLgorICAg
IC8vIFRvIGF2b2lkIEF0b21TdHJpbmdzIGJlaW5nIGRlc3Ryb3llZCBhZnRlciB0aGUgdGFibGUs
IHdlIGNsZWFyIG9iamVjdHMKKyAgICAvLyB0aGF0IGhhdmUgQXRvbVN0cmluZ3MgaW4gdGhlbS4K
ICAgICBtX2V2ZW50TmFtZXMgPSBudWxscHRyOwogICAgIG1fdGhyZWFkVGltZXJzID0gbnVsbHB0
cjsKICAgICBtX3F1YWxpZmllZE5hbWVDYWNoZSA9IG51bGxwdHI7CisgICAgbV9mb250Q2FjaGUg
PSBudWxscHRyOwogfQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCkBAIC0xMzksNCArMTQ3LDEwIEBA
IHZvaWQgVGhyZWFkR2xvYmFsRGF0YTo6aW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0cnlUaHJlYWRH
bG9iYWxEYXRhKCkKICAgICBtX01JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhID0gTUlN
RVR5cGVSZWdpc3RyeTo6Y3JlYXRlTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEoKTsK
IH0KIAordm9pZCBUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplRm9udENhY2hlKCkKK3sKKyAg
ICBBU1NFUlQoIW1fZm9udENhY2hlKTsKKyAgICBtX2ZvbnRDYWNoZSA9IG1ha2VVbmlxdWU8Rm9u
dENhY2hlPigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKaW5kZXggYzAyYTVhMmYxYjU0ODA5NTQ2MTkxMWE5
MmE1OTMxZGYyZjA3ZTg0Mi4uNGQ5OGFlZDA2ZGExMTQ1MjQxZTg0MzQ2MGM0MzQxOTJiNWFiZWY4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaApAQCAtMzcs
NiArMzcsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBRdWFsaWZpZWROYW1lQ2FjaGU7CiBjbGFzcyBUaHJl
YWRUaW1lcnM7CiAKQEAgLTU5LDI0ICs2MCwyOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzJiBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzKCkKICAgICB7CisgICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOwogICAgICAgICBpZiAo
VU5MSUtFTFkoIW1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycykpCiAgICAgICAgICAg
ICBpbml0aWFsaXplQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpOwogICAgICAgICBy
ZXR1cm4gKm1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9yczsKICAgICB9CiAgICAgRXZl
bnROYW1lcyYgZXZlbnROYW1lcygpCiAgICAgeworICAgICAgICBBU1NFUlQoIW1fZGVzdHJveWVk
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX2V2ZW50TmFtZXMpKQogICAgICAgICAgICAgaW5p
dGlhbGl6ZUV2ZW50TmFtZXMoKTsKICAgICAgICAgcmV0dXJuICptX2V2ZW50TmFtZXM7CiAgICAg
fQogICAgIFF1YWxpZmllZE5hbWVDYWNoZSYgcXVhbGlmaWVkTmFtZUNhY2hlKCkKICAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcXVh
bGlmaWVkTmFtZUNhY2hlKSkKICAgICAgICAgICAgIGluaXRpYWxpemVRdWFsaWZpZWROYW1lQ2Fj
aGUoKTsKICAgICAgICAgcmV0dXJuICptX3F1YWxpZmllZE5hbWVDYWNoZTsKICAgICB9CiAgICAg
Y29uc3QgTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEmIG1pbWVUeXBlUmVnaXN0cnlU
aHJlYWRHbG9iYWxEYXRhKCkKICAgICB7CisgICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoIW1fTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEp
KQogICAgICAgICAgICAgaW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRh
KCk7CiAgICAgICAgIHJldHVybiAqbV9NSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YTsK
QEAgLTk1LDExICsxMDAsMjIgQEAgcHVibGljOgogICAgIGJvb2wgaXNJblJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnM7
IH0KICAgICB2b2lkIHNldElzSW5SZW1vdmVBbGxFdmVudExpc3RlbmVycyhib29sIHZhbHVlKSB7
IG1faXNJblJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzID0gdmFsdWU7IH0KIAorICAgIEZvbnRDYWNo
ZSYgZm9udENhY2hlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOworICAg
ICAgICBpZiAoVU5MSUtFTFkoIW1fZm9udENhY2hlKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVG
b250Q2FjaGUoKTsKKyAgICAgICAgcmV0dXJuICptX2ZvbnRDYWNoZTsKKyAgICB9CisKKyAgICBG
b250Q2FjaGUqIGZvbnRDYWNoZUlmTm90RGVzdHJveWVkKCkgeyByZXR1cm4gbV9kZXN0cm95ZWQg
PyBudWxscHRyIDogJmZvbnRDYWNoZSgpOyB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbml0aWFsaXplQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUV2ZW50TmFtZXMoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluaXRpYWxpemVRdWFsaWZpZWROYW1lQ2FjaGUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluaXRpYWxpemVNaW1lVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUZvbnRDYWNoZSgpOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+IG1fY2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1l
cz4gbV9ldmVudE5hbWVzOwpAQCAtMTA4LDEyICsxMjQsMTQgQEAgcHJpdmF0ZToKICAgICBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBtX2N1cnJlbnRTdGF0ZSB7IG51bGxwdHIgfTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SUNVQ29udmVydGVyV3JhcHBlcj4gbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhPiBtX01JTUVU
eXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2Fj
aGU+IG1fZm9udENhY2hlOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9pc01haW5UaHJl
YWQ7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc0luUmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9kZXN0cm95ZWQgeyBmYWxzZSB9OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgZnJpZW5kIFRocmVhZEdsb2JhbERhdGEmIHRocmVhZEdsb2JhbERhdGEoKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0
MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2MuLjRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJl
ZTEwM2ZiYWYyMWY1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCkBAIC02MCwxNSArNjAsMTAgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihGb250KTsKIAogUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRp
YWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlv
bkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRl
bnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwg
b3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlk
ZW50aWZpZXIsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRm
b3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFs
bGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnRDYWNoZSog
Zm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNp
YmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFj
aywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwg
aW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVy
LCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKLX0KLQotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdp
biwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdy
YXBwaW5nKTsKQEAgLTc2LDEwICs3MSwxMCBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbAogICAg
IGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShmb250U2l6ZSk7CiAgICAgLy8gRklYTUU6IFdo
eSBkb2Vzbid0IHRoaXMgcGFzcyBpbiBhbnkgbWVhbmluZ2Z1bCBkYXRhIGZvciB0aGUgbGFzdCBm
ZXcgYXJndW1lbnRzPwogICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6cGxhdGZv
cm1EYXRhRnJvbUN1c3RvbURhdGEoKmN1c3RvbUZvbnREYXRhLCBkZXNjcmlwdGlvbiwgc3ludGhl
dGljQm9sZCwgc3ludGhldGljSXRhbGljLCB7IH0pOwotICAgIHJldHVybiBGb250OjpjcmVhdGUo
V1RGTW92ZShwbGF0Zm9ybURhdGEpLCBvcmlnaW4sIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSk7
CisgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtRGF0YSksIG9yaWdpbik7
CiB9CiAKLUZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBP
cmlnaW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2li
aWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitGb250OjpGb250KGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJz
dGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZh
bGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgOiBtX3BsYXRm
b3JtRGF0YShwbGF0Zm9ybURhdGEpCiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCkBA
IC0xMDAsMTEgKzk1LDkgQEAgRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnQKICAgICBwbGF0Zm9ybUNo
YXJXaWR0aEluaXQoKTsKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAgaWYgKHBs
YXRmb3JtRGF0YS5vcmllbnRhdGlvbigpID09IEZvbnRPcmllbnRhdGlvbjo6VmVydGljYWwgJiYg
b3JpZW50YXRpb25GYWxsYmFjayA9PSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObykgewotICAgICAg
ICBtX3ZlcnRpY2FsRGF0YSA9IGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSA/IGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YS0+dmVydGljYWxEYXRhKHBsYXRmb3JtRGF0YSkgOiBGb250Q2FjaGU6OnNp
bmdsZXRvbigpLnZlcnRpY2FsRGF0YShwbGF0Zm9ybURhdGEpOworICAgICAgICBtX3ZlcnRpY2Fs
RGF0YSA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnZlcnRpY2FsRGF0YShwbGF0Zm9y
bURhdGEpOwogICAgICAgICBtX2hhc1ZlcnRpY2FsR2x5cGhzID0gbV92ZXJ0aWNhbERhdGEuZ2V0
KCkgJiYgbV92ZXJ0aWNhbERhdGEtPmhhc1ZlcnRpY2FsTWV0cmljcygpOwogICAgIH0KLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSk7CiAjZW5kaWYKIH0K
IApAQCAtNTk2LDEzICs1ODksMTMgQEAgc3RhdGljIFN5c3RlbUZhbGxiYWNrQ2FjaGUmIHN5c3Rl
bUZhbGxiYWNrQ2FjaGUoKQogICAgIHJldHVybiBtYXAuZ2V0KCk7CiB9CiAKLVJlZlB0cjxGb250
PiBGb250OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIs
IGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIElzRm9yUGxhdGZvcm1Gb250IGlz
Rm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGUmIGZvbnRDYWNoZSkgY29uc3QKK1JlZlB0cjxGb250
PiBGb250OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIs
IGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIElzRm9yUGxhdGZvcm1Gb250IGlz
Rm9yUGxhdGZvcm1Gb250KSBjb25zdAogewogICAgIGF1dG8gZm9udEFkZFJlc3VsdCA9IHN5c3Rl
bUZhbGxiYWNrQ2FjaGUoKS5hZGQodGhpcywgQ2hhcmFjdGVyRmFsbGJhY2tNYXAoKSk7CiAKICAg
ICBpZiAoIWNoYXJhY3RlcikgewogICAgICAgICBVQ2hhciBjb2RlVW5pdCA9IDA7Ci0gICAgICAg
IHJldHVybiBmb250Q2FjaGUuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9u
LCB0aGlzLCBpc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6
Tm8sICZjb2RlVW5pdCwgMSk7CisgICAgICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRU
aHJlYWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlz
Rm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgJmNvZGVV
bml0LCAxKTsKICAgICB9CiAKICAgICBhdXRvIGtleSA9IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5
IHsgZGVzY3JpcHRpb24uY29tcHV0ZWRMb2NhbGUoKSwgY2hhcmFjdGVyLCBpc0ZvclBsYXRmb3Jt
Rm9udCAhPSBJc0ZvclBsYXRmb3JtRm9udDo6Tm8gfTsKQEAgLTYxNyw3ICs2MTAsNyBAQCBSZWZQ
dHI8Rm9udD4gRm9udDo6c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hh
cmFjdGVyLCBjb25zdCBGb250RAogICAgICAgICAgICAgY29kZVVuaXRzWzFdID0gVTE2X1RSQUlM
KGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBjb2RlVW5pdHNMZW5ndGggPSAyOwogICAgICAgICB9
Ci0gICAgICAgIGF1dG8gZm9udCA9IGZvbnRDYWNoZS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3Rl
cnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZl
ckNvbG9yZWRGb250OjpObywgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOworICAg
ICAgICBhdXRvIGZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxs
YmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBG
b250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5n
dGgpLmdldCgpOwogICAgICAgICBpZiAoZm9udCkKICAgICAgICAgICAgIGZvbnQtPm1faXNVc2Vk
SW5TeXN0ZW1GYWxsYmFja0NhY2hlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZvbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5
MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uNzQ0MjAwNGYwMGI1ZGJhMjdmM2MzMmU2NjdiMzZiY2Nm
Nzg1MTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODEs
MTEgKzgxLDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgSW50ZXJzdGl0aWFsIDogYm9vbCB7
IE5vLCBZZXMgfTsKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwg
SW52aXNpYmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7
IE5vLCBZZXMgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0
aWFsID0gSW50ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6
OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0
KTsKLSAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwg
T3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFs
ID0gSW50ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZp
c2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRl
cnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRp
b25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VE
YXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKQEAg
LTE2NCw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0NvZGVQb2ludChVQ2hh
cjMyKSBjb25zdDsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwg
c3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24gPSBzdGQ6Om51bGxvcHQpIGNvbnN0Owog
Ci0gICAgUmVmUHRyPEZvbnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMy
LCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlJikg
Y29uc3Q7CisgICAgUmVmUHRyPEZvbnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihV
Q2hhcjMyLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCkgY29uc3Q7
CiAKICAgICBjb25zdCBHbHlwaFBhZ2UqIGdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVtYmVyKSBj
b25zdDsKIApAQCAtMjA5LDcgKzIwNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwg
SW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4sIEZvbnRDYWNoZSopOworICAgIFdFQkNP
UkVfRVhQT1JUIEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0
aWFsLCBWaXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4pOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKTsKICAg
ICB2b2lkIHBsYXRmb3JtR2x5cGhJbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBjZjEyY2Q3OGJkMjU2NTM5YWMwZGJiNGZhMThi
NWUxYmQ1YWIyMTAyLi5iMjVlN2RmYjk3YTEwMjk5N2IwZmFlMzNkNzUzODE1Zjg5YTMwM2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAg
LTM1LDcgKzM1LDkgQEAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAi
Rm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlRocmVhZEds
b2JhbERhdGEuaCIKICNpbmNsdWRlICJXZWJLaXRGb250RmFtaWx5TmFtZXMuaCIKKyNpbmNsdWRl
ICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KQEAgLTE0OCwxNiArMTUwLDE0IEBAIHN0cnVjdCBGb250Q2FjaGU6OkZvbnRE
YXRhQ2FjaGVzIHsKICNlbmRpZgogfTsKIAotUmVmPEZvbnRDYWNoZT4gRm9udENhY2hlOjpjcmVh
dGUoKQorRm9udENhY2hlJiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKQogewotICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRDYWNo
ZSgpKTsKKyAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLmZvbnRDYWNoZSgpOwogfQogCi1G
b250Q2FjaGUmIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkKK0ZvbnRDYWNoZSogRm9udENhY2hlOjpm
b3JDdXJyZW50VGhyZWFkSWZOb3REZXN0cm95ZWQoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Rm9udENhY2hlPiBnbG9iYWxGb250Q2FjaGU7Ci0gICAgcmV0dXJuIGds
b2JhbEZvbnRDYWNoZTsKKyAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLmZvbnRDYWNoZUlm
Tm90RGVzdHJveWVkKCk7CiB9CiAKIEZvbnRDYWNoZTo6Rm9udENhY2hlKCkKQEAgLTI4MSw3ICsy
ODEsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKICNlbmRpZgogCiAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2ZvbnREYXRhQ2FjaGVzLT5kYXRhLmVuc3VyZShwbGF0Zm9ybURhdGEsIFsmXSB7Ci0g
ICAgICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1EYXRhLCBGb250OjpPcmlnaW46Okxv
Y2FsLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGEsIEZv
bnQ6Ok9yaWdpbjo6TG9jYWwpOwogICAgIH0pOwogCiAgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUtPnBsYXRmb3JtRGF0YSgpID09IHBsYXRmb3JtRGF0YSk7CkBAIC00ODksNiAr
NDg5LDE0IEBAIHZvaWQgRm9udENhY2hlOjppbnZhbGlkYXRlKCkKICAgICBwdXJnZUluYWN0aXZl
Rm9udERhdGEoKTsKIH0KIAordm9pZCBGb250Q2FjaGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVz
KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gRklYTUU6IEludmFs
aWRhdGUgRm9udENhY2hlcyBpbiB3b3JrZXJzIHRvby4KKyAgICBGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS5pbnZhbGlkYXRlKCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIEZv
bnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIEZvbnRDYWNoZTo6Y29sbGVjdFByZXdhcm1JbmZv
cm1hdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oCmluZGV4IDllYzU0ZjYzYjNhYmNlOWQwM2VhNjYwZWZmMTVkYTM5OTYyMzUyMDIuLjg2
MWU2OTkwOTBkNWNjOGE5NDliZWU1Yzc3ZTQ0OWI4NjU1NTZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yODAsMTUgKzI4MCwxMyBAQCBz
dHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEZvbnRDYXNj
YWRlQ2FjaGVLZXk+IHsKIAogdXNpbmcgRm9udENhc2NhZGVDYWNoZSA9IEhhc2hNYXA8Rm9udENh
c2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4sIEZv
bnRDYXNjYWRlQ2FjaGVLZXlIYXNoLCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaFRyYWl0cz47CiAK
LWNsYXNzIEZvbnRDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRDYWNoZT4gewotICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxGb250Q2FjaGUsIE1haW5UaHJlYWRBY2Nlc3NUcmFp
dHM+OwotCitjbGFzcyBGb250Q2FjaGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRD
YWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
Rm9udENhY2hlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRm9udENhY2hl
JiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMgRm9udENhY2hlJiBmb250Q2FjaGVGYWxsaW5nQmFj
a1RvU2luZ2xldG9uKFJlZlB0cjxGb250U2VsZWN0b3I+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgRm9udENhY2hlJiBmb3JDdXJyZW50VGhyZWFkKCk7CisgICAgc3RhdGljIEZvbnRDYWNo
ZSogZm9yQ3VycmVudFRocmVhZElmTm90RGVzdHJveWVkKCk7CiAKKyAgICBGb250Q2FjaGUoKTsK
ICAgICB+Rm9udENhY2hlKCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRl
ZCBieSB0aGUgcGxhdGZvcm0uCkBAIC0zMjQsNiArMzIyLDcgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgc2hvcnQgZ2VuZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdGlvbjsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIGludmFsaWRhdGVBbGxGb250Q2FjaGVzKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3QgZm9udENvdW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IGluYWN0
aXZlRm9udENvdW50KCk7CkBAIC0zNTksMTEgKzM1OCw5IEBAIHB1YmxpYzoKICAgICB9OwogICAg
IFByZXdhcm1JbmZvcm1hdGlvbiBjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgY29uc3Q7CiAg
ICAgdm9pZCBwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYpOwotICAgIHZvaWQgcHJl
d2FybUdsb2JhbGx5KCk7CisgICAgc3RhdGljIHZvaWQgcHJld2FybUdsb2JhbGx5KCk7CiAKIHBy
aXZhdGU6Ci0gICAgRm9udENhY2hlKCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1cmdl
SW5hY3RpdmVGb250RGF0YUlmTmVlZGVkKCk7CiAgICAgdm9pZCBwcnVuZVVucmVmZXJlbmNlZEVu
dHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpOwogICAgIHZvaWQgcHJ1bmVTeXN0ZW1GYWxsYmFj
a0ZvbnRzKCk7CkBAIC00NDUsOSArNDQyLDQgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FjaGU6OlBy
ZXdhcm1JbmZvcm1hdGlvbj4gRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246OmRlY28KICAg
ICByZXR1cm4gcHJld2FybUluZm9ybWF0aW9uOwogfQogCi1pbmxpbmUgRm9udENhY2hlJiBGb250
Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oUmVmUHRyPEZvbnRTZWxlY3Rv
cj4gZm9udFNlbGVjdG9yKQotewotICAgIHJldHVybiBmb250U2VsZWN0b3IgPyBmb250U2VsZWN0
b3ItPmZvbnRDYWNoZSgpIDogRm9udENhY2hlOjpzaW5nbGV0b24oKTsKLX0KLQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDZj
MWQzNDczZDU3NTE4YWI4MzE4MjI4YTkwNDc4YzcyYmVhYTQ3ODAuLmEyNmFjZWMwNmZhZWZiYzlk
YWEzZDk3MjdhYTYwZGJiNDU5MmUxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEZvbnRD
YXNjYWRlOjppc0N1cnJlbnQoY29uc3QgRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2ZvbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
Zm9udHMtPmdlbmVyYXRpb24oKSAhPSBmb250U2VsZWN0b3IuZm9udENhY2hlKCkuZ2VuZXJhdGlv
bigpKQorICAgIGlmIChtX2ZvbnRzLT5nZW5lcmF0aW9uKCkgIT0gRm9udENhY2hlOjpmb3JDdXJy
ZW50VGhyZWFkKCkuZ2VuZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KG1fZm9udHMtPmZvbnRTZWxlY3RvclZlcnNpb24oKSAhPSBmb250U2VsZWN0b3IudmVyc2lvbigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBGb250Q2Fz
Y2FkZTo6dXBkYXRlRm9udHMoUmVmPEZvbnRDYXNjYWRlRm9udHM+JiYgZm9udHMpIGNvbnN0CiAK
IHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxl
Y3RvcikgY29uc3QKIHsKLSAgICBGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5n
bGV0b24oZm9udFNlbGVjdG9yKS51cGRhdGVGb250Q2FzY2FkZSgqdGhpcywgV1RGTW92ZShmb250
U2VsZWN0b3IpKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS51cGRhdGVGb250
Q2FzY2FkZSgqdGhpcywgV1RGTW92ZShmb250U2VsZWN0b3IpKTsKIH0KIAogR2x5cGhCdWZmZXIg
Rm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCBhMjQyZDM2NWY4OWRiYTlj
N2RhZDgwZjY5ODdjYjQ1ZGZjZjRhZGU4Li5kMzYyZmZlMmRmN2M1ZWUzYmUzMzBhYzY4ZmVjNGRi
OTI1OTZjZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEZvbnRDYXNjYWRlRm9u
dHM6OkZvbnRDYXNjYWRlRm9udHMoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3Ip
CiAgICAgOiBtX2NhY2hlZFByaW1hcnlGb250KG51bGxwdHIpCiAgICAgLCBtX2ZvbnRTZWxlY3Rv
cihmb250U2VsZWN0b3IpCiAgICAgLCBtX2ZvbnRTZWxlY3RvclZlcnNpb24obV9mb250U2VsZWN0
b3IgPyBtX2ZvbnRTZWxlY3Rvci0+dmVyc2lvbigpIDogMCkKLSAgICAsIG1fZ2VuZXJhdGlvbihG
b250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24obV9mb250U2VsZWN0b3Ip
LmdlbmVyYXRpb24oKSkKKyAgICAsIG1fZ2VuZXJhdGlvbihGb250Q2FjaGU6OmZvckN1cnJlbnRU
aHJlYWQoKS5nZW5lcmF0aW9uKCkpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAoIWlz
TWFpblRocmVhZCgpKQpAQCAtMTEzLDEwICsxMTMsMTAgQEAgRm9udENhc2NhZGVGb250czo6Rm9u
dENhc2NhZGVGb250cyhSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikKIEZvbnRD
YXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhKQogICAgIDogbV9jYWNoZWRQcmltYXJ5Rm9udChudWxscHRyKQogICAgICwgbV9m
b250U2VsZWN0b3JWZXJzaW9uKDApCi0gICAgLCBtX2dlbmVyYXRpb24oRm9udENhY2hlOjpzaW5n
bGV0b24oKS5nZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRpb24oRm9udENhY2hlOjpmb3JD
dXJyZW50VGhyZWFkKCkuZ2VuZXJhdGlvbigpKQogICAgICwgbV9pc0ZvclBsYXRmb3JtRm9udCh0
cnVlKQogewotICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5hcHBlbmQoRm9udFJhbmdlcyhG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JQbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKSkp
OworICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5hcHBlbmQoRm9udFJhbmdlcyhGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yUGxhdGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkp
KTsKIH0KIAogRm9udENhc2NhZGVGb250czo6fkZvbnRDYXNjYWRlRm9udHMoKSA9IGRlZmF1bHQ7
CkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIEZvbnRSYW5nZXMgcmVhbGl6ZU5leHRGYWxsYmFj
ayhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwKIHsKICAgICBBU1NF
UlQoaW5kZXggPCBkZXNjcmlwdGlvbi5lZmZlY3RpdmVGYW1pbHlDb3VudCgpKTsKIAotICAgIGF1
dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRv
bihmb250U2VsZWN0b3IpOworICAgIGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpOwogICAgIHdoaWxlIChpbmRleCA8IGRlc2NyaXB0aW9uLmVmZmVjdGl2ZUZh
bWlseUNvdW50KCkpIHsKICAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihb
Jl0oY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KSAtPiBGb250UmFuZ2VzIHsKICAgICAgICAgICAg
IGlmIChmYW1pbHkuaXNFbXB0eSgpKQpAQCAtMTgxLDcgKzE4MSw3IEBAIGNvbnN0IEZvbnRSYW5n
ZXMmIEZvbnRDYXNjYWRlRm9udHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0IEZvbnRD
YXNjYWRlRGVzCiAgICAgICAgIHJldHVybiBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXNbaW5kZXhd
OwogCiAgICAgQVNTRVJUKGluZGV4ID09IG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5zaXplKCkp
OwotICAgIEFTU0VSVChGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24o
bV9mb250U2VsZWN0b3IpLmdlbmVyYXRpb24oKSA9PSBtX2dlbmVyYXRpb24pOworICAgIEFTU0VS
VChGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5nZW5lcmF0aW9uKCkgPT0gbV9nZW5lcmF0
aW9uKTsKIAogICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5hcHBlbmQoRm9udFJhbmdlcygp
KTsKICAgICBhdXRvJiBmb250UmFuZ2VzID0gbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmxhc3Qo
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBjb25zdCBGb250UmFuZ2VzJiBGb250Q2FzY2FkZUZvbnRz
OjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250Q2FzY2FkZURlcwogICAgICAgICBp
ZiAoZm9udFJhbmdlcy5pc051bGwoKSAmJiBtX2ZvbnRTZWxlY3RvcikKICAgICAgICAgICAgIGZv
bnRSYW5nZXMgPSBtX2ZvbnRTZWxlY3Rvci0+Zm9udFJhbmdlc0ZvckZhbWlseShkZXNjcmlwdGlv
biwgZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkp
OwogICAgICAgICBpZiAoZm9udFJhbmdlcy5pc051bGwoKSkKLSAgICAgICAgICAgIGZvbnRSYW5n
ZXMgPSBGb250UmFuZ2VzKEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRv
bihtX2ZvbnRTZWxlY3RvcikubGFzdFJlc29ydEZhbGxiYWNrRm9udChkZXNjcmlwdGlvbikpOwor
ICAgICAgICAgICAgZm9udFJhbmdlcyA9IEZvbnRSYW5nZXMoRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChkZXNjcmlwdGlvbikpOwogICAgICAgICBy
ZXR1cm4gZm9udFJhbmdlczsKICAgICB9CiAKQEAgLTM1MSw3ICszNTEsNyBAQCBHbHlwaERhdGEg
Rm9udENhc2NhZGVGb250czo6Z2x5cGhEYXRhRm9yU3lzdGVtRmFsbGJhY2soVUNoYXIzMiBjaGFy
YWN0ZXIsIGNvbnN0CiAgICAgaWYgKCFmb250KQogICAgICAgICBmb250ID0gJnJlYWxpemVGYWxs
YmFja1Jhbmdlc0F0KGRlc2NyaXB0aW9uLCAwKS5mb250Rm9yRmlyc3RSYW5nZSgpOwogCi0gICAg
YXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBmb250LT5zeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFy
YWN0ZXIoY2hhcmFjdGVyLCBkZXNjcmlwdGlvbiwgbV9pc0ZvclBsYXRmb3JtRm9udCA/IElzRm9y
UGxhdGZvcm1Gb250OjpZZXMgOiBJc0ZvclBsYXRmb3JtRm9udDo6Tm8sIEZvbnRDYWNoZTo6Zm9u
dENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihtX2ZvbnRTZWxlY3RvcikpOworICAgIGF1dG8g
c3lzdGVtRmFsbGJhY2tGb250ID0gZm9udC0+c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVy
KGNoYXJhY3RlciwgZGVzY3JpcHRpb24sIG1faXNGb3JQbGF0Zm9ybUZvbnQgPyBJc0ZvclBsYXRm
b3JtRm9udDo6WWVzIDogSXNGb3JQbGF0Zm9ybUZvbnQ6Ok5vKTsKICAgICBpZiAoIXN5c3RlbUZh
bGxiYWNrRm9udCkKICAgICAgICAgcmV0dXJuIEdseXBoRGF0YSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCmluZGV4IDY1NDhlNzZmOTk2
MWZmN2UxYTU4OWY1Y2JiMWMwNTcyZWJiYWQ4OGMuLmE5YzIzNzY2NmMxYjNjNmRmMjg2NTExMjhm
Y2M3OTlmNDcxNmFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRTZWxlY3Rvci5oCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpID0gMDsKIAotICAg
IHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZvbnRDYWNoZUludmFsaWRhdGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVjdG9yQ2xpZW50JikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCBjNzE3ZTNiNmM0MDAzYzI1MjVlNjAzNDg5Nzcx
YmQ1ZDRhYmI1ZDFhLi44MzE1YzIxM2EyZTM2NWNkYTE5MTZmOTc1MjhlODg5YjU4NmI4MzhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIGNvbnN0IEZv
bnQqIEZvbnRDYXNjYWRlOjpmb250Rm9yQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3Qg
VUNoYXIqIG9yaWdpbmFsCiAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2tGb250OwogICAgIH0K
IAotICAgIGlmIChhdXRvIHN5c3RlbUZhbGxiYWNrID0gRm9udENhY2hlOjpmb250Q2FjaGVGYWxs
aW5nQmFja1RvU2luZ2xldG9uKGZvbnRTZWxlY3RvcigpKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJh
Y3RlcnMobV9mb250RGVzY3JpcHRpb24sIGJhc2VGb250LCBJc0ZvclBsYXRmb3JtRm9udDo6Tm8s
IHByZWZlckNvbG9yZWRGb250ID8gRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6WWVzIDog
Rm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sIGNoYXJhY3RlcnMsIGxlbmd0aCkpIHsK
KyAgICBpZiAoYXV0byBzeXN0ZW1GYWxsYmFjayA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhtX2ZvbnREZXNjcmlwdGlvbiwgYmFzZUZv
bnQsIElzRm9yUGxhdGZvcm1Gb250OjpObywgcHJlZmVyQ29sb3JlZEZvbnQgPyBGb250Q2FjaGU6
OlByZWZlckNvbG9yZWRGb250OjpZZXMgOiBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpO
bywgY2hhcmFjdGVycywgbGVuZ3RoKSkgewogICAgICAgICBpZiAoc3lzdGVtRmFsbGJhY2stPmNh
blJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNoYXJhY3RlcnMsIGxlbmd0aCkgJiYg
KCFwcmVmZXJDb2xvcmVkRm9udCB8fCBzeXN0ZW1GYWxsYmFjay0+cGxhdGZvcm1EYXRhKCkuaXND
b2xvckJpdG1hcEZvbnQoKSkpCiAgICAgICAgICAgICByZXR1cm4gc3lzdGVtRmFsbGJhY2suZ2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCAxNzI3NGJmYzM0OWQ0MzlkYjMyNjc3
ZjFhZWVhNmYyNWE1YmE3NjNhLi5jYWRlYWVhNmYyOTFkNjNmNmZkZTkyNmU3MDYzZjhkODFiYTQ0
OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC03NTcsNyArNzU3LDcgQEAgc3RhdGlj
IHZvaWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogCiBzdGF0aWMgdm9pZCBmb250Q2FjaGVSZWdp
c3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50
ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCAqLCBDRkRpY3Rp
b25hcnlSZWYpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChvYnNlcnZlciwgb2JzZXJ2ZXIgPT0gJkZv
bnRDYWNoZTo6c2luZ2xldG9uKCkpOworICAgIEFTU0VSVF9VTlVTRUQob2JzZXJ2ZXIsIGlzTWFp
blRocmVhZCgpICYmIG9ic2VydmVyID09ICZGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKSk7
CiAKICAgICBpbnZhbGlkYXRlRm9udENhY2hlKCk7CiB9CkBAIC0xMjQ5LDEzICsxMjQ5LDE2IEBA
IHN0YXRpYyBGb250TG9va3VwIHBsYXRmb3JtRm9udExvb2t1cFdpdGhGYW1pbHkoY29uc3QgQXRv
bVN0cmluZyYgZmFtaWx5LCBGb250U2VsCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hl
KCkKIHsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW10geworICAgICAgICAvLyBGSVhNRTogV29y
a2VycyBuZWVkIHRvIGFjY2VzcyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC4KICAgICAgICAg
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmNsZWFyKCk7CisgICAgICAg
IC8vIEZJWE1FOiBXb3JrZXJzIG5lZWQgdG8gYWNjZXNzIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
Q29yZVRleHRDYWNoZS4KICAgICAgICAgY2xlYXJGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0Q2FjaGUoKTsKIAorICAgICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBG
b250RGF0YWJhc2UuCiAgICAgICAgIEZvbnREYXRhYmFzZTo6c2luZ2xldG9uQWxsb3dpbmdVc2Vy
SW5zdGFsbGVkRm9udHMoKS5jbGVhcigpOwogICAgICAgICBGb250RGF0YWJhc2U6OnNpbmdsZXRv
bkRpc2FsbG93aW5nVXNlckluc3RhbGxlZEZvbnRzKCkuY2xlYXIoKTsKIAotICAgICAgICBGb250
Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGUoKTsKKyAgICAgICAgRm9udENhY2hlOjppbnZh
bGlkYXRlQWxsRm9udENhY2hlcygpOwogICAgIH0pOwogfQogCkBAIC0xMjg3LDcgKzEyOTAsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gZm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZShj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHksCiAKICAgICBpZiAoZmFtaWx5LnN0YXJ0c1dpdGgoIlVJ
Q1RGb250VGV4dFN0eWxlIikpIHsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdCA9IGZvbnRE
ZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVzdCgpOwotICAgICAgICBDVEZvbnRTeW1ib2xp
Y1RyYWl0cyB0cmFpdHMgPSAoaXNGb250V2VpZ2h0Qm9sZChyZXF1ZXN0LndlaWdodCkgfHwgRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5zaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmls
aXR5KCkgPyBrQ1RGb250VHJhaXRCb2xkIDogMCkgfCAoaXNJdGFsaWMocmVxdWVzdC5zbG9wZSkg
PyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsKKyAgICAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMg
dHJhaXRzID0gKGlzRm9udFdlaWdodEJvbGQocmVxdWVzdC53ZWlnaHQpIHx8IEZvbnRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCgpLnNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxp
dHkoKSA/IGtDVEZvbnRUcmFpdEJvbGQgOiAwKSB8IChpc0l0YWxpYyhyZXF1ZXN0LnNsb3BlKSA/
IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOwogICAgICAgICBhdXRvIGRlc2NyaXB0b3IgPSBhZG9w
dENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKGZhbWlseS5zdHJpbmcoKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBSZW5kZXJUaGVtZUNvY29hOjpzaW5nbGV0b24oKS5jb250
ZW50U2l6ZUNhdGVnb3J5KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZExvY2FsZSgpLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICAgICAgaWYgKHRyYWl0cykKICAgICAg
ICAgICAgIGRlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0
aFN5bWJvbGljVHJhaXRzKGRlc2NyaXB0b3IuZ2V0KCksIHRyYWl0cywgdHJhaXRzKSk7CkBAIC0x
Njk2LDcgKzE2OTksNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHJld2FybUdsb2JhbGx5KCkKIAogICAg
IEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvOwogICAgIHByZXdhcm1J
bmZvLnNlZW5GYW1pbGllcyA9IFdURk1vdmUoZmFtaWxpZXMpOwotICAgIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkucHJld2FybShwcmV3YXJtSW5mbyk7CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkucHJld2FybShwcmV3YXJtSW5mbyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAppbmRleCBhZGJjYzI0NDhmMWVl
OWU1ODI4NGYzMmRhMzc2M2Y2MzA5ZWM3Nzk1Li4zYjRkYTRmNTI3YmM4NGU1YTQ3MTY4YTk5NDZl
N2ZiNjg3NzRlN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNv
cmVUZXh0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIEZvbnRSYW5nZXMgRm9udEZhbWlseVNwZWNp
ZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAK
ICAgICBBU1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7CiAKLSAgICByZXR1cm4gRm9udFJhbmdlcyhG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JQbGF0Zm9ybURhdGEoKmZvbnRQbGF0Zm9ybURh
dGEpKTsKKyAgICByZXR1cm4gRm9udFJhbmdlcyhGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KS5mb250Rm9yUGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRhKSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAppbmRleCBmM2U2ZmJjODgyYTBjMmQ1
MTViOGU4ZjYxZjY5YzFkMmUzYmUyMzk3Li41NzYyZTA4OTNkOTkzYjQzOWI5MDU4OTJiMTYyNTY3
NjA5YjViZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCkBA
IC0yNDksNyArMjQ5LDcgQEAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0
UGFyYW1ldGVycyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c3kKICAgICByZXN1bHQuYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMgPSBhbGxvd1VzZXJJbnN0YWxsZWRGb250czsKIAogICAgIGF1
dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYgKEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpKQorICAg
IGlmIChGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zaG91bGRNb2NrQm9sZFN5c3RlbUZv
bnRGb3JBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHdlaWdodCA9IHdlaWdodCArIEZvbnRTZWxl
Y3Rpb25WYWx1ZSgyMDApOwogCiAgICAgcmVzdWx0LndlaWdodCA9IG1hcFdlaWdodCh3ZWlnaHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDMzMmQxZWYy
NmE5ZWI4YzNhYWM0OWUyMWExYjk5MGJlYjJkZGM0ZGMuLjk3NjgxMzJkNzBjOGE5MzkwN2QwOTlm
YmFiZTI2ZjQwZmIxZTVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRl
eHQubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29s
bGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSBydW5Gb250UGxhdGZvcm1EYXRhKHJ1bkNU
Rm9udCwgQ1RGb250R2V0U2l6ZShydW5DVEZvbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgcnVu
Rm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvclBsYXRmb3JtRGF0YShydW5Gb250
UGxhdGZvcm1EYXRhKS5wdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9IEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JQbGF0Zm9ybURhdGEocnVuRm9udFBsYXRm
b3JtRGF0YSkucHRyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICht
X2ZhbGxiYWNrRm9udHMgJiYgcnVuRm9udCAhPSAmbV9mb250LnByaW1hcnlGb250KCkpCiAgICAg
ICAgICAgICAgICAgICAgIG1fZmFsbGJhY2tGb250cy0+YWRkKHJ1bkZvbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApp
bmRleCBjYjRjZGMwNTlhNzdhY2JlZGJmYmMxZTEyYjAwNTBlNmU4MTUyYWI0Li45MTFkZDVjYTAw
NzMyOGNkNTlmZDlmMDExNjgwODkzZGE3ODQ4NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMTQ2LDcgKzE0
Niw3IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiogZ2V0TGlua2VkRm9udHMoU3RyaW5n
JiBmYW1pbHkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3RvcjxE
V09SRCwgND4mIGdldENKS0NvZGVQYWdlTWFza3MoKQorc3RhdGljIGNvbnN0IFZlY3RvcjxEV09S
RCwgND4mIGdldENKS0NvZGVQYWdlTWFza3MoRm9udENhY2hlJiBmb250Q2FjaGUpCiB7CiAgICAg
Ly8gVGhlIGRlZmF1bHQgb3JkZXIgaW4gd2hpY2ggd2UgbG9vayBmb3IgYSBmb250IGZvciBhIENK
SyBjaGFyYWN0ZXIuIElmIHRoZSB1c2VyJ3MgZGVmYXVsdCBjb2RlIHBhZ2UgaXMKICAgICAvLyBv
bmUgb2YgdGhlc2UsIHdlIHdpbGwgdXNlIGl0IGZpcnN0LgpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0
YXRpYyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFnZU1hc2tzKCkKICAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAg
IGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgSU1MYW5nRm9udExpbmtUeXBlKiBsYW5nRm9u
dExpbmsgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdldEZvbnRMaW5rSW50ZXJmYWNlKCk7Cisg
ICAgICAgIElNTGFuZ0ZvbnRMaW5rVHlwZSogbGFuZ0ZvbnRMaW5rID0gZm9udENhY2hlLmdldEZv
bnRMaW5rSW50ZXJmYWNlKCk7CiAgICAgICAgIGlmICghbGFuZ0ZvbnRMaW5rKQogICAgICAgICAg
ICAgcmV0dXJuIGNvZGVQYWdlTWFza3M7CiAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBSZWZQdHI8Rm9u
dD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBkZXNjcgogICAgICAgICAgICAgICAgIC8vIFRoZSBDSksgY2hhcmFjdGVyIG1heSBi
ZWxvbmcgdG8gbXVsdGlwbGUgY29kZSBwYWdlcy4gV2Ugd2FudCB0bwogICAgICAgICAgICAgICAg
IC8vIGRvIGZvbnQgbGlua2luZyBhZ2FpbnN0IGEgc2luZ2xlIG9uZSBvZiB0aGVtLCBwcmVmZXJy
aW5nIHRoZSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgLy8gY29kZSBwYWdlIGZvciB0aGUgdXNl
cidzIGxvY2FsZS4KLSAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBDSktD
b2RlUGFnZU1hc2tzID0gZ2V0Q0pLQ29kZVBhZ2VNYXNrcygpOworICAgICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxEV09SRCwgND4mIENKS0NvZGVQYWdlTWFza3MgPSBnZXRDSktDb2RlUGFnZU1h
c2tzKCp0aGlzKTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1Db2RlUGFnZXMgPSBDSktD
b2RlUGFnZU1hc2tzLnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtQ29kZVBhZ2VzICYmICFoZm9udDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGhmb250ID0gY3JlYXRlTUxhbmdGb250KGxhbmdGb250TGluaywgaGRjLCBDSktDb2RlUGFnZU1h
c2tzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmlu
ZGV4IDFmYzA5ZjMyZTdlMTJhMDM2MmU5MzQ0Mjg4MTdhYWYwZjg2YThjYzMuLmUyOWM1Y2FmNDc5
MmQzZjg5MjIzMzIyYWI4YzZhOGQyMDA0ZGMzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTMxLDcgKzEzMSw4IEBAIHZvaWQgSW50ZXJuYWxT
ZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogI2VuZGlmCiAK
ICAgICBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250
Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxp
dHkpOwotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1G
b250Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2li
aWxpdHkpOworICAgIC8vIEZJWE1FOiBDYWxsIHNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZv
ckFjY2Vzc2liaWxpdHkoKSBvbiBhbGwgd29ya2Vycy4KKyAgICBGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KG1f
c2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSk7CiAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQogICAgIEF1ZGlvQ29udGV4dDo6c2V0RGVmYXVsdFNhbXBsZVJhdGVGb3JUZXN0
aW5nKHN0ZDo6bnVsbG9wdCk7CkBAIC01NzAsNyArNTcxLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJp
bGl0eSgKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRBY2Nlc3NFcnJvciB9OwogICAgIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zZXRTaG91bGRN
b2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHJlcXVpcmVzKTsKLSAgICBGb250Q2Fj
aGU6OnNpbmdsZXRvbigpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxp
dHkocmVxdWlyZXMpOworICAgIC8vIEZJWE1FOiBDYWxsIHNldFNob3VsZE1vY2tCb2xkU3lzdGVt
Rm9udEZvckFjY2Vzc2liaWxpdHkoKSBvbiBhbGwgd29ya2Vycy4KKyAgICBGb250Q2FjaGU6OmZv
ckN1cnJlbnRUaHJlYWQoKS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmls
aXR5KHJlcXVpcmVzKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggNDJlOWMwZDY4NThlYzkxYzMxOWNiMjMzNGNlMGIyMjE1MzMxZmE2
Yy4uOGU5OTdjNDViODRmZjAxNTkwZTJmMmU3YjlmYjJlMjQxZTljMzNkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTg1Miw3ICsxODUyLDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gSW50ZXJuYWxzOjpzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJvb2wg
ZmxhZykKIAogdm9pZCBJbnRlcm5hbHM6OmludmFsaWRhdGVGb250Q2FjaGUoKQogewotICAgIEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6aW52YWxp
ZGF0ZUFsbEZvbnRDYWNoZXMoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldEZvbnRTbW9vdGhp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVk
NjQwZDA0ZDRiZDQ1Li40MzNkOWUxYTQ1YzI5ODg1NDJiMDVlNzRiNDcxN2E3NzA1NzI4YmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxGb250PiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmNy
ZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpCiB7CiAgICAgQVNTRVJU
KG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7Ci0gICAg
cmV0dXJuIEZvbnQ6OmNyZWF0ZShtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmZvbnRQbGF0Zm9y
bURhdGEoZm9udERlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZv
bnRDcmVhdGlvbkNvbnRleHQpLCBGb250OjpPcmlnaW46OlJlbW90ZSwgJm1fY29udGV4dC0+Zm9u
dENhY2hlKCkpOworICAgIHJldHVybiBGb250OjpjcmVhdGUobV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhLT5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3lu
dGhldGljSXRhbGljLCBmb250Q3JlYXRpb25Db250ZXh0KSwgRm9udDo6T3JpZ2luOjpSZW1vdGUp
OwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6c2V0Q2xpZW50KEZvbnRMb2FkUmVx
dWVzdENsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCAxODc2ZDE1NzcwOGU3MTE0YmU4YzdhYTRiMjEyMmEzYjQ4MzVmYWEw
Li44MzU1ZjU2YTBkZjBmNzM3YTM3YmM5ZGUzN2IxZjAxZWIyM2M2MTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzQsNyArMzQsNiBAQAog
I2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiQ3J5cHRvLmgiCi0jaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAi
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnRGYWNlU2V0LmgiCiAjaW5j
bHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCkBAIC02OCw2ICs2Nyw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTMwLDEzICs1MzAsNiBAQCBDU1NGb250U2VsZWN0b3IqIFdvcmtl
ckdsb2JhbFNjb3BlOjpjc3NGb250U2VsZWN0b3IoKQogICAgIHJldHVybiBtX2Nzc0ZvbnRTZWxl
Y3Rvci5nZXQoKTsKIH0KIAotRm9udENhY2hlJiBXb3JrZXJHbG9iYWxTY29wZTo6Zm9udENhY2hl
KCkKLXsKLSAgICBpZiAoIW1fZm9udENhY2hlKQotICAgICAgICBtX2ZvbnRDYWNoZSA9IEZvbnRD
YWNoZTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuICptX2ZvbnRDYWNoZTsKLX0KLQogUmVmPEZvbnRG
YWNlU2V0PiBXb3JrZXJHbG9iYWxTY29wZTo6Zm9udHMoKQogewogICAgIEFTU0VSVChjc3NGb250
U2VsZWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgK
aW5kZXggZTZmNGUxMjJjYjlmZThhODY5NWU0MzI2MmQzM2FjODMyYjFlNDgxNC4uMmZlNGY3MzJi
NWVjYTI1YjlhMzc2Yjg2ODBhYjhmMzBkZDc4ZWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMTM5LDcgKzEzOSw2IEBAIHB1YmxpYzoKIAogICAg
IENTU1ZhbHVlUG9vbCYgY3NzVmFsdWVQb29sKCkgZmluYWw7CiAgICAgQ1NTRm9udFNlbGVjdG9y
KiBjc3NGb250U2VsZWN0b3IoKSBmaW5hbDsKLSAgICBGb250Q2FjaGUmIGZvbnRDYWNoZSgpIGZp
bmFsOwogICAgIFJlZjxGb250RmFjZVNldD4gZm9udHMoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udExvYWRSZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU3RyaW5nJiB1cmwsIGJvb2wgaXNTVkcs
IGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgTG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSkgZmluYWw7CiAgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihGb250
TG9hZFJlcXVlc3QmKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjAsNiBAQCBwcml2YXRlOgogI2VuZGlm
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1ZhbHVlUG9vbD4gbV9jc3NWYWx1ZVBvb2w7CiAgICAg
UmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9jc3NGb250U2VsZWN0b3I7Ci0gICAgUmVmUHRyPEZv
bnRDYWNoZT4gbV9mb250Q2FjaGU7CiAgICAgUmVmZXJyZXJQb2xpY3kgbV9yZWZlcnJlclBvbGlj
eTsKICAgICBTZXR0aW5nczo6VmFsdWVzIG1fc2V0dGluZ3NWYWx1ZXM7CiAgICAgV29ya2VyVHlw
ZSBtX3dvcmtlclR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggZjZlODc2MjQ2YmZkZDZhYWQwMDc5ZDBlZWNhM2JmNzNkYmU3MGZiZS4uMTA1YmM2ZmY4YTI0
NWZmYzEwZmQ0ODcxMzkzMTZjNDhhY2YyYjAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtODY4LDggKzg2OCw5IEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxk
VGVybWluYXRlKCkKIHZvaWQgV2ViUHJvY2Vzczo6dGVybWluYXRlKCkKIHsKICNpZm5kZWYgTkRF
QlVHCisgICAgLy8gVGhlc2UgYXJlIGRvbmUgaW4gYW4gYXR0ZW1wdCB0byByZWR1Y2UgTEVBSyBv
dXRwdXQuCiAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nYXJiYWdlQ29sbGVjdE5vdygp
OwotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNo
ZTo6Zm9yQ3VycmVudFRocmVhZCgpLmludmFsaWRhdGUoKTsKICAgICBNZW1vcnlDYWNoZTo6c2lu
Z2xldG9uKCkuc2V0RGlzYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggOTI4YWU3ZDUxZTNm
MGI3ZDkxMDIwYzdkYTI4OGVkZTI0NWMzODU5NS4uNDFhZDFiMDk4Nzg5ZGVjZGRhMDQ1YzM4NTYx
NzQ0YzlmMGQwYTkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0xNDAsMTcgKzE0MCwxNyBAQCArIChzaXplX3QpaWNvbnNX
aXRoRGF0YUNvdW50CiAKICsgKHNpemVfdCljYWNoZWRGb250RGF0YUNvdW50CiB7Ci0gICAgcmV0
dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udENvdW50KCk7CisgICAgcmV0dXJuIEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRDb3VudCgpOwogfQogCiArIChzaXplX3QpY2Fj
aGVkRm9udERhdGFJbmFjdGl2ZUNvdW50CiB7Ci0gICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkuaW5hY3RpdmVGb250Q291bnQoKTsKKyAgICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJy
ZW50VGhyZWFkKCkuaW5hY3RpdmVGb250Q291bnQoKTsKIH0KIAogKyAodm9pZClwdXJnZUluYWN0
aXZlRm9udERhdGEKIHsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVG
b250RGF0YSgpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnB1cmdlSW5hY3Rp
dmVGb250RGF0YSgpOwogfQogCiArIChzaXplX3QpZ2x5cGhQYWdlQ291bnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCA5Yzk2YTY3ZTlkMGMx
ZjkwNDQyZjBiNDBjNDQ4MjZiNWM1NmI1YTMzLi4zNTY5ODNjNTJiMzc0OGE0Y2RiY2E1YWQ5MWY5
NTM1MTJhODg5YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRp
c3RpY3MuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6
Y2FjaGVkRm9udERhdGFDb3VudChfT3V0XyBVSU5UICpjb3VudCkKIHsKICAgICBpZiAoIWNvdW50
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5UKSBGb250Q2Fj
aGU6OnNpbmdsZXRvbigpLmZvbnRDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKSBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Q291bnQoKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApAQCAtMjE4LDEzICsyMTgsMTMgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVk
Rm9udERhdGFJbmFjdGl2ZUNvdW50KF9PdXRfIFVJTlQgKmNvdW50KQogewogICAgIGlmICghY291
bnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuaW5hY3RpdmVGb250Q291bnQoKTsKKyAgICAqY291bnQgPSAoVUlO
VCkgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuaW5hY3RpdmVGb250Q291bnQoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJbmFj
dGl2ZUZvbnREYXRhKHZvaWQpCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUlu
YWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wdXJn
ZUluYWN0aXZlRm9udERhdGEoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446234</attachid>
            <date>2021-12-07 13:51:51 -0800</date>
            <delta_ts>2021-12-07 15:34:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233747-20211208085149.patch</filename>
            <type>text/plain</type>
            <size>63330</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODliNmU1ZGYyYWNlMzcy
NDEyMzhjODYxNzVlNjg0MjJlYWE2MWVjYy4uY2ZlM2ExMjM2MjRhNjAzMGU2MjFmZWQ1MTUzODk5
NGQ4ZjhlNWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OSBAQAorMjAyMS0xMi0wMSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENh
Y2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFk
R2xvYmFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
VGhlcmUgYXJlIHZhcmlvdXMgcGxhY2VzIGluIGZvbnQgY29kZSB3aGVyZSB3ZSBuZWVkIGFjY2Vz
cyB0byBhCisgICAgICAgIEZvbnRDYWNoZSBpbnN0YW5jZS4gQ3VycmVudGx5IHdlOgorCisgICAg
ICAgIC0gYXNzdW1lIHRoYXQgd2UncmUgb24gdGhlIG1haW4gdGhyZWFkIGFuZCBjYWxsCisgICAg
ICAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKSwgb3IKKyAgICAgICAgLSBnZXQgYSBGb250Q2Fj
aGUgb2ZmIFdvcmtlckdsb2JhbFNjb3BlIGFuZCBwYXNzIGl0IGRvd24gKG9yIHN0b3JlIGl0KQor
ICAgICAgICAgIHdoZXJlIGl0J3MgbmVlZGVkLCB0aGVuIHBhc3MgaXQgdG8gZm9udENhY2hlRmFs
bGluZ0JhY2tUb1NpbmdsZXRvbi4KKworICAgICAgICBIYXZpbmcgdG8gdGhyZWFkIHRocm91Z2gs
IG9yIHN0b3JlLCB0aGUgRm9udENhY2hlIHBvaW50ZXIgaXMKKyAgICAgICAgaW5jb252ZW5pZW50
LCBhbmQgdGhlcmUgYXJlIHNvbWUgcGxhY2VzIHdoZXJlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRv
CisgICAgICAgIGEgRm9udENhY2hlIHBvaW50ZXIsIGJ1dCB3ZSdyZSBvbiBhIHdvcmtlciwgYW5k
IHdlIGNhbGwKKyAgICAgICAgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbiBhbmQgaW5j
b3JyZWN0bHkgZ2V0IGJhY2sgdGhlIG1haW4KKyAgICAgICAgdGhyZWFkJ3MgaW5zdGFuY2UuCisK
KyAgICAgICAgSSB0aGluayBpdCB3b3VsZCBiZSBjbGVhbmVyIGlmIHdlIG1vdmVkIGJvdGggdGhl
IG1haW4gdGhyZWFkIEZvbnRDYWNoZQorICAgICAgICBzaW5nbGV0b24sIGFuZCB0aGUgb25lIHN0
b3JlZCBvbiBhIFdvcmtlckdsb2JhbFNjb3BlLCB0bworICAgICAgICBUaHJlYWRHbG9iYWxEYXRh
LCB3aGljaCBpcyBlYXNpbHkgZ2xvYmFsbHkgYWNjZXNzaWJsZS4gUGVyZm9ybWluZyBhCisgICAg
ICAgIFRMUyBsb29rdXAgaXMgY2hlYXAgdGhlc2UgZGF5cy4KKworICAgICAgICAqIGNzcy9DU1NG
b250RmFjZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZTo6Zm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbik6CisgICAgICAgIFJlbW92ZSBmb250Q2Fj
aGVGYWxsaW5nQmFja1RvU2luZ2xldG9uIGFuZCByZXBsYWNlIGNhbGxzIHRvIGl0IHdpdGgKKyAg
ICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVM
b2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQpOgorICAgICAgICBSZXBsYWNlIGdldHRp
bmcgdGhlIEZvbnRDYWNoZSBmcm9tIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHdpdGggYQor
ICAgICAgICBjYWxsIHRvIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZC4KKworICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Zm9u
dCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENoYW5nZXM6OnBsYXRmb3JtRm9udEZhbWlseU5hbWVG
b3JDU1MgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRl
ZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyk6CisgICAgICAgICogcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSk6CisgICAgICAg
ICogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2Fy
bWluZzo6cHJld2FybUdsb2JhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5n
Ojpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NX
YXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5
Q2hhbmdlKToKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBGb250Q2FjaGU6OnNpbmdsZXRvbiB3
aXRoIGNhbGxzIHRvCisgICAgICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZC4KKworICAg
ICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1p
bHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdCk6
CisgICAgICAgIFJlbW92ZSBDU1NGb250U2VsZWN0b3I6Om1fZm9udENhY2hlIGFuZCB1c2UKKyAg
ICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkIGluc3RlYWQuIEZvciB0aGUgQ1NTRm9u
dFNlbGVjdG9yCisgICAgICAgIGRlc3RydWN0b3IsIHdlIGNhbGwgZm9yQ3VycmVudFRocmVhZElm
Tm90RGVzdHJveWVkIHNpbmNlIGl0CisgICAgICAgIGNhbiBydW4gYWZ0ZXIgVGhyZWFkR2xvYmFs
RGF0YTo6ZGVzdHJveSBoYXMgYmVlbiBjYWxsZWQgZm9yCisgICAgICAgIGEgd29ya2VyLCBhbmQg
d2UgZG9uJ3Qgd2FudCB0byBjYXVzZSBhIGZyZXNoIEZvbnRDYWNoZSBvYmplY3QgdG8gYmUKKyAg
ICAgICAgY3JlYXRlZCBhdCB0aGlzIHBvaW50LgorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb250Q2FjaGUpOgor
ICAgICAgICBSZW1vdmUgdGhlIEZvbnRDYWNoZSBtZW1iZXIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9UaHJlYWRHbG9iYWxEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRh
OjpUaHJlYWRHbG9iYWxEYXRhOjpjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGE6OmV2ZW50
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFs
RGF0YTo6cXVhbGlmaWVkTmFtZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2Jh
bERhdGE6OlRocmVhZEdsb2JhbERhdGE6Om1pbWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGE6
OmZvbnRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRH
bG9iYWxEYXRhOjpmb250Q2FjaGVJZk5vdERlc3Ryb3llZCk6CisgICAgICAgICogcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRh
OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OmluaXRpYWxp
emVGb250Q2FjaGUpOgorICAgICAgICBBZGQgYWNjZXNzb3JzIGZvciBhIGxhemlseSBjcmVhdGVk
IEZvbnRDYWNoZS4gQWxzbyByZWNvcmQgd2hldGhlcgorICAgICAgICBkZXN0cm95IGhhcyBiZWVu
IGNhbGxlZCBvbiB0aGUgVGhyZWFkR2xvYmFsRGF0YSBzbyB0aGF0CisgICAgICAgIGZvbnRDYWNo
ZUlmTm90RGVzdHJveWVkIGNhbiBjaGVjayBpdCwgYW5kIHRoZSBvdGhlciBsYXp5IG9iamVjdAor
ICAgICAgICBjcmVhdGlvbiBtZXRob2RzIGNhbiBhc3NlcnQgZGVzdHJveSBoYXNuJ3QgYmVlbiBj
YWxsZWQgeWV0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OkZvbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmNyZWF0ZUZvbnQpOgorICAgICAgICBSZW1vdmUgRm9udENhY2hlIGFyZ3VtZW50cyBhbmQg
dXNlIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCBpbgorICAgICAgICB0aGVpciBwbGFjZS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZSk6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQpOgorICAgICAgICBSZXBsYWNlIEZvbnRDYWNoZTo6c2luZ2xldG9uIHdpdGgg
Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLCB3aGljaAorICAgICAgICBsb29rcyB1cCB0aGUg
Rm9udENhY2hlIG9uIFRocmVhZEdsb2JhbERhdGEuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fj
aGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVzKToKKyAgICAgICAgTmV3IGZ1bmN0aW9uIHRoYXQg
d2lsbCBpbiB0aGUgZnV0dXJlIGludmFsaWRhdGUgdGhlIG1haW4gdGhyZWFkIGFuZAorICAgICAg
ICBhbGwgd29ya2VyIHRocmVhZCBGb250Q2FjaGVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIFJlbW92ZSByZWZjb3VudGluZyBmcm9tIEZvbnRD
YWNoZSBzaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0byBzdG9yZSBhCisgICAgICAgIHN0cm9uZyBy
ZWZlcmVuY2UgdG8gaXQgb24gb3RoZXIgb2JqZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbik6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6aXNDdXJyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjp1cGRhdGUgY29uc3QpOgorICAgICAgICBDYWxsIEZvbnRDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCBpbnN0ZWFkIG9mIGdldHRpbmcgaXQgZnJvbSB0aGUKKyAgICAgICAgRm9udFNlbGVj
dG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpGb250Q2FzY2FkZUZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlYWxpemVOZXh0RmFsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhc2NhZGVGb250czo6cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGVGb250czo6Z2x5cGhEYXRhRm9yU3lzdGVtRmFsbGJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZvbnRGb3JDb21iaW5pbmdDaGFyYWN0
ZXJTZXF1ZW5jZSBjb25zdCk6CisgICAgICAgIFVzZSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaDoKKyAgICAg
ICAgUmVtb3ZlIGZvbnRDYWNoZSBtZXRob2QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb250Q2Fj
aGVSZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6Zm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
c3lzdGVtRm9udFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3Np
YmlsaXR5KToKKyAgICAgICAgVXNlIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGb250Q2FjaGUpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW52YWxpZGF0ZUZv
bnRDYWNoZSk6CisgICAgICAgIENhbGwgdGhlIG5ldyBGb250Q2FjaGU6OmludmFsaWRhdGVBbGxG
b250Q2FjaGVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDSktDb2RlUGFnZU1hc2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKToKKyAgICAg
ICAgVXNlIHRoZSBGb250Q2FjaGUgaW5zdGFuY2Ugd2UgaGF2ZSBhY2Nlc3MgdG8gcmF0aGVyIHRo
YW4gY2FsbAorICAgICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbi4KKworICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpmb250Q2FjaGUp
OgorICAgICAgICBSZW1vdmUgdGhlIEZvbnRDYWNoZSBtZW1iZXIgYW5kIGFjY2Vzc29yLgorCiAy
MDIxLTEyLTA3ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGluZ3RvbkBhcHBsZS5jb20+CiAgICAg
ICAgIFJvbGwgQU5HTEUgdG8gaW5jbHVkZSB1cHN0cmVhbWVkIE1ldGFsIGJhY2tlbmQKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg5NgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1NzUwZTMyMTYxMDM1OGUzODZmMzA4OGUyMDJmYjMwZTM5ZDY3ZDA1Li5jZTEzYzA1ZTdl
YTA0MWFiZTAwYzY1YzMwMzJkMTE5MTNhZTI4MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTEyLTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBGb250Q2FjaGUgc2luZ2xldG9uIGFuZCBpbnN0YW5jZSBvbiBXb3JrZXJHbG9i
YWxTY29wZSB0byBUaHJlYWRHbG9iYWxEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnRlcm1pbmF0ZSk6CisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBt
YWluIHRocmVhIGNhbGxlcnMgb2YgRm9udENhY2hlOjpzaW5nbGV0b24oKSB0byB1c2UKKyAgICAg
ICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuCisKIDIwMjEtMTItMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkxvY2tSZWdpc3RyeVBy
b3h5Ojpwcm9jZXNzRGlkRXhpdCgpIHJldHVybiBlYXJseSBpZiBwcm9jZXNzIG5ldmVyIHJlZ2lz
dGVyZWQgYW55IGxvY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTE3MGUwOTNj
YmE5YzUwZGZmYzIxMTU4YmYyMGIyOGFhZGMxYTBhZS4uNWRjNGZiMmY2OGJhZThlZTI0YzQ1ZmEy
NGVlNDY5NGRlMGMwODllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIxLTEyLTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBGb250Q2FjaGUgc2luZ2xldG9uIGFuZCBpbnN0YW5jZSBvbiBXb3Jr
ZXJHbG9iYWxTY29wZSB0byBUaHJlYWRHbG9iYWxEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAg
ICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGNhY2hlZEZvbnREYXRhQ291bnRdKToKKyAgICAgICAg
KCtbV2ViQ29yZVN0YXRpc3RpY3MgY2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50XSk6CisgICAg
ICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIHB1cmdlSW5hY3RpdmVGb250RGF0YV0pOgorICAgICAg
ICBVcGRhdGUgZXhpc3RpbmcgbWFpbiB0aHJlYWQgY2FsbGVycyBvZiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpIHRvIHVzZQorICAgICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS4KKwog
MjAyMS0xMi0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAg
Q2hhbmdlIElETCBgRGF0ZWAgdG8gYmUgYmFja2VkIGJ5IGBXYWxsVGltZWAgdG8gYXZvaWQgY29u
ZnVzaW9uIHdoZW4gY29udmVydGluZyB0byBuYXRpdmUgZGF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCAwMmU5NDZiYzFmYjBiMzU2YmIxNWFiODM2MGU4NjE0NTU0NzI0N2NjLi5h
NDAxMTY0NTMyNjFhYjM4ZDQ3ZTgxOGY2MDA4ZGYwYjQ4ZDNkOTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDEgIENhbWVyb24gTWNDb3Jt
YWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRDYWNoZSBzaW5nbGV0
b24gYW5kIGluc3RhbmNlIG9uIFdvcmtlckdsb2JhbFNjb3BlIHRvIFRocmVhZEdsb2JhbERhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRh
Q291bnQpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhSW5hY3Rp
dmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJbmFjdGl2ZUZvbnRE
YXRhKToKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIG1haW4gdGhyZWFkIGNhbGxlcnMgb2YgRm9u
dENhY2hlOjpzaW5nbGV0b24oKSB0byB1c2UKKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkuCisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9zcyBtdWx0aXBsZSBX
ZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDEzNDk0OGNiZmRi
NzdkNmMyNTI3NzY0MTQ5MWU3OWZhMTNlYzgxNWQuLmViM2JjMGIzMjI0ZDc1YTYxMjNkYzJiYWQ3
OTY4M2M3N2I5YTg1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtMzk2LDEz
ICszOTYsNiBAQCBEb2N1bWVudCogQ1NTRm9udEZhY2U6OmRvY3VtZW50KCkKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotRm9udENhY2hlJiBDU1NGb250RmFjZTo6Zm9udENhY2hlRmFsbGluZ0Jh
Y2tUb1NpbmdsZXRvbigpCi17Ci0gICAgaWYgKG1fd3JhcHBlciAmJiBtX3dyYXBwZXItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIG1fd3JhcHBlci0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5mb250Q2FjaGUoKTsKLSAgICByZXR1cm4gRm9udENhY2hlOjpzaW5n
bGV0b24oKTsKLX0KLQogYm9vbCBDU1NGb250RmFjZTo6Y29tcHV0ZUZhaWx1cmVTdGF0ZSgpIGNv
bnN0CiB7CiAgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6RmFpbHVyZSkKQEAgLTY3Niw5ICs2
NjksOCBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24sIGJvb2wgc3ludAogICAgICAgICBzd2l0Y2ggKHNvdXJjZS0+
c3RhdHVzKCkpIHsKICAgICAgICAgY2FzZSBDU1NGb250RmFjZVNvdXJjZTo6U3RhdHVzOjpQZW5k
aW5nOgogICAgICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OkxvYWRpbmc6IHsK
LSAgICAgICAgICAgIGF1dG8mIGZvbnRDYWNoZSA9IGZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5n
bGV0b24oKTsKICAgICAgICAgICAgIEZvbnQ6OlZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IFdlYkNv
cmU6OnZpc2liaWxpdHkoc3RhdHVzKCksIGZvbnRMb2FkVGltaW5nKCkpOwotICAgICAgICAgICAg
cmV0dXJuIEZvbnQ6OmNyZWF0ZShmb250Q2FjaGUubGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250
RGVzY3JpcHRpb24pLT5wbGF0Zm9ybURhdGEoKSwgRm9udDo6T3JpZ2luOjpMb2NhbCwgJmZvbnRD
YWNoZSwgRm9udDo6SW50ZXJzdGl0aWFsOjpZZXMsIHZpc2liaWxpdHkpOworICAgICAgICAgICAg
cmV0dXJuIEZvbnQ6OmNyZWF0ZShGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5sYXN0UmVz
b3J0RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlvbiktPnBsYXRmb3JtRGF0YSgpLCBGb250OjpP
cmlnaW46OkxvY2FsLCBGb250OjpJbnRlcnN0aXRpYWw6OlllcywgdmlzaWJpbGl0eSk7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NGb250RmFjZVNvdXJjZTo6U3RhdHVzOjpTdWNjZXNzOiB7
CiAgICAgICAgICAgICBGb250Q3JlYXRpb25Db250ZXh0IGZvbnRDcmVhdGlvbkNvbnRleHQgeyBt
X2ZlYXR1cmVTZXR0aW5ncywgbV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLCBmb250UGFsZXR0
ZVZhbHVlcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAppbmRleCA3ODk5M2VmZWY1N2I1ZTY3
OTk2YWQxYmRhZWY4NzcxN2ZhMTYwZGU4Li4xYjhjZWFhNmUyNTFmZjhlYmU1N2JmNDAxNWZhMTJh
MTZhNTE0ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaApAQCAtNDYsNyArNDYsNiBAQCBj
bGFzcyBDU1NGb250U2VsZWN0b3I7CiBjbGFzcyBDU1NTZWdtZW50ZWRGb250RmFjZTsKIGNsYXNz
IENTU1ZhbHVlOwogY2xhc3MgQ1NTVmFsdWVMaXN0OwotY2xhc3MgRm9udENhY2hlOwogY2xhc3Mg
Rm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnQ7
CkBAIC0xNzQsNyArMTczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVvdXRGaXJlZCgpOwog
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7Ci0gICAgRm9udENhY2hlJiBmb250Q2FjaGVGYWxs
aW5nQmFja1RvU2luZ2xldG9uKCk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBtX2ZhbWls
aWVzOwogICAgIFZlY3RvcjxVbmljb2RlUmFuZ2U+IG1fcmFuZ2VzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5jcHAKaW5kZXggYTc2YWFjZTk3NDQ0ZTIzYjVhYjAzYWU1YzA0OWE0NGQ3
NGRmYWZhYS4uNjJlZWNiNWE1ZDI0MWRjYmU4YjI0OTM1YmI2YzJmMzI4OTQ5MTRhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBD
U1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKGNv
bnN0IFN0cmluZyYgZmFtaWwKICAgICBpZiAoIW1fb3duaW5nRm9udFNlbGVjdG9yLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBBbGxvd1VzZXJJbnN0YWxs
ZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IG1fb3duaW5nRm9udFNlbGVjdG9yLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkuc2hvdWxkQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMgPyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6WWVzIDogQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHM6Ok5vOwotICAgIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
PiBjYXBhYmlsaXRpZXMgPSBtX293bmluZ0ZvbnRTZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5mb250Q2FjaGUoKS5nZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHko
ZmFtaWx5TmFtZSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworICAgIFZlY3RvcjxGb250U2Vs
ZWN0aW9uQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRU
aHJlYWQoKS5nZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkoZmFtaWx5TmFtZSwg
YWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgIGlmIChjYXBhYmlsaXRpZXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQuLmFlYjRi
NmNjNTBhMTI2Yzk4MzBkNjA2YWJiMGMzYThjNjlhOWMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgQ1NTRm9udEZh
Y2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldE9uZUZhbWlseShtX2ZhbWlseU5hbWVPclVSSSk7CiAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEpOwogICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldFNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKG1fZmFjZS5hbGxvd1VzZXJJbnN0
YWxsZWRGb250cygpKTsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgeyB9
LCB0cnVlKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIHsg
fSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQogICAgICAg
ICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dGb250TG9hZCgqZG9j
dW1lbnQsIG1fZmFtaWx5TmFtZU9yVVJJLnN0cmluZygpLCBzdWNjZXNzKTsKICAgICAgICAgfQpA
QCAtMjEwLDcgKzIxMCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNvdXJjZTo6Zm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vCiAKICAgICAgICAgLy8g
V2UncmUgbG9jYWwuIEp1c3QgcmV0dXJuIGEgRm9udCBmcm9tIHRoZSBub3JtYWwgY2FjaGUuCiAg
ICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2hlY2sgYWx0ZXJuYXRlIGZvbnQgZmFtaWx5IG5h
bWVzIGhlcmUsIHNvIHBhc3MgdHJ1ZSBhcyB0aGUgY2hlY2tpbmdBbHRlcm5hdGVOYW1lIHBhcmFt
ZXRlci4KLSAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWls
eShmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBmb250Q3JlYXRpb25Db250ZXh0
LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZv
bnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwgZm9udENyZWF0
aW9uQ29udGV4dCwgdHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fZm9udFJlcXVlc3QpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggYWUxMWE4YjljZThlMGY3YWYy
ZTFjNzI5YTFhMzVkNTk4NDZlZTk4Ni4uOTQ4MTgwYTgyMTJjZDA1ZDg3ZjA1N2NlZmIxZDAzNjQw
YzAxY2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTY1LDcg
KzY1LDYgQEAgc3RhdGljIHVuc2lnbmVkIGZvbnRTZWxlY3RvcklkOwogQ1NTRm9udFNlbGVjdG9y
OjpDU1NGb250U2VsZWN0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAg
ICwgbV9mb250Q2FjaGUoY29udGV4dC5mb250Q2FjaGUoKSkKICAgICAsIG1fY3NzRm9udEZhY2VT
ZXQoQ1NTRm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9udE1vZGlmaWVkT2Jz
ZXJ2ZXIoW3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0pCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9u
dFNlbGVjdG9ySWQpCkBAIC04MSw3ICs4MCw3IEBAIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNl
bGVjdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICBtX2Zv
bnRGYW1pbHlOYW1lcy51bmNoZWNrZWRBcHBlbmQoZmFtaWx5TmFtZSk7CiAgICAgfQogCi0gICAg
bV9mb250Q2FjaGUtPmFkZENsaWVudCgqdGhpcyk7CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkuYWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2Nzc0ZvbnRGYWNlU2V0LT5hZGRGb250
TW9kaWZpZWRPYnNlcnZlcihtX2ZvbnRNb2RpZmllZE9ic2VydmVyKTsKICAgICBMT0coRm9udHMs
ICJDU1NGb250U2VsZWN0b3IgJXAgY3RvciIsIHRoaXMpOwogCkBAIC05Myw3ICs5Miw5IEBAIENT
U0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiAgICAgTE9HKEZvbnRzLCAiQ1NTRm9u
dFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAogICAgIGNsZWFyRm9udHMoKTsKLSAgICBtX2Zv
bnRDYWNoZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKworICAgIGlmIChhdXRvIGZvbnRDYWNoZSA9
IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZElmTm90RGVzdHJveWVkKCkpCisgICAgICAgIGZv
bnRDYWNoZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAogRm9udEZhY2VTZXQqIENTU0ZvbnRT
ZWxlY3Rvcjo6Zm9udEZhY2VTZXRJZkV4aXN0cygpCkBAIC0zNTksNyArMzYwLDcgQEAgRm9udFJh
bmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3IKIAogICAgIGlmICghcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCkK
ICAgICAgICAgcmVzb2x2ZUFuZEFzc2lnbkdlbmVyaWNGYW1pbHkoKTsKLSAgICBhdXRvIGZvbnQg
PSBtX2ZvbnRDYWNoZS0+Zm9udEZvckZhbWlseSgqZm9udERlc2NyaXB0aW9uRm9yTG9va3VwLCBm
YW1pbHlGb3JMb29rdXAsIHsgeyB9LCB7IH0sIGZvbnRQYWxldHRlVmFsdWVzIH0pOworICAgIGF1
dG8gZm9udCA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoKmZv
bnREZXNjcmlwdGlvbkZvckxvb2t1cCwgZmFtaWx5Rm9yTG9va3VwLCB7IHsgfSwgeyB9LCBmb250
UGFsZXR0ZVZhbHVlcyB9KTsKICAgICBpZiAoZG9jdW1lbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQogICAgICAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKmRvY3VtZW50LCBm
YW1pbHlGb3JMb29rdXAuc3RyaW5nKCksICEhZm9udCk7CiAgICAgcmV0dXJuIEZvbnRSYW5nZXMg
eyBXVEZNb3ZlKGZvbnQpIH07CkBAIC0zOTAsNyArMzkxLDcgQEAgUmVmUHRyPEZvbnQ+IENTU0Zv
bnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHQKICAgICBpZiAoIW1fY29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKS5mb250RmFsbGJhY2tQ
cmVmZXJzUGljdG9ncmFwaHMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8mIHBp
Y3RvZ3JhcGhGb250RmFtaWx5ID0gbV9jb250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpLmZvbnRHZW5l
cmljRmFtaWxpZXMucGljdG9ncmFwaEZvbnRGYW1pbHkoKTsKLSAgICBhdXRvIGZvbnQgPSBtX2Zv
bnRDYWNoZS0+Zm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIHBpY3RvZ3JhcGhGb250RmFt
aWx5KTsKKyAgICBhdXRvIGZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250
Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgcGljdG9ncmFwaEZvbnRGYW1pbHkpOwogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3Rp
Y3NFbmFibGVkKCkgJiYgaXM8RG9jdW1lbnQ+KG1fY29udGV4dCkpCiAgICAgICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dGb250TG9hZChkb3duY2FzdDxEb2N1bWVudD4oKm1f
Y29udGV4dCksIHBpY3RvZ3JhcGhGb250RmFtaWx5LCAhIWZvbnQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmgKaW5kZXggMTRhMDQ1NDlkNDEwOGNlNTMyOTI1ODNiMzhlNDcwMzI3
ZjE5NGJhNS4uZmI4ZWM4OTIxYzNjNWJiOWFhNzNlOTVlNTVhZDIxMDk3YmU1Y2MzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtNzIsNyArNzIsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRGb250RmFjZVJ1bGUoU3R5bGVSdWxlRm9udEZhY2UmLCBib29sIGlzSW5pdGlh
dGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogICAgIHZvaWQgYWRkRm9udFBhbGV0
dGVWYWx1ZXNSdWxlKFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzJik7CiAKLSAgICBGb250Q2Fj
aGUmIGZvbnRDYWNoZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZm9udENhY2hlLmdldCgpOyB9
CiAgICAgdm9pZCBmb250Q2FjaGVJbnZhbGlkYXRlZCgpIGZpbmFsOwogCiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CkBAIC0xMjMsNyArMTIyLDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UGVu
ZGluZ0ZvbnRGYWNlUnVsZT4gbV9zdGFnaW5nQXJlYTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZjxGb250Q2FjaGU+IG1fZm9udENhY2hl
OwogICAgIFJlZlB0cjxGb250RmFjZVNldD4gbV9mb250RmFjZVNldDsKICAgICBSZWY8Q1NTRm9u
dEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VTZXQ7CiAgICAgSGFzaFNldDxGb250U2VsZWN0b3JDbGll
bnQqPiBtX2NsaWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKaW5kZXggYTU2ZTMwZDI0ODcwNzMwNjQyYjMyNzU1MjE4YzVhMjU2MGE0ZDY3MS4u
OTU0NDY3OTQzN2Y4ZTFlMDE0NzNjYjZhNzBjZDVkMDcyZmM3MWMzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzcsNyArMzcsNiBAQAog
I2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZv
bnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTVdpbmRvdy5oIgpAQCAtMjIzLDExICsyMjIsNiBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJikK
IHsKIH0KIAotRm9udENhY2hlJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb250Q2FjaGUoKQot
ewotICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpOwotfQotCiBDU1NWYWx1ZVBvb2wm
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNzc1ZhbHVlUG9vbCgpCiB7CiAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCBhZjNiMTFjOGMzOTU0NjdlYWRhMDc3NThlNjRmZDJhYTY0NWQ0
NjE1Li4zNTMzYzIwZTJlZTU3OTYwYjU0YmZlMTUzNmRlM2ZiMmY4Y2NhMTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTY2LDcgKzY2LDYgQEAg
Y2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEV2ZW50TG9v
cFRhc2tHcm91cDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwotY2xhc3MgRm9udENhY2hlOwogY2xhc3Mg
Rm9udExvYWRSZXF1ZXN0OwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBQZXJtaXNzaW9uQ29u
dHJvbGxlcjsKQEAgLTE2OCw3ICsxNjcsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwg
Rm9udENhY2hlJiBmb250Q2FjaGUoKTsKICAgICB2aXJ0dWFsIENTU0ZvbnRTZWxlY3RvciogY3Nz
Rm9udFNlbGVjdG9yKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgQ1NTVmFsdWVQ
b29sJiBjc3NWYWx1ZVBvb2woKTsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9h
ZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVzdChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBp
c0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVl
U291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0
dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9u
dEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQppbmRleCBkNDMxZjcyMmUyNGFhYjNiZDE3NzI4YjQz
NThiNzg2OThiNzg2ZjRiLi44NmI5MzIxMDc2Y2U1ZjZlOTAwZTc4MTg5NzQ0NWNjYWIyMjJmMjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVD
aGFuZ2VzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0
cmlidXRlQ2hhbmdlc0NvY29hLm1tCkBAIC00OCw3ICs0OCw3IEBAIGNvbnN0IFN0cmluZyYgRm9u
dENoYW5nZXM6OnBsYXRmb3JtRm9udEZhbWlseU5hbWVGb3JDU1MoKSBjb25zdAogICAgIEZvbnRE
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKICAgICBkZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhtX2l0
YWxpYy52YWx1ZV9vcihmYWxzZSkpOwogICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2Vs
ZWN0aW9uVmFsdWUgeyBtX2JvbGQudmFsdWVfb3IoZmFsc2UpID8gOTAwIDogNTAwIH0pOwotICAg
IGlmIChhdXRvIGZvbnQgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZGVz
Y3JpcHRpb24sIG1fZm9udEZhbWlseSkpCisgICAgaWYgKGF1dG8gZm9udCA9IEZvbnRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoZGVzY3JpcHRpb24sIG1fZm9udEZhbWls
eSkpCiAgICAgICAgIGZvbnROYW1lRnJvbURlc2NyaXB0aW9uID0gYWRvcHRDRihDVEZvbnRDb3B5
UG9zdFNjcmlwdE5hbWUoZm9udC0+Z2V0Q1RGb250KCkpKTsKIAogICAgIGlmIChmb250TmFtZUZy
b21EZXNjcmlwdGlvbiAmJiBDRlN0cmluZ0NvbXBhcmUoY2ZGb250TmFtZS5nZXQoKSwgZm9udE5h
bWVGcm9tRGVzY3JpcHRpb24uZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCA2M2MxMTNlMmVhMTBkZTFiODZmNTA1YjM0M2MxMmM2NzRmYmJkMTdlLi43OWEzMjQ1
MGFkNDZkNGExZGRkNzNlOWM5MWI2NWZkOGRjMzNiNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtODk3LDcg
Kzg5Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFN0cmlu
Zz4+PiBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9yCiB7CiAgICAgYXV0byBmb250RmFtaWx5
TmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogCi0gICAgVmVjdG9yPFN0
cmluZz4gc3lzdGVtRm9udEZhbWlsaWVzID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5zeXN0ZW1G
b250RmFtaWxpZXMoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzeXN0ZW1Gb250RmFtaWxpZXMgPSBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1Gb250RmFtaWxpZXMoKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGZhbWlseU5hbWUgOiBzeXN0ZW1Gb250RmFtaWxpZXMpCiAgICAgICAg
IGZvbnRGYW1pbHlOYW1lcy0+YWRkSXRlbShmYW1pbHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggZWY3OTUzMGU3YzVjMjBjNDE4NDA2OWVkYzU4NjVkYzI4
Yjk5M2Y2Zi4uYmJhOTVmYTNlNjc5Y2FmYjFiMjkxNDgwNTdkZjI3YmNiMDY4MTJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC03MCw4ICs3MCw5IEBAIHN0YXRpYyB2
b2lkIHJlbGVhc2VOb25jcml0aWNhbE1lbW9yeShNYWludGFpbk1lbW9yeUNhY2hlIG1haW50YWlu
TWVtb3J5Q2FjaGUpCiB7CiAgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnB1cmdlQ2FjaGVz
KCk7CiAKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgp
OwotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuY2xlYXJXaWR0aENhY2hlcygpOworICAgIC8v
IEZJWE1FOiBDbGVhciB0aGVzZSBmb250IGNhY2hlcyBpbiB3b3JrZXJzIHRvbz8KKyAgICBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5jbGVhcldpZHRoQ2FjaGVzKCk7CiAKICAgICBU
ZXh0UGFpbnRlcjo6Y2xlYXJHbHlwaERpc3BsYXlMaXN0cygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJvY2Vzc1dhcm1pbmcuY3BwCmluZGV4IDNlM2YzYWQ4MmE0ZGQyOTMzOTkyNTAyNTVkN2RmYzM1
M2JhMWIzNzUuLmVjODBhZTQzYWJlNzkxMzY5NzhjN2ZkMDAzOTBjMjE2YjY5Yjc3MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSgpCiAgICAgY29tbW9uVk0oKTsKIAogICAg
IC8vIFByZXdhcm0gZm9udCBjYWNoZQotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucHJld2Fy
bUdsb2JhbGx5KCk7CisgICAgRm9udENhY2hlOjpwcmV3YXJtR2xvYmFsbHkoKTsKIAogI2lmIEVO
QUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICBUZWxlcGhvbmVOdW1iZXJEZXRl
Y3Rvcjo6cHJld2FybSgpOwpAQCAtODYsMTIgKzg2LDEyIEBAIHZvaWQgUHJvY2Vzc1dhcm1pbmc6
OnByZXdhcm1HbG9iYWxseSgpCiAKIFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiBQcm9jZXNz
V2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpCiB7Ci0gICAgcmV0dXJuIHsgRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5jb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgfTsKKyAgICBy
ZXR1cm4geyBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5jb2xsZWN0UHJld2FybUluZm9y
bWF0aW9uKCkgfTsKIH0KIAogdm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybVdpdGhJbmZvcm1h
dGlvbihjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mIHByZXdhcm1JbmZvKQogewotICAgIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkucHJld2FybShwcmV3YXJtSW5mby5mb250Q2FjaGUpOworICAgIEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0ocHJld2FybUluZm8uZm9udENhY2hl
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCmluZGV4IDQ0NjAxZjlk
OTgxZTI1OGJmMzg2NDViYTg5MzNhY2M0YTU2YjY4NjMuLjdmNTRkODc2OGNjMmZhMzY0ZTU0NDFj
ZThkNDBkYTg1NjA3OWM2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAg
LTU3LDcgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgaW52YWxp
ZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShQYWdlKiBwYWdlKQogewotICAgIEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKKyAgICAvLyBObyBu
ZWVkIHRvIGludmFsaWRhdGUgRm9udENhc2NhZGVDYWNoZXMgaW4gd29ya2VyIHRocmVhZHMsIHNp
bmNlIHdvcmtlcnMKKyAgICAvLyBkbyBub3QgcmVzcG9uZCB0byBjaGFuZ2VzIGluIFNldHRpbmdz
IHZhbHVlcy4KKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZhbGlkYXRlRm9u
dENhc2NhZGVDYWNoZSgpOworCiAgICAgaWYgKHBhZ2UpCiAgICAgICAgIHBhZ2UtPnNldE5lZWRz
UmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCAyNjI5NTQ3MGU3MTBhNWQ5M2Y1NTg5YTY3ZTdmYWM0
OTg0NTliOGJlLi42NDhiZDg2N2UxNWU1NGE5M2EzOWM2YmU2YTk4MDAwOGYyNzdmOTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZUNhY2hlLmgiCiAj
aW5jbHVkZSAiVGV4dENvZGVjSUNVLmgiCkBAIC01OCwxMSArNTksMTggQEAgVGhyZWFkR2xvYmFs
RGF0YTo6flRocmVhZEdsb2JhbERhdGEoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgVGhyZWFkR2xvYmFs
RGF0YTo6ZGVzdHJveSgpCiB7CisgICAgbV9kZXN0cm95ZWQgPSB0cnVlOworCiAgICAgbV9jYWNo
ZWRDb252ZXJ0ZXJJQ1UgPSBudWxscHRyOwogCisgICAgLy8gVGhlIFRocmVhZEdsb2JhbERhdGEg
ZGVzdHJ1Y3RvciBpcyBjYWxsZWQgdW5kZXIgdGhlIFRMUyBkZXN0cnVjdGlvbgorICAgIC8vIGNh
bGxiYWNrLCB3aGljaCBpcyBsYXRlciB0aGFuIHdoZW4gdGhlIHN0YXRpYyBhdG9tIHRhYmxlIGlz
IGRlc3Ryb3llZC4KKyAgICAvLyBUbyBhdm9pZCBBdG9tU3RyaW5ncyBiZWluZyBkZXN0cm95ZWQg
YWZ0ZXIgdGhlIHRhYmxlLCB3ZSBjbGVhciBvYmplY3RzCisgICAgLy8gdGhhdCBoYXZlIEF0b21T
dHJpbmdzIGluIHRoZW0uCiAgICAgbV9ldmVudE5hbWVzID0gbnVsbHB0cjsKICAgICBtX3RocmVh
ZFRpbWVycyA9IG51bGxwdHI7CiAgICAgbV9xdWFsaWZpZWROYW1lQ2FjaGUgPSBudWxscHRyOwor
ICAgIG1fZm9udENhY2hlID0gbnVsbHB0cjsKIH0KIAogI2lmIFVTRShXRUJfVEhSRUFEKQpAQCAt
MTM5LDQgKzE0NywxMCBAQCB2b2lkIFRocmVhZEdsb2JhbERhdGE6OmluaXRpYWxpemVNaW1lVHlw
ZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgbV9NSU1FVHlwZVJlZ2lzdHJ5VGhyZWFk
R2xvYmFsRGF0YSA9IE1JTUVUeXBlUmVnaXN0cnk6OmNyZWF0ZU1JTUVUeXBlUmVnaXN0cnlUaHJl
YWRHbG9iYWxEYXRhKCk7CiB9CiAKK3ZvaWQgVGhyZWFkR2xvYmFsRGF0YTo6aW5pdGlhbGl6ZUZv
bnRDYWNoZSgpCit7CisgICAgQVNTRVJUKCFtX2ZvbnRDYWNoZSk7CisgICAgbV9mb250Q2FjaGUg
PSBtYWtlVW5pcXVlPEZvbnRDYWNoZT4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4IGMwMmE1YTJm
MWI1NDgwOTU0NjE5MTFhOTJhNTkzMWRmMmYwN2U4NDIuLjRkOThhZWQwNmRhMTE0NTI0MWU4NDM0
NjBjNDM0MTkyYjVhYmVmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9i
YWxEYXRhLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRm9udENhY2hlOwogY2xhc3MgUXVhbGlmaWVkTmFtZUNh
Y2hlOwogY2xhc3MgVGhyZWFkVGltZXJzOwogCkBAIC01OSwyNCArNjAsMjggQEAgcHVibGljOgog
CiAgICAgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyYgY2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycygpCiAgICAgeworICAgICAgICBBU1NFUlQoIW1fZGVzdHJveWVk
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMpKQogICAgICAgICAgICAgaW5pdGlhbGl6ZUNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMoKTsKICAgICAgICAgcmV0dXJuICptX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM7
CiAgICAgfQogICAgIEV2ZW50TmFtZXMmIGV2ZW50TmFtZXMoKQogICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX2Rlc3Ryb3llZCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9ldmVudE5hbWVzKSkK
ICAgICAgICAgICAgIGluaXRpYWxpemVFdmVudE5hbWVzKCk7CiAgICAgICAgIHJldHVybiAqbV9l
dmVudE5hbWVzOwogICAgIH0KICAgICBRdWFsaWZpZWROYW1lQ2FjaGUmIHF1YWxpZmllZE5hbWVD
YWNoZSgpCiAgICAgeworICAgICAgICBBU1NFUlQoIW1fZGVzdHJveWVkKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFtX3F1YWxpZmllZE5hbWVDYWNoZSkpCiAgICAgICAgICAgICBpbml0aWFsaXpl
UXVhbGlmaWVkTmFtZUNhY2hlKCk7CiAgICAgICAgIHJldHVybiAqbV9xdWFsaWZpZWROYW1lQ2Fj
aGU7CiAgICAgfQogICAgIGNvbnN0IE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhJiBt
aW1lVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgeworICAgICAgICBBU1NFUlQo
IW1fZGVzdHJveWVkKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX01JTUVUeXBlUmVnaXN0cnlU
aHJlYWRHbG9iYWxEYXRhKSkKICAgICAgICAgICAgIGluaXRpYWxpemVNaW1lVHlwZVJlZ2lzdHJ5
VGhyZWFkR2xvYmFsRGF0YSgpOwogICAgICAgICByZXR1cm4gKm1fTUlNRVR5cGVSZWdpc3RyeVRo
cmVhZEdsb2JhbERhdGE7CkBAIC05NSwxMSArMTAwLDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW5SZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJuIG1faXNJblJlbW92ZUFs
bEV2ZW50TGlzdGVuZXJzOyB9CiAgICAgdm9pZCBzZXRJc0luUmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoYm9vbCB2YWx1ZSkgeyBtX2lzSW5SZW1vdmVBbGxFdmVudExpc3RlbmVycyA9IHZhbHVlOyB9
CiAKKyAgICBGb250Q2FjaGUmIGZvbnRDYWNoZSgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1f
ZGVzdHJveWVkKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX2ZvbnRDYWNoZSkpCisgICAgICAg
ICAgICBpbml0aWFsaXplRm9udENhY2hlKCk7CisgICAgICAgIHJldHVybiAqbV9mb250Q2FjaGU7
CisgICAgfQorCisgICAgRm9udENhY2hlKiBmb250Q2FjaGVJZk5vdERlc3Ryb3llZCgpIHsgcmV0
dXJuIG1fZGVzdHJveWVkID8gbnVsbHB0ciA6ICZmb250Q2FjaGUoKTsgfQorCiBwcml2YXRlOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUNhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVFdmVudE5hbWVz
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplUXVhbGlmaWVkTmFtZUNhY2hl
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTWltZVR5cGVSZWdpc3RyeVRo
cmVhZEdsb2JhbERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVGb250
Q2FjaGUoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0
aWF0b3JzPiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEV2ZW50TmFtZXM+IG1fZXZlbnROYW1lczsKQEAgLTEwOCwxMiArMTI0LDE0IEBAIHBy
aXZhdGU6CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbV9jdXJyZW50U3RhdGUgeyBudWxscHRy
IH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPElDVUNvbnZlcnRlcldyYXBwZXI+IG1fY2FjaGVkQ29u
dmVydGVySUNVOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xv
YmFsRGF0YT4gbV9NSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udENhY2hlPiBtX2ZvbnRDYWNoZTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIG1faXNNYWluVGhyZWFkOwogI2VuZGlmCiAKICAgICBib29sIG1faXNJblJlbW92ZUFsbEV2
ZW50TGlzdGVuZXJzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGVzdHJveWVkIHsgZmFsc2UgfTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9i
YWxEYXRhKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApp
bmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi40ZTk0OWRmYWI5
NzY1YTJhMDdjNDg3OGFiZWUxMDNmYmFmMjFmNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjAsMTUgKzYwLDEwIEBAIERFRklORV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoRm9udCk7CiAKIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlcnN0
aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFs
bGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9u
dChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRh
dGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBudWxscHRyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5
LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyKSk7CiB9CiAKLVJlZjxGb250PiBGb250
OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3Jp
Z2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsIGlu
dGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9y
aWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBpZGVudGlmaWVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZv
cm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxs
YmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7Ci19Ci0KLVJlZjxG
b250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1Jl
ZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZv
bnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljSXRhbGljKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0
b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0
YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CkBAIC03NiwxMCArNzEsMTAgQEAgUmVmPEZvbnQ+IEZv
bnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2lu
IG9yaWdpbiwgZmwKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOwog
ICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIHBhc3MgaW4gYW55IG1lYW5pbmdmdWwgZGF0
YSBmb3IgdGhlIGxhc3QgZmV3IGFyZ3VtZW50cz8KICAgICBhdXRvIHBsYXRmb3JtRGF0YSA9IENh
Y2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKCpjdXN0b21Gb250RGF0YSwgZGVz
Y3JpcHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgeyB9KTsKLSAgICByZXR1
cm4gRm9udDo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1EYXRhKSwgb3JpZ2luLCBmb250Q2FjaGVG
b3JWZXJ0aWNhbERhdGEpOworICAgIHJldHVybiBGb250OjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9y
bURhdGEpLCBvcmlnaW4pOwogfQogCi1Gb250OjpGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwg
VmlzaWJpbGl0eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFs
bGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRh
KQorRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdp
biBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0
eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogICAgIDogbV9wbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKQogICAgICwgbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwgbV9v
cmlnaW4ob3JpZ2luKQpAQCAtMTAwLDExICs5NSw5IEBAIEZvbnQ6OkZvbnQoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50
CiAgICAgcGxhdGZvcm1DaGFyV2lkdGhJbml0KCk7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJ
Q0FMKQogICAgIGlmIChwbGF0Zm9ybURhdGEub3JpZW50YXRpb24oKSA9PSBGb250T3JpZW50YXRp
b246OlZlcnRpY2FsICYmIG9yaWVudGF0aW9uRmFsbGJhY2sgPT0gT3JpZW50YXRpb25GYWxsYmFj
azo6Tm8pIHsKLSAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEgPyBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEtPnZlcnRpY2FsRGF0YShwbGF0Zm9ybURhdGEp
IDogRm9udENhY2hlOjpzaW5nbGV0b24oKS52ZXJ0aWNhbERhdGEocGxhdGZvcm1EYXRhKTsKKyAg
ICAgICAgbV92ZXJ0aWNhbERhdGEgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS52ZXJ0
aWNhbERhdGEocGxhdGZvcm1EYXRhKTsKICAgICAgICAgbV9oYXNWZXJ0aWNhbEdseXBocyA9IG1f
dmVydGljYWxEYXRhLmdldCgpICYmIG1fdmVydGljYWxEYXRhLT5oYXNWZXJ0aWNhbE1ldHJpY3Mo
KTsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEpOwogI2VuZGlmCiB9CiAKQEAgLTU5NiwxMyArNTg5LDEzIEBAIHN0YXRpYyBTeXN0ZW1GYWxs
YmFja0NhY2hlJiBzeXN0ZW1GYWxsYmFja0NhY2hlKCkKICAgICByZXR1cm4gbWFwLmdldCgpOwog
fQogCi1SZWZQdHI8Rm9udD4gRm9udDo6c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVD
aGFyMzIgY2hhcmFjdGVyLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBJc0Zv
clBsYXRmb3JtRm9udCBpc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlJiBmb250Q2FjaGUpIGNv
bnN0CitSZWZQdHI8Rm9udD4gRm9udDo6c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVD
aGFyMzIgY2hhcmFjdGVyLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBJc0Zv
clBsYXRmb3JtRm9udCBpc0ZvclBsYXRmb3JtRm9udCkgY29uc3QKIHsKICAgICBhdXRvIGZvbnRB
ZGRSZXN1bHQgPSBzeXN0ZW1GYWxsYmFja0NhY2hlKCkuYWRkKHRoaXMsIENoYXJhY3RlckZhbGxi
YWNrTWFwKCkpOwogCiAgICAgaWYgKCFjaGFyYWN0ZXIpIHsKICAgICAgICAgVUNoYXIgY29kZVVu
aXQgPSAwOwotICAgICAgICByZXR1cm4gZm9udENhY2hlLnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFj
dGVycyhkZXNjcmlwdGlvbiwgdGhpcywgaXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNoZTo6UHJl
ZmVyQ29sb3JlZEZvbnQ6Ok5vLCAmY29kZVVuaXQsIDEpOworICAgICAgICByZXR1cm4gRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2Ny
aXB0aW9uLCB0aGlzLCBpc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVk
Rm9udDo6Tm8sICZjb2RlVW5pdCwgMSk7CiAgICAgfQogCiAgICAgYXV0byBrZXkgPSBDaGFyYWN0
ZXJGYWxsYmFja01hcEtleSB7IGRlc2NyaXB0aW9uLmNvbXB1dGVkTG9jYWxlKCksIGNoYXJhY3Rl
ciwgaXNGb3JQbGF0Zm9ybUZvbnQgIT0gSXNGb3JQbGF0Zm9ybUZvbnQ6Ok5vIH07CkBAIC02MTcs
NyArNjEwLDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJh
Y3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udEQKICAgICAgICAgICAgIGNvZGVVbml0
c1sxXSA9IFUxNl9UUkFJTChjaGFyYWN0ZXIpOwogICAgICAgICAgICAgY29kZVVuaXRzTGVuZ3Ro
ID0gMjsKICAgICAgICAgfQotICAgICAgICBhdXRvIGZvbnQgPSBmb250Q2FjaGUuc3lzdGVtRmFs
bGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBpc0ZvclBsYXRmb3JtRm9udCwg
Rm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sIGNvZGVVbml0cywgY29kZVVuaXRzTGVu
Z3RoKS5nZXQoKTsKKyAgICAgICAgYXV0byBmb250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkKCkuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBpc0Zv
clBsYXRmb3JtRm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sIGNvZGVVbml0
cywgY29kZVVuaXRzTGVuZ3RoKS5nZXQoKTsKICAgICAgICAgaWYgKGZvbnQpCiAgICAgICAgICAg
ICBmb250LT5tX2lzVXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZSA9IHRydWU7CiAgICAgICAgIHJl
dHVybiBmb250OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlm
YzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLjc0NDIwMDRmMDBiNWRiYTI3
ZjNjMzJlNjY3YjM2YmNjZjc4NTE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKQEAgLTgxLDExICs4MSw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEludGVy
c3RpdGlhbCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBWaXNpYmlsaXR5IDog
Ym9vbCB7IFZpc2libGUsIEludmlzaWJsZSB9OwogICAgIGVudW0gY2xhc3MgT3JpZW50YXRpb25G
YWxsYmFjayA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiA9IE9yaWdpbjo6
TG9jYWwsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCi0gICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCi0gICAgICAgIFZpc2liaWxpdHkg
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25G
YWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9
IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNy
ZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50
ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZp
c2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+Rm9udCgpOwogCkBAIC0xNjQsNyArMTYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9y
dHNDb2RlUG9pbnQoVUNoYXIzMikgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzQ29k
ZVBvaW50KFVDaGFyMzIsIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gdmFyaWF0aW9uID0gc3RkOjpu
dWxsb3B0KSBjb25zdDsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnRGb3JD
aGFyYWN0ZXIoVUNoYXIzMiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgSXNGb3JQbGF0Zm9ybUZv
bnQsIEZvbnRDYWNoZSYpIGNvbnN0OworICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0Zv
bnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgSXNGb3JQbGF0
Zm9ybUZvbnQpIGNvbnN0OwogCiAgICAgY29uc3QgR2x5cGhQYWdlKiBnbHlwaFBhZ2UodW5zaWdu
ZWQgcGFnZU51bWJlcikgY29uc3Q7CiAKQEAgLTIwOSw3ICsyMDYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxs
YmFjaywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+LCBGb250Q2Fj
aGUqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBP
cmlnaW4sIEludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjaywgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+KTsKIAogICAgIHZvaWQgcGxh
dGZvcm1Jbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUdseXBoSW5pdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggY2YxMmNkNzhiZDI1
NjUzOWFjMGRiYjRmYTE4YjVlMWJkNWFiMjEwMi4uYjI1ZTdkZmI5N2ExMDI5OTdiMGZhZTMzZDc1
MzgxNWY4OWEzMDNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCkBAIC0zNSw3ICszNSw5IEBACiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiV2ViS2l0Rm9udEZhbWlseU5h
bWVzLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0xNDgsMTYgKzE1MCwxNCBAQCBzdHJ1Y3Qg
Rm9udENhY2hlOjpGb250RGF0YUNhY2hlcyB7CiAjZW5kaWYKIH07CiAKLVJlZjxGb250Q2FjaGU+
IEZvbnRDYWNoZTo6Y3JlYXRlKCkKK0ZvbnRDYWNoZSYgRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGb250Q2FjaGUoKSk7CisgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5mb250
Q2FjaGUoKTsKIH0KIAotRm9udENhY2hlJiBGb250Q2FjaGU6OnNpbmdsZXRvbigpCitGb250Q2Fj
aGUqIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZElmTm90RGVzdHJveWVkKCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZvbnRDYWNoZT4gZ2xvYmFsRm9udENhY2hl
OwotICAgIHJldHVybiBnbG9iYWxGb250Q2FjaGU7CisgICAgcmV0dXJuIHRocmVhZEdsb2JhbERh
dGEoKS5mb250Q2FjaGVJZk5vdERlc3Ryb3llZCgpOwogfQogCiBGb250Q2FjaGU6OkZvbnRDYWNo
ZSgpCkBAIC0yODEsNyArMjgxLDcgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6Zm9udEZvclBsYXRm
b3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAjZW5kaWYKIAog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RGF0YUNhY2hlcy0+ZGF0YS5lbnN1cmUocGxhdGZv
cm1EYXRhLCBbJl0gewotICAgICAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRmb3JtRGF0YSwg
Rm9udDo6T3JpZ2luOjpMb2NhbCwgdGhpcyk7CisgICAgICAgIHJldHVybiBGb250OjpjcmVhdGUo
cGxhdGZvcm1EYXRhLCBGb250OjpPcmlnaW46OkxvY2FsKTsKICAgICB9KTsKIAogICAgIEFTU0VS
VChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5wbGF0Zm9ybURhdGEoKSA9PSBwbGF0Zm9ybURh
dGEpOwpAQCAtNDg5LDYgKzQ4OSwxNCBAQCB2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAg
ICAgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKK3ZvaWQgRm9udENhY2hlOjppbnZhbGlk
YXRlQWxsRm9udENhY2hlcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IC8vIEZJWE1FOiBJbnZhbGlkYXRlIEZvbnRDYWNoZXMgaW4gd29ya2VycyB0b28uCisgICAgRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuaW52YWxpZGF0ZSgpOworfQorCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQogCiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBGb250Q2FjaGU6OmNv
bGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA5ZWM1NGY2M2IzYWJjZTlkMDNlYTY2MGVmZjE1
ZGEzOTk2MjM1MjAyLi44NjFlNjk5MDkwZDVjYzhhOTQ5YmVlNWM3N2U0NDliODY1NTU2ZDlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMjgw
LDE1ICsyODAsMTMgQEAgc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzIDogSGFz
aFRyYWl0czxGb250Q2FzY2FkZUNhY2hlS2V5PiB7CiAKIHVzaW5nIEZvbnRDYXNjYWRlQ2FjaGUg
PSBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FzY2Fk
ZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCwgRm9udENhc2NhZGVDYWNoZUtl
eUhhc2hUcmFpdHM+OwogCi1jbGFzcyBGb250Q2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250
Q2FjaGU+IHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhY2hlLCBNYWlu
VGhyZWFkQWNjZXNzVHJhaXRzPjsKLQorY2xhc3MgRm9udENhY2hlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShGb250Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZvbnRDYWNoZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEZvbnRDYWNoZSYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGljIEZvbnRDYWNoZSYgZm9u
dENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihSZWZQdHI8Rm9udFNlbGVjdG9yPik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIEZvbnRDYWNoZSYgZm9yQ3VycmVudFRocmVhZCgpOworICAg
IHN0YXRpYyBGb250Q2FjaGUqIGZvckN1cnJlbnRUaHJlYWRJZk5vdERlc3Ryb3llZCgpOwogCisg
ICAgRm9udENhY2hlKCk7CiAgICAgfkZvbnRDYWNoZSgpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9k
cyBhcmUgaW1wbGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgpAQCAtMzI0LDYgKzMyMiw3IEBAIHB1
YmxpYzoKIAogICAgIHVuc2lnbmVkIHNob3J0IGdlbmVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRpb247IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWxsRm9udENhY2hlcygpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IGZvbnRDb3VudCgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHNpemVfdCBpbmFjdGl2ZUZvbnRDb3VudCgpOwpAQCAtMzU5LDExICszNTgsOSBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1h
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24m
KTsKLSAgICB2b2lkIHByZXdhcm1HbG9iYWxseSgpOworICAgIHN0YXRpYyB2b2lkIHByZXdhcm1H
bG9iYWxseSgpOwogCiBwcml2YXRlOgotICAgIEZvbnRDYWNoZSgpOwotCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwdXJnZUluYWN0aXZlRm9udERhdGFJZk5lZWRlZCgpOwogICAgIHZvaWQgcHJ1
bmVVbnJlZmVyZW5jZWRFbnRyaWVzRnJvbUZvbnRDYXNjYWRlQ2FjaGUoKTsKICAgICB2b2lkIHBy
dW5lU3lzdGVtRmFsbGJhY2tGb250cygpOwpAQCAtNDQ1LDkgKzQ0Miw0IEBAIHN0ZDo6b3B0aW9u
YWw8Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24+IEZvbnRDYWNoZTo6UHJld2FybUluZm9y
bWF0aW9uOjpkZWNvCiAgICAgcmV0dXJuIHByZXdhcm1JbmZvcm1hdGlvbjsKIH0KIAotaW5saW5l
IEZvbnRDYWNoZSYgRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKFJl
ZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxlY3RvcikKLXsKLSAgICByZXR1cm4gZm9udFNlbGVj
dG9yID8gZm9udFNlbGVjdG9yLT5mb250Q2FjaGUoKSA6IEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7
Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAppbmRleCA2YzFkMzQ3M2Q1NzUxOGFiODMxODIyOGE5MDQ3OGM3MmJlYWE0NzgwLi5h
MjZhY2VjMDZmYWVmYmM5ZGFhM2Q5NzI3YWE2MGRiYjQ1OTJlMWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0xMzYsNyArMTM2
LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6aXNDdXJyZW50KGNvbnN0IEZvbnRTZWxlY3RvciYgZm9u
dFNlbGVjdG9yKSBjb25zdAogewogICAgIGlmICghbV9mb250cykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChtX2ZvbnRzLT5nZW5lcmF0aW9uKCkgIT0gZm9udFNlbGVjdG9yLmZvbnRD
YWNoZSgpLmdlbmVyYXRpb24oKSkKKyAgICBpZiAobV9mb250cy0+Z2VuZXJhdGlvbigpICE9IEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmdlbmVyYXRpb24oKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChtX2ZvbnRzLT5mb250U2VsZWN0b3JWZXJzaW9uKCkgIT0gZm9udFNl
bGVjdG9yLnZlcnNpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU0LDcgKzE1NCw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZUZvbnRzKFJlZjxGb250Q2FzY2FkZUZvbnRzPiYm
IGZvbnRzKSBjb25zdAogCiB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4mJiBmb250U2VsZWN0b3IpIGNvbnN0CiB7Ci0gICAgRm9udENhY2hlOjpmb250Q2FjaGVG
YWxsaW5nQmFja1RvU2luZ2xldG9uKGZvbnRTZWxlY3RvcikudXBkYXRlRm9udENhc2NhZGUoKnRo
aXMsIFdURk1vdmUoZm9udFNlbGVjdG9yKSk7CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkKCkudXBkYXRlRm9udENhc2NhZGUoKnRoaXMsIFdURk1vdmUoZm9udFNlbGVjdG9yKSk7CiB9
CiAKIEdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENvZGVQYXRoIGNvZGVQYXRo
VG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEZv
clRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKaW5kZXgg
YTI0MmQzNjVmODlkYmE5YzdkYWQ4MGY2OTg3Y2I0NWRmY2Y0YWRlOC4uZDM2MmZmZTJkZjdjNWVl
M2JlMzMwYWM2OGZlYzRkYjkyNTk2Y2VmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBA
QCBGb250Q2FzY2FkZUZvbnRzOjpGb250Q2FzY2FkZUZvbnRzKFJlZlB0cjxGb250U2VsZWN0b3I+
JiYgZm9udFNlbGVjdG9yKQogICAgIDogbV9jYWNoZWRQcmltYXJ5Rm9udChudWxscHRyKQogICAg
ICwgbV9mb250U2VsZWN0b3IoZm9udFNlbGVjdG9yKQogICAgICwgbV9mb250U2VsZWN0b3JWZXJz
aW9uKG1fZm9udFNlbGVjdG9yID8gbV9mb250U2VsZWN0b3ItPnZlcnNpb24oKSA6IDApCi0gICAg
LCBtX2dlbmVyYXRpb24oRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9u
KG1fZm9udFNlbGVjdG9yKS5nZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRpb24oRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZ2VuZXJhdGlvbigpKQogewogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKQEAgLTExMywxMCArMTEzLDEwIEBAIEZvbnRD
YXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250
U2VsZWN0b3IpCiBGb250Q2FzY2FkZUZvbnRzOjpGb250Q2FzY2FkZUZvbnRzKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKICAgICA6IG1fY2FjaGVkUHJpbWFyeUZvbnQobnVs
bHB0cikKICAgICAsIG1fZm9udFNlbGVjdG9yVmVyc2lvbigwKQotICAgICwgbV9nZW5lcmF0aW9u
KEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2VuZXJhdGlvbigpKQorICAgICwgbV9nZW5lcmF0aW9u
KEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmdlbmVyYXRpb24oKSkKICAgICAsIG1faXNG
b3JQbGF0Zm9ybUZvbnQodHJ1ZSkKIHsKLSAgICBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuYXBw
ZW5kKEZvbnRSYW5nZXMoRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yUGxhdGZvcm1EYXRh
KHBsYXRmb3JtRGF0YSkpKTsKKyAgICBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuYXBwZW5kKEZv
bnRSYW5nZXMoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvclBsYXRmb3JtRGF0
YShwbGF0Zm9ybURhdGEpKSk7CiB9CiAKIEZvbnRDYXNjYWRlRm9udHM6On5Gb250Q2FzY2FkZUZv
bnRzKCkgPSBkZWZhdWx0OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBGb250UmFuZ2VzIHJl
YWxpemVOZXh0RmFsbGJhY2soY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgZGVzY3JpcHRpb24uZWZmZWN0aXZlRmFtaWx5Q291
bnQoKSk7CiAKLSAgICBhdXRvJiBmb250Q2FjaGUgPSBGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxp
bmdCYWNrVG9TaW5nbGV0b24oZm9udFNlbGVjdG9yKTsKKyAgICBhdXRvJiBmb250Q2FjaGUgPSBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKTsKICAgICB3aGlsZSAoaW5kZXggPCBkZXNjcmlw
dGlvbi5lZmZlY3RpdmVGYW1pbHlDb3VudCgpKSB7CiAgICAgICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkgLT4gRm9udFJhbmdl
cyB7CiAgICAgICAgICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKQEAgLTE4MSw3ICsxODEsNyBA
QCBjb25zdCBGb250UmFuZ2VzJiBGb250Q2FzY2FkZUZvbnRzOjpyZWFsaXplRmFsbGJhY2tSYW5n
ZXNBdChjb25zdCBGb250Q2FzY2FkZURlcwogICAgICAgICByZXR1cm4gbV9yZWFsaXplZEZhbGxi
YWNrUmFuZ2VzW2luZGV4XTsKIAogICAgIEFTU0VSVChpbmRleCA9PSBtX3JlYWxpemVkRmFsbGJh
Y2tSYW5nZXMuc2l6ZSgpKTsKLSAgICBBU1NFUlQoRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5n
QmFja1RvU2luZ2xldG9uKG1fZm9udFNlbGVjdG9yKS5nZW5lcmF0aW9uKCkgPT0gbV9nZW5lcmF0
aW9uKTsKKyAgICBBU1NFUlQoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZ2VuZXJhdGlv
bigpID09IG1fZ2VuZXJhdGlvbik7CiAKICAgICBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuYXBw
ZW5kKEZvbnRSYW5nZXMoKSk7CiAgICAgYXV0byYgZm9udFJhbmdlcyA9IG1fcmVhbGl6ZWRGYWxs
YmFja1Jhbmdlcy5sYXN0KCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgY29uc3QgRm9udFJhbmdlcyYg
Rm9udENhc2NhZGVGb250czo6cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQoY29uc3QgRm9udENhc2Nh
ZGVEZXMKICAgICAgICAgaWYgKGZvbnRSYW5nZXMuaXNOdWxsKCkgJiYgbV9mb250U2VsZWN0b3Ip
CiAgICAgICAgICAgICBmb250UmFuZ2VzID0gbV9mb250U2VsZWN0b3ItPmZvbnRSYW5nZXNGb3JG
YW1pbHkoZGVzY3JpcHRpb24sIGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6
U3RhbmRhcmRGYW1pbHkpKTsKICAgICAgICAgaWYgKGZvbnRSYW5nZXMuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBmb250UmFuZ2VzID0gRm9udFJhbmdlcyhGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxp
bmdCYWNrVG9TaW5nbGV0b24obV9mb250U2VsZWN0b3IpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQo
ZGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBGb250UmFuZ2VzKEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRp
b24pKTsKICAgICAgICAgcmV0dXJuIGZvbnRSYW5nZXM7CiAgICAgfQogCkBAIC0zNTEsNyArMzUx
LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxi
YWNrKFVDaGFyMzIgY2hhcmFjdGVyLCBjb25zdAogICAgIGlmICghZm9udCkKICAgICAgICAgZm9u
dCA9ICZyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChkZXNjcmlwdGlvbiwgMCkuZm9udEZvckZpcnN0
UmFuZ2UoKTsKIAotICAgIGF1dG8gc3lzdGVtRmFsbGJhY2tGb250ID0gZm9udC0+c3lzdGVtRmFs
bGJhY2tGb250Rm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZGVzY3JpcHRpb24sIG1faXNGb3JQbGF0
Zm9ybUZvbnQgPyBJc0ZvclBsYXRmb3JtRm9udDo6WWVzIDogSXNGb3JQbGF0Zm9ybUZvbnQ6Ok5v
LCBGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24obV9mb250U2VsZWN0
b3IpKTsKKyAgICBhdXRvIHN5c3RlbUZhbGxiYWNrRm9udCA9IGZvbnQtPnN5c3RlbUZhbGxiYWNr
Rm9udEZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGRlc2NyaXB0aW9uLCBtX2lzRm9yUGxhdGZvcm1G
b250ID8gSXNGb3JQbGF0Zm9ybUZvbnQ6OlllcyA6IElzRm9yUGxhdGZvcm1Gb250OjpObyk7CiAg
ICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnQpCiAgICAgICAgIHJldHVybiBHbHlwaERhdGEoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaApp
bmRleCA2NTQ4ZTc2Zjk5NjFmZjdlMWE1ODlmNWNiYjFjMDU3MmViYmFkODhjLi5hOWMyMzc2NjZj
MWIzYzZkZjI4NjUxMTI4ZmNjNzk5ZjQ3MTZhZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaApAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9h
ZGluZyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgZmFt
aWx5KSA9IDA7CiAKLSAgICB2aXJ0dWFsIEZvbnRDYWNoZSYgZm9udENhY2hlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmb250Q2FjaGVJbnZhbGlkYXRlZCgpIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZvbnRTZWxlY3RvckNs
aWVudCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKaW5kZXggYzcxN2UzYjZjNDAw
M2MyNTI1ZTYwMzQ4OTc3MWJkNWQ0YWJiNWQxYS4uODMxNWMyMTNhMmUzNjVjZGExOTE2Zjk3NTI4
ZTg4OWI1ODZiODM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3Rl
clNlcXVlbmNlKGNvbnN0IFVDaGFyKiBvcmlnaW5hbAogICAgICAgICAgICAgcmV0dXJuIGZhbGxi
YWNrRm9udDsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzeXN0ZW1GYWxsYmFjayA9IEZvbnRDYWNo
ZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihmb250U2VsZWN0b3IoKSkuc3lzdGVt
RmFsbGJhY2tGb3JDaGFyYWN0ZXJzKG1fZm9udERlc2NyaXB0aW9uLCBiYXNlRm9udCwgSXNGb3JQ
bGF0Zm9ybUZvbnQ6Ok5vLCBwcmVmZXJDb2xvcmVkRm9udCA/IEZvbnRDYWNoZTo6UHJlZmVyQ29s
b3JlZEZvbnQ6OlllcyA6IEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6Ok5vLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpKSB7CisgICAgaWYgKGF1dG8gc3lzdGVtRmFsbGJhY2sgPSBGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMobV9mb250RGVz
Y3JpcHRpb24sIGJhc2VGb250LCBJc0ZvclBsYXRmb3JtRm9udDo6Tm8sIHByZWZlckNvbG9yZWRG
b250ID8gRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6WWVzIDogRm9udENhY2hlOjpQcmVm
ZXJDb2xvcmVkRm9udDo6Tm8sIGNoYXJhY3RlcnMsIGxlbmd0aCkpIHsKICAgICAgICAgaWYgKHN5
c3RlbUZhbGxiYWNrLT5jYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjaGFyYWN0
ZXJzLCBsZW5ndGgpICYmICghcHJlZmVyQ29sb3JlZEZvbnQgfHwgc3lzdGVtRmFsbGJhY2stPnBs
YXRmb3JtRGF0YSgpLmlzQ29sb3JCaXRtYXBGb250KCkpKQogICAgICAgICAgICAgcmV0dXJuIHN5
c3RlbUZhbGxiYWNrLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggMTcyNzRi
ZmMzNDlkNDM5ZGIzMjY3N2YxYWVlYTZmMjVhNWJhNzYzYS4uY2FkZWFlYTZmMjkxZDYzZjZmZGU5
MjZlNzA2M2Y4ZDgxYmE0NDlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtNzU3LDcg
Kzc1Nyw3IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUoKTsKIAogc3RhdGljIHZv
aWQgZm9udENhY2hlUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKENG
Tm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0
IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewotICAgIEFTU0VSVF9VTlVTRUQob2JzZXJ2ZXIs
IG9ic2VydmVyID09ICZGb250Q2FjaGU6OnNpbmdsZXRvbigpKTsKKyAgICBBU1NFUlRfVU5VU0VE
KG9ic2VydmVyLCBpc01haW5UaHJlYWQoKSAmJiBvYnNlcnZlciA9PSAmRm9udENhY2hlOjpmb3JD
dXJyZW50VGhyZWFkKCkpOwogCiAgICAgaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogfQpAQCAtMTI0
OSwxMyArMTI0OSwxNiBAQCBzdGF0aWMgRm9udExvb2t1cCBwbGF0Zm9ybUZvbnRMb29rdXBXaXRo
RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgRm9udFNlbAogc3RhdGljIHZvaWQgaW52
YWxpZGF0ZUZvbnRDYWNoZSgpCiB7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtdIHsKKyAgICAg
ICAgLy8gRklYTUU6IFdvcmtlcnMgbmVlZCB0byBhY2Nlc3MgU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuCiAgICAgICAgIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5j
bGVhcigpOworICAgICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuCiAgICAgICAgIGNsZWFyRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCk7CiAKKyAgICAgICAgLy8gRklYTUU6IFdvcmtlcnMg
bmVlZCB0byBhY2Nlc3MgRm9udERhdGFiYXNlLgogICAgICAgICBGb250RGF0YWJhc2U6OnNpbmds
ZXRvbkFsbG93aW5nVXNlckluc3RhbGxlZEZvbnRzKCkuY2xlYXIoKTsKICAgICAgICAgRm9udERh
dGFiYXNlOjpzaW5nbGV0b25EaXNhbGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFyKCk7
CiAKLSAgICAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbnZhbGlkYXRlKCk7CisgICAgICAg
IEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMoKTsKICAgICB9KTsKIH0KIApAQCAt
MTI4Nyw3ICsxMjkwLDcgQEAgc3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnRXaXRoRmFt
aWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LAogCiAgICAgaWYgKGZhbWls
eS5zdGFydHNXaXRoKCJVSUNURm9udFRleHRTdHlsZSIpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8m
IHJlcXVlc3QgPSBmb250RGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKTsKLSAgICAg
ICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKGlzRm9udFdlaWdodEJvbGQocmVxdWVz
dC53ZWlnaHQpIHx8IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1G
b250Rm9yQWNjZXNzaWJpbGl0eSgpID8ga0NURm9udFRyYWl0Qm9sZCA6IDApIHwgKGlzSXRhbGlj
KHJlcXVlc3Quc2xvcGUpID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7CisgICAgICAgIENURm9u
dFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IChpc0ZvbnRXZWlnaHRCb2xkKHJlcXVlc3Qud2VpZ2h0
KSB8fCBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zaG91bGRNb2NrQm9sZFN5c3RlbUZv
bnRGb3JBY2Nlc3NpYmlsaXR5KCkgPyBrQ1RGb250VHJhaXRCb2xkIDogMCkgfCAoaXNJdGFsaWMo
cmVxdWVzdC5zbG9wZSkgPyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsKICAgICAgICAgYXV0byBk
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZShm
YW1pbHkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgUmVuZGVyVGhlbWVDb2NvYTo6
c2luZ2xldG9uKCkuY29udGVudFNpemVDYXRlZ29yeSgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0
ZWRMb2NhbGUoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAgICAgICAgIGlm
ICh0cmFpdHMpCiAgICAgICAgICAgICBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlw
dG9yQ3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0cyhkZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMs
IHRyYWl0cykpOwpAQCAtMTY5Niw3ICsxNjk5LDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm1H
bG9iYWxseSgpCiAKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBwcmV3YXJtSW5m
bzsKICAgICBwcmV3YXJtSW5mby5zZWVuRmFtaWxpZXMgPSBXVEZNb3ZlKGZhbWlsaWVzKTsKLSAg
ICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnByZXdhcm0ocHJld2FybUluZm8pOworICAgIEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0ocHJld2FybUluZm8pOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKaW5k
ZXggYWRiY2MyNDQ4ZjFlZTllNTgyODRmMzJkYTM3NjNmNjMwOWVjNzc5NS4uM2I0ZGE0ZjUyN2Jj
ODRlNWE0NzE2OGE5OTQ2ZTdmYjY4Nzc0ZTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBGb250UmFuZ2Vz
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmbwogCiAgICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEpOwogCi0gICAgcmV0
dXJuIEZvbnRSYW5nZXMoRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yUGxhdGZvcm1EYXRh
KCpmb250UGxhdGZvcm1EYXRhKSk7CisgICAgcmV0dXJuIEZvbnRSYW5nZXMoRm9udENhY2hlOjpm
b3JDdXJyZW50VGhyZWFkKCkuZm9udEZvclBsYXRmb3JtRGF0YSgqZm9udFBsYXRmb3JtRGF0YSkp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKaW5kZXgg
ZjNlNmZiYzg4MmEwYzJkNTE1YjhlOGY2MWY2OWMxZDJlM2JlMjM5Ny4uNTc2MmUwODkzZDk5M2I0
MzliOTA1ODkyYjE2MjU2NzYwOWI1YmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnN5
CiAgICAgcmVzdWx0LmFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHM7CiAKICAgICBhdXRvIHdlaWdodCA9IGRlc2NyaXB0aW9uLndlaWdodCgpOwotICAgIGlm
IChGb250Q2FjaGU6OnNpbmdsZXRvbigpLnNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vz
c2liaWxpdHkoKSkKKyAgICBpZiAoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2hvdWxk
TW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICB3ZWlnaHQgPSB3
ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUoMjAwKTsKIAogICAgIHJlc3VsdC53ZWlnaHQgPSBt
YXBXZWlnaHQod2VpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5t
bQppbmRleCAzMzJkMWVmMjZhOWViOGMzYWFjNDllMjFhMWI5OTBiZWIyZGRjNGRjLi45NzY4MTMy
ZDcwYzhhOTM5MDdkMDk5ZmJhYmUyNmY0MGZiMWU1ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKGNvbnN0IFVD
aGFyKiBjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEgcnVuRm9udFBs
YXRmb3JtRGF0YShydW5DVEZvbnQsIENURm9udEdldFNpemUocnVuQ1RGb250KSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJ1bkZvbnQgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JQbGF0
Zm9ybURhdGEocnVuRm9udFBsYXRmb3JtRGF0YSkucHRyKCk7CisgICAgICAgICAgICAgICAgICAg
IHJ1bkZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yUGxhdGZvcm1E
YXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLnB0cigpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBpZiAobV9mYWxsYmFja0ZvbnRzICYmIHJ1bkZvbnQgIT0gJm1fZm9udC5wcmlt
YXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICBtX2ZhbGxiYWNrRm9udHMtPmFkZChydW5G
b250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKaW5kZXggY2I0Y2RjMDU5YTc3YWNiZWRiZmJjMWUxMmIwMDUwZTZlODE1
MmFiNC4uOTExZGQ1Y2EwMDczMjhjZDU5ZmQ5ZjAxMTY4MDg5M2RhNzg0ODQ1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5j
cHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4qIGdldExp
bmtlZEZvbnRzKFN0cmluZyYgZmFtaWx5KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp
YyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFnZU1hc2tzKCkKK3N0YXRpYyBj
b25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFnZU1hc2tzKEZvbnRDYWNoZSYgZm9u
dENhY2hlKQogewogICAgIC8vIFRoZSBkZWZhdWx0IG9yZGVyIGluIHdoaWNoIHdlIGxvb2sgZm9y
IGEgZm9udCBmb3IgYSBDSksgY2hhcmFjdGVyLiBJZiB0aGUgdXNlcidzIGRlZmF1bHQgY29kZSBw
YWdlIGlzCiAgICAgLy8gb25lIG9mIHRoZXNlLCB3ZSB3aWxsIHVzZSBpdCBmaXJzdC4KQEAgLTE2
MSw3ICsxNjEsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPERXT1JELCA0PiYgZ2V0Q0pLQ29kZVBh
Z2VNYXNrcygpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFs
aXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAgICAgIElNTGFuZ0ZvbnRM
aW5rVHlwZSogbGFuZ0ZvbnRMaW5rID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZXRGb250TGlu
a0ludGVyZmFjZSgpOworICAgICAgICBJTUxhbmdGb250TGlua1R5cGUqIGxhbmdGb250TGluayA9
IGZvbnRDYWNoZS5nZXRGb250TGlua0ludGVyZmFjZSgpOwogICAgICAgICBpZiAoIWxhbmdGb250
TGluaykKICAgICAgICAgICAgIHJldHVybiBjb2RlUGFnZU1hc2tzOwogCkBAIC0yNTcsNyArMjU3
LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJz
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3IKICAgICAgICAgICAgICAgICAvLyBUaGUgQ0pL
IGNoYXJhY3RlciBtYXkgYmVsb25nIHRvIG11bHRpcGxlIGNvZGUgcGFnZXMuIFdlIHdhbnQgdG8K
ICAgICAgICAgICAgICAgICAvLyBkbyBmb250IGxpbmtpbmcgYWdhaW5zdCBhIHNpbmdsZSBvbmUg
b2YgdGhlbSwgcHJlZmVycmluZyB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgIC8vIGNvZGUg
cGFnZSBmb3IgdGhlIHVzZXIncyBsb2NhbGUuCi0gICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PERXT1JELCA0PiYgQ0pLQ29kZVBhZ2VNYXNrcyA9IGdldENKS0NvZGVQYWdlTWFza3MoKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBDSktDb2RlUGFnZU1hc2tzID0g
Z2V0Q0pLQ29kZVBhZ2VNYXNrcygqdGhpcyk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVt
Q29kZVBhZ2VzID0gQ0pLQ29kZVBhZ2VNYXNrcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNvZGVQYWdlcyAmJiAhaGZvbnQ7ICsraSkgewogICAg
ICAgICAgICAgICAgICAgICBoZm9udCA9IGNyZWF0ZU1MYW5nRm9udChsYW5nRm9udExpbmssIGhk
YywgQ0pLQ29kZVBhZ2VNYXNrc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAppbmRleCAxZmMwOWYzMmU3ZTEyYTAzNjJlOTM0NDI4ODE3YWFmMGY4NmE4
Y2MzLi5lMjljNWNhZjQ3OTJkM2Y4OTIyMzMyMmFiOGM2YThkMjAwNGRjMzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTEzMSw3ICsxMzEsOCBA
QCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzJiBzZXR0
aW5ncykKICNlbmRpZgogCiAgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnNldFNob3VsZE1v
Y2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkobV9zaG91bGRNb2NrQm9sZFN5c3RlbUZv
bnRGb3JBY2Nlc3NpYmlsaXR5KTsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3Vs
ZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkobV9zaG91bGRNb2NrQm9sZFN5c3Rl
bUZvbnRGb3JBY2Nlc3NpYmlsaXR5KTsKKyAgICAvLyBGSVhNRTogQ2FsbCBzZXRTaG91bGRNb2Nr
Qm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgb24gYWxsIHdvcmtlcnMuCisgICAgRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkp
OwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBBdWRpb0NvbnRleHQ6OnNldERlZmF1bHRT
YW1wbGVSYXRlRm9yVGVzdGluZyhzdGQ6Om51bGxvcHQpOwpAQCAtNTcwLDcgKzU3MSw4IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsU2V0dGluZ3M6OnNldFNob3VsZE1vY2tCb2xkU3lzdGVt
Rm9udEZvckFjY2Vzc2liaWxpdHkoCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAgICBSZW5kZXJUaGVtZTo6c2luZ2xl
dG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShyZXF1aXJl
cyk7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZv
bnRGb3JBY2Nlc3NpYmlsaXR5KHJlcXVpcmVzKTsKKyAgICAvLyBGSVhNRTogQ2FsbCBzZXRTaG91
bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgb24gYWxsIHdvcmtlcnMuCisg
ICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1G
b250Rm9yQWNjZXNzaWJpbGl0eShyZXF1aXJlcyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQyZTljMGQ2ODU4ZWM5MWMzMTljYjIz
MzRjZTBiMjIxNTMzMWZhNmMuLjhlOTk3YzQ1Yjg0ZmYwMTU5MGUyZjJlN2I5ZmIyZTI0MWU5YzMz
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE4NTIsNyArMTg1Miw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZChib29sIGZsYWcpCiAKIHZvaWQgSW50ZXJuYWxzOjppbnZhbGlkYXRlRm9udENh
Y2hlKCkKIHsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGUoKTsKKyAgICBG
b250Q2FjaGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVzKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxz
OjpzZXRGb250U21vb3RoaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdi
NjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uNDMzZDllMWE0NWMyOTg4NTQyYjA1ZTc0YjQ3
MTdhNzcwNTcyOGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcApAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8Rm9udD4gV29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2Ny
aQogewogICAgIEFTU0VSVChtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgIEFTU0VSVCht
X2NvbnRleHQpOwotICAgIHJldHVybiBGb250OjpjcmVhdGUobV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhLT5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3lu
dGhldGljSXRhbGljLCBmb250Q3JlYXRpb25Db250ZXh0KSwgRm9udDo6T3JpZ2luOjpSZW1vdGUs
ICZtX2NvbnRleHQtPmZvbnRDYWNoZSgpKTsKKyAgICByZXR1cm4gRm9udDo6Y3JlYXRlKG1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS0+Zm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udENyZWF0aW9uQ29udGV4dCksIEZvbnQ6
Ok9yaWdpbjo6UmVtb3RlKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OnNldENs
aWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMTg3NmQxNTc3MDhlNzExNGJlOGM3YWE0
YjIxMjJhM2I0ODM1ZmFhMC4uODM1NWY1NmEwZGYwZjczN2EzN2JjOWRlMzdiMWYwMWViMjNjNjE1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyeXB0by5oIgotI2luY2x1ZGUgIkZvbnRDYWNo
ZS5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250
RmFjZVNldC5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Qcm94eS5oIgpAQCAtNjgsNiArNjcs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBo
b3JlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzMCwxMyArNTMwLDYgQEAgQ1NTRm9u
dFNlbGVjdG9yKiBXb3JrZXJHbG9iYWxTY29wZTo6Y3NzRm9udFNlbGVjdG9yKCkKICAgICByZXR1
cm4gbV9jc3NGb250U2VsZWN0b3IuZ2V0KCk7CiB9CiAKLUZvbnRDYWNoZSYgV29ya2VyR2xvYmFs
U2NvcGU6OmZvbnRDYWNoZSgpCi17Ci0gICAgaWYgKCFtX2ZvbnRDYWNoZSkKLSAgICAgICAgbV9m
b250Q2FjaGUgPSBGb250Q2FjaGU6OmNyZWF0ZSgpOwotICAgIHJldHVybiAqbV9mb250Q2FjaGU7
Ci19Ci0KIFJlZjxGb250RmFjZVNldD4gV29ya2VyR2xvYmFsU2NvcGU6OmZvbnRzKCkKIHsKICAg
ICBBU1NFUlQoY3NzRm9udFNlbGVjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCmluZGV4IGU2ZjRlMTIyY2I5ZmU4YTg2OTVlNDMyNjJkMzNhYzgzMmIx
ZTQ4MTQuLjJmZTRmNzMyYjVlY2EyNWI5YTM3NmI4NjgwYWI4ZjMwZGQ3OGVmNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTEzOSw3ICsxMzksNiBA
QCBwdWJsaWM6CiAKICAgICBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpIGZpbmFsOwogICAg
IENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgZmluYWw7Ci0gICAgRm9udENhY2hl
JiBmb250Q2FjaGUoKSBmaW5hbDsKICAgICBSZWY8Rm9udEZhY2VTZXQ+IGZvbnRzKCk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0KFN0cmluZyYg
dXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgYmVnaW5Mb2Fk
aW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7CkBAIC0yMjEsNyArMjIwLDYgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NWYWx1ZVBvb2w+IG1fY3Nz
VmFsdWVQb29sOwogICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fY3NzRm9udFNlbGVjdG9y
OwotICAgIFJlZlB0cjxGb250Q2FjaGU+IG1fZm9udENhY2hlOwogICAgIFJlZmVycmVyUG9saWN5
IG1fcmVmZXJyZXJQb2xpY3k7CiAgICAgU2V0dGluZ3M6OlZhbHVlcyBtX3NldHRpbmdzVmFsdWVz
OwogICAgIFdvcmtlclR5cGUgbV93b3JrZXJUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IGY2ZTg3NjI0NmJmZGQ2YWFkMDA3OWQwZWVjYTNiZjczZGJlNzBm
YmUuLjEwNWJjNmZmOGEyNDVmZmMxMGZkNDg3MTM5MzE2YzQ4YWNmMmIwMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg2OCw4ICs4NjgsOSBAQCBib29sIFdl
YlByb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgpCiB2b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgp
CiB7CiAjaWZuZGVmIE5ERUJVRworICAgIC8vIFRoZXNlIGFyZSBkb25lIGluIGFuIGF0dGVtcHQg
dG8gcmVkdWNlIExFQUsgb3V0cHV0LgogICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2Fy
YmFnZUNvbGxlY3ROb3coKTsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGUo
KTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZhbGlkYXRlKCk7CiAgICAg
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnNldERpc2FibGVkKHRydWUpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCmlu
ZGV4IDkyOGFlN2Q1MWUzZjBiN2Q5MTAyMGM3ZGEyODhlZGUyNDVjMzg1OTUuLjQxYWQxYjA5ODc4
OWRlY2RkYTA0NWMzODU2MTc0NGM5ZjBkMGE5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpAQCAtMTQwLDE3ICsxNDAsMTcgQEAg
KyAoc2l6ZV90KWljb25zV2l0aERhdGFDb3VudAogCiArIChzaXplX3QpY2FjaGVkRm9udERhdGFD
b3VudAogewotICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRDb3VudCgpOwor
ICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Q291bnQoKTsKIH0K
IAogKyAoc2l6ZV90KWNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudAogewotICAgIHJldHVybiBG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmluYWN0aXZlRm9udENvdW50KCk7CisgICAgcmV0dXJuIEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmluYWN0aXZlRm9udENvdW50KCk7CiB9CiAKICsg
KHZvaWQpcHVyZ2VJbmFjdGl2ZUZvbnREYXRhCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24o
KS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAogKyAoc2l6ZV90KWdseXBoUGFnZUNv
dW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5k
ZXggOWM5NmE2N2U5ZDBjMWY5MDQ0MmYwYjQwYzQ0ODI2YjVjNTZiNWEzMy4uMzU2OTgzYzUyYjM3
NDhhNGNkYmNhNWFkOTFmOTUzNTEyYTg4OWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIEhSRVNVTFQgV2Vi
Q29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhQ291bnQoX091dF8gVUlOVCAqY291bnQpCiB7
CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQg
PSAoVUlOVCkgRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Q291bnQoKTsKKyAgICAqY291bnQg
PSAoVUlOVCkgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udENvdW50KCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIxOCwxMyArMjE4LDEzIEBAIEhSRVNVTFQgV2ViQ29yZVN0
YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudChfT3V0XyBVSU5UICpjb3VudCkK
IHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3Vu
dCA9IChVSU5UKSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmluYWN0aXZlRm9udENvdW50KCk7Cisg
ICAgKmNvdW50ID0gKFVJTlQpIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmluYWN0aXZl
Rm9udENvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViQ29yZVN0YXRp
c3RpY3M6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh2b2lkKQogewotICAgIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgRm9udENhY2hlOjpmb3JDdXJy
ZW50VGhyZWFkKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>