<?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>230799</bug_id>
          
          <creation_ts>2021-09-25 17:16:58 -0700</creation_ts>
          <short_desc>Stop parsing font palette things that we can&apos;t implement</short_desc>
          <delta_ts>2021-10-07 16:06:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230926</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230446</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797243</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-25 17:16:58 -0700</bug_when>
    <thetext>It&apos;s better to not parse it in the first place, so @supports works, rather than parse it but silently drop it on the floor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797244</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-25 17:17:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/83537772&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798192</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-28 23:19:11 -0700</bug_when>
    <thetext>This might actually be tricky because different ports will be able to implement different things. We might want to actually hold off on this until the spec is modified. (https://bugs.webkit.org/show_bug.cgi?id=230926)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800404</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-04 23:22:24 -0700</bug_when>
    <thetext>Reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800407</commentid>
    <comment_count>4</comment_count>
      <attachid>440165</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-04 23:40:16 -0700</bug_when>
    <thetext>Created attachment 440165
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800408</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-04 23:40:39 -0700</bug_when>
    <thetext>It&apos;s probably okay for a missing base-palette to serialize out to base-palette:0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800417</commentid>
    <comment_count>6</comment_count>
      <attachid>440168</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-04 23:57:23 -0700</bug_when>
    <thetext>Created attachment 440168
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800424</commentid>
    <comment_count>7</comment_count>
      <attachid>440172</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-05 00:14:06 -0700</bug_when>
    <thetext>Created attachment 440172
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800431</commentid>
    <comment_count>8</comment_count>
      <attachid>440175</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-05 00:30:08 -0700</bug_when>
    <thetext>Created attachment 440175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800432</commentid>
    <comment_count>9</comment_count>
      <attachid>440176</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-05 00:32:07 -0700</bug_when>
    <thetext>Created attachment 440176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800433</commentid>
    <comment_count>10</comment_count>
      <attachid>440177</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-05 00:33:55 -0700</bug_when>
    <thetext>Created attachment 440177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800434</commentid>
    <comment_count>11</comment_count>
      <attachid>440178</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-05 00:38:21 -0700</bug_when>
    <thetext>Created attachment 440178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800437</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-10-05 00:39:50 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801459</commentid>
    <comment_count>13</comment_count>
      <attachid>440178</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-06 17:51:45 -0700</bug_when>
    <thetext>Comment on attachment 440178
Patch

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

Non-reviewer r=me.

&gt; Source/WebCore/css/parser/CSSParserImpl.cpp:703
&gt; +            unsigned key = 0;
&gt;              const auto&amp; pair = downcast&lt;CSSFontPaletteValuesOverrideColorsValue&gt;(item.get());
&gt; -            if (pair.key().isString())
&gt; -                key = pair.key().stringValue();
&gt; -            else if (pair.key().isNumber())
&gt; +            if (pair.key().isNumber())
&gt;                  key = pair.key().value&lt;unsigned&gt;();
&gt;              else
&gt;                  continue;

Nit: Might look nicer as:

const auto&amp; pair = ...;
if (!pair.key().isNumber())
    continue;
auto key = pair.key().value&lt;unsigned&gt;();
```

&gt; Source/WebCore/platform/graphics/FontPaletteValues.h:77
&gt;      enum class Type : uint8_t {
&gt;          Light,
&gt;          Dark,
&gt; -        Integer,
&gt; -        String
&gt; -    } type { Type::String };
&gt; +        Integer
&gt; +    } type { Type::Integer };

(Side note: I find declaring and using types in the one declaration like this unidiomatic.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801510</commentid>
    <comment_count>14</comment_count>
      <attachid>440471</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-06 23:24:15 -0700</bug_when>
    <thetext>Created attachment 440471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801810</commentid>
    <comment_count>15</comment_count>
      <attachid>440471</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-07 15:06:43 -0700</bug_when>
    <thetext>Comment on attachment 440471
Patch

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

&gt; Source/WebCore/css/StyleRule.cpp:333
&gt; +StyleRuleFontPaletteValues::StyleRuleFontPaletteValues(const AtomString&amp; name, const AtomString&amp; fontFamily, std::optional&lt;FontPaletteIndex&gt;&amp;&amp; basePalette, Vector&lt;FontPaletteValues::OverriddenColor&gt;&amp;&amp; overrideColors)

I never know if r-value references are better for small types.

&gt; Source/WebCore/css/StyleRule.h:184
&gt; +    const std::optional&lt;FontPaletteIndex&gt;&amp; basePalette() const

Probably still fine to return by value.

&gt; Source/WebCore/css/parser/CSSParserImpl.cpp:702
&gt; +            key = pair.key().value&lt;unsigned&gt;();

Just declare key on this line.

&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:4860
&gt; +        RefPtr&lt;CSSPrimitiveValue&gt; key = consumeInteger(range, 0);

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801841</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 16:06:11 -0700</bug_when>
    <thetext>Committed r283752 (242674@main): &lt;https://commits.webkit.org/242674@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440165</attachid>
            <date>2021-10-04 23:40:16 -0700</date>
            <delta_ts>2021-10-04 23:57:22 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-230799-20211004234015.patch</filename>
            <type>text/plain</type>
            <size>9628</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1N2M0ZTIwMThjNGEw
YWJlNjg4NzJiZTRmMTEzNTBkMTQ5ZTAyZi4uZmE5ZjkwYjI4OTI5YWI3NThmMGJmNjhiNTlmOTZj
YTIyYmM2ZDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmJhc2VQYWxldHRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCBj
b25zdCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVGb250UGFsZXR0ZVZhbHVlc1J1bGUpOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3VtZUJhc2VQYWxldHRlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpj
b25zdW1lT3ZlcnJpZGVDb2xvcnNEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBhbGV0dGVJ
bmRleDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGFsZXR0
ZUluZGV4OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyk6CisKIDIw
MjEtMTAtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdG9wIHBhcnNpbmcgY29udGV4dC1zZW5zaXRpdmUgY29sb3JzIGluIG92ZXJyaWRlLWNv
bG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNS
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3Bw
CmluZGV4IGFmZmU5YzAxMzUxMDlmNTgzNGExOGQ0ZWZhM2I4MzQxNTM3NzExMjIuLjU1NjlmZjNk
ODBmNWEwZjQ5N2VhODMwNDdhZWQ2ZGEzZDUwMzJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwCkBAIC02NSwxMCArNjUsNiBAQCBTdHJp
bmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSgpIGNvbnN0CiAgICAgICAg
IHJldHVybiAiZGFyayJfczsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVn
ZXI6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5i
YXNlUGFsZXR0ZSgpLmludGVnZXIpOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6
U3RyaW5nOgotICAgICAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0
ZSgpLnN0cmluZy5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlVmFs
dWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5zdHJpbmc7Ci0gICAgICAgIHJldHVybiBTdHJpbmdJbXBs
OjplbXB0eSgpOwogICAgIH0KIH0KIApAQCAtMTA2LDEwICsxMDIsNiBAQCBTdHJpbmcgQ1NTRm9u
dFBhbGV0dGVWYWx1ZXNSdWxlOjpjc3NUZXh0KCkgY29uc3QKICAgICBjYXNlIEZvbnRQYWxldHRl
SW5kZXg6OlR5cGU6OkludGVnZXI6CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0
dGU6ICIsIG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLmludGVnZXIsICI7
ICIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OlN0
cmluZzoKLSAgICAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUo
KS5zdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxl
dHRlOiAiLCBzZXJpYWxpemVTdHJpbmcobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxl
dHRlKCkuc3RyaW5nKSwgIjsgIik7Ci0gICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmICgh
bV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKCkuaXNFbXB0eSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAppbmRleCAyOWY3ZjMw
ZDNkNDJhODM5MjYxODg5YTNhODc4MjJjOWU4MTZiMTJmLi42N2RmODU4ODE4MGE4NjZkMDlkZjZj
ZThkYWUzMzFhMjJmYzJkM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VySW1wbC5jcHAKQEAgLTY4Myw5ICs2ODMsNyBAQCBSZWZQdHI8U3R5bGVSdWxlRm9udFBhbGV0
dGVWYWx1ZXM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVGb250UGFsZXR0ZVZhbHVlc1J1bGUoQwog
ICAgIEZvbnRQYWxldHRlSW5kZXggYmFzZVBhbGV0dGU7CiAgICAgaWYgKGF1dG8gYmFzZVBhbGV0
dGVWYWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYXNl
UGFsZXR0ZSkpIHsKICAgICAgICAgY29uc3QgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKmJhc2VQYWxldHRlVmFsdWUpOwotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGJhc2VQYWxldHRlID0gRm9udFBh
bGV0dGVJbmRleChwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKLSAgICAgICAgZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LmlzTnVtYmVyKCkpCiAgICAgICAgICAgICBiYXNlUGFsZXR0ZSA9IEZvbnRQYWxldHRlSW5kZXgo
cHJpbWl0aXZlVmFsdWUudmFsdWU8aW50NjRfdD4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxpZ2h0KQogICAgICAgICAgICAgYmFzZVBh
bGV0dGUgPSBGb250UGFsZXR0ZUluZGV4KEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0KTsK
QEAgLTY5NywxMSArNjk1LDkgQEAgUmVmUHRyPFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzPiBD
U1NQYXJzZXJJbXBsOjpjb25zdW1lRm9udFBhbGV0dGVWYWx1ZXNSdWxlKEMKICAgICBpZiAoYXV0
byBvdmVycmlkZUNvbG9yc1ZhbHVlID0gcHJvcGVydGllcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eU92ZXJyaWRlQ29sb3JzKSkgewogICAgICAgICBjb25zdCBhdXRvJiBsaXN0ID0g
ZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigqb3ZlcnJpZGVDb2xvcnNWYWx1ZSk7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgaXRlbSA6IGxpc3QpIHsKLSAgICAgICAgICAgIEZvbnRQYWxldHRlVmFs
dWVzOjpQYWxldHRlQ29sb3JJbmRleCBrZXkobnVsbEF0b20oKSk7CisgICAgICAgICAgICB1bnNp
Z25lZCBrZXkgPSAwOwogICAgICAgICAgICAgY29uc3QgYXV0byYgcGFpciA9IGRvd25jYXN0PENT
U0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1ZT4oaXRlbS5nZXQoKSk7Ci0gICAg
ICAgICAgICBpZiAocGFpci5rZXkoKS5pc1N0cmluZygpKQotICAgICAgICAgICAgICAgIGtleSA9
IHBhaXIua2V5KCkuc3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHBhaXIua2V5
KCkuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGlmIChwYWlyLmtleSgpLmlzTnVtYmVyKCkpCiAg
ICAgICAgICAgICAgICAga2V5ID0gcGFpci5rZXkoKS52YWx1ZTx1bnNpZ25lZD4oKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggNDRlYjgxNjJlZTUwYWZk
YWZmM2M0OTQ5YmFmMTdhYTAzNmQyZGY0Zi4uMjgxOGY3ODQwN2JkM2M0ODM0YzkxNTliOTAxNmZm
MzdmZThkZTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5jcHAKQEAgLTQ4NTAsOCArNDg1MCw2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVCYXNlUGFsZXR0ZURlc2NyaXB0b3IoQ1NTUGFyc2VyVG9rZW5SYW5n
CiB7CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGlnaHQsIENT
U1ZhbHVlRGFyaz4ocmFuZ2UpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIGlmIChhdXRv
IHJlc3VsdCA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpKQotICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CiB9CiAKQEAgLTQ4NTksMTEgKzQ4
NTcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZU92ZXJyaWRlQ29sb3Jz
RGVzY3JpcHRvcihDU1NQYXJzZXJUb2tlblJhbmdlJgogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZG8g
ewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGtleTsKLSAgICAgICAgaWYgKHJh
bmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pCi0gICAgICAgICAgICBrZXkgPSBjb25z
dW1lU3RyaW5nKHJhbmdlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAga2V5ID0gY29uc3Vt
ZUludGVnZXIocmFuZ2UsIDApOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGtl
eSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKaW5kZXggNWM1NjYxYTUzZGYwODAxMjc2YWQ4
ODkxYmY0ZWEyZWE4YTMxYTc3OS4uNWUzNTEwNTU1ZGZkMmNhZTMxZmQ0OTdjNWMwNmE2ZDUwODA1
Yzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBh
bGV0dGVWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGFsZXR0ZVZhbHVlcy5oCkBAIC01MSwxNSArNTEsOSBAQCBzdHJ1Y3QgRm9udFBhbGV0dGVJbmRl
eCB7CiAgICAgewogICAgIH0KIAotICAgIEZvbnRQYWxldHRlSW5kZXgoY29uc3QgQXRvbVN0cmlu
ZyYgc3RyaW5nKQotICAgICAgICA6IHR5cGUoVHlwZTo6U3RyaW5nKQotICAgICAgICAsIHN0cmlu
ZyhzdHJpbmcpCi0gICAgewotICAgIH0KLQogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIHR5cGUgIT0gVHlwZTo6U3RyaW5nIHx8ICFzdHJpbmcuaXNOdWxs
KCk7CisgICAgICAgIHJldHVybiB0eXBlICE9IFR5cGU6OkludGVnZXIgfHwgaW50ZWdlcjsKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBhbGV0dGVJbmRleCYgb3RoZXIp
IGNvbnN0CkBAIC02OCw4ICs2Miw2IEBAIHN0cnVjdCBGb250UGFsZXR0ZUluZGV4IHsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6SW50ZWdlcikK
ICAgICAgICAgICAgIHJldHVybiBpbnRlZ2VyID09IG90aGVyLmludGVnZXI7Ci0gICAgICAgIGlm
ICh0eXBlID09IFR5cGU6OlN0cmluZykKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmcgPT0gb3Ro
ZXIuc3RyaW5nOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTgxLDEyICs3Mywx
MCBAQCBzdHJ1Y3QgRm9udFBhbGV0dGVJbmRleCB7CiAgICAgZW51bSBjbGFzcyBUeXBlIDogdWlu
dDhfdCB7CiAgICAgICAgIExpZ2h0LAogICAgICAgICBEYXJrLAotICAgICAgICBJbnRlZ2VyLAot
ICAgICAgICBTdHJpbmcKLSAgICB9IHR5cGUgeyBUeXBlOjpTdHJpbmcgfTsKKyAgICAgICAgSW50
ZWdlcgorICAgIH0gdHlwZSB7IFR5cGU6OkludGVnZXIgfTsKIAogICAgIHVuc2lnbmVkIGludGVn
ZXIgeyAwIH07Ci0gICAgQXRvbVN0cmluZyBzdHJpbmc7CiB9OwogCiBpbmxpbmUgdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIHBhbGV0dGVJbmRleCkKQEAg
LTk0LDE0ICs4NCwxMSBAQCBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZv
bnRQYWxldHRlSW5kZXgmIHBhbGV0dGVJbmRleCkKICAgICBhZGQoaGFzaGVyLCBwYWxldHRlSW5k
ZXgudHlwZSk7CiAgICAgaWYgKHBhbGV0dGVJbmRleC50eXBlID09IEZvbnRQYWxldHRlSW5kZXg6
OlR5cGU6OkludGVnZXIpCiAgICAgICAgIGFkZChoYXNoZXIsIHBhbGV0dGVJbmRleC5pbnRlZ2Vy
KTsKLSAgICBlbHNlIGlmIChwYWxldHRlSW5kZXgudHlwZSA9PSBGb250UGFsZXR0ZUluZGV4OjpU
eXBlOjpTdHJpbmcpCi0gICAgICAgIGFkZChoYXNoZXIsIHBhbGV0dGVJbmRleC5zdHJpbmcpOwog
fQogCiBjbGFzcyBGb250UGFsZXR0ZVZhbHVlcyB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgUGFsZXR0
ZUNvbG9ySW5kZXggPSBWYXJpYW50PEF0b21TdHJpbmcsIHVuc2lnbmVkPjsKLSAgICB1c2luZyBP
dmVycmlkZGVuQ29sb3IgPSBzdGQ6OnBhaXI8UGFsZXR0ZUNvbG9ySW5kZXgsIENvbG9yPjsKKyAg
ICB1c2luZyBPdmVycmlkZGVuQ29sb3IgPSBzdGQ6OnBhaXI8dW5zaWduZWQsIENvbG9yPjsKIAog
ICAgIEZvbnRQYWxldHRlVmFsdWVzKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAKaW5kZXggMGIwOWU0NDZjMTMwZmQxZWI0NjBlNWFiOWQyNGFiNjJiMTU4ZGU1OS4uM2U4NDMx
YTg1ZDA0OWRiZDQ3OGI2ODQ5MzRlOTZhYjk2NmExYzdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcApAQCAtNDcyLDI0ICs0NzIsMTYgQEAgc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlc0ZvckN1
c3RvbUZvbnRQYWxldHRlcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1
dGUsIG51bWJlci5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEZvbnRQ
YWxldHRlSW5kZXg6OlR5cGU6OlN0cmluZzoKLSAgICAgICAgLy8gVGhpcyBpcyB1bmltcGxlbWVu
dGFibGUgaW4gQ29yZSBUZXh0LgotICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoIW92
ZXJyaWRlQ29sb3JzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIG92ZXJyaWRlRGljdGlvbmFy
eSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG92ZXJyaWRl
Q29sb3JzKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBwYWxldHRlQ29sb3JJbmRleCA9IHBh
aXIuZmlyc3Q7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBjb2xvciA9IHBhaXIuc2Vjb25kOwot
ICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihwYWxldHRlQ29sb3JJbmRleCwgW10gKGNvbnN0IEF0
b21TdHJpbmcmKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1bmltcGxlbWVudGFibGUg
aW4gQ29yZSBUZXh0LgotICAgICAgICAgICAgfSwgWyZdICh1bnNpZ25lZCBpbmRleCkgewotICAg
ICAgICAgICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBpbmRleDsgLy8gVGhlcmUgaXMgbm8ga0NG
TnVtYmVyVUludFR5cGUuCi0gICAgICAgICAgICAgICAgYXV0byBudW1iZXIgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZy
YXdJbmRleCkpOwotICAgICAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3QgPSBjYWNoZWRDR0Nv
bG9yKGNvbG9yKTsKLSAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShvdmVycmlk
ZURpY3Rpb25hcnkuZ2V0KCksIG51bWJlci5nZXQoKSwgY29sb3JPYmplY3QpOwotICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gcGFpci5maXJzdDsgLy8gVGhl
cmUgaXMgbm8ga0NGTnVtYmVyVUludFR5cGUuCisgICAgICAgICAgICBhdXRvIG51bWJlciA9IGFk
b3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0
VHlwZSwgJnJhd0luZGV4KSk7CisgICAgICAgICAgICBhdXRvIGNvbG9yT2JqZWN0ID0gY2FjaGVk
Q0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShvdmVycmlk
ZURpY3Rpb25hcnkuZ2V0KCksIG51bWJlci5nZXQoKSwgY29sb3JPYmplY3QpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRDb3VudChvdmVycmlkZURpY3Rpb25hcnkuZ2V0
KCkpKQogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9u
dFBhbGV0dGVDb2xvcnNBdHRyaWJ1dGUsIG92ZXJyaWRlRGljdGlvbmFyeS5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440168</attachid>
            <date>2021-10-04 23:57:23 -0700</date>
            <delta_ts>2021-10-05 00:14:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-230799-20211004235723.patch</filename>
            <type>text/plain</type>
            <size>11120</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1N2M0ZTIwMThjNGEw
YWJlNjg4NzJiZTRmMTEzNTBkMTQ5ZTAyZi4uYzM3NDY5ZjYwMTY2ZDJlMWY1YmJhMjVmMzc5ZThk
OWM0ZWJiZDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEwLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmJhc2VQYWxldHRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6b3ZlcnJpZGVD
b2xvcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxl
Ojpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFs
dWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN1bWVPdmVycmlkZUNvbG9yc0Rlc2NyaXB0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGFsZXR0ZUluZGV4OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQYWxldHRlSW5kZXg6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRBdHRyaWJ1dGVzRm9yQ3VzdG9tRm9udFBhbGV0
dGVzKToKKwogMjAyMS0xMC0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN0b3AgcGFyc2luZyBjb250ZXh0LXNlbnNpdGl2ZSBjb2xvcnMgaW4g
b3ZlcnJpZGUtY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250UGFs
ZXR0ZVZhbHVlc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFs
dWVzUnVsZS5jcHAKaW5kZXggYWZmZTljMDEzNTEwOWY1ODM0YTE4ZDRlZmEzYjgzNDE1Mzc3MTEy
Mi4uOTg0YWU3NjAzYmYxMGJkYTk4NjA3MTllNWI0MjZlOTZkZDlmZmFhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAKQEAgLTY1LDEwICs2
NSw2IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmJhc2VQYWxldHRlKCkgY29u
c3QKICAgICAgICAgcmV0dXJuICJkYXJrIl9zOwogICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6
VHlwZTo6SW50ZWdlcjoKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobV9mb250UGFsZXR0ZVZh
bHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuaW50ZWdlcik7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUlu
ZGV4OjpUeXBlOjpTdHJpbmc6Ci0gICAgICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUt
PmJhc2VQYWxldHRlKCkuc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fZm9u
dFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnN0cmluZzsKLSAgICAgICAgcmV0dXJu
IFN0cmluZ0ltcGw6OmVtcHR5KCk7CiAgICAgfQogfQogCkBAIC03OSwxMiArNzUsNyBAQCBTdHJp
bmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpvdmVycmlkZUNvbG9ycygpIGNvbnN0CiAgICAg
ICAgIGlmIChpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAgICAgICAgY29u
c3QgYXV0byYgaXRlbSA9IG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygp
W2ldOwotICAgICAgICBXVEY6OnN3aXRjaE9uKGl0ZW0uZmlyc3QsIFsmXSAoY29uc3QgQXRvbVN0
cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNlcmlhbGl6ZVN0cmlu
ZyhzdHJpbmcpKTsKLSAgICAgICAgfSwgWyZdIChpbnQ2NF90IGluZGV4KSB7Ci0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGluZGV4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnLCBzZXJpYWxpemF0aW9uRm9yQ1NTKGl0ZW0uc2Vjb25kKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoaXRlbS5maXJzdCwgJyAnLCBzZXJpYWxpemF0aW9uRm9yQ1NTKGl0ZW0uc2Vjb25k
KSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KQEAgLTEwNiwxMCAr
OTcsNiBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpjc3NUZXh0KCkgY29uc3QK
ICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVnZXI6CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6ICIsIG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNl
UGFsZXR0ZSgpLmludGVnZXIsICI7ICIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQ
YWxldHRlSW5kZXg6OlR5cGU6OlN0cmluZzoKLSAgICAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFs
dWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5zdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiYmFzZS1wYWxldHRlOiAiLCBzZXJpYWxpemVTdHJpbmcobV9mb250UGFsZXR0
ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuc3RyaW5nKSwgIjsgIik7Ci0gICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29s
b3JzKCkuaXNFbXB0eSgpKSB7CkBAIC0xMTcsMTMgKzEwNCw3IEBAIFN0cmluZyBDU1NGb250UGFs
ZXR0ZVZhbHVlc1J1bGU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnLCcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIFdU
Rjo6c3dpdGNoT24obV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0u
Zmlyc3QsIFsmXSAoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgewotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHNlcmlhbGl6ZVN0cmluZyhuYW1lLnN0cmluZygpKSk7Ci0gICAgICAgICAg
ICB9LCBbJl0gKHVuc2lnbmVkIGluZGV4KSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoaW5kZXgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
ICcsIHNlcmlhbGl6YXRpb25Gb3JDU1MobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRl
Q29sb3JzKClbaV0uc2Vjb25kKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIG1f
Zm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ldLmZpcnN0LCAnICcsIHNl
cmlhbGl6YXRpb25Gb3JDU1MobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3Jz
KClbaV0uc2Vjb25kKSk7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjsgIik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5k
ZXggMjlmN2YzMGQzZDQyYTgzOTI2MTg4OWEzYTg3ODIyYzllODE2YjEyZi4uNjdkZjg1ODgxODBh
ODY2ZDA5ZGY2Y2U4ZGFlMzMxYTIyZmMyZDNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC02ODMsOSArNjgzLDcgQEAgUmVmUHRyPFN0eWxlUnVs
ZUZvbnRQYWxldHRlVmFsdWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRm9udFBhbGV0dGVWYWx1
ZXNSdWxlKEMKICAgICBGb250UGFsZXR0ZUluZGV4IGJhc2VQYWxldHRlOwogICAgIGlmIChhdXRv
IGJhc2VQYWxldHRlVmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5QmFzZVBhbGV0dGUpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpiYXNlUGFsZXR0ZVZhbHVlKTsKLSAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICBiYXNlUGFsZXR0
ZSA9IEZvbnRQYWxldHRlSW5kZXgocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgYmFzZVBhbGV0dGUgPSBGb250UGFs
ZXR0ZUluZGV4KHByaW1pdGl2ZVZhbHVlLnZhbHVlPGludDY0X3Q+KCkpOwogICAgICAgICBlbHNl
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMaWdodCkKICAgICAgICAg
ICAgIGJhc2VQYWxldHRlID0gRm9udFBhbGV0dGVJbmRleChGb250UGFsZXR0ZUluZGV4OjpUeXBl
OjpMaWdodCk7CkBAIC02OTcsMTEgKzY5NSw5IEBAIFJlZlB0cjxTdHlsZVJ1bGVGb250UGFsZXR0
ZVZhbHVlcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFsdWVzUnVsZShDCiAg
ICAgaWYgKGF1dG8gb3ZlcnJpZGVDb2xvcnNWYWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlPdmVycmlkZUNvbG9ycykpIHsKICAgICAgICAgY29uc3QgYXV0
byYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKm92ZXJyaWRlQ29sb3JzVmFsdWUpOwog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBsaXN0KSB7Ci0gICAgICAgICAgICBGb250
UGFsZXR0ZVZhbHVlczo6UGFsZXR0ZUNvbG9ySW5kZXgga2V5KG51bGxBdG9tKCkpOworICAgICAg
ICAgICAgdW5zaWduZWQga2V5ID0gMDsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHBhaXIgPSBk
b3duY2FzdDxDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29sb3JzVmFsdWU+KGl0ZW0uZ2V0
KCkpOwotICAgICAgICAgICAgaWYgKHBhaXIua2V5KCkuaXNTdHJpbmcoKSkKLSAgICAgICAgICAg
ICAgICBrZXkgPSBwYWlyLmtleSgpLnN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICBlbHNlIGlm
IChwYWlyLmtleSgpLmlzTnVtYmVyKCkpCisgICAgICAgICAgICBpZiAocGFpci5rZXkoKS5pc051
bWJlcigpKQogICAgICAgICAgICAgICAgIGtleSA9IHBhaXIua2V5KCkudmFsdWU8dW5zaWduZWQ+
KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ0ZWI4
MTYyZWU1MGFmZGFmZjNjNDk0OWJhZjE3YWEwMzZkMmRmNGYuLjI4MThmNzg0MDdiZDNjNDgzNGM5
MTU5YjkwMTZmZjM3ZmU4ZGU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00ODUwLDggKzQ4NTAsNiBAQCBzdGF0aWMgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9yKENTU1BhcnNl
clRva2VuUmFuZwogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZUxpZ2h0LCBDU1NWYWx1ZURhcms+KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICBpZiAoYXV0byByZXN1bHQgPSBjb25zdW1lU3RyaW5nKHJhbmdlKSkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICByZXR1cm4gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOwogfQogCkBAIC00
ODU5LDExICs0ODU3LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVPdmVy
cmlkZUNvbG9yc0Rlc2NyaXB0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYKIHsKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwogICAgIGRvIHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBrZXk7Ci0gICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKQotICAgICAgICAgICAg
a2V5ID0gY29uc3VtZVN0cmluZyhyYW5nZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGtl
eSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBrZXkgPSBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CiAgICAgICAgIGlmICgha2V5
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCmluZGV4IDVjNTY2MWE1M2Rm
MDgwMTI3NmFkODg5MWJmNGVhMmVhOGEzMWE3NzkuLjVlMzUxMDU1NWRmZDJjYWUzMWZkNDk3YzVj
MDZhNmQ1MDgwNWM5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaApAQCAtNTEsMTUgKzUxLDkgQEAgc3RydWN0IEZvbnRQ
YWxldHRlSW5kZXggewogICAgIHsKICAgICB9CiAKLSAgICBGb250UGFsZXR0ZUluZGV4KGNvbnN0
IEF0b21TdHJpbmcmIHN0cmluZykKLSAgICAgICAgOiB0eXBlKFR5cGU6OlN0cmluZykKLSAgICAg
ICAgLCBzdHJpbmcoc3RyaW5nKQotICAgIHsKLSAgICB9Ci0KICAgICBvcGVyYXRvciBib29sKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlICE9IFR5cGU6OlN0cmluZyB8fCAhc3Ry
aW5nLmlzTnVsbCgpOworICAgICAgICByZXR1cm4gdHlwZSAhPSBUeXBlOjpJbnRlZ2VyIHx8IGlu
dGVnZXI7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQYWxldHRlSW5k
ZXgmIG90aGVyKSBjb25zdApAQCAtNjgsOCArNjIsNiBAQCBzdHJ1Y3QgRm9udFBhbGV0dGVJbmRl
eCB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh0eXBlID09IFR5cGU6
OkludGVnZXIpCiAgICAgICAgICAgICByZXR1cm4gaW50ZWdlciA9PSBvdGhlci5pbnRlZ2VyOwot
ICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gc3Ry
aW5nID09IG90aGVyLnN0cmluZzsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC04
MSwxMiArNzMsMTAgQEAgc3RydWN0IEZvbnRQYWxldHRlSW5kZXggewogICAgIGVudW0gY2xhc3Mg
VHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMaWdodCwKICAgICAgICAgRGFyaywKLSAgICAgICAg
SW50ZWdlciwKLSAgICAgICAgU3RyaW5nCi0gICAgfSB0eXBlIHsgVHlwZTo6U3RyaW5nIH07Cisg
ICAgICAgIEludGVnZXIKKyAgICB9IHR5cGUgeyBUeXBlOjpJbnRlZ2VyIH07CiAKICAgICB1bnNp
Z25lZCBpbnRlZ2VyIHsgMCB9OwotICAgIEF0b21TdHJpbmcgc3RyaW5nOwogfTsKIAogaW5saW5l
IHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBwYWxldHRl
SW5kZXgpCkBAIC05NCwxNCArODQsMTEgQEAgaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVy
LCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBwYWxldHRlSW5kZXgpCiAgICAgYWRkKGhhc2hlciwg
cGFsZXR0ZUluZGV4LnR5cGUpOwogICAgIGlmIChwYWxldHRlSW5kZXgudHlwZSA9PSBGb250UGFs
ZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyKQogICAgICAgICBhZGQoaGFzaGVyLCBwYWxldHRlSW5k
ZXguaW50ZWdlcik7Ci0gICAgZWxzZSBpZiAocGFsZXR0ZUluZGV4LnR5cGUgPT0gRm9udFBhbGV0
dGVJbmRleDo6VHlwZTo6U3RyaW5nKQotICAgICAgICBhZGQoaGFzaGVyLCBwYWxldHRlSW5kZXgu
c3RyaW5nKTsKIH0KIAogY2xhc3MgRm9udFBhbGV0dGVWYWx1ZXMgewogcHVibGljOgotICAgIHVz
aW5nIFBhbGV0dGVDb2xvckluZGV4ID0gVmFyaWFudDxBdG9tU3RyaW5nLCB1bnNpZ25lZD47Ci0g
ICAgdXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpwYWlyPFBhbGV0dGVDb2xvckluZGV4LCBD
b2xvcj47CisgICAgdXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpwYWlyPHVuc2lnbmVkLCBD
b2xvcj47CiAKICAgICBGb250UGFsZXR0ZVZhbHVlcygpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwCmluZGV4IDBiMDllNDQ2YzEzMGZkMWViNDYwZTVhYjlkMjRhYjYyYjE1OGRl
NTkuLjNlODQzMWE4NWQwNDlkYmQ0NzhiNjg0OTM0ZTk2YWI5NjZhMWM3ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAKQEAgLTQ3MiwyNCArNDcyLDE2IEBAIHN0YXRpYyB2b2lkIGFkZEF0dHJp
YnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRyaWJ1
dGVzCiAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJpYnV0ZXMsIGtDVEZvbnRQYWxl
dHRlQXR0cmlidXRlLCBudW1iZXIuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpTdHJpbmc6Ci0gICAgICAgIC8vIFRoaXMgaXMg
dW5pbXBsZW1lbnRhYmxlIGluIENvcmUgVGV4dC4KLSAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgaWYgKCFvdmVycmlkZUNvbG9ycy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBvdmVycmlk
ZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBvdmVycmlkZUNvbG9ycykgewotICAgICAgICAgICAgY29uc3QgYXV0byYgcGFsZXR0ZUNvbG9y
SW5kZXggPSBwYWlyLmZpcnN0OwogICAgICAgICAgICAgY29uc3QgYXV0byYgY29sb3IgPSBwYWly
LnNlY29uZDsKLSAgICAgICAgICAgIFdURjo6c3dpdGNoT24ocGFsZXR0ZUNvbG9ySW5kZXgsIFtd
IChjb25zdCBBdG9tU3RyaW5nJikgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdW5pbXBs
ZW1lbnRhYmxlIGluIENvcmUgVGV4dC4KLSAgICAgICAgICAgIH0sIFsmXSAodW5zaWduZWQgaW5k
ZXgpIHsKLSAgICAgICAgICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gaW5kZXg7IC8vIFRoZXJl
IGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgotICAgICAgICAgICAgICAgIGF1dG8gbnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50
NjRUeXBlLCAmcmF3SW5kZXgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbG9yT2JqZWN0ID0g
Y2FjaGVkQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUob3ZlcnJpZGVEaWN0aW9uYXJ5LmdldCgpLCBudW1iZXIuZ2V0KCksIGNvbG9yT2JqZWN0KTsK
LSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IHBhaXIuZmly
c3Q7IC8vIFRoZXJlIGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgorICAgICAgICAgICAgYXV0byBu
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlclNJbnQ2NFR5cGUsICZyYXdJbmRleCkpOworICAgICAgICAgICAgYXV0byBjb2xvck9iamVj
dCA9IGNhY2hlZENHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUob3ZlcnJpZGVEaWN0aW9uYXJ5LmdldCgpLCBudW1iZXIuZ2V0KCksIGNvbG9yT2JqZWN0KTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0Q291bnQob3ZlcnJpZGVEaWN0
aW9uYXJ5LmdldCgpKSkKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJpYnV0
ZXMsIGtDVEZvbnRQYWxldHRlQ29sb3JzQXR0cmlidXRlLCBvdmVycmlkZURpY3Rpb25hcnkuZ2V0
KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440172</attachid>
            <date>2021-10-05 00:14:06 -0700</date>
            <delta_ts>2021-10-05 00:30:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-230799-20211005001405.patch</filename>
            <type>text/plain</type>
            <size>18803</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1N2M0ZTIwMThjNGEw
YWJlNjg4NzJiZTRmMTEzNTBkMTQ5ZTAyZi4uMWJkNjkxNTI3ODc3N2U0NzJkYTVkNWJmZDViMWVm
MzEwMjkzZWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEwLTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmJhc2VQYWxldHRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6b3ZlcnJpZGVD
b2xvcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxl
Ojpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzOjpTdHlsZVJ1bGVGb250UGFsZXR0
ZVZhbHVlcyk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpj
b25zdW1lRm9udFBhbGV0dGVWYWx1ZXNSdWxlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNlUGFsZXR0ZURl
c2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZU92ZXJyaWRlQ29sb3JzRGVzY3Jp
cHRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQYWxldHRlSW5kZXg6Om9wZXJhdG9yIGJvb2wgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBhbGV0dGVJbmRleDo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBhbGV0dGVW
YWx1ZXM6OkZvbnRQYWxldHRlVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQYWxldHRl
VmFsdWVzOjpiYXNlUGFsZXR0ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXR0cmli
dXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyk6CisKIDIwMjEtMTAtMDQgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHBhcnNpbmcgY29udGV4
dC1zZW5zaXRpdmUgY29sb3JzIGluIG92ZXJyaWRlLWNvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwCmluZGV4IGFmZmU5YzAxMzUxMDlmNTgz
NGExOGQ0ZWZhM2I4MzQxNTM3NzExMjIuLjFiNzc5MWJhMjBmZGMyZDVkMDUyNjQ3MjNmZGJjM2My
MDlhYTQyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250UGFsZXR0ZVZh
bHVlc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250UGFsZXR0ZVZhbHVl
c1J1bGUuY3BwCkBAIC01OCwxNyArNTgsMTYgQEAgU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVz
UnVsZTo6Zm9udEZhbWlseSgpIGNvbnN0CiAKIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1
bGU6OmJhc2VQYWxldHRlKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVWYWx1
ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnR5cGUpIHsKKyAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1
ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpKQorICAgICAgICByZXR1cm4gIiJfczsKKworICAgIHN3aXRj
aCAobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCktPnR5cGUpIHsKICAgICBj
YXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0OgogICAgICAgICByZXR1cm4gImxpZ2h0
Il9zOwogICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6RGFyazoKICAgICAgICAgcmV0
dXJuICJkYXJrIl9zOwogICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6SW50ZWdlcjoK
LSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQ
YWxldHRlKCkuaW50ZWdlcik7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpTdHJp
bmc6Ci0gICAgICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCku
c3RyaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fZm9udFBhbGV0dGVWYWx1ZXNS
dWxlLT5iYXNlUGFsZXR0ZSgpLnN0cmluZzsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVt
cHR5KCk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxl
LT5iYXNlUGFsZXR0ZSgpLT5pbnRlZ2VyKTsKICAgICB9CiB9CiAKQEAgLTc5LDEyICs3OCw3IEBA
IFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6Om92ZXJyaWRlQ29sb3JzKCkgY29uc3QK
ICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAg
ICBjb25zdCBhdXRvJiBpdGVtID0gbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29s
b3JzKClbaV07Ci0gICAgICAgIFdURjo6c3dpdGNoT24oaXRlbS5maXJzdCwgWyZdIChjb25zdCBB
dG9tU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc2VyaWFsaXpl
U3RyaW5nKHN0cmluZykpOwotICAgICAgICB9LCBbJl0gKGludDY0X3QgaW5kZXgpIHsKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoaW5kZXgpOwotICAgICAgICB9KTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcsIHNlcmlhbGl6YXRpb25Gb3JDU1MoaXRlbS5zZWNvbmQpKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChpdGVtLmZpcnN0LCAnICcsIHNlcmlhbGl6YXRpb25Gb3JDU1MoaXRlbS5z
ZWNvbmQpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQpAQCAtOTYs
MjAgKzkwLDE4IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmNzc1RleHQoKSBj
b25zdAogICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmZvbnRGYW1pbHkoKS5pc051
bGwoKSkKICAgICAgICAgYnVpbGRlci5hcHBlbmQoImZvbnQtZmFtaWx5OiAiLCBtX2ZvbnRQYWxl
dHRlVmFsdWVzUnVsZS0+Zm9udEZhbWlseSgpLCAiOyAiKTsKIAotICAgIHN3aXRjaCAobV9mb250
UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkudHlwZSkgewotICAgIGNhc2UgRm9udFBh
bGV0dGVJbmRleDo6VHlwZTo6TGlnaHQ6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBh
bGV0dGU6IGxpZ2h0OyAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUlu
ZGV4OjpUeXBlOjpEYXJrOgotICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxldHRlOiBk
YXJrOyAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBl
OjpJbnRlZ2VyOgotICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxldHRlOiAiLCBtX2Zv
bnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5pbnRlZ2VyLCAiOyAiKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpTdHJpbmc6Ci0gICAg
ICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuc3RyaW5nLmlz
TnVsbCgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2UtcGFsZXR0ZTogIiwgc2Vy
aWFsaXplU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnN0cmlu
ZyksICI7ICIpOwotICAgICAgICBicmVhazsKKyAgICBpZiAobV9mb250UGFsZXR0ZVZhbHVlc1J1
bGUtPmJhc2VQYWxldHRlKCkpIHsKKyAgICAgICAgc3dpdGNoIChtX2ZvbnRQYWxldHRlVmFsdWVz
UnVsZS0+YmFzZVBhbGV0dGUoKS0+dHlwZSkgeworICAgICAgICBjYXNlIEZvbnRQYWxldHRlSW5k
ZXg6OlR5cGU6OkxpZ2h0OgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2UtcGFsZXR0
ZTogbGlnaHQ7ICIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRm9udFBhbGV0
dGVJbmRleDo6VHlwZTo6RGFyazoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBh
bGV0dGU6IGRhcms7ICIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRm9udFBh
bGV0dGVJbmRleDo6VHlwZTo6SW50ZWdlcjoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJi
YXNlLXBhbGV0dGU6ICIsIG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT5p
bnRlZ2VyLCAiOyAiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKS5pc0VtcHR5
KCkpIHsKQEAgLTExNywxMyArMTA5LDcgQEAgU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVs
ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mb250
UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbiht
X2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKVtpXS5maXJzdCwgWyZdIChj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
c2VyaWFsaXplU3RyaW5nKG5hbWUuc3RyaW5nKCkpKTsKLSAgICAgICAgICAgIH0sIFsmXSAodW5z
aWduZWQgaW5kZXgpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChpbmRleCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJywgc2VyaWFsaXph
dGlvbkZvckNTUyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKVtpXS5z
ZWNvbmQpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJywgbV9mb250UGFsZXR0ZVZh
bHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0uZmlyc3QsICcgJywgc2VyaWFsaXphdGlvbkZv
ckNTUyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKVtpXS5zZWNvbmQp
KTsKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiOyAiKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IGI4ODljZTlkYWU5MGYwNTZjMDA4YTk5NDRiZmQzODYw
ODhhMTY1NjAuLmE4NzMwMDllNDAzYzIzYTNjYjcwOWY3ZDlhNThlYmQzNWZlN2M3NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC0zMzAsMTEgKzMzMCwxMSBAQCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBTdHlsZVJ1bGVGb250RmFjZTo6bXV0YWJsZVByb3BlcnRpZXMoKQogICAgIHJl
dHVybiBkb3duY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPihtX3Byb3BlcnRpZXMuZ2V0KCkp
OwogfQogCi1TdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6U3R5bGVSdWxlRm9udFBhbGV0dGVW
YWx1ZXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZhbWls
eSwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFsZXR0
ZVZhbHVlczo6T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQorU3R5bGVSdWxlRm9u
dFBhbGV0dGVWYWx1ZXM6OlN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRGYW1pbHksIHN0ZDo6b3B0aW9uYWw8Rm9u
dFBhbGV0dGVJbmRleD4mJiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpP
dmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKFN0
eWxlUnVsZVR5cGU6OkZvbnRQYWxldHRlVmFsdWVzKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAg
LCBtX2ZvbnRGYW1pbHkoZm9udEZhbWlseSkKLSAgICAsIG1fZm9udFBhbGV0dGVWYWx1ZXMoYmFz
ZVBhbGV0dGUsIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKQorICAgICwgbV9mb250UGFsZXR0ZVZh
bHVlcyhXVEZNb3ZlKGJhc2VQYWxldHRlKSwgV1RGTW92ZShvdmVycmlkZUNvbG9ycykpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCAxM2IzNDBlMzU4NDY5MjAzYTJhZDc5MGI0MDU2
YzhhMzVhNTg0NmM1Li44NTJlY2NhM2U3ODNkM2EyZjAyOTI2OGY1ZDI0Yzg5ZWFmYTFlMWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0xNTksOSArMTU5LDkgQEAgcHJpdmF0ZToKIAogY2xh
c3MgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMgZmluYWwgOiBwdWJsaWMgU3R5bGVSdWxlQmFz
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcz4g
Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRGYW1p
bHksIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0
dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKKyAgICBzdGF0aWMg
UmVmPFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzPiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZhbWlseSwgc3RkOjpvcHRpb25hbDxGb250UGFs
ZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6Ok92ZXJy
aWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKG5hbWUsIGZvbnRGYW1pbHksIGJh
c2VQYWxldHRlLCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhuYW1lLCBmb250RmFtaWx5LCBX
VEZNb3ZlKGJhc2VQYWxldHRlKSwgV1RGTW92ZShvdmVycmlkZUNvbG9ycykpKTsKICAgICB9CiAg
ICAgCiAgICAgflN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKCk7CkBAIC0xODEsNyArMTgxLDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9mb250UGFsZXR0ZVZhbHVlczsKICAgICB9CiAK
LSAgICBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSgpIGNvbnN0CisgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4PiYgYmFzZVBhbGV0dGUoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9udFBhbGV0dGVWYWx1ZXMuYmFzZVBhbGV0dGUoKTsK
ICAgICB9CkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZVJ1bGVGb250
UGFsZXR0ZVZhbHVlcz4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVS
dWxlRm9udFBhbGV0dGVWYWx1ZXMoKnRoaXMpKTsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUnVs
ZUZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIGZvbnRGYW1pbHksIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlLCBWZWN0
b3I8Rm9udFBhbGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycyk7
CisgICAgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgZm9udEZhbWlseSwgc3RkOjpvcHRpb25hbDxGb250UGFsZXR0ZUlu
ZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5D
b2xvcj4mJiBvdmVycmlkZUNvbG9ycyk7CiAgICAgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMo
Y29uc3QgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMmKTsKIAogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXgg
MjlmN2YzMGQzZDQyYTgzOTI2MTg4OWEzYTg3ODIyYzllODE2YjEyZi4uMWFkODcwNzE5MjU4YjBj
MGMzMWM2NmU4ZDU1YjRiNjZkNjZmYmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuY3BwCkBAIC02ODAsMTIgKzY4MCwxMCBAQCBSZWZQdHI8U3R5bGVSdWxl
Rm9udFBhbGV0dGVWYWx1ZXM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVGb250UGFsZXR0ZVZhbHVl
c1J1bGUoQwogICAgIGlmIChhdXRvIGZvbnRGYW1pbHlWYWx1ZSA9IHByb3BlcnRpZXMtPmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KSkKICAgICAgICAgZm9udEZhbWls
eSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udEZhbWlseVZhbHVlKS5mb250RmFt
aWx5KCkuZmFtaWx5TmFtZTsKIAotICAgIEZvbnRQYWxldHRlSW5kZXggYmFzZVBhbGV0dGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4PiBiYXNlUGFsZXR0ZTsKICAgICBpZiAo
YXV0byBiYXNlUGFsZXR0ZVZhbHVlID0gcHJvcGVydGllcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eUJhc2VQYWxldHRlKSkgewogICAgICAgICBjb25zdCBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqYmFzZVBhbGV0dGVWYWx1ZSk7Ci0g
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmluZygpKQotICAgICAgICAgICAgYmFzZVBh
bGV0dGUgPSBGb250UGFsZXR0ZUluZGV4KHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCkpOwot
ICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQorICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAgIGJhc2VQYWxldHRlID0gRm9u
dFBhbGV0dGVJbmRleChwcmltaXRpdmVWYWx1ZS52YWx1ZTxpbnQ2NF90PigpKTsKICAgICAgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTGlnaHQpCiAgICAg
ICAgICAgICBiYXNlUGFsZXR0ZSA9IEZvbnRQYWxldHRlSW5kZXgoRm9udFBhbGV0dGVJbmRleDo6
VHlwZTo6TGlnaHQpOwpAQCAtNjk3LDExICs2OTUsOSBAQCBSZWZQdHI8U3R5bGVSdWxlRm9udFBh
bGV0dGVWYWx1ZXM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVGb250UGFsZXR0ZVZhbHVlc1J1bGUo
QwogICAgIGlmIChhdXRvIG92ZXJyaWRlQ29sb3JzVmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5T3ZlcnJpZGVDb2xvcnMpKSB7CiAgICAgICAgIGNvbnN0
IGF1dG8mIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpvdmVycmlkZUNvbG9yc1ZhbHVl
KTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogbGlzdCkgewotICAgICAgICAgICAg
Rm9udFBhbGV0dGVWYWx1ZXM6OlBhbGV0dGVDb2xvckluZGV4IGtleShudWxsQXRvbSgpKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGtleSA9IDA7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBwYWly
ID0gZG93bmNhc3Q8Q1NTRm9udFBhbGV0dGVWYWx1ZXNPdmVycmlkZUNvbG9yc1ZhbHVlPihpdGVt
LmdldCgpKTsKLSAgICAgICAgICAgIGlmIChwYWlyLmtleSgpLmlzU3RyaW5nKCkpCi0gICAgICAg
ICAgICAgICAga2V5ID0gcGFpci5rZXkoKS5zdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAgZWxz
ZSBpZiAocGFpci5rZXkoKS5pc051bWJlcigpKQorICAgICAgICAgICAgaWYgKHBhaXIua2V5KCku
aXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICBrZXkgPSBwYWlyLmtleSgpLnZhbHVlPHVuc2ln
bmVkPigpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NzEwLDcgKzcwNiw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcz4gQ1NTUGFy
c2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFsdWVzUnVsZShDCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OmNyZWF0ZShuYW1lLT5z
dHJpbmdWYWx1ZSgpLCBmb250RmFtaWx5LCBiYXNlUGFsZXR0ZSwgV1RGTW92ZShvdmVycmlkZUNv
bG9ycykpOworICAgIHJldHVybiBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6Y3JlYXRlKG5h
bWUtPnN0cmluZ1ZhbHVlKCksIGZvbnRGYW1pbHksIFdURk1vdmUoYmFzZVBhbGV0dGUpLCBXVEZN
b3ZlKG92ZXJyaWRlQ29sb3JzKSk7CiB9CiAKIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENT
U1BhcnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJlZml4ZWQsIENT
U1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXgg
NDRlYjgxNjJlZTUwYWZkYWZmM2M0OTQ5YmFmMTdhYTAzNmQyZGY0Zi4uMjgxOGY3ODQwN2JkM2M0
ODM0YzkxNTliOTAxNmZmMzdmZThkZTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQ4NTAsOCArNDg1MCw2IEBAIHN0YXRpYyBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYXNlUGFsZXR0ZURlc2NyaXB0b3IoQ1NT
UGFyc2VyVG9rZW5SYW5nCiB7CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZUlkZW50PENT
U1ZhbHVlTGlnaHQsIENTU1ZhbHVlRGFyaz4ocmFuZ2UpKQogICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpKQotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CiB9CiAK
QEAgLTQ4NTksMTEgKzQ4NTcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3Vt
ZU92ZXJyaWRlQ29sb3JzRGVzY3JpcHRvcihDU1NQYXJzZXJUb2tlblJhbmdlJgogewogICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CiAgICAgZG8gewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGtleTsK
LSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pCi0gICAgICAg
ICAgICBrZXkgPSBjb25zdW1lU3RyaW5nKHJhbmdlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAga2V5ID0gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOworICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGtleSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKICAgICAgICAgaWYg
KCFrZXkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKaW5kZXggNWM1NjYx
YTUzZGYwODAxMjc2YWQ4ODkxYmY0ZWEyZWE4YTMxYTc3OS4uNzRmMGZhNzgxYjBlN2FkNmE2YjM5
MmFlYWFhODFhODQ3YmJjNDI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCkBAIC01MSwxNSArNTEsOSBAQCBzdHJ1Y3Qg
Rm9udFBhbGV0dGVJbmRleCB7CiAgICAgewogICAgIH0KIAotICAgIEZvbnRQYWxldHRlSW5kZXgo
Y29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKQotICAgICAgICA6IHR5cGUoVHlwZTo6U3RyaW5nKQot
ICAgICAgICAsIHN0cmluZyhzdHJpbmcpCi0gICAgewotICAgIH0KLQogICAgIG9wZXJhdG9yIGJv
b2woKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgIT0gVHlwZTo6U3RyaW5nIHx8
ICFzdHJpbmcuaXNOdWxsKCk7CisgICAgICAgIHJldHVybiB0eXBlICE9IFR5cGU6OkludGVnZXIg
fHwgaW50ZWdlcjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBhbGV0
dGVJbmRleCYgb3RoZXIpIGNvbnN0CkBAIC02OCw4ICs2Miw2IEBAIHN0cnVjdCBGb250UGFsZXR0
ZUluZGV4IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHR5cGUgPT0g
VHlwZTo6SW50ZWdlcikKICAgICAgICAgICAgIHJldHVybiBpbnRlZ2VyID09IG90aGVyLmludGVn
ZXI7Ci0gICAgICAgIGlmICh0eXBlID09IFR5cGU6OlN0cmluZykKLSAgICAgICAgICAgIHJldHVy
biBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTgxLDEyICs3MywxMCBAQCBzdHJ1Y3QgRm9udFBhbGV0dGVJbmRleCB7CiAgICAgZW51bSBj
bGFzcyBUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExpZ2h0LAogICAgICAgICBEYXJrLAotICAg
ICAgICBJbnRlZ2VyLAotICAgICAgICBTdHJpbmcKLSAgICB9IHR5cGUgeyBUeXBlOjpTdHJpbmcg
fTsKKyAgICAgICAgSW50ZWdlcgorICAgIH0gdHlwZSB7IFR5cGU6OkludGVnZXIgfTsKIAogICAg
IHVuc2lnbmVkIGludGVnZXIgeyAwIH07Ci0gICAgQXRvbVN0cmluZyBzdHJpbmc7CiB9OwogCiBp
bmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIHBh
bGV0dGVJbmRleCkKQEAgLTk0LDI0ICs4NCwyMSBAQCBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBo
YXNoZXIsIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIHBhbGV0dGVJbmRleCkKICAgICBhZGQoaGFz
aGVyLCBwYWxldHRlSW5kZXgudHlwZSk7CiAgICAgaWYgKHBhbGV0dGVJbmRleC50eXBlID09IEZv
bnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVnZXIpCiAgICAgICAgIGFkZChoYXNoZXIsIHBhbGV0
dGVJbmRleC5pbnRlZ2VyKTsKLSAgICBlbHNlIGlmIChwYWxldHRlSW5kZXgudHlwZSA9PSBGb250
UGFsZXR0ZUluZGV4OjpUeXBlOjpTdHJpbmcpCi0gICAgICAgIGFkZChoYXNoZXIsIHBhbGV0dGVJ
bmRleC5zdHJpbmcpOwogfQogCiBjbGFzcyBGb250UGFsZXR0ZVZhbHVlcyB7CiBwdWJsaWM6Ci0g
ICAgdXNpbmcgUGFsZXR0ZUNvbG9ySW5kZXggPSBWYXJpYW50PEF0b21TdHJpbmcsIHVuc2lnbmVk
PjsKLSAgICB1c2luZyBPdmVycmlkZGVuQ29sb3IgPSBzdGQ6OnBhaXI8UGFsZXR0ZUNvbG9ySW5k
ZXgsIENvbG9yPjsKKyAgICB1c2luZyBPdmVycmlkZGVuQ29sb3IgPSBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIENvbG9yPjsKIAogICAgIEZvbnRQYWxldHRlVmFsdWVzKCkgPSBkZWZhdWx0OwogCi0gICAg
Rm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUsIFZl
Y3RvcjxPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCi0gICAgICAgIDogbV9iYXNl
UGFsZXR0ZShiYXNlUGFsZXR0ZSkKKyAgICBGb250UGFsZXR0ZVZhbHVlcyhzdGQ6Om9wdGlvbmFs
PEZvbnRQYWxldHRlSW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxPdmVycmlkZGVuQ29sb3I+
JiYgb3ZlcnJpZGVDb2xvcnMpCisgICAgICAgIDogbV9iYXNlUGFsZXR0ZShXVEZNb3ZlKGJhc2VQ
YWxldHRlKSkKICAgICAgICAgLCBtX292ZXJyaWRlQ29sb3JzKFdURk1vdmUob3ZlcnJpZGVDb2xv
cnMpKQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFs
ZXR0ZSgpIGNvbnN0CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4PiYg
YmFzZVBhbGV0dGUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYmFzZVBhbGV0dGU7
CiAgICAgfQpAQCAtMTM3LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgRm9udFBhbGV0dGVJbmRleCBtX2Jhc2VQYWxldHRlOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9u
dFBhbGV0dGVJbmRleD4gbV9iYXNlUGFsZXR0ZTsKICAgICBWZWN0b3I8T3ZlcnJpZGRlbkNvbG9y
PiBtX292ZXJyaWRlQ29sb3JzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDBi
MDllNDQ2YzEzMGZkMWViNDYwZTVhYjlkMjRhYjYyYjE1OGRlNTkuLjVkZDU0NWU1NzE0YjgyODI4
MWQwMWJmNzc4YWJlOWU1YWExYjczYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTQ1
NywzOSArNDU3LDMzIEBAIHN0YXRpYyB2b2lkIGFkZERhcmtQYWxldHRlKENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgYXR0cmlidXRlcykKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVz
LCBrQ1RGb250UGFsZXR0ZUF0dHJpYnV0ZSwgbnVtYmVyLmdldCgpKTsKIH0KIAotc3RhdGljIHZv
aWQgYWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyhDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIGF0dHJpYnV0ZXMsIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlLCBjb25z
dCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mIG92ZXJyaWRlQ29s
b3JzKQorc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyhDRk11
dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udFBh
bGV0dGVJbmRleD4mIGJhc2VQYWxldHRlLCBjb25zdCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6
Ok92ZXJyaWRkZW5Db2xvcj4mIG92ZXJyaWRlQ29sb3JzKQogewotICAgIHN3aXRjaCAoYmFzZVBh
bGV0dGUudHlwZSkgewotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6TGlnaHQ6Ci0g
ICAgICAgIGFkZExpZ2h0UGFsZXR0ZShhdHRyaWJ1dGVzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpEYXJrOgotICAgICAgICBhZGREYXJrUGFsZXR0
ZShhdHRyaWJ1dGVzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUluZGV4
OjpUeXBlOjpJbnRlZ2VyOiB7Ci0gICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBiYXNlUGFsZXR0
ZS5pbnRlZ2VyOyAvLyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KLSAgICAgICAgYXV0
byBudW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNJbnQ2NFR5cGUsICZyYXdJbmRleCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShhdHRyaWJ1dGVzLCBrQ1RGb250UGFsZXR0ZUF0dHJpYnV0ZSwgbnVtYmVyLmdldCgpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6
U3RyaW5nOgotICAgICAgICAvLyBUaGlzIGlzIHVuaW1wbGVtZW50YWJsZSBpbiBDb3JlIFRleHQu
Ci0gICAgICAgIGJyZWFrOworICAgIGlmIChiYXNlUGFsZXR0ZSkgeworICAgICAgICBzd2l0Y2gg
KGJhc2VQYWxldHRlLT50eXBlKSB7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlw
ZTo6TGlnaHQ6CisgICAgICAgICAgICBhZGRMaWdodFBhbGV0dGUoYXR0cmlidXRlcyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpEYXJr
OgorICAgICAgICAgICAgYWRkRGFya1BhbGV0dGUoYXR0cmlidXRlcyk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyOiB7Cisg
ICAgICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gYmFzZVBhbGV0dGUtPmludGVnZXI7IC8vIFRo
ZXJlIGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgorICAgICAgICAgICAgYXV0byBudW1iZXIgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2
NFR5cGUsICZyYXdJbmRleCkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0
cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFvdmVy
cmlkZUNvbG9ycy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBvdmVycmlkZURpY3Rpb25hcnkg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBvdmVycmlkZUNv
bG9ycykgewotICAgICAgICAgICAgY29uc3QgYXV0byYgcGFsZXR0ZUNvbG9ySW5kZXggPSBwYWly
LmZpcnN0OwogICAgICAgICAgICAgY29uc3QgYXV0byYgY29sb3IgPSBwYWlyLnNlY29uZDsKLSAg
ICAgICAgICAgIFdURjo6c3dpdGNoT24ocGFsZXR0ZUNvbG9ySW5kZXgsIFtdIChjb25zdCBBdG9t
U3RyaW5nJikgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdW5pbXBsZW1lbnRhYmxlIGlu
IENvcmUgVGV4dC4KLSAgICAgICAgICAgIH0sIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKLSAgICAg
ICAgICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gaW5kZXg7IC8vIFRoZXJlIGlzIG5vIGtDRk51
bWJlclVJbnRUeXBlLgotICAgICAgICAgICAgICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmcmF3
SW5kZXgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbG9yT2JqZWN0ID0gY2FjaGVkQ0dDb2xv
cihjb2xvcik7Ci0gICAgICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUob3ZlcnJpZGVE
aWN0aW9uYXJ5LmdldCgpLCBudW1iZXIuZ2V0KCksIGNvbG9yT2JqZWN0KTsKLSAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IHBhaXIuZmlyc3Q7IC8vIFRoZXJl
IGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgorICAgICAgICAgICAgYXV0byBudW1iZXIgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5
cGUsICZyYXdJbmRleCkpOworICAgICAgICAgICAgYXV0byBjb2xvck9iamVjdCA9IGNhY2hlZENH
Q29sb3IoY29sb3IpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUob3ZlcnJpZGVE
aWN0aW9uYXJ5LmdldCgpLCBudW1iZXIuZ2V0KCksIGNvbG9yT2JqZWN0KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0Q291bnQob3ZlcnJpZGVEaWN0aW9uYXJ5LmdldCgp
KSkKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJpYnV0ZXMsIGtDVEZvbnRQ
YWxldHRlQ29sb3JzQXR0cmlidXRlLCBvdmVycmlkZURpY3Rpb25hcnkuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440175</attachid>
            <date>2021-10-05 00:30:08 -0700</date>
            <delta_ts>2021-10-05 00:32:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230799-20211005003007.patch</filename>
            <type>text/plain</type>
            <size>22623</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1N2M0ZTIwMThjNGEw
YWJlNjg4NzJiZTRmMTEzNTBkMTQ5ZTAyZi4uYmIxYTU0NGQ4ZjA2YWRjNjVlYWVjNDE1OWNiNzY5
ZmJhOWE3ODQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEwLTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuJ3QgaW1wbGVtZW50IHRoZSA8c3RyaW5nPiB2YWx1ZXMg
aW4gYmFzZS1wYWxldHRlIGFuZCBvdmVycmlkZS1jb2xvcnMuIEl0J3MgYmV0dGVyCisgICAgICAg
IG5vdCB0byBwYXJzZSB0aGVtLCBzbyB0aGlzIGNhbiBhdCBsZWFzdCBiZSBmZWF0dXJlIGNoZWNr
ZWQgYnkgSlMgcmVhZGluZyB0aGUgc2VyaWFsaXplZAorICAgICAgICB2YWx1ZSB0aGF0IHdhcyBw
YXJzZWQuCisKKyAgICAgICAgSSdtIGludmVzdGlnYXRpbmcgY2hhbmdpbmcgdGhlIHNwZWMgdG8g
ZGlzYWxsb3cgdGhlc2UgdW5pbXBsZW1lbnRhYmxlIHRoaW5ncyBpbgorICAgICAgICBodHRwczov
L2dpdGh1Yi5jb20vdzNjL2Nzc3dnLWRyYWZ0cy9wdWxsLzY2NTEuCisKKyAgICAgICAgRm9yIGJh
c2UtcGFsZXR0ZSwgd2Ugd2VyZSByZXByZXNlbnRpbmcgdGhlIGFic2VuY2Ugb2YgdGhlIGRlc2Ny
aXB0b3IgYnkgbWFraW5nIHRoZSBpbnRlcm5hbAorICAgICAgICByZXByZXNlbnRhdGlvbiBob2xk
IGEgbnVsbCBzdHJpbmcuIE5vdyB0aGF0IHdlJ3JlIHJlbW92aW5nIHRoZSBzdHJpbmcgdmFsdWUg
ZnJvbSB0aGUgaW50ZXJuYWwKKyAgICAgICAgcmVwcmVzZW50YXRpb24sIHRoaXMgaXMgbm93IGJl
aW5nIHJlcHJlc2VudGVkIGJ5IHVzaW5nIGFuIHN0ZDo6b3B0aW9uYWwgaW5zdGVhZC4KKworICAg
ICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udHMv
cGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwKKworICAgICAgICAqIGNzcy9D
U1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFBh
bGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6Om92ZXJyaWRlQ29sb3JzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCBjb25zdCk6CisgICAg
ICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVGb250
UGFsZXR0ZVZhbHVlczo6U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMpOgorICAgICAgICAqIGNz
cy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFsdWVz
UnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN1bWVPdmVycmlkZUNvbG9yc0Rlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250
UGFsZXR0ZUluZGV4OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQYWxldHRlSW5kZXg6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQYWxldHRlVmFsdWVzOjpGb250UGFsZXR0ZVZhbHVl
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGFsZXR0ZVZhbHVlczo6YmFzZVBhbGV0dGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0
ZXMpOgorCiAyMDIxLTEwLTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RvcCBwYXJzaW5nIGNvbnRleHQtc2Vuc2l0aXZlIGNvbG9ycyBpbiBv
dmVycmlkZS1jb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxl
dHRlVmFsdWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1
ZXNSdWxlLmNwcAppbmRleCBhZmZlOWMwMTM1MTA5ZjU4MzRhMThkNGVmYTNiODM0MTUzNzcxMTIy
Li5iNTFiOWQzM2M4MjY4YjliNmEzMGI5OWZkYzRkYzE3NmM1YWExM2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcApAQCAtNTgsMTcgKzU4
LDE2IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmZvbnRGYW1pbHkoKSBjb25z
dAogCiBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSgpIGNvbnN0
CiB7Ci0gICAgc3dpdGNoIChtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS50
eXBlKSB7CisgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CisKKyAgICBzd2l0Y2ggKG1fZm9u
dFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT50eXBlKSB7CiAgICAgY2FzZSBGb250
UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoKICAgICAgICAgcmV0dXJuICJsaWdodCJfczsKICAg
ICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkRhcms6CiAgICAgICAgIHJldHVybiAiZGFy
ayJfczsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVnZXI6Ci0gICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgp
LmludGVnZXIpOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6U3RyaW5nOgotICAg
ICAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnN0cmluZy5p
c051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFz
ZVBhbGV0dGUoKS5zdHJpbmc7Ci0gICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwor
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBh
bGV0dGUoKS0+aW50ZWdlcik7CiAgICAgfQogfQogCkBAIC03OSwxMiArNzgsNyBAQCBTdHJpbmcg
Q1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpvdmVycmlkZUNvbG9ycygpIGNvbnN0CiAgICAgICAg
IGlmIChpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAgICAgICAgY29uc3Qg
YXV0byYgaXRlbSA9IG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ld
OwotICAgICAgICBXVEY6OnN3aXRjaE9uKGl0ZW0uZmlyc3QsIFsmXSAoY29uc3QgQXRvbVN0cmlu
ZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNlcmlhbGl6ZVN0cmluZyhz
dHJpbmcpKTsKLSAgICAgICAgfSwgWyZdIChpbnQ2NF90IGluZGV4KSB7Ci0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGluZGV4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAnLCBzZXJpYWxpemF0aW9uRm9yQ1NTKGl0ZW0uc2Vjb25kKSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoaXRlbS5maXJzdCwgJyAnLCBzZXJpYWxpemF0aW9uRm9yQ1NTKGl0ZW0uc2Vjb25kKSk7
CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KQEAgLTk2LDIwICs5MCwx
OCBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpjc3NUZXh0KCkgY29uc3QKICAg
ICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5mb250RmFtaWx5KCkuaXNOdWxsKCkpCiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJmb250LWZhbWlseTogIiwgbV9mb250UGFsZXR0ZVZhbHVl
c1J1bGUtPmZvbnRGYW1pbHkoKSwgIjsgIik7CiAKLSAgICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVW
YWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnR5cGUpIHsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5k
ZXg6OlR5cGU6OkxpZ2h0OgotICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxldHRlOiBs
aWdodDsgIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlw
ZTo6RGFyazoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2UtcGFsZXR0ZTogZGFyazsgIik7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6SW50ZWdl
cjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2UtcGFsZXR0ZTogIiwgbV9mb250UGFsZXR0
ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuaW50ZWdlciwgIjsgIik7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6U3RyaW5nOgotICAgICAgICBpZiAo
IW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnN0cmluZy5pc051bGwoKSkK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6ICIsIHNlcmlhbGl6ZVN0
cmluZyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5zdHJpbmcpLCAiOyAi
KTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNl
UGFsZXR0ZSgpKSB7CisgICAgICAgIHN3aXRjaCAobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJh
c2VQYWxldHRlKCktPnR5cGUpIHsKKyAgICAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBl
OjpMaWdodDoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6IGxpZ2h0
OyAiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6
OlR5cGU6OkRhcms6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxldHRlOiBk
YXJrOyAiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZvbnRQYWxldHRlSW5k
ZXg6OlR5cGU6OkludGVnZXI6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxl
dHRlOiAiLCBtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS0+aW50ZWdlciwg
IjsgIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICgh
bV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKCkuaXNFbXB0eSgpKSB7CkBA
IC0xMTcsMTMgKzEwOSw3IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmNzc1Rl
eHQoKSBjb25zdAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZm9udFBhbGV0dGVW
YWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAoaSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIFdURjo6c3dpdGNoT24obV9mb250UGFs
ZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0uZmlyc3QsIFsmXSAoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlcmlhbGl6
ZVN0cmluZyhuYW1lLnN0cmluZygpKSk7Ci0gICAgICAgICAgICB9LCBbJl0gKHVuc2lnbmVkIGlu
ZGV4KSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaW5kZXgpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIHNlcmlhbGl6YXRpb25Gb3JD
U1MobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0uc2Vjb25kKSk7
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxl
LT5vdmVycmlkZUNvbG9ycygpW2ldLmZpcnN0LCAnICcsIHNlcmlhbGl6YXRpb25Gb3JDU1MobV9m
b250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0uc2Vjb25kKSk7CiAgICAg
ICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjsgIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmNwcAppbmRleCBiODg5Y2U5ZGFlOTBmMDU2YzAwOGE5OTQ0YmZkMzg2MDg4YTE2NTYw
Li5hODczMDA5ZTQwM2MyM2EzY2I3MDlmN2Q5YTU4ZWJkMzVmZTdjNzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmNwcApAQCAtMzMwLDExICszMzAsMTEgQEAgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYgU3R5bGVSdWxlRm9udEZhY2U6Om11dGFibGVQcm9wZXJ0aWVzKCkKICAgICByZXR1cm4gZG93
bmNhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4obV9wcm9wZXJ0aWVzLmdldCgpKTsKIH0KIAot
U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OlN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRGYW1pbHksIGNvbnN0
IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6
Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKK1N0eWxlUnVsZUZvbnRQYWxldHRl
VmFsdWVzOjpTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFtaWx5LCBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRl
SW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3ZlcnJpZGRl
bkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQogICAgIDogU3R5bGVSdWxlQmFzZShTdHlsZVJ1bGVU
eXBlOjpGb250UGFsZXR0ZVZhbHVlcykKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9mb250
RmFtaWx5KGZvbnRGYW1pbHkpCi0gICAgLCBtX2ZvbnRQYWxldHRlVmFsdWVzKGJhc2VQYWxldHRl
LCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkKKyAgICAsIG1fZm9udFBhbGV0dGVWYWx1ZXMoV1RG
TW92ZShiYXNlUGFsZXR0ZSksIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmgKaW5kZXggMTNiMzQwZTM1ODQ2OTIwM2EyYWQ3OTBiNDA1NmM4YTM1YTU4
NDZjNS4uODUyZWNjYTNlNzgzZDNhMmYwMjkyNjhmNWQyNGM4OWVhZmExZTFkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuaApAQCAtMTU5LDkgKzE1OSw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxl
UnVsZUZvbnRQYWxldHRlVmFsdWVzIGZpbmFsIDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM+IGNyZWF0ZShj
b25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFtaWx5LCBjb25z
dCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVz
OjpPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCisgICAgc3RhdGljIFJlZjxTdHls
ZVJ1bGVGb250UGFsZXR0ZVZhbHVlcz4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIGZvbnRGYW1pbHksIHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRl
eD4mJiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29s
b3I+JiYgb3ZlcnJpZGVDb2xvcnMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhuYW1lLCBmb250RmFtaWx5LCBiYXNlUGFsZXR0
ZSwgV1RGTW92ZShvdmVycmlkZUNvbG9ycykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMobmFtZSwgZm9udEZhbWlseSwgV1RGTW92ZShi
YXNlUGFsZXR0ZSksIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKSk7CiAgICAgfQogICAgIAogICAg
IH5TdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcygpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fZm9udFBhbGV0dGVWYWx1ZXM7CiAgICAgfQogCi0gICAgY29u
c3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUoKSBjb25zdAorICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRleD4mIGJhc2VQYWxldHRlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlVmFsdWVzLmJhc2VQYWxldHRlKCk7CiAgICAgfQpA
QCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVSdWxlRm9udFBhbGV0dGVW
YWx1ZXM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRQ
YWxldHRlVmFsdWVzKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVGb250UGFs
ZXR0ZVZhbHVlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250
RmFtaWx5LCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQ
YWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpOworICAgIFN0
eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIGZvbnRGYW1pbHksIHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRleD4mJiBi
YXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiYg
b3ZlcnJpZGVDb2xvcnMpOwogICAgIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IFN0
eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzJik7CiAKICAgICBBdG9tU3RyaW5nIG1fbmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4IDI5ZjdmMzBk
M2Q0MmE4MzkyNjE4ODlhM2E4NzgyMmM5ZTgxNmIxMmYuLjFhZDg3MDcxOTI1OGIwYzBjMzFjNjZl
OGQ1NWI0YjY2ZDY2ZmJkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJJbXBsLmNwcApAQCAtNjgwLDEyICs2ODAsMTAgQEAgUmVmUHRyPFN0eWxlUnVsZUZvbnRQYWxl
dHRlVmFsdWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRm9udFBhbGV0dGVWYWx1ZXNSdWxlKEMK
ICAgICBpZiAoYXV0byBmb250RmFtaWx5VmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpCiAgICAgICAgIGZvbnRGYW1pbHkgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRGYW1pbHlWYWx1ZSkuZm9udEZhbWlseSgpLmZh
bWlseU5hbWU7CiAKLSAgICBGb250UGFsZXR0ZUluZGV4IGJhc2VQYWxldHRlOworICAgIHN0ZDo6
b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRleD4gYmFzZVBhbGV0dGU7CiAgICAgaWYgKGF1dG8gYmFz
ZVBhbGV0dGVWYWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlCYXNlUGFsZXR0ZSkpIHsKICAgICAgICAgY29uc3QgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmJhc2VQYWxldHRlVmFsdWUpOwotICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGJhc2VQYWxldHRlID0g
Rm9udFBhbGV0dGVJbmRleChwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKLSAgICAgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICBiYXNlUGFsZXR0ZSA9IEZvbnRQYWxldHRl
SW5kZXgocHJpbWl0aXZlVmFsdWUudmFsdWU8aW50NjRfdD4oKSk7CiAgICAgICAgIGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxpZ2h0KQogICAgICAgICAgICAg
YmFzZVBhbGV0dGUgPSBGb250UGFsZXR0ZUluZGV4KEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6Okxp
Z2h0KTsKQEAgLTY5NywxMSArNjk1LDkgQEAgUmVmUHRyPFN0eWxlUnVsZUZvbnRQYWxldHRlVmFs
dWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRm9udFBhbGV0dGVWYWx1ZXNSdWxlKEMKICAgICBp
ZiAoYXV0byBvdmVycmlkZUNvbG9yc1ZhbHVlID0gcHJvcGVydGllcy0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eU92ZXJyaWRlQ29sb3JzKSkgewogICAgICAgICBjb25zdCBhdXRvJiBs
aXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigqb3ZlcnJpZGVDb2xvcnNWYWx1ZSk7CiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGxpc3QpIHsKLSAgICAgICAgICAgIEZvbnRQYWxl
dHRlVmFsdWVzOjpQYWxldHRlQ29sb3JJbmRleCBrZXkobnVsbEF0b20oKSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBrZXkgPSAwOwogICAgICAgICAgICAgY29uc3QgYXV0byYgcGFpciA9IGRvd25j
YXN0PENTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1ZT4oaXRlbS5nZXQoKSk7
Ci0gICAgICAgICAgICBpZiAocGFpci5rZXkoKS5pc1N0cmluZygpKQotICAgICAgICAgICAgICAg
IGtleSA9IHBhaXIua2V5KCkuc3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHBh
aXIua2V5KCkuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGlmIChwYWlyLmtleSgpLmlzTnVtYmVy
KCkpCiAgICAgICAgICAgICAgICAga2V5ID0gcGFpci5rZXkoKS52YWx1ZTx1bnNpZ25lZD4oKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTcxMCw3ICs3
MDYsNyBAQCBSZWZQdHI8U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM+IENTU1BhcnNlckltcGw6
OmNvbnN1bWVGb250UGFsZXR0ZVZhbHVlc1J1bGUoQwogICAgICAgICB9CiAgICAgfQogCi0gICAg
cmV0dXJuIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzOjpjcmVhdGUobmFtZS0+c3RyaW5nVmFs
dWUoKSwgZm9udEZhbWlseSwgYmFzZVBhbGV0dGUsIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKTsK
KyAgICByZXR1cm4gU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OmNyZWF0ZShuYW1lLT5zdHJp
bmdWYWx1ZSgpLCBmb250RmFtaWx5LCBXVEZNb3ZlKGJhc2VQYWxldHRlKSwgV1RGTW92ZShvdmVy
cmlkZUNvbG9ycykpOwogfQogCiBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJ
bXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdlYmtpdFByZWZpeGVkLCBDU1NQYXJzZXJU
b2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ0ZWI4MTYy
ZWU1MGFmZGFmZjNjNDk0OWJhZjE3YWEwMzZkMmRmNGYuLjI4MThmNzg0MDdiZDNjNDgzNGM5MTU5
YjkwMTZmZjM3ZmU4ZGU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCkBAIC00ODUwLDggKzQ4NTAsNiBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9yKENTU1BhcnNlclRv
a2VuUmFuZwogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxp
Z2h0LCBDU1NWYWx1ZURhcms+KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBp
ZiAoYXV0byByZXN1bHQgPSBjb25zdW1lU3RyaW5nKHJhbmdlKSkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICByZXR1cm4gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOwogfQogCkBAIC00ODU5
LDExICs0ODU3LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVPdmVycmlk
ZUNvbG9yc0Rlc2NyaXB0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYKIHsKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwog
ICAgIGRvIHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBrZXk7Ci0gICAgICAg
IGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKQotICAgICAgICAgICAga2V5
ID0gY29uc3VtZVN0cmluZyhyYW5nZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGtleSA9
IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBrZXkgPSBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CiAgICAgICAgIGlmICgha2V5KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCmluZGV4IDVjNTY2MWE1M2RmMDgw
MTI3NmFkODg5MWJmNGVhMmVhOGEzMWE3NzkuLjc0ZjBmYTc4MWIwZTdhZDZhNmIzOTJhZWFhYTgx
YTg0N2JiYzQyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQYWxldHRlVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBhbGV0dGVWYWx1ZXMuaApAQCAtNTEsMTUgKzUxLDkgQEAgc3RydWN0IEZvbnRQYWxl
dHRlSW5kZXggewogICAgIHsKICAgICB9CiAKLSAgICBGb250UGFsZXR0ZUluZGV4KGNvbnN0IEF0
b21TdHJpbmcmIHN0cmluZykKLSAgICAgICAgOiB0eXBlKFR5cGU6OlN0cmluZykKLSAgICAgICAg
LCBzdHJpbmcoc3RyaW5nKQotICAgIHsKLSAgICB9Ci0KICAgICBvcGVyYXRvciBib29sKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlICE9IFR5cGU6OlN0cmluZyB8fCAhc3RyaW5n
LmlzTnVsbCgpOworICAgICAgICByZXR1cm4gdHlwZSAhPSBUeXBlOjpJbnRlZ2VyIHx8IGludGVn
ZXI7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQYWxldHRlSW5kZXgm
IG90aGVyKSBjb25zdApAQCAtNjgsOCArNjIsNiBAQCBzdHJ1Y3QgRm9udFBhbGV0dGVJbmRleCB7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh0eXBlID09IFR5cGU6Oklu
dGVnZXIpCiAgICAgICAgICAgICByZXR1cm4gaW50ZWdlciA9PSBvdGhlci5pbnRlZ2VyOwotICAg
ICAgICBpZiAodHlwZSA9PSBUeXBlOjpTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gc3RyaW5n
ID09IG90aGVyLnN0cmluZzsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC04MSwx
MiArNzMsMTAgQEAgc3RydWN0IEZvbnRQYWxldHRlSW5kZXggewogICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgewogICAgICAgICBMaWdodCwKICAgICAgICAgRGFyaywKLSAgICAgICAgSW50
ZWdlciwKLSAgICAgICAgU3RyaW5nCi0gICAgfSB0eXBlIHsgVHlwZTo6U3RyaW5nIH07CisgICAg
ICAgIEludGVnZXIKKyAgICB9IHR5cGUgeyBUeXBlOjpJbnRlZ2VyIH07CiAKICAgICB1bnNpZ25l
ZCBpbnRlZ2VyIHsgMCB9OwotICAgIEF0b21TdHJpbmcgc3RyaW5nOwogfTsKIAogaW5saW5lIHZv
aWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBwYWxldHRlSW5k
ZXgpCkBAIC05NCwyNCArODQsMjEgQEAgaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBj
b25zdCBGb250UGFsZXR0ZUluZGV4JiBwYWxldHRlSW5kZXgpCiAgICAgYWRkKGhhc2hlciwgcGFs
ZXR0ZUluZGV4LnR5cGUpOwogICAgIGlmIChwYWxldHRlSW5kZXgudHlwZSA9PSBGb250UGFsZXR0
ZUluZGV4OjpUeXBlOjpJbnRlZ2VyKQogICAgICAgICBhZGQoaGFzaGVyLCBwYWxldHRlSW5kZXgu
aW50ZWdlcik7Ci0gICAgZWxzZSBpZiAocGFsZXR0ZUluZGV4LnR5cGUgPT0gRm9udFBhbGV0dGVJ
bmRleDo6VHlwZTo6U3RyaW5nKQotICAgICAgICBhZGQoaGFzaGVyLCBwYWxldHRlSW5kZXguc3Ry
aW5nKTsKIH0KIAogY2xhc3MgRm9udFBhbGV0dGVWYWx1ZXMgewogcHVibGljOgotICAgIHVzaW5n
IFBhbGV0dGVDb2xvckluZGV4ID0gVmFyaWFudDxBdG9tU3RyaW5nLCB1bnNpZ25lZD47Ci0gICAg
dXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpwYWlyPFBhbGV0dGVDb2xvckluZGV4LCBDb2xv
cj47CisgICAgdXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpwYWlyPHVuc2lnbmVkLCBDb2xv
cj47CiAKICAgICBGb250UGFsZXR0ZVZhbHVlcygpID0gZGVmYXVsdDsKIAotICAgIEZvbnRQYWxl
dHRlVmFsdWVzKGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlLCBWZWN0b3I8T3Zl
cnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQotICAgICAgICA6IG1fYmFzZVBhbGV0dGUo
YmFzZVBhbGV0dGUpCisgICAgRm9udFBhbGV0dGVWYWx1ZXMoc3RkOjpvcHRpb25hbDxGb250UGFs
ZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJy
aWRlQ29sb3JzKQorICAgICAgICA6IG1fYmFzZVBhbGV0dGUoV1RGTW92ZShiYXNlUGFsZXR0ZSkp
CiAgICAgICAgICwgbV9vdmVycmlkZUNvbG9ycyhXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkKICAg
ICB7CiAgICAgfQogCi0gICAgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUoKSBj
b25zdAorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRleD4mIGJhc2VQYWxl
dHRlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Jhc2VQYWxldHRlOwogICAgIH0K
QEAgLTEzNyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEZvbnRQ
YWxldHRlSW5kZXggbV9iYXNlUGFsZXR0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRl
SW5kZXg+IG1fYmFzZVBhbGV0dGU7CiAgICAgVmVjdG9yPE92ZXJyaWRkZW5Db2xvcj4gbV9vdmVy
cmlkZUNvbG9yczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCAwYjA5ZTQ0NmMx
MzBmZDFlYjQ2MGU1YWI5ZDI0YWI2MmIxNThkZTU5Li41ZGQ1NDVlNTcxNGI4MjgyODFkMDFiZjc3
OGFiZTllNWFhMWI3M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC00NTcsMzkgKzQ1
NywzMyBAQCBzdGF0aWMgdm9pZCBhZGREYXJrUGFsZXR0ZShDRk11dGFibGVEaWN0aW9uYXJ5UmVm
IGF0dHJpYnV0ZXMpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9u
dFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZEF0
dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRy
aWJ1dGVzLCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwgY29uc3QgVmVjdG9y
PEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiBvdmVycmlkZUNvbG9ycykKK3N0
YXRpYyB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRlSW5k
ZXg+JiBiYXNlUGFsZXR0ZSwgY29uc3QgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlk
ZGVuQ29sb3I+JiBvdmVycmlkZUNvbG9ycykKIHsKLSAgICBzd2l0Y2ggKGJhc2VQYWxldHRlLnR5
cGUpIHsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0OgotICAgICAgICBh
ZGRMaWdodFBhbGV0dGUoYXR0cmlidXRlcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9u
dFBhbGV0dGVJbmRleDo6VHlwZTo6RGFyazoKLSAgICAgICAgYWRkRGFya1BhbGV0dGUoYXR0cmli
dXRlcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6
SW50ZWdlcjogewotICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gYmFzZVBhbGV0dGUuaW50ZWdl
cjsgLy8gVGhlcmUgaXMgbm8ga0NGTnVtYmVyVUludFR5cGUuCi0gICAgICAgIGF1dG8gbnVtYmVy
ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJT
SW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0
cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQoKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OlN0cmluZzoK
LSAgICAgICAgLy8gVGhpcyBpcyB1bmltcGxlbWVudGFibGUgaW4gQ29yZSBUZXh0LgotICAgICAg
ICBicmVhazsKKyAgICBpZiAoYmFzZVBhbGV0dGUpIHsKKyAgICAgICAgc3dpdGNoIChiYXNlUGFs
ZXR0ZS0+dHlwZSkgeworICAgICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0
OgorICAgICAgICAgICAgYWRkTGlnaHRQYWxldHRlKGF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6RGFyazoKKyAgICAg
ICAgICAgIGFkZERhcmtQYWxldHRlKGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6SW50ZWdlcjogeworICAgICAgICAg
ICAgaW50NjRfdCByYXdJbmRleCA9IGJhc2VQYWxldHRlLT5pbnRlZ2VyOyAvLyBUaGVyZSBpcyBu
byBrQ0ZOdW1iZXJVSW50VHlwZS4KKyAgICAgICAgICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAm
cmF3SW5kZXgpKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJpYnV0ZXMs
IGtDVEZvbnRQYWxldHRlQXR0cmlidXRlLCBudW1iZXIuZ2V0KCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghb3ZlcnJpZGVDb2xv
cnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gb3ZlcnJpZGVEaWN0aW9uYXJ5ID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogb3ZlcnJpZGVDb2xvcnMpIHsK
LSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHBhbGV0dGVDb2xvckluZGV4ID0gcGFpci5maXJzdDsK
ICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNvbG9yID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAg
ICBXVEY6OnN3aXRjaE9uKHBhbGV0dGVDb2xvckluZGV4LCBbXSAoY29uc3QgQXRvbVN0cmluZyYp
IHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVuaW1wbGVtZW50YWJsZSBpbiBDb3JlIFRl
eHQuCi0gICAgICAgICAgICB9LCBbJl0gKHVuc2lnbmVkIGluZGV4KSB7Ci0gICAgICAgICAgICAg
ICAgaW50NjRfdCByYXdJbmRleCA9IGluZGV4OyAvLyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50
VHlwZS4KLSAgICAgICAgICAgICAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnJhd0luZGV4KSk7
Ci0gICAgICAgICAgICAgICAgYXV0byBjb2xvck9iamVjdCA9IGNhY2hlZENHQ29sb3IoY29sb3Ip
OwotICAgICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG92ZXJyaWRlRGljdGlvbmFy
eS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdCk7Ci0gICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBwYWlyLmZpcnN0OyAvLyBUaGVyZSBpcyBubyBr
Q0ZOdW1iZXJVSW50VHlwZS4KKyAgICAgICAgICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmcmF3
SW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3QgPSBjYWNoZWRDR0NvbG9yKGNv
bG9yKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG92ZXJyaWRlRGljdGlvbmFy
eS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKENGRGljdGlvbmFyeUdldENvdW50KG92ZXJyaWRlRGljdGlvbmFyeS5nZXQoKSkpCiAgICAg
ICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLCBrQ1RGb250UGFsZXR0ZUNv
bG9yc0F0dHJpYnV0ZSwgb3ZlcnJpZGVEaWN0aW9uYXJ5LmdldCgpKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IGE3NDI3ZGJjYjBhOGZhMzk0YjQyOTM4Y2U3NDAwMDA4NGYxNTZj
MzkuLmNmMmVjNjAzMThlNTE1MjM4NjljZTc5OTQ5MDJlMTdiOTkxMjVhMDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEwLTA1ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJzaW5n
IGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250cy9wYXJzaW5n
L2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbDoKKwogMjAyMS0xMC0wNCAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgcGFyc2luZyBj
b250ZXh0LXNlbnNpdGl2ZSBjb2xvcnMgaW4gb3ZlcnJpZGUtY29sb3IKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250cy9w
YXJzaW5nL2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250cy9wYXJzaW5nL2ZvbnQtcGFs
ZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbAppbmRleCBjZGE0N2NlZmM2ZTQzMTEyMDYxYTA2YmFhMjJk
Y2Y4ZjY0OTg3ZDZlLi40MjUxZjc2YTVkZDIxYWJlYzEyYjNjMTExNWEyMDc1MmYwYWVlOTgwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZm9udHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnRz
L3BhcnNpbmcvZm9udC1wYWxldHRlLXZhbHVlcy12YWxpZC5odG1sCkBAIC0xNDAsOCArMTQwLDgg
QEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFz
ZS1wYWxldHRlOiBcImJhelwiIiksIC0xKTsKICAgICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0Lmlu
ZGV4T2YoImJhc2UtcGFsZXR0ZTogMjsiKSwgLTEpOwogICAgIGFzc2VydF9lcXVhbHModGV4dC5p
bmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IFwiYVwiIiksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiAzIiksIC0xKTsKLSAgICBhc3NlcnRfbm90
X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9yczogXCJiXCIiKSwgLTEpOworICAg
IGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiAzIiksIC0x
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiBcImJc
IiIpLCAtMSk7CiB9KTsKIAogdGVzdChmdW5jdGlvbigpIHsKQEAgLTE0OSwxNCArMTQ5LDE0IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhydWxlLm5hbWUsICItLUMiKTsK
ICAgICBhc3NlcnRfZXF1YWxzKHJ1bGUuZm9udEZhbWlseSwgImJhciIpOwogICAgIGFzc2VydF9l
cXVhbHMocnVsZS5iYXNlUGFsZXR0ZSwgIjIiKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJ1bGUub3Zl
cnJpZGVDb2xvcnMsICJcImJcIiByZ2IoMTcsIDM0LCA1MSkiKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHJ1bGUub3ZlcnJpZGVDb2xvcnMsICIzIHJnYigxNywgMzQsIDUxKSIpOwogfSk7CiAKIHRlc3Qo
ZnVuY3Rpb24oKSB7CiAgICAgbGV0IHRleHQgPSBydWxlc1szXS5jc3NUZXh0OwogICAgIGFzc2Vy
dF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6IFwiZm9vXCI7IiksIC0xKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFzZS1wYWxldHRlOiAxIiksIC0xKTsKLSAg
ICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0LmluZGV4T2YoImJhc2UtcGFsZXR0ZTogXCJiYXJcIjsi
KSwgLTEpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFzZS1wYWxldHRl
OiAxIiksIC0xKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFzZS1wYWxldHRl
OiBcImJhclwiOyIpLCAtMSk7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJy
aWRlLWNvbG9yczogMyIpLCAtMSk7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92
ZXJyaWRlLWNvbG9yczogXCJiYXpcIiIpLCAtMSk7CiAgICAgYXNzZXJ0X25vdF9lcXVhbHModGV4
dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IDQiKSwgLTEpOwpAQCAtMTY2LDcgKzE2Niw3IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbGV0IHJ1bGUgPSBydWxlc1szXTsKICAgICBhc3NlcnRf
ZXF1YWxzKHJ1bGUubmFtZSwgIi0tRCIpOwogICAgIGFzc2VydF9lcXVhbHMocnVsZS5mb250RmFt
aWx5LCAiIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhydWxlLmJhc2VQYWxldHRlLCAiYmFyIik7Cisg
ICAgYXNzZXJ0X2VxdWFscyhydWxlLmJhc2VQYWxldHRlLCAiMSIpOwogICAgIGFzc2VydF9lcXVh
bHMocnVsZS5vdmVycmlkZUNvbG9ycy5pbmRleE9mKCIpLCIpLCAtMSk7CiAgICAgYXNzZXJ0X2Vx
dWFscyhydWxlLm92ZXJyaWRlQ29sb3JzLmluZGV4T2YoIjQgIiksIDApOwogICAgIGFzc2VydF9u
b3RfZXF1YWxzKHJ1bGUub3ZlcnJpZGVDb2xvcnMuaW5kZXhPZigicmdiIiksIC0xKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440176</attachid>
            <date>2021-10-05 00:32:07 -0700</date>
            <delta_ts>2021-10-05 00:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230799-20211005003206.patch</filename>
            <type>text/plain</type>
            <size>22633</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1N2M0ZTIwMThjNGEw
YWJlNjg4NzJiZTRmMTEzNTBkMTQ5ZTAyZi4uNGE3OGEwNWU3YmUyNTcwZDk5YTZiY2NjNzMyY2M5
YmI2MWFiN2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEwLTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuJ3QgaW1wbGVtZW50IHRoZSA8c3RyaW5nPiB2YWx1ZXMg
aW4gYmFzZS1wYWxldHRlIGFuZCBvdmVycmlkZS1jb2xvcnMuIEl0J3MgYmV0dGVyCisgICAgICAg
IG5vdCB0byBwYXJzZSB0aGVtLCBzbyB0aGlzIGJlaGF2aW9yIGNhbiBhdCBsZWFzdCBiZSBmZWF0
dXJlIGRldGVjdGVkIGJ5IEpTIHJlYWRpbmcgdGhlCisgICAgICAgIHNlcmlhbGl6ZWQgdmFsdWUg
dGhhdCB3YXMgcGFyc2VkLgorCisgICAgICAgIEknbSBpbnZlc3RpZ2F0aW5nIGNoYW5naW5nIHRo
ZSBzcGVjIHRvIGRpc2FsbG93IHRoZXNlIHVuaW1wbGVtZW50YWJsZSB0aGluZ3MgaW4KKyAgICAg
ICAgaHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy1kcmFmdHMvcHVsbC82NjUxLgorCisgICAg
ICAgIEZvciBiYXNlLXBhbGV0dGUsIHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBhYnNlbmNlIG9m
IHRoZSBkZXNjcmlwdG9yIGJ5IG1ha2luZyB0aGUgaW50ZXJuYWwKKyAgICAgICAgcmVwcmVzZW50
YXRpb24gaG9sZCBhIG51bGwgc3RyaW5nLiBOb3cgdGhhdCB3ZSdyZSByZW1vdmluZyB0aGUgc3Ry
aW5nIHZhbHVlIGZyb20gdGhlIGludGVybmFsCisgICAgICAgIHJlcHJlc2VudGF0aW9uLCB0aGlz
IGlzIG5vdyBiZWluZyByZXByZXNlbnRlZCBieSB1c2luZyBhbiBzdGQ6Om9wdGlvbmFsIGluc3Rl
YWQuCisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWZvbnRzL3BhcnNpbmcvZm9udC1wYWxldHRlLXZhbHVlcy12YWxpZC5odG1sCisKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6YmFzZVBhbGV0dGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpvdmVycmlkZUNvbG9ycyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmNzc1RleHQgY29u
c3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OlN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVGb250UGFs
ZXR0ZVZhbHVlc1J1bGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2VQYWxldHRlRGVzY3JpcHRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdW1lT3ZlcnJpZGVDb2xvcnNEZXNjcmlwdG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBhbGV0dGVJbmRleDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGFsZXR0ZUluZGV4OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGFsZXR0ZVZhbHVlczo6Rm9udFBh
bGV0dGVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBhbGV0dGVWYWx1ZXM6OmJhc2VQ
YWxldHRlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRBdHRyaWJ1dGVzRm9yQ3VzdG9t
Rm9udFBhbGV0dGVzKToKKwogMjAyMS0xMC0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgcGFyc2luZyBjb250ZXh0LXNlbnNpdGl2ZSBj
b2xvcnMgaW4gb3ZlcnJpZGUtY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQ
YWxldHRlVmFsdWVzUnVsZS5jcHAKaW5kZXggYWZmZTljMDEzNTEwOWY1ODM0YTE4ZDRlZmEzYjgz
NDE1Mzc3MTEyMi4uYjUxYjlkMzNjODI2OGI5YjZhMzBiOTlmZGM0ZGMxNzZjNWFhMTNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAKQEAg
LTU4LDE3ICs1OCwxNiBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpmb250RmFt
aWx5KCkgY29uc3QKIAogU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6YmFzZVBhbGV0
dGUoKSBjb25zdAogewotICAgIHN3aXRjaCAobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQ
YWxldHRlKCkudHlwZSkgeworICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQ
YWxldHRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOworCisgICAgc3dp
dGNoIChtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS0+dHlwZSkgewogICAg
IGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6TGlnaHQ6CiAgICAgICAgIHJldHVybiAibGln
aHQiX3M7CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpEYXJrOgogICAgICAgICBy
ZXR1cm4gImRhcmsiX3M7CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2Vy
OgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFz
ZVBhbGV0dGUoKS5pbnRlZ2VyKTsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OlN0
cmluZzoKLSAgICAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUo
KS5zdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9mb250UGFsZXR0ZVZhbHVl
c1J1bGUtPmJhc2VQYWxldHRlKCkuc3RyaW5nOwotICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobV9mb250UGFsZXR0ZVZhbHVlc1J1
bGUtPmJhc2VQYWxldHRlKCktPmludGVnZXIpOwogICAgIH0KIH0KIApAQCAtNzksMTIgKzc4LDcg
QEAgU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6b3ZlcnJpZGVDb2xvcnMoKSBjb25z
dAogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSBtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVD
b2xvcnMoKVtpXTsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihpdGVtLmZpcnN0LCBbJl0gKGNvbnN0
IEF0b21TdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzZXJpYWxp
emVTdHJpbmcoc3RyaW5nKSk7Ci0gICAgICAgIH0sIFsmXSAoaW50NjRfdCBpbmRleCkgewotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmRleCk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXN1
bHQuYXBwZW5kKCcgJywgc2VyaWFsaXphdGlvbkZvckNTUyhpdGVtLnNlY29uZCkpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKGl0ZW0uZmlyc3QsICcgJywgc2VyaWFsaXphdGlvbkZvckNTUyhpdGVt
LnNlY29uZCkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CkBAIC05
NiwyMCArOTAsMTggQEAgU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCgp
IGNvbnN0CiAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+Zm9udEZhbWlseSgpLmlz
TnVsbCgpKQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiZm9udC1mYW1pbHk6ICIsIG1fZm9udFBh
bGV0dGVWYWx1ZXNSdWxlLT5mb250RmFtaWx5KCksICI7ICIpOwogCi0gICAgc3dpdGNoIChtX2Zv
bnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS50eXBlKSB7Ci0gICAgY2FzZSBGb250
UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2Ut
cGFsZXR0ZTogbGlnaHQ7ICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRl
SW5kZXg6OlR5cGU6OkRhcms6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6
IGRhcms7ICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5
cGU6OkludGVnZXI6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6ICIsIG1f
Zm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLmludGVnZXIsICI7ICIpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OlN0cmluZzoKLSAg
ICAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5zdHJpbmcu
aXNOdWxsKCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxldHRlOiAiLCBz
ZXJpYWxpemVTdHJpbmcobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuc3Ry
aW5nKSwgIjsgIik7Ci0gICAgICAgIGJyZWFrOworICAgIGlmIChtX2ZvbnRQYWxldHRlVmFsdWVz
UnVsZS0+YmFzZVBhbGV0dGUoKSkgeworICAgICAgICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVWYWx1
ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT50eXBlKSB7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJ
bmRleDo6VHlwZTo6TGlnaHQ6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxl
dHRlOiBsaWdodDsgIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb250UGFs
ZXR0ZUluZGV4OjpUeXBlOjpEYXJrOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2Ut
cGFsZXR0ZTogZGFyazsgIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb250
UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ImJhc2UtcGFsZXR0ZTogIiwgbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkt
PmludGVnZXIsICI7ICIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpLmlzRW1w
dHkoKSkgewpAQCAtMTE3LDEzICsxMDksNyBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNS
dWxlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Zv
bnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKS5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBXVEY6OnN3aXRjaE9u
KG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ldLmZpcnN0LCBbJl0g
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChzZXJpYWxpemVTdHJpbmcobmFtZS5zdHJpbmcoKSkpOwotICAgICAgICAgICAgfSwgWyZdICh1
bnNpZ25lZCBpbmRleCkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGluZGV4KTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnLCBzZXJpYWxp
emF0aW9uRm9yQ1NTKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ld
LnNlY29uZCkpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnLCBtX2ZvbnRQYWxldHRl
VmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKVtpXS5maXJzdCwgJyAnLCBzZXJpYWxpemF0aW9u
Rm9yQ1NTKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ldLnNlY29u
ZCkpOwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI7ICIpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggYjg4OWNlOWRhZTkwZjA1NmMwMDhhOTk0NGJmZDM4
NjA4OGExNjU2MC4uYTg3MzAwOWU0MDNjMjNhM2NiNzA5ZjdkOWE1OGViZDM1ZmU3Yzc0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTMzMCwxMSArMzMwLDExIEBAIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmIFN0eWxlUnVsZUZvbnRGYWNlOjptdXRhYmxlUHJvcGVydGllcygpCiAgICAg
cmV0dXJuIGRvd25jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KG1fcHJvcGVydGllcy5nZXQo
KSk7CiB9CiAKLVN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzOjpTdHlsZVJ1bGVGb250UGFsZXR0
ZVZhbHVlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFt
aWx5LCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxl
dHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCitTdHlsZVJ1bGVG
b250UGFsZXR0ZVZhbHVlczo6U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgQXRvbVN0
cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZhbWlseSwgc3RkOjpvcHRpb25hbDxG
b250UGFsZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6
Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKICAgICA6IFN0eWxlUnVsZUJhc2Uo
U3R5bGVSdWxlVHlwZTo6Rm9udFBhbGV0dGVWYWx1ZXMpCiAgICAgLCBtX25hbWUobmFtZSkKICAg
ICAsIG1fZm9udEZhbWlseShmb250RmFtaWx5KQotICAgICwgbV9mb250UGFsZXR0ZVZhbHVlcyhi
YXNlUGFsZXR0ZSwgV1RGTW92ZShvdmVycmlkZUNvbG9ycykpCisgICAgLCBtX2ZvbnRQYWxldHRl
VmFsdWVzKFdURk1vdmUoYmFzZVBhbGV0dGUpLCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDEzYjM0MGUzNTg0NjkyMDNhMmFkNzkwYjQw
NTZjOGEzNWE1ODQ2YzUuLjg1MmVjY2EzZTc4M2QzYTJmMDI5MjY4ZjVkMjRjODllYWZhMWUxZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTE1OSw5ICsxNTksOSBAQCBwcml2YXRlOgogCiBj
bGFzcyBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVC
YXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVz
PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZh
bWlseSwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFs
ZXR0ZVZhbHVlczo6T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQorICAgIHN0YXRp
YyBSZWY8U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFtaWx5LCBzdGQ6Om9wdGlvbmFsPEZvbnRQ
YWxldHRlSW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3Zl
cnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMobmFtZSwgZm9udEZhbWlseSwg
YmFzZVBhbGV0dGUsIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKG5hbWUsIGZvbnRGYW1pbHks
IFdURk1vdmUoYmFzZVBhbGV0dGUpLCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkpOwogICAgIH0K
ICAgICAKICAgICB+U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoKTsKQEAgLTE4MSw3ICsxODEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlVmFsdWVzOwogICAgIH0K
IAotICAgIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlKCkgY29uc3QKKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRlSW5kZXg+JiBiYXNlUGFsZXR0ZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb250UGFsZXR0ZVZhbHVlcy5iYXNlUGFsZXR0ZSgp
OwogICAgIH0KQEAgLTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlUnVsZUZv
bnRQYWxldHRlVmFsdWVzPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVGb250UGFsZXR0ZVZhbHVlcygqdGhpcykpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVS
dWxlRm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgZm9udEZhbWlseSwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUsIFZl
Y3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3Jz
KTsKKyAgICBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFtaWx5LCBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRl
SW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3ZlcnJpZGRl
bkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKTsKICAgICBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVl
cyhjb25zdCBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyYpOwogCiAgICAgQXRvbVN0cmluZyBt
X25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAppbmRl
eCAyOWY3ZjMwZDNkNDJhODM5MjYxODg5YTNhODc4MjJjOWU4MTZiMTJmLi4xYWQ4NzA3MTkyNThi
MGMwYzMxYzY2ZThkNTViNGI2NmQ2NmZiZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTY4MCwxMiArNjgwLDEwIEBAIFJlZlB0cjxTdHlsZVJ1
bGVGb250UGFsZXR0ZVZhbHVlcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFs
dWVzUnVsZShDCiAgICAgaWYgKGF1dG8gZm9udEZhbWlseVZhbHVlID0gcHJvcGVydGllcy0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKQogICAgICAgICBmb250RmFt
aWx5ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250RmFtaWx5VmFsdWUpLmZvbnRG
YW1pbHkoKS5mYW1pbHlOYW1lOwogCi0gICAgRm9udFBhbGV0dGVJbmRleCBiYXNlUGFsZXR0ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRlSW5kZXg+IGJhc2VQYWxldHRlOwogICAgIGlm
IChhdXRvIGJhc2VQYWxldHRlVmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5QmFzZVBhbGV0dGUpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpiYXNlUGFsZXR0ZVZhbHVlKTsK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICBiYXNl
UGFsZXR0ZSA9IEZvbnRQYWxldHRlSW5kZXgocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7
Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgYmFzZVBhbGV0dGUgPSBG
b250UGFsZXR0ZUluZGV4KHByaW1pdGl2ZVZhbHVlLnZhbHVlPGludDY0X3Q+KCkpOwogICAgICAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMaWdodCkKICAg
ICAgICAgICAgIGJhc2VQYWxldHRlID0gRm9udFBhbGV0dGVJbmRleChGb250UGFsZXR0ZUluZGV4
OjpUeXBlOjpMaWdodCk7CkBAIC02OTcsMTEgKzY5NSw5IEBAIFJlZlB0cjxTdHlsZVJ1bGVGb250
UGFsZXR0ZVZhbHVlcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFsdWVzUnVs
ZShDCiAgICAgaWYgKGF1dG8gb3ZlcnJpZGVDb2xvcnNWYWx1ZSA9IHByb3BlcnRpZXMtPmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlPdmVycmlkZUNvbG9ycykpIHsKICAgICAgICAgY29u
c3QgYXV0byYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKm92ZXJyaWRlQ29sb3JzVmFs
dWUpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBsaXN0KSB7Ci0gICAgICAgICAg
ICBGb250UGFsZXR0ZVZhbHVlczo6UGFsZXR0ZUNvbG9ySW5kZXgga2V5KG51bGxBdG9tKCkpOwor
ICAgICAgICAgICAgdW5zaWduZWQga2V5ID0gMDsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHBh
aXIgPSBkb3duY2FzdDxDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29sb3JzVmFsdWU+KGl0
ZW0uZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHBhaXIua2V5KCkuaXNTdHJpbmcoKSkKLSAgICAg
ICAgICAgICAgICBrZXkgPSBwYWlyLmtleSgpLnN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICBl
bHNlIGlmIChwYWlyLmtleSgpLmlzTnVtYmVyKCkpCisgICAgICAgICAgICBpZiAocGFpci5rZXko
KS5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIGtleSA9IHBhaXIua2V5KCkudmFsdWU8dW5z
aWduZWQ+KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBA
IC03MTAsNyArNzA2LDcgQEAgUmVmUHRyPFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzPiBDU1NQ
YXJzZXJJbXBsOjpjb25zdW1lRm9udFBhbGV0dGVWYWx1ZXNSdWxlKEMKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6Y3JlYXRlKG5hbWUt
PnN0cmluZ1ZhbHVlKCksIGZvbnRGYW1pbHksIGJhc2VQYWxldHRlLCBXVEZNb3ZlKG92ZXJyaWRl
Q29sb3JzKSk7CisgICAgcmV0dXJuIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzOjpjcmVhdGUo
bmFtZS0+c3RyaW5nVmFsdWUoKSwgZm9udEZhbWlseSwgV1RGTW92ZShiYXNlUGFsZXR0ZSksIFdU
Rk1vdmUob3ZlcnJpZGVDb2xvcnMpKTsKIH0KIAogUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4g
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJraXRQcmVmaXhlZCwg
Q1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRl
eCA0NGViODE2MmVlNTBhZmRhZmYzYzQ5NDliYWYxN2FhMDM2ZDJkZjRmLi4yODE4Zjc4NDA3YmQz
YzQ4MzRjOTE1OWI5MDE2ZmYzN2ZlOGRlN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNDg1MCw4ICs0ODUwLDYgQEAgc3RhdGlj
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUJhc2VQYWxldHRlRGVzY3JpcHRvcihD
U1NQYXJzZXJUb2tlblJhbmcKIHsKICAgICBpZiAoYXV0byByZXN1bHQgPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVMaWdodCwgQ1NTVmFsdWVEYXJrPihyYW5nZSkpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZVN0cmluZyhyYW5nZSkpCi0gICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKIH0K
IApAQCAtNDg1OSwxMSArNDg1Nyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25z
dW1lT3ZlcnJpZGVDb2xvcnNEZXNjcmlwdG9yKENTU1BhcnNlclRva2VuUmFuZ2UmCiB7CiAgICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKICAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4ga2V5
OwotICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBTdHJpbmdUb2tlbikKLSAgICAg
ICAgICAgIGtleSA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBrZXkgPSBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CisgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4ga2V5ID0gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOwogICAgICAgICBp
ZiAoIWtleSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaAppbmRleCA1YzU2
NjFhNTNkZjA4MDEyNzZhZDg4OTFiZjRlYTJlYThhMzFhNzc5Li43NGYwZmE3ODFiMGU3YWQ2YTZi
MzkyYWVhYWE4MWE4NDdiYmM0MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKQEAgLTUxLDE1ICs1MSw5IEBAIHN0cnVj
dCBGb250UGFsZXR0ZUluZGV4IHsKICAgICB7CiAgICAgfQogCi0gICAgRm9udFBhbGV0dGVJbmRl
eChjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgIDogdHlwZShUeXBlOjpTdHJpbmcp
Ci0gICAgICAgICwgc3RyaW5nKHN0cmluZykKLSAgICB7Ci0gICAgfQotCiAgICAgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdHlwZSAhPSBUeXBlOjpTdHJpbmcg
fHwgIXN0cmluZy5pc051bGwoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgIT0gVHlwZTo6SW50ZWdl
ciB8fCBpbnRlZ2VyOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFs
ZXR0ZUluZGV4JiBvdGhlcikgY29uc3QKQEAgLTY4LDggKzYyLDYgQEAgc3RydWN0IEZvbnRQYWxl
dHRlSW5kZXggewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAodHlwZSA9
PSBUeXBlOjpJbnRlZ2VyKQogICAgICAgICAgICAgcmV0dXJuIGludGVnZXIgPT0gb3RoZXIuaW50
ZWdlcjsKLSAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6U3RyaW5nKQotICAgICAgICAgICAgcmV0
dXJuIHN0cmluZyA9PSBvdGhlci5zdHJpbmc7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtODEsMTIgKzczLDEwIEBAIHN0cnVjdCBGb250UGFsZXR0ZUluZGV4IHsKICAgICBlbnVt
IGNsYXNzIFR5cGUgOiB1aW50OF90IHsKICAgICAgICAgTGlnaHQsCiAgICAgICAgIERhcmssCi0g
ICAgICAgIEludGVnZXIsCi0gICAgICAgIFN0cmluZwotICAgIH0gdHlwZSB7IFR5cGU6OlN0cmlu
ZyB9OworICAgICAgICBJbnRlZ2VyCisgICAgfSB0eXBlIHsgVHlwZTo6SW50ZWdlciB9OwogCiAg
ICAgdW5zaWduZWQgaW50ZWdlciB7IDAgfTsKLSAgICBBdG9tU3RyaW5nIHN0cmluZzsKIH07CiAK
IGlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYg
cGFsZXR0ZUluZGV4KQpAQCAtOTQsMjQgKzg0LDIxIEBAIGlubGluZSB2b2lkIGFkZChIYXNoZXIm
IGhhc2hlciwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgcGFsZXR0ZUluZGV4KQogICAgIGFkZCho
YXNoZXIsIHBhbGV0dGVJbmRleC50eXBlKTsKICAgICBpZiAocGFsZXR0ZUluZGV4LnR5cGUgPT0g
Rm9udFBhbGV0dGVJbmRleDo6VHlwZTo6SW50ZWdlcikKICAgICAgICAgYWRkKGhhc2hlciwgcGFs
ZXR0ZUluZGV4LmludGVnZXIpOwotICAgIGVsc2UgaWYgKHBhbGV0dGVJbmRleC50eXBlID09IEZv
bnRQYWxldHRlSW5kZXg6OlR5cGU6OlN0cmluZykKLSAgICAgICAgYWRkKGhhc2hlciwgcGFsZXR0
ZUluZGV4LnN0cmluZyk7CiB9CiAKIGNsYXNzIEZvbnRQYWxldHRlVmFsdWVzIHsKIHB1YmxpYzoK
LSAgICB1c2luZyBQYWxldHRlQ29sb3JJbmRleCA9IFZhcmlhbnQ8QXRvbVN0cmluZywgdW5zaWdu
ZWQ+OwotICAgIHVzaW5nIE92ZXJyaWRkZW5Db2xvciA9IHN0ZDo6cGFpcjxQYWxldHRlQ29sb3JJ
bmRleCwgQ29sb3I+OworICAgIHVzaW5nIE92ZXJyaWRkZW5Db2xvciA9IHN0ZDo6cGFpcjx1bnNp
Z25lZCwgQ29sb3I+OwogCiAgICAgRm9udFBhbGV0dGVWYWx1ZXMoKSA9IGRlZmF1bHQ7CiAKLSAg
ICBGb250UGFsZXR0ZVZhbHVlcyhjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwg
VmVjdG9yPE92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKLSAgICAgICAgOiBtX2Jh
c2VQYWxldHRlKGJhc2VQYWxldHRlKQorICAgIEZvbnRQYWxldHRlVmFsdWVzKHN0ZDo6b3B0aW9u
YWw8Rm9udFBhbGV0dGVJbmRleD4mJiBiYXNlUGFsZXR0ZSwgVmVjdG9yPE92ZXJyaWRkZW5Db2xv
cj4mJiBvdmVycmlkZUNvbG9ycykKKyAgICAgICAgOiBtX2Jhc2VQYWxldHRlKFdURk1vdmUoYmFz
ZVBhbGV0dGUpKQogICAgICAgICAsIG1fb3ZlcnJpZGVDb2xvcnMoV1RGTW92ZShvdmVycmlkZUNv
bG9ycykpCiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQ
YWxldHRlKCkgY29uc3QKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRlSW5kZXg+
JiBiYXNlUGFsZXR0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iYXNlUGFsZXR0
ZTsKICAgICB9CkBAIC0xMzcsNyArMTI0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBGb250UGFsZXR0ZUluZGV4IG1fYmFzZVBhbGV0dGU7CisgICAgc3RkOjpvcHRpb25hbDxG
b250UGFsZXR0ZUluZGV4PiBtX2Jhc2VQYWxldHRlOwogICAgIFZlY3RvcjxPdmVycmlkZGVuQ29s
b3I+IG1fb3ZlcnJpZGVDb2xvcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXgg
MGIwOWU0NDZjMTMwZmQxZWI0NjBlNWFiOWQyNGFiNjJiMTU4ZGU1OS4uNWRkNTQ1ZTU3MTRiODI4
MjgxZDAxYmY3NzhhYmU5ZTVhYTFiNzNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAt
NDU3LDM5ICs0NTcsMzMgQEAgc3RhdGljIHZvaWQgYWRkRGFya1BhbGV0dGUoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBhdHRyaWJ1dGVzKQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJpYnV0
ZXMsIGtDVEZvbnRQYWxldHRlQXR0cmlidXRlLCBudW1iZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMg
dm9pZCBhZGRBdHRyaWJ1dGVzRm9yQ3VzdG9tRm9udFBhbGV0dGVzKENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgYXR0cmlidXRlcywgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUsIGNv
bnN0IFZlY3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3ZlcnJpZGRlbkNvbG9yPiYgb3ZlcnJpZGVD
b2xvcnMpCitzdGF0aWMgdm9pZCBhZGRBdHRyaWJ1dGVzRm9yQ3VzdG9tRm9udFBhbGV0dGVzKENG
TXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0cmlidXRlcywgY29uc3Qgc3RkOjpvcHRpb25hbDxGb250
UGFsZXR0ZUluZGV4PiYgYmFzZVBhbGV0dGUsIGNvbnN0IFZlY3RvcjxGb250UGFsZXR0ZVZhbHVl
czo6T3ZlcnJpZGRlbkNvbG9yPiYgb3ZlcnJpZGVDb2xvcnMpCiB7Ci0gICAgc3dpdGNoIChiYXNl
UGFsZXR0ZS50eXBlKSB7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoK
LSAgICAgICAgYWRkTGlnaHRQYWxldHRlKGF0dHJpYnV0ZXMpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkRhcms6Ci0gICAgICAgIGFkZERhcmtQYWxl
dHRlKGF0dHJpYnV0ZXMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5k
ZXg6OlR5cGU6OkludGVnZXI6IHsKLSAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IGJhc2VQYWxl
dHRlLmludGVnZXI7IC8vIFRoZXJlIGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgotICAgICAgICBh
dXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
a0NGTnVtYmVyU0ludDY0VHlwZSwgJnJhd0luZGV4KSk7Ci0gICAgICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGF0dHJpYnV0ZXMsIGtDVEZvbnRQYWxldHRlQXR0cmlidXRlLCBudW1iZXIuZ2V0KCkp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBl
OjpTdHJpbmc6Ci0gICAgICAgIC8vIFRoaXMgaXMgdW5pbXBsZW1lbnRhYmxlIGluIENvcmUgVGV4
dC4KLSAgICAgICAgYnJlYWs7CisgICAgaWYgKGJhc2VQYWxldHRlKSB7CisgICAgICAgIHN3aXRj
aCAoYmFzZVBhbGV0dGUtPnR5cGUpIHsKKyAgICAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpU
eXBlOjpMaWdodDoKKyAgICAgICAgICAgIGFkZExpZ2h0UGFsZXR0ZShhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkRh
cms6CisgICAgICAgICAgICBhZGREYXJrUGFsZXR0ZShhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVnZXI6IHsK
KyAgICAgICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBiYXNlUGFsZXR0ZS0+aW50ZWdlcjsgLy8g
VGhlcmUgaXMgbm8ga0NGTnVtYmVyVUludFR5cGUuCisgICAgICAgICAgICBhdXRvIG51bWJlciA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0lu
dDY0VHlwZSwgJnJhd0luZGV4KSk7CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShh
dHRyaWJ1dGVzLCBrQ1RGb250UGFsZXR0ZUF0dHJpYnV0ZSwgbnVtYmVyLmdldCgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW92
ZXJyaWRlQ29sb3JzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIG92ZXJyaWRlRGljdGlvbmFy
eSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG92ZXJyaWRl
Q29sb3JzKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBwYWxldHRlQ29sb3JJbmRleCA9IHBh
aXIuZmlyc3Q7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBjb2xvciA9IHBhaXIuc2Vjb25kOwot
ICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihwYWxldHRlQ29sb3JJbmRleCwgW10gKGNvbnN0IEF0
b21TdHJpbmcmKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1bmltcGxlbWVudGFibGUg
aW4gQ29yZSBUZXh0LgotICAgICAgICAgICAgfSwgWyZdICh1bnNpZ25lZCBpbmRleCkgewotICAg
ICAgICAgICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBpbmRleDsgLy8gVGhlcmUgaXMgbm8ga0NG
TnVtYmVyVUludFR5cGUuCi0gICAgICAgICAgICAgICAgYXV0byBudW1iZXIgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZy
YXdJbmRleCkpOwotICAgICAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3QgPSBjYWNoZWRDR0Nv
bG9yKGNvbG9yKTsKLSAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShvdmVycmlk
ZURpY3Rpb25hcnkuZ2V0KCksIG51bWJlci5nZXQoKSwgY29sb3JPYmplY3QpOwotICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gcGFpci5maXJzdDsgLy8gVGhl
cmUgaXMgbm8ga0NGTnVtYmVyVUludFR5cGUuCisgICAgICAgICAgICBhdXRvIG51bWJlciA9IGFk
b3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0
VHlwZSwgJnJhd0luZGV4KSk7CisgICAgICAgICAgICBhdXRvIGNvbG9yT2JqZWN0ID0gY2FjaGVk
Q0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShvdmVycmlk
ZURpY3Rpb25hcnkuZ2V0KCksIG51bWJlci5nZXQoKSwgY29sb3JPYmplY3QpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRDb3VudChvdmVycmlkZURpY3Rpb25hcnkuZ2V0
KCkpKQogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9u
dFBhbGV0dGVDb2xvcnNBdHRyaWJ1dGUsIG92ZXJyaWRlRGljdGlvbmFyeS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhNzQyN2RiY2IwYThmYTM5NGI0MjkzOGNlNzQw
MDAwODRmMTU2YzM5Li5jZjJlYzYwMzE4ZTUxNTIzODY5Y2U3OTk0OTAyZTE3Yjk5MTI1YTA1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMC0w
NSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFN0
b3AgcGFyc2luZyBmb250IHBhbGV0dGUgdGhpbmdzIHRoYXQgd2UgY2FuJ3QgaW1wbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3OTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNTM3NzcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9u
dHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWw6CisKIDIwMjEtMTAtMDQg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9w
IHBhcnNpbmcgY29udGV4dC1zZW5zaXRpdmUgY29sb3JzIGluIG92ZXJyaWRlLWNvbG9yCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZm9udHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udHMvcGFyc2lu
Zy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwKaW5kZXggY2RhNDdjZWZjNmU0MzExMjA2
MWEwNmJhYTIyZGNmOGY2NDk4N2Q2ZS4uNDI1MWY3NmE1ZGQyMWFiZWMxMmIzYzExMTVhMjA3NTJm
MGFlZTk4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWZvbnRzL3BhcnNpbmcvZm9udC1wYWxldHRlLXZhbHVlcy12YWxpZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1mb250cy9wYXJzaW5nL2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbApAQCAtMTQw
LDggKzE0MCw4IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0Lmlu
ZGV4T2YoImJhc2UtcGFsZXR0ZTogXCJiYXpcIiIpLCAtMSk7CiAgICAgYXNzZXJ0X25vdF9lcXVh
bHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6IDI7IiksIC0xKTsKICAgICBhc3NlcnRfZXF1
YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiBcImFcIiIpLCAtMSk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9yczogMyIpLCAtMSk7Ci0gICAg
YXNzZXJ0X25vdF9lcXVhbHModGV4dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IFwiYlwiIiks
IC0xKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9y
czogMyIpLCAtMSk7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJyaWRlLWNv
bG9yczogXCJiXCIiKSwgLTEpOwogfSk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC0xNDksMTQg
KzE0OSwxNCBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGFzc2VydF9lcXVhbHMocnVsZS5uYW1l
LCAiLS1DIik7CiAgICAgYXNzZXJ0X2VxdWFscyhydWxlLmZvbnRGYW1pbHksICJiYXIiKTsKICAg
ICBhc3NlcnRfZXF1YWxzKHJ1bGUuYmFzZVBhbGV0dGUsICIyIik7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhydWxlLm92ZXJyaWRlQ29sb3JzLCAiXCJiXCIgcmdiKDE3LCAzNCwgNTEpIik7CisgICAgYXNz
ZXJ0X2VxdWFscyhydWxlLm92ZXJyaWRlQ29sb3JzLCAiMyByZ2IoMTcsIDM0LCA1MSkiKTsKIH0p
OwogCiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGxldCB0ZXh0ID0gcnVsZXNbM10uY3NzVGV4dDsK
ICAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFzZS1wYWxldHRlOiBcImZvb1wiOyIp
LCAtMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoImJhc2UtcGFsZXR0ZTogMSIp
LCAtMSk7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6
IFwiYmFyXCI7IiksIC0xKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0LmluZGV4T2YoImJh
c2UtcGFsZXR0ZTogMSIpLCAtMSk7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoImJh
c2UtcGFsZXR0ZTogXCJiYXJcIjsiKSwgLTEpOwogICAgIGFzc2VydF9lcXVhbHModGV4dC5pbmRl
eE9mKCJvdmVycmlkZS1jb2xvcnM6IDMiKSwgLTEpOwogICAgIGFzc2VydF9lcXVhbHModGV4dC5p
bmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IFwiYmF6XCIiKSwgLTEpOwogICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiA0IiksIC0xKTsKQEAgLTE2Niw3
ICsxNjYsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGxldCBydWxlID0gcnVsZXNbM107CiAg
ICAgYXNzZXJ0X2VxdWFscyhydWxlLm5hbWUsICItLUQiKTsKICAgICBhc3NlcnRfZXF1YWxzKHJ1
bGUuZm9udEZhbWlseSwgIiIpOwotICAgIGFzc2VydF9lcXVhbHMocnVsZS5iYXNlUGFsZXR0ZSwg
ImJhciIpOworICAgIGFzc2VydF9lcXVhbHMocnVsZS5iYXNlUGFsZXR0ZSwgIjEiKTsKICAgICBh
c3NlcnRfZXF1YWxzKHJ1bGUub3ZlcnJpZGVDb2xvcnMuaW5kZXhPZigiKSwiKSwgLTEpOwogICAg
IGFzc2VydF9lcXVhbHMocnVsZS5vdmVycmlkZUNvbG9ycy5pbmRleE9mKCI0ICIpLCAwKTsKICAg
ICBhc3NlcnRfbm90X2VxdWFscyhydWxlLm92ZXJyaWRlQ29sb3JzLmluZGV4T2YoInJnYiIpLCAt
MSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440177</attachid>
            <date>2021-10-05 00:33:55 -0700</date>
            <delta_ts>2021-10-05 00:38:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230799-20211005003354.patch</filename>
            <type>text/plain</type>
            <size>22635</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1N2M0ZTIwMThjNGEw
YWJlNjg4NzJiZTRmMTEzNTBkMTQ5ZTAyZi4uOTUxMTJiZGZmNWU2OGE0YTkyMWVmMGQ1YjIzNGU4
YTFkMDQ3ZWY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEwLTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuJ3QgaW1wbGVtZW50IHRoZSA8c3RyaW5nPiB2YWx1ZXMg
aW4gYmFzZS1wYWxldHRlIGFuZCBvdmVycmlkZS1jb2xvcnMuIEl0J3MgYmV0dGVyCisgICAgICAg
IG5vdCB0byBwYXJzZSB0aGVtLCBzbyB0aGlzIGJlaGF2aW9yIGNhbiBhdCBsZWFzdCBiZSBmZWF0
dXJlIGRldGVjdGVkIGJ5IEpTIHJlYWRpbmcgdGhlCisgICAgICAgIHNlcmlhbGl6ZWQgdmFsdWUg
dGhhdCB3YXMgcGFyc2VkLgorCisgICAgICAgIEknbSBpbnZlc3RpZ2F0aW5nIGNoYW5naW5nIHRo
ZSBzcGVjIHRvIGRpc2FsbG93IHRoZXNlIHVuaW1wbGVtZW50YWJsZSB0aGluZ3MgaW4KKyAgICAg
ICAgaHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzY2MjcuCisKKyAg
ICAgICAgRm9yIGJhc2UtcGFsZXR0ZSwgd2Ugd2VyZSByZXByZXNlbnRpbmcgdGhlIGFic2VuY2Ug
b2YgdGhlIGRlc2NyaXB0b3IgYnkgbWFraW5nIHRoZSBpbnRlcm5hbAorICAgICAgICByZXByZXNl
bnRhdGlvbiBob2xkIGEgbnVsbCBzdHJpbmcuIE5vdyB0aGF0IHdlJ3JlIHJlbW92aW5nIHRoZSBz
dHJpbmcgdmFsdWUgZnJvbSB0aGUgaW50ZXJuYWwKKyAgICAgICAgcmVwcmVzZW50YXRpb24sIHRo
aXMgaXMgbm93IGJlaW5nIHJlcHJlc2VudGVkIGJ5IHVzaW5nIGFuIHN0ZDo6b3B0aW9uYWwgaW5z
dGVhZC4KKworICAgICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZm9udHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwKKworICAg
ICAgICAqIGNzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6Om92ZXJyaWRlQ29sb3JzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMpOgor
ICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQ
YWxldHRlVmFsdWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVPdmVycmlkZUNvbG9yc0Rlc2NyaXB0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGFsZXR0ZUluZGV4OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQYWxldHRlSW5kZXg6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQYWxldHRlVmFsdWVzOjpGb250
UGFsZXR0ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGFsZXR0ZVZhbHVlczo6YmFz
ZVBhbGV0dGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZEF0dHJpYnV0ZXNGb3JDdXN0
b21Gb250UGFsZXR0ZXMpOgorCiAyMDIxLTEwLTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBwYXJzaW5nIGNvbnRleHQtc2Vuc2l0aXZl
IGNvbG9ycyBpbiBvdmVycmlkZS1jb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFBhbGV0dGVWYWx1ZXNSdWxlLmNwcAppbmRleCBhZmZlOWMwMTM1MTA5ZjU4MzRhMThkNGVmYTNi
ODM0MTUzNzcxMTIyLi5iNTFiOWQzM2M4MjY4YjliNmEzMGI5OWZkYzRkYzE3NmM1YWExM2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcApA
QCAtNTgsMTcgKzU4LDE2IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmZvbnRG
YW1pbHkoKSBjb25zdAogCiBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFs
ZXR0ZSgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFz
ZVBhbGV0dGUoKS50eXBlKSB7CisgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFz
ZVBhbGV0dGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CisKKyAgICBz
d2l0Y2ggKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT50eXBlKSB7CiAg
ICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoKICAgICAgICAgcmV0dXJuICJs
aWdodCJfczsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkRhcms6CiAgICAgICAg
IHJldHVybiAiZGFyayJfczsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVn
ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5i
YXNlUGFsZXR0ZSgpLmludGVnZXIpOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6
U3RyaW5nOgotICAgICAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0
ZSgpLnN0cmluZy5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlVmFs
dWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5zdHJpbmc7Ci0gICAgICAgIHJldHVybiBTdHJpbmdJbXBs
OjplbXB0eSgpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtX2ZvbnRQYWxldHRlVmFsdWVz
UnVsZS0+YmFzZVBhbGV0dGUoKS0+aW50ZWdlcik7CiAgICAgfQogfQogCkBAIC03OSwxMiArNzgs
NyBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpvdmVycmlkZUNvbG9ycygpIGNv
bnN0CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAg
ICAgICAgY29uc3QgYXV0byYgaXRlbSA9IG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlk
ZUNvbG9ycygpW2ldOwotICAgICAgICBXVEY6OnN3aXRjaE9uKGl0ZW0uZmlyc3QsIFsmXSAoY29u
c3QgQXRvbVN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNlcmlh
bGl6ZVN0cmluZyhzdHJpbmcpKTsKLSAgICAgICAgfSwgWyZdIChpbnQ2NF90IGluZGV4KSB7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKGluZGV4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnLCBzZXJpYWxpemF0aW9uRm9yQ1NTKGl0ZW0uc2Vjb25kKSk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5maXJzdCwgJyAnLCBzZXJpYWxpemF0aW9uRm9yQ1NTKGl0
ZW0uc2Vjb25kKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KQEAg
LTk2LDIwICs5MCwxOCBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpjc3NUZXh0
KCkgY29uc3QKICAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5mb250RmFtaWx5KCku
aXNOdWxsKCkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJmb250LWZhbWlseTogIiwgbV9mb250
UGFsZXR0ZVZhbHVlc1J1bGUtPmZvbnRGYW1pbHkoKSwgIjsgIik7CiAKLSAgICBzd2l0Y2ggKG1f
Zm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnR5cGUpIHsKLSAgICBjYXNlIEZv
bnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0OgotICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFz
ZS1wYWxldHRlOiBsaWdodDsgIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBhbGV0
dGVJbmRleDo6VHlwZTo6RGFyazoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2UtcGFsZXR0
ZTogZGFyazsgIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6
VHlwZTo6SW50ZWdlcjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2UtcGFsZXR0ZTogIiwg
bV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuaW50ZWdlciwgIjsgIik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6U3RyaW5nOgot
ICAgICAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnN0cmlu
Zy5pc051bGwoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6ICIs
IHNlcmlhbGl6ZVN0cmluZyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5z
dHJpbmcpLCAiOyAiKTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1fZm9udFBhbGV0dGVWYWx1
ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpKSB7CisgICAgICAgIHN3aXRjaCAobV9mb250UGFsZXR0ZVZh
bHVlc1J1bGUtPmJhc2VQYWxldHRlKCktPnR5cGUpIHsKKyAgICAgICAgY2FzZSBGb250UGFsZXR0
ZUluZGV4OjpUeXBlOjpMaWdodDoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBh
bGV0dGU6IGxpZ2h0OyAiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZvbnRQ
YWxldHRlSW5kZXg6OlR5cGU6OkRhcms6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFz
ZS1wYWxldHRlOiBkYXJrOyAiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZv
bnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVnZXI6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiYmFzZS1wYWxldHRlOiAiLCBtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUo
KS0+aW50ZWdlciwgIjsgIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKCkuaXNF
bXB0eSgpKSB7CkBAIC0xMTcsMTMgKzEwOSw3IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVl
c1J1bGU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
Zm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIFdURjo6c3dpdGNo
T24obV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0uZmlyc3QsIFsm
XSAoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHNlcmlhbGl6ZVN0cmluZyhuYW1lLnN0cmluZygpKSk7Ci0gICAgICAgICAgICB9LCBbJl0g
KHVuc2lnbmVkIGluZGV4KSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaW5kZXgp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIHNlcmlh
bGl6YXRpb25Gb3JDU1MobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClb
aV0uc2Vjb25kKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIG1fZm9udFBhbGV0
dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ldLmZpcnN0LCAnICcsIHNlcmlhbGl6YXRp
b25Gb3JDU1MobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0uc2Vj
b25kKSk7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjsgIik7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmNwcAppbmRleCBiODg5Y2U5ZGFlOTBmMDU2YzAwOGE5OTQ0YmZk
Mzg2MDg4YTE2NTYwLi5hODczMDA5ZTQwM2MyM2EzY2I3MDlmN2Q5YTU4ZWJkMzVmZTdjNzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApAQCAtMzMwLDExICszMzAsMTEgQEAgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYgU3R5bGVSdWxlRm9udEZhY2U6Om11dGFibGVQcm9wZXJ0aWVzKCkKICAg
ICByZXR1cm4gZG93bmNhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4obV9wcm9wZXJ0aWVzLmdl
dCgpKTsKIH0KIAotU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OlN0eWxlUnVsZUZvbnRQYWxl
dHRlVmFsdWVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRG
YW1pbHksIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBh
bGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKK1N0eWxlUnVs
ZUZvbnRQYWxldHRlVmFsdWVzOjpTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFtaWx5LCBzdGQ6Om9wdGlvbmFs
PEZvbnRQYWxldHRlSW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFsZXR0ZVZhbHVl
czo6T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQogICAgIDogU3R5bGVSdWxlQmFz
ZShTdHlsZVJ1bGVUeXBlOjpGb250UGFsZXR0ZVZhbHVlcykKICAgICAsIG1fbmFtZShuYW1lKQog
ICAgICwgbV9mb250RmFtaWx5KGZvbnRGYW1pbHkpCi0gICAgLCBtX2ZvbnRQYWxldHRlVmFsdWVz
KGJhc2VQYWxldHRlLCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkKKyAgICAsIG1fZm9udFBhbGV0
dGVWYWx1ZXMoV1RGTW92ZShiYXNlUGFsZXR0ZSksIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggMTNiMzQwZTM1ODQ2OTIwM2EyYWQ3OTBi
NDA1NmM4YTM1YTU4NDZjNS4uODUyZWNjYTNlNzgzZDNhMmYwMjkyNjhmNWQyNGM4OWVhZmExZTFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMTU5LDkgKzE1OSw5IEBAIHByaXZhdGU6CiAK
IGNsYXNzIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzIGZpbmFsIDogcHVibGljIFN0eWxlUnVs
ZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1
ZXM+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250
RmFtaWx5LCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQ
YWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCisgICAgc3Rh
dGljIFJlZjxTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcz4gY3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRGYW1pbHksIHN0ZDo6b3B0aW9uYWw8Rm9u
dFBhbGV0dGVJbmRleD4mJiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpP
dmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhuYW1lLCBmb250RmFtaWx5
LCBiYXNlUGFsZXR0ZSwgV1RGTW92ZShvdmVycmlkZUNvbG9ycykpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMobmFtZSwgZm9udEZhbWls
eSwgV1RGTW92ZShiYXNlUGFsZXR0ZSksIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKSk7CiAgICAg
fQogICAgIAogICAgIH5TdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcygpOwpAQCAtMTgxLDcgKzE4
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZm9udFBhbGV0dGVWYWx1ZXM7CiAgICAg
fQogCi0gICAgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUoKSBjb25zdAorICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRleD4mIGJhc2VQYWxldHRlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlVmFsdWVzLmJhc2VQYWxldHRl
KCk7CiAgICAgfQpAQCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVSdWxl
Rm9udFBhbGV0dGVWYWx1ZXM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHls
ZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBmb250RmFtaWx5LCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwg
VmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xv
cnMpOworICAgIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRGYW1pbHksIHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0
dGVJbmRleD4mJiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlk
ZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpOwogICAgIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFs
dWVzKGNvbnN0IFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzJik7CiAKICAgICBBdG9tU3RyaW5n
IG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCmlu
ZGV4IDI5ZjdmMzBkM2Q0MmE4MzkyNjE4ODlhM2E4NzgyMmM5ZTgxNmIxMmYuLjFhZDg3MDcxOTI1
OGIwYzBjMzFjNjZlOGQ1NWI0YjY2ZDY2ZmJkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNjgwLDEyICs2ODAsMTAgQEAgUmVmUHRyPFN0eWxl
UnVsZUZvbnRQYWxldHRlVmFsdWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRm9udFBhbGV0dGVW
YWx1ZXNSdWxlKEMKICAgICBpZiAoYXV0byBmb250RmFtaWx5VmFsdWUgPSBwcm9wZXJ0aWVzLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpCiAgICAgICAgIGZvbnRG
YW1pbHkgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRGYW1pbHlWYWx1ZSkuZm9u
dEZhbWlseSgpLmZhbWlseU5hbWU7CiAKLSAgICBGb250UGFsZXR0ZUluZGV4IGJhc2VQYWxldHRl
OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRleD4gYmFzZVBhbGV0dGU7CiAgICAg
aWYgKGF1dG8gYmFzZVBhbGV0dGVWYWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlCYXNlUGFsZXR0ZSkpIHsKICAgICAgICAgY29uc3QgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmJhc2VQYWxldHRlVmFsdWUp
OwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGJh
c2VQYWxldHRlID0gRm9udFBhbGV0dGVJbmRleChwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgp
KTsKLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICBiYXNlUGFsZXR0ZSA9
IEZvbnRQYWxldHRlSW5kZXgocHJpbWl0aXZlVmFsdWUudmFsdWU8aW50NjRfdD4oKSk7CiAgICAg
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxpZ2h0KQog
ICAgICAgICAgICAgYmFzZVBhbGV0dGUgPSBGb250UGFsZXR0ZUluZGV4KEZvbnRQYWxldHRlSW5k
ZXg6OlR5cGU6OkxpZ2h0KTsKQEAgLTY5NywxMSArNjk1LDkgQEAgUmVmUHRyPFN0eWxlUnVsZUZv
bnRQYWxldHRlVmFsdWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRm9udFBhbGV0dGVWYWx1ZXNS
dWxlKEMKICAgICBpZiAoYXV0byBvdmVycmlkZUNvbG9yc1ZhbHVlID0gcHJvcGVydGllcy0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eU92ZXJyaWRlQ29sb3JzKSkgewogICAgICAgICBj
b25zdCBhdXRvJiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigqb3ZlcnJpZGVDb2xvcnNW
YWx1ZSk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGxpc3QpIHsKLSAgICAgICAg
ICAgIEZvbnRQYWxldHRlVmFsdWVzOjpQYWxldHRlQ29sb3JJbmRleCBrZXkobnVsbEF0b20oKSk7
CisgICAgICAgICAgICB1bnNpZ25lZCBrZXkgPSAwOwogICAgICAgICAgICAgY29uc3QgYXV0byYg
cGFpciA9IGRvd25jYXN0PENTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1ZT4o
aXRlbS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAocGFpci5rZXkoKS5pc1N0cmluZygpKQotICAg
ICAgICAgICAgICAgIGtleSA9IHBhaXIua2V5KCkuc3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHBhaXIua2V5KCkuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGlmIChwYWlyLmtl
eSgpLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAga2V5ID0gcGFpci5rZXkoKS52YWx1ZTx1
bnNpZ25lZD4oKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTcxMCw3ICs3MDYsNyBAQCBSZWZQdHI8U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM+IENT
U1BhcnNlckltcGw6OmNvbnN1bWVGb250UGFsZXR0ZVZhbHVlc1J1bGUoQwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgcmV0dXJuIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzOjpjcmVhdGUobmFt
ZS0+c3RyaW5nVmFsdWUoKSwgZm9udEZhbWlseSwgYmFzZVBhbGV0dGUsIFdURk1vdmUob3ZlcnJp
ZGVDb2xvcnMpKTsKKyAgICByZXR1cm4gU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OmNyZWF0
ZShuYW1lLT5zdHJpbmdWYWx1ZSgpLCBmb250RmFtaWx5LCBXVEZNb3ZlKGJhc2VQYWxldHRlKSwg
V1RGTW92ZShvdmVycmlkZUNvbG9ycykpOwogfQogCiBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVz
PiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdlYmtpdFByZWZpeGVk
LCBDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmlu
ZGV4IDQ0ZWI4MTYyZWU1MGFmZGFmZjNjNDk0OWJhZjE3YWEwMzZkMmRmNGYuLjI4MThmNzg0MDdi
ZDNjNDgzNGM5MTU5YjkwMTZmZjM3ZmU4ZGU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00ODUwLDggKzQ4NTAsNiBAQCBzdGF0
aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9y
KENTU1BhcnNlclRva2VuUmFuZwogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUxpZ2h0LCBDU1NWYWx1ZURhcms+KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICBpZiAoYXV0byByZXN1bHQgPSBjb25zdW1lU3RyaW5nKHJhbmdlKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICByZXR1cm4gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOwog
fQogCkBAIC00ODU5LDExICs0ODU3LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNv
bnN1bWVPdmVycmlkZUNvbG9yc0Rlc2NyaXB0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYKIHsKICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwogICAgIGRvIHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBr
ZXk7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKQotICAg
ICAgICAgICAga2V5ID0gY29uc3VtZVN0cmluZyhyYW5nZSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGtleSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKKyAgICAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBrZXkgPSBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CiAgICAgICAg
IGlmICgha2V5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCmluZGV4IDVj
NTY2MWE1M2RmMDgwMTI3NmFkODg5MWJmNGVhMmVhOGEzMWE3NzkuLjc0ZjBmYTc4MWIwZTdhZDZh
NmIzOTJhZWFhYTgxYTg0N2JiYzQyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaApAQCAtNTEsMTUgKzUxLDkgQEAgc3Ry
dWN0IEZvbnRQYWxldHRlSW5kZXggewogICAgIHsKICAgICB9CiAKLSAgICBGb250UGFsZXR0ZUlu
ZGV4KGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykKLSAgICAgICAgOiB0eXBlKFR5cGU6OlN0cmlu
ZykKLSAgICAgICAgLCBzdHJpbmcoc3RyaW5nKQotICAgIHsKLSAgICB9Ci0KICAgICBvcGVyYXRv
ciBib29sKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlICE9IFR5cGU6OlN0cmlu
ZyB8fCAhc3RyaW5nLmlzTnVsbCgpOworICAgICAgICByZXR1cm4gdHlwZSAhPSBUeXBlOjpJbnRl
Z2VyIHx8IGludGVnZXI7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQ
YWxldHRlSW5kZXgmIG90aGVyKSBjb25zdApAQCAtNjgsOCArNjIsNiBAQCBzdHJ1Y3QgRm9udFBh
bGV0dGVJbmRleCB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh0eXBl
ID09IFR5cGU6OkludGVnZXIpCiAgICAgICAgICAgICByZXR1cm4gaW50ZWdlciA9PSBvdGhlci5p
bnRlZ2VyOwotICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpTdHJpbmcpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RyaW5nID09IG90aGVyLnN0cmluZzsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC04MSwxMiArNzMsMTAgQEAgc3RydWN0IEZvbnRQYWxldHRlSW5kZXggewogICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMaWdodCwKICAgICAgICAgRGFyaywK
LSAgICAgICAgSW50ZWdlciwKLSAgICAgICAgU3RyaW5nCi0gICAgfSB0eXBlIHsgVHlwZTo6U3Ry
aW5nIH07CisgICAgICAgIEludGVnZXIKKyAgICB9IHR5cGUgeyBUeXBlOjpJbnRlZ2VyIH07CiAK
ICAgICB1bnNpZ25lZCBpbnRlZ2VyIHsgMCB9OwotICAgIEF0b21TdHJpbmcgc3RyaW5nOwogfTsK
IAogaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250UGFsZXR0ZUluZGV4
JiBwYWxldHRlSW5kZXgpCkBAIC05NCwyNCArODQsMjEgQEAgaW5saW5lIHZvaWQgYWRkKEhhc2hl
ciYgaGFzaGVyLCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBwYWxldHRlSW5kZXgpCiAgICAgYWRk
KGhhc2hlciwgcGFsZXR0ZUluZGV4LnR5cGUpOwogICAgIGlmIChwYWxldHRlSW5kZXgudHlwZSA9
PSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyKQogICAgICAgICBhZGQoaGFzaGVyLCBw
YWxldHRlSW5kZXguaW50ZWdlcik7Ci0gICAgZWxzZSBpZiAocGFsZXR0ZUluZGV4LnR5cGUgPT0g
Rm9udFBhbGV0dGVJbmRleDo6VHlwZTo6U3RyaW5nKQotICAgICAgICBhZGQoaGFzaGVyLCBwYWxl
dHRlSW5kZXguc3RyaW5nKTsKIH0KIAogY2xhc3MgRm9udFBhbGV0dGVWYWx1ZXMgewogcHVibGlj
OgotICAgIHVzaW5nIFBhbGV0dGVDb2xvckluZGV4ID0gVmFyaWFudDxBdG9tU3RyaW5nLCB1bnNp
Z25lZD47Ci0gICAgdXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpwYWlyPFBhbGV0dGVDb2xv
ckluZGV4LCBDb2xvcj47CisgICAgdXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpwYWlyPHVu
c2lnbmVkLCBDb2xvcj47CiAKICAgICBGb250UGFsZXR0ZVZhbHVlcygpID0gZGVmYXVsdDsKIAot
ICAgIEZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRl
LCBWZWN0b3I8T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQotICAgICAgICA6IG1f
YmFzZVBhbGV0dGUoYmFzZVBhbGV0dGUpCisgICAgRm9udFBhbGV0dGVWYWx1ZXMoc3RkOjpvcHRp
b25hbDxGb250UGFsZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8T3ZlcnJpZGRlbkNv
bG9yPiYmIG92ZXJyaWRlQ29sb3JzKQorICAgICAgICA6IG1fYmFzZVBhbGV0dGUoV1RGTW92ZShi
YXNlUGFsZXR0ZSkpCiAgICAgICAgICwgbV9vdmVycmlkZUNvbG9ycyhXVEZNb3ZlKG92ZXJyaWRl
Q29sb3JzKSkKICAgICB7CiAgICAgfQogCi0gICAgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFz
ZVBhbGV0dGUoKSBjb25zdAorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRl
eD4mIGJhc2VQYWxldHRlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Jhc2VQYWxl
dHRlOwogICAgIH0KQEAgLTEzNyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIEZvbnRQYWxldHRlSW5kZXggbV9iYXNlUGFsZXR0ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZvbnRQYWxldHRlSW5kZXg+IG1fYmFzZVBhbGV0dGU7CiAgICAgVmVjdG9yPE92ZXJyaWRkZW5D
b2xvcj4gbV9vdmVycmlkZUNvbG9yczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRl
eCAwYjA5ZTQ0NmMxMzBmZDFlYjQ2MGU1YWI5ZDI0YWI2MmIxNThkZTU5Li41ZGQ1NDVlNTcxNGI4
MjgyODFkMDFiZjc3OGFiZTllNWFhMWI3M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBA
IC00NTcsMzkgKzQ1NywzMyBAQCBzdGF0aWMgdm9pZCBhZGREYXJrUGFsZXR0ZShDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmli
dXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQoKSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMoQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBhdHRyaWJ1dGVzLCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwg
Y29uc3QgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiBvdmVycmlk
ZUNvbG9ycykKK3N0YXRpYyB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMo
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZv
bnRQYWxldHRlSW5kZXg+JiBiYXNlUGFsZXR0ZSwgY29uc3QgVmVjdG9yPEZvbnRQYWxldHRlVmFs
dWVzOjpPdmVycmlkZGVuQ29sb3I+JiBvdmVycmlkZUNvbG9ycykKIHsKLSAgICBzd2l0Y2ggKGJh
c2VQYWxldHRlLnR5cGUpIHsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0
OgotICAgICAgICBhZGRMaWdodFBhbGV0dGUoYXR0cmlidXRlcyk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6RGFyazoKLSAgICAgICAgYWRkRGFya1Bh
bGV0dGUoYXR0cmlidXRlcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBhbGV0dGVJ
bmRleDo6VHlwZTo6SW50ZWdlcjogewotICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gYmFzZVBh
bGV0dGUuaW50ZWdlcjsgLy8gVGhlcmUgaXMgbm8ga0NGTnVtYmVyVUludFR5cGUuCi0gICAgICAg
IGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQo
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5
cGU6OlN0cmluZzoKLSAgICAgICAgLy8gVGhpcyBpcyB1bmltcGxlbWVudGFibGUgaW4gQ29yZSBU
ZXh0LgotICAgICAgICBicmVhazsKKyAgICBpZiAoYmFzZVBhbGV0dGUpIHsKKyAgICAgICAgc3dp
dGNoIChiYXNlUGFsZXR0ZS0+dHlwZSkgeworICAgICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6
OlR5cGU6OkxpZ2h0OgorICAgICAgICAgICAgYWRkTGlnaHRQYWxldHRlKGF0dHJpYnV0ZXMpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6
RGFyazoKKyAgICAgICAgICAgIGFkZERhcmtQYWxldHRlKGF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6SW50ZWdlcjog
eworICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IGJhc2VQYWxldHRlLT5pbnRlZ2VyOyAv
LyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KKyAgICAgICAgICAgIGF1dG8gbnVtYmVy
ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJT
SW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGF0dHJpYnV0ZXMsIGtDVEZvbnRQYWxldHRlQXR0cmlidXRlLCBudW1iZXIuZ2V0KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICgh
b3ZlcnJpZGVDb2xvcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gb3ZlcnJpZGVEaWN0aW9u
YXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogb3ZlcnJp
ZGVDb2xvcnMpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHBhbGV0dGVDb2xvckluZGV4ID0g
cGFpci5maXJzdDsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNvbG9yID0gcGFpci5zZWNvbmQ7
Ci0gICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHBhbGV0dGVDb2xvckluZGV4LCBbXSAoY29uc3Qg
QXRvbVN0cmluZyYpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVuaW1wbGVtZW50YWJs
ZSBpbiBDb3JlIFRleHQuCi0gICAgICAgICAgICB9LCBbJl0gKHVuc2lnbmVkIGluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IGluZGV4OyAvLyBUaGVyZSBpcyBubyBr
Q0ZOdW1iZXJVSW50VHlwZS4KLSAgICAgICAgICAgICAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwg
JnJhd0luZGV4KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBjb2xvck9iamVjdCA9IGNhY2hlZENH
Q29sb3IoY29sb3IpOwotICAgICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG92ZXJy
aWRlRGljdGlvbmFyeS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdCk7Ci0gICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBwYWlyLmZpcnN0OyAvLyBU
aGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KKyAgICAgICAgICAgIGF1dG8gbnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50
NjRUeXBlLCAmcmF3SW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3QgPSBjYWNo
ZWRDR0NvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG92ZXJy
aWRlRGljdGlvbmFyeS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldENvdW50KG92ZXJyaWRlRGljdGlvbmFyeS5n
ZXQoKSkpCiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLCBrQ1RG
b250UGFsZXR0ZUNvbG9yc0F0dHJpYnV0ZSwgb3ZlcnJpZGVEaWN0aW9uYXJ5LmdldCgpKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGE3NDI3ZGJjYjBhOGZhMzk0YjQyOTM4Y2U3
NDAwMDA4NGYxNTZjMzkuLmNmMmVjNjAzMThlNTE1MjM4NjljZTc5OTQ5MDJlMTdiOTkxMjVhMDUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEw
LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RvcCBwYXJzaW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1m
b250cy9wYXJzaW5nL2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbDoKKwogMjAyMS0xMC0w
NCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFN0
b3AgcGFyc2luZyBjb250ZXh0LXNlbnNpdGl2ZSBjb2xvcnMgaW4gb3ZlcnJpZGUtY29sb3IKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1mb250cy9wYXJzaW5nL2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250cy9wYXJz
aW5nL2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbAppbmRleCBjZGE0N2NlZmM2ZTQzMTEy
MDYxYTA2YmFhMjJkY2Y4ZjY0OTg3ZDZlLi40MjUxZjc2YTVkZDIxYWJlYzEyYjNjMTExNWEyMDc1
MmYwYWVlOTgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZm9udHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWZvbnRzL3BhcnNpbmcvZm9udC1wYWxldHRlLXZhbHVlcy12YWxpZC5odG1sCkBAIC0x
NDAsOCArMTQwLDggQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBhc3NlcnRfZXF1YWxzKHRleHQu
aW5kZXhPZigiYmFzZS1wYWxldHRlOiBcImJhelwiIiksIC0xKTsKICAgICBhc3NlcnRfbm90X2Vx
dWFscyh0ZXh0LmluZGV4T2YoImJhc2UtcGFsZXR0ZTogMjsiKSwgLTEpOwogICAgIGFzc2VydF9l
cXVhbHModGV4dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IFwiYVwiIiksIC0xKTsKLSAgICBh
c3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiAzIiksIC0xKTsKLSAg
ICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9yczogXCJiXCIi
KSwgLTEpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29s
b3JzOiAzIiksIC0xKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUt
Y29sb3JzOiBcImJcIiIpLCAtMSk7CiB9KTsKIAogdGVzdChmdW5jdGlvbigpIHsKQEAgLTE0OSwx
NCArMTQ5LDE0IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhydWxlLm5h
bWUsICItLUMiKTsKICAgICBhc3NlcnRfZXF1YWxzKHJ1bGUuZm9udEZhbWlseSwgImJhciIpOwog
ICAgIGFzc2VydF9lcXVhbHMocnVsZS5iYXNlUGFsZXR0ZSwgIjIiKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHJ1bGUub3ZlcnJpZGVDb2xvcnMsICJcImJcIiByZ2IoMTcsIDM0LCA1MSkiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHJ1bGUub3ZlcnJpZGVDb2xvcnMsICIzIHJnYigxNywgMzQsIDUxKSIpOwog
fSk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbGV0IHRleHQgPSBydWxlc1szXS5jc3NUZXh0
OwogICAgIGFzc2VydF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6IFwiZm9vXCI7
IiksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFzZS1wYWxldHRlOiAx
IiksIC0xKTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0LmluZGV4T2YoImJhc2UtcGFsZXR0
ZTogXCJiYXJcIjsiKSwgLTEpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5kZXhPZigi
YmFzZS1wYWxldHRlOiAxIiksIC0xKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigi
YmFzZS1wYWxldHRlOiBcImJhclwiOyIpLCAtMSk7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0Lmlu
ZGV4T2YoIm92ZXJyaWRlLWNvbG9yczogMyIpLCAtMSk7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0
LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9yczogXCJiYXpcIiIpLCAtMSk7CiAgICAgYXNzZXJ0X25v
dF9lcXVhbHModGV4dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IDQiKSwgLTEpOwpAQCAtMTY2
LDcgKzE2Niw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbGV0IHJ1bGUgPSBydWxlc1szXTsK
ICAgICBhc3NlcnRfZXF1YWxzKHJ1bGUubmFtZSwgIi0tRCIpOwogICAgIGFzc2VydF9lcXVhbHMo
cnVsZS5mb250RmFtaWx5LCAiIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhydWxlLmJhc2VQYWxldHRl
LCAiYmFyIik7CisgICAgYXNzZXJ0X2VxdWFscyhydWxlLmJhc2VQYWxldHRlLCAiMSIpOwogICAg
IGFzc2VydF9lcXVhbHMocnVsZS5vdmVycmlkZUNvbG9ycy5pbmRleE9mKCIpLCIpLCAtMSk7CiAg
ICAgYXNzZXJ0X2VxdWFscyhydWxlLm92ZXJyaWRlQ29sb3JzLmluZGV4T2YoIjQgIiksIDApOwog
ICAgIGFzc2VydF9ub3RfZXF1YWxzKHJ1bGUub3ZlcnJpZGVDb2xvcnMuaW5kZXhPZigicmdiIiks
IC0xKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440178</attachid>
            <date>2021-10-05 00:38:21 -0700</date>
            <delta_ts>2021-10-06 23:24:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230799-20211005003820.patch</filename>
            <type>text/plain</type>
            <size>22622</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmViMWI3MjY4ZjVlODk5
N2M5MWZiNzkwNmI2M2RjYmM5MTM5NjkwZC4uODQ2ZGUzNzhlNTdjMzhhNjYyM2M1NjUwZWMwMTAz
ZDY3ODIyY2M1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEwLTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuJ3QgaW1wbGVtZW50IHRoZSA8c3RyaW5nPiB2YWx1ZXMg
aW4gYmFzZS1wYWxldHRlIGFuZCBvdmVycmlkZS1jb2xvcnMuIEl0J3MgYmV0dGVyCisgICAgICAg
IG5vdCB0byBwYXJzZSB0aGVtLCBzbyB0aGlzIGJlaGF2aW9yIGNhbiBhdCBsZWFzdCBiZSBmZWF0
dXJlIGRldGVjdGVkIGJ5IEpTIHJlYWRpbmcgdGhlCisgICAgICAgIHNlcmlhbGl6ZWQgdmFsdWUg
dGhhdCB3YXMgcGFyc2VkLgorCisgICAgICAgIEknbSBpbnZlc3RpZ2F0aW5nIGNoYW5naW5nIHRo
ZSBzcGVjIHRvIGRpc2FsbG93IHRoZXNlIHVuaW1wbGVtZW50YWJsZSB0aGluZ3MgaW4KKyAgICAg
ICAgaHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzY2MjcuCisKKyAg
ICAgICAgRm9yIGJhc2UtcGFsZXR0ZSwgd2Ugd2VyZSByZXByZXNlbnRpbmcgdGhlIGFic2VuY2Ug
b2YgdGhlIGRlc2NyaXB0b3IgYnkgbWFraW5nIHRoZSBpbnRlcm5hbAorICAgICAgICByZXByZXNl
bnRhdGlvbiBob2xkIGEgbnVsbCBzdHJpbmcuIE5vdyB0aGF0IHdlJ3JlIHJlbW92aW5nIHRoZSBz
dHJpbmcgdmFsdWUgZnJvbSB0aGUgaW50ZXJuYWwKKyAgICAgICAgcmVwcmVzZW50YXRpb24sIHRo
aXMgaXMgbm93IGJlaW5nIHJlcHJlc2VudGVkIGJ5IHVzaW5nIGFuIHN0ZDo6b3B0aW9uYWwgaW5z
dGVhZC4KKworICAgICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZm9udHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwKKworICAg
ICAgICAqIGNzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6Om92ZXJyaWRlQ29sb3JzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMpOgor
ICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQ
YWxldHRlVmFsdWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVPdmVycmlkZUNvbG9yc0Rlc2NyaXB0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGFsZXR0ZUluZGV4OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQYWxldHRlSW5kZXg6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQYWxldHRlVmFsdWVzOjpGb250
UGFsZXR0ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGFsZXR0ZVZhbHVlczo6YmFz
ZVBhbGV0dGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZEF0dHJpYnV0ZXNGb3JDdXN0
b21Gb250UGFsZXR0ZXMpOgorCiAyMDIxLTEwLTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgTmVnYXRpdmUgaW50ZWdlcnMgaW4gQGZvbnQtcGFs
ZXR0ZS12YWx1ZXMgYXJlIGludmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQ
YWxldHRlVmFsdWVzUnVsZS5jcHAKaW5kZXggYWZmZTljMDEzNTEwOWY1ODM0YTE4ZDRlZmEzYjgz
NDE1Mzc3MTEyMi4uYjUxYjlkMzNjODI2OGI5YjZhMzBiOTlmZGM0ZGMxNzZjNWFhMTNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAKQEAg
LTU4LDE3ICs1OCwxNiBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpmb250RmFt
aWx5KCkgY29uc3QKIAogU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6YmFzZVBhbGV0
dGUoKSBjb25zdAogewotICAgIHN3aXRjaCAobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQ
YWxldHRlKCkudHlwZSkgeworICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQ
YWxldHRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOworCisgICAgc3dp
dGNoIChtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS0+dHlwZSkgewogICAg
IGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6TGlnaHQ6CiAgICAgICAgIHJldHVybiAibGln
aHQiX3M7CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpEYXJrOgogICAgICAgICBy
ZXR1cm4gImRhcmsiX3M7CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2Vy
OgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFz
ZVBhbGV0dGUoKS5pbnRlZ2VyKTsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OlN0
cmluZzoKLSAgICAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUo
KS5zdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9mb250UGFsZXR0ZVZhbHVl
c1J1bGUtPmJhc2VQYWxldHRlKCkuc3RyaW5nOwotICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobV9mb250UGFsZXR0ZVZhbHVlc1J1
bGUtPmJhc2VQYWxldHRlKCktPmludGVnZXIpOwogICAgIH0KIH0KIApAQCAtNzksMTIgKzc4LDcg
QEAgU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6b3ZlcnJpZGVDb2xvcnMoKSBjb25z
dAogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSBtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVD
b2xvcnMoKVtpXTsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihpdGVtLmZpcnN0LCBbJl0gKGNvbnN0
IEF0b21TdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzZXJpYWxp
emVTdHJpbmcoc3RyaW5nKSk7Ci0gICAgICAgIH0sIFsmXSAoaW50NjRfdCBpbmRleCkgewotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmRleCk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXN1
bHQuYXBwZW5kKCcgJywgc2VyaWFsaXphdGlvbkZvckNTUyhpdGVtLnNlY29uZCkpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKGl0ZW0uZmlyc3QsICcgJywgc2VyaWFsaXphdGlvbkZvckNTUyhpdGVt
LnNlY29uZCkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CkBAIC05
NiwyMCArOTAsMTggQEAgU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCgp
IGNvbnN0CiAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+Zm9udEZhbWlseSgpLmlz
TnVsbCgpKQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiZm9udC1mYW1pbHk6ICIsIG1fZm9udFBh
bGV0dGVWYWx1ZXNSdWxlLT5mb250RmFtaWx5KCksICI7ICIpOwogCi0gICAgc3dpdGNoIChtX2Zv
bnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS50eXBlKSB7Ci0gICAgY2FzZSBGb250
UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2Ut
cGFsZXR0ZTogbGlnaHQ7ICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRl
SW5kZXg6OlR5cGU6OkRhcms6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6
IGRhcms7ICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5
cGU6OkludGVnZXI6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6ICIsIG1f
Zm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLmludGVnZXIsICI7ICIpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OlN0cmluZzoKLSAg
ICAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5zdHJpbmcu
aXNOdWxsKCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxldHRlOiAiLCBz
ZXJpYWxpemVTdHJpbmcobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuc3Ry
aW5nKSwgIjsgIik7Ci0gICAgICAgIGJyZWFrOworICAgIGlmIChtX2ZvbnRQYWxldHRlVmFsdWVz
UnVsZS0+YmFzZVBhbGV0dGUoKSkgeworICAgICAgICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVWYWx1
ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT50eXBlKSB7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJ
bmRleDo6VHlwZTo6TGlnaHQ6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFzZS1wYWxl
dHRlOiBsaWdodDsgIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb250UGFs
ZXR0ZUluZGV4OjpUeXBlOjpEYXJrOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoImJhc2Ut
cGFsZXR0ZTogZGFyazsgIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb250
UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ImJhc2UtcGFsZXR0ZTogIiwgbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkt
PmludGVnZXIsICI7ICIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAoIW1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpLmlzRW1w
dHkoKSkgewpAQCAtMTE3LDEzICsxMDksNyBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNS
dWxlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Zv
bnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKS5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBXVEY6OnN3aXRjaE9u
KG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ldLmZpcnN0LCBbJl0g
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChzZXJpYWxpemVTdHJpbmcobmFtZS5zdHJpbmcoKSkpOwotICAgICAgICAgICAgfSwgWyZdICh1
bnNpZ25lZCBpbmRleCkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGluZGV4KTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnLCBzZXJpYWxp
emF0aW9uRm9yQ1NTKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ld
LnNlY29uZCkpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnLCBtX2ZvbnRQYWxldHRl
VmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMoKVtpXS5maXJzdCwgJyAnLCBzZXJpYWxpemF0aW9u
Rm9yQ1NTKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5vdmVycmlkZUNvbG9ycygpW2ldLnNlY29u
ZCkpOwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI7ICIpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggYjg4OWNlOWRhZTkwZjA1NmMwMDhhOTk0NGJmZDM4
NjA4OGExNjU2MC4uYTg3MzAwOWU0MDNjMjNhM2NiNzA5ZjdkOWE1OGViZDM1ZmU3Yzc0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTMzMCwxMSArMzMwLDExIEBAIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmIFN0eWxlUnVsZUZvbnRGYWNlOjptdXRhYmxlUHJvcGVydGllcygpCiAgICAg
cmV0dXJuIGRvd25jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KG1fcHJvcGVydGllcy5nZXQo
KSk7CiB9CiAKLVN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzOjpTdHlsZVJ1bGVGb250UGFsZXR0
ZVZhbHVlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFt
aWx5LCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZvbnRQYWxl
dHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCitTdHlsZVJ1bGVG
b250UGFsZXR0ZVZhbHVlczo6U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgQXRvbVN0
cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZhbWlseSwgc3RkOjpvcHRpb25hbDxG
b250UGFsZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6
Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKICAgICA6IFN0eWxlUnVsZUJhc2Uo
U3R5bGVSdWxlVHlwZTo6Rm9udFBhbGV0dGVWYWx1ZXMpCiAgICAgLCBtX25hbWUobmFtZSkKICAg
ICAsIG1fZm9udEZhbWlseShmb250RmFtaWx5KQotICAgICwgbV9mb250UGFsZXR0ZVZhbHVlcyhi
YXNlUGFsZXR0ZSwgV1RGTW92ZShvdmVycmlkZUNvbG9ycykpCisgICAgLCBtX2ZvbnRQYWxldHRl
VmFsdWVzKFdURk1vdmUoYmFzZVBhbGV0dGUpLCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDEzYjM0MGUzNTg0NjkyMDNhMmFkNzkwYjQw
NTZjOGEzNWE1ODQ2YzUuLjg1MmVjY2EzZTc4M2QzYTJmMDI5MjY4ZjVkMjRjODllYWZhMWUxZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTE1OSw5ICsxNTksOSBAQCBwcml2YXRlOgogCiBj
bGFzcyBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVC
YXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVz
PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZh
bWlseSwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFs
ZXR0ZVZhbHVlczo6T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQorICAgIHN0YXRp
YyBSZWY8U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFtaWx5LCBzdGQ6Om9wdGlvbmFsPEZvbnRQ
YWxldHRlSW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3Zl
cnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMobmFtZSwgZm9udEZhbWlseSwg
YmFzZVBhbGV0dGUsIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKG5hbWUsIGZvbnRGYW1pbHks
IFdURk1vdmUoYmFzZVBhbGV0dGUpLCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkpOwogICAgIH0K
ICAgICAKICAgICB+U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoKTsKQEAgLTE4MSw3ICsxODEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlVmFsdWVzOwogICAgIH0K
IAotICAgIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlKCkgY29uc3QKKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRlSW5kZXg+JiBiYXNlUGFsZXR0ZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb250UGFsZXR0ZVZhbHVlcy5iYXNlUGFsZXR0ZSgp
OwogICAgIH0KQEAgLTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlUnVsZUZv
bnRQYWxldHRlVmFsdWVzPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVGb250UGFsZXR0ZVZhbHVlcygqdGhpcykpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVS
dWxlRm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgZm9udEZhbWlseSwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUsIFZl
Y3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3Jz
KTsKKyAgICBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiBmb250RmFtaWx5LCBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRl
SW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3ZlcnJpZGRl
bkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKTsKICAgICBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVl
cyhjb25zdCBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyYpOwogCiAgICAgQXRvbVN0cmluZyBt
X25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAppbmRl
eCBlYmY4OTJhZjIyZTE3OTJlNDg2NDBiMDA5Zjc1OWJjNGQ1YTc4N2MxLi5jOWJiODk0MDI4ZDQ3
MWExMTVkNWY4ZjBkODJlMmIzZjVmOWI0NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTY4MCwxMiArNjgwLDEwIEBAIFJlZlB0cjxTdHlsZVJ1
bGVGb250UGFsZXR0ZVZhbHVlcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFs
dWVzUnVsZShDCiAgICAgaWYgKGF1dG8gZm9udEZhbWlseVZhbHVlID0gcHJvcGVydGllcy0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKQogICAgICAgICBmb250RmFt
aWx5ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250RmFtaWx5VmFsdWUpLmZvbnRG
YW1pbHkoKS5mYW1pbHlOYW1lOwogCi0gICAgRm9udFBhbGV0dGVJbmRleCBiYXNlUGFsZXR0ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRQYWxldHRlSW5kZXg+IGJhc2VQYWxldHRlOwogICAgIGlm
IChhdXRvIGJhc2VQYWxldHRlVmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5QmFzZVBhbGV0dGUpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpiYXNlUGFsZXR0ZVZhbHVlKTsK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICBiYXNl
UGFsZXR0ZSA9IEZvbnRQYWxldHRlSW5kZXgocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7
Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgYmFzZVBhbGV0dGUgPSBG
b250UGFsZXR0ZUluZGV4KHByaW1pdGl2ZVZhbHVlLnZhbHVlPHVuc2lnbmVkPigpKTsKICAgICAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTGlnaHQpCiAg
ICAgICAgICAgICBiYXNlUGFsZXR0ZSA9IEZvbnRQYWxldHRlSW5kZXgoRm9udFBhbGV0dGVJbmRl
eDo6VHlwZTo6TGlnaHQpOwpAQCAtNjk3LDExICs2OTUsOSBAQCBSZWZQdHI8U3R5bGVSdWxlRm9u
dFBhbGV0dGVWYWx1ZXM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVGb250UGFsZXR0ZVZhbHVlc1J1
bGUoQwogICAgIGlmIChhdXRvIG92ZXJyaWRlQ29sb3JzVmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5T3ZlcnJpZGVDb2xvcnMpKSB7CiAgICAgICAgIGNv
bnN0IGF1dG8mIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpvdmVycmlkZUNvbG9yc1Zh
bHVlKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogbGlzdCkgewotICAgICAgICAg
ICAgRm9udFBhbGV0dGVWYWx1ZXM6OlBhbGV0dGVDb2xvckluZGV4IGtleShudWxsQXRvbSgpKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGtleSA9IDA7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBw
YWlyID0gZG93bmNhc3Q8Q1NTRm9udFBhbGV0dGVWYWx1ZXNPdmVycmlkZUNvbG9yc1ZhbHVlPihp
dGVtLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChwYWlyLmtleSgpLmlzU3RyaW5nKCkpCi0gICAg
ICAgICAgICAgICAga2V5ID0gcGFpci5rZXkoKS5zdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAg
ZWxzZSBpZiAocGFpci5rZXkoKS5pc051bWJlcigpKQorICAgICAgICAgICAgaWYgKHBhaXIua2V5
KCkuaXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICBrZXkgPSBwYWlyLmtleSgpLnZhbHVlPHVu
c2lnbmVkPigpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtNzEwLDcgKzcwNiw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcz4gQ1NT
UGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQYWxldHRlVmFsdWVzUnVsZShDCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICByZXR1cm4gU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OmNyZWF0ZShuYW1l
LT5zdHJpbmdWYWx1ZSgpLCBmb250RmFtaWx5LCBiYXNlUGFsZXR0ZSwgV1RGTW92ZShvdmVycmlk
ZUNvbG9ycykpOworICAgIHJldHVybiBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6Y3JlYXRl
KG5hbWUtPnN0cmluZ1ZhbHVlKCksIGZvbnRGYW1pbHksIFdURk1vdmUoYmFzZVBhbGV0dGUpLCBX
VEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSk7CiB9CiAKIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+
IENTU1BhcnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJlZml4ZWQs
IENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5k
ZXggNDRlYjgxNjJlZTUwYWZkYWZmM2M0OTQ5YmFmMTdhYTAzNmQyZGY0Zi4uMjgxOGY3ODQwN2Jk
M2M0ODM0YzkxNTliOTAxNmZmMzdmZThkZTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQ4NTAsOCArNDg1MCw2IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYXNlUGFsZXR0ZURlc2NyaXB0b3Io
Q1NTUGFyc2VyVG9rZW5SYW5nCiB7CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZUlkZW50
PENTU1ZhbHVlTGlnaHQsIENTU1ZhbHVlRGFyaz4ocmFuZ2UpKQogICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpKQotICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CiB9
CiAKQEAgLTQ4NTksMTEgKzQ4NTcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29u
c3VtZU92ZXJyaWRlQ29sb3JzRGVzY3JpcHRvcihDU1NQYXJzZXJUb2tlblJhbmdlJgogewogICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CiAgICAgZG8gewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGtl
eTsKLSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pCi0gICAg
ICAgICAgICBrZXkgPSBjb25zdW1lU3RyaW5nKHJhbmdlKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAga2V5ID0gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOworICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGtleSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKICAgICAgICAg
aWYgKCFrZXkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKaW5kZXggNWM1
NjYxYTUzZGYwODAxMjc2YWQ4ODkxYmY0ZWEyZWE4YTMxYTc3OS4uNzRmMGZhNzgxYjBlN2FkNmE2
YjM5MmFlYWFhODFhODQ3YmJjNDI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCkBAIC01MSwxNSArNTEsOSBAQCBzdHJ1
Y3QgRm9udFBhbGV0dGVJbmRleCB7CiAgICAgewogICAgIH0KIAotICAgIEZvbnRQYWxldHRlSW5k
ZXgoY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKQotICAgICAgICA6IHR5cGUoVHlwZTo6U3RyaW5n
KQotICAgICAgICAsIHN0cmluZyhzdHJpbmcpCi0gICAgewotICAgIH0KLQogICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgIT0gVHlwZTo6U3RyaW5n
IHx8ICFzdHJpbmcuaXNOdWxsKCk7CisgICAgICAgIHJldHVybiB0eXBlICE9IFR5cGU6OkludGVn
ZXIgfHwgaW50ZWdlcjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBh
bGV0dGVJbmRleCYgb3RoZXIpIGNvbnN0CkBAIC02OCw4ICs2Miw2IEBAIHN0cnVjdCBGb250UGFs
ZXR0ZUluZGV4IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHR5cGUg
PT0gVHlwZTo6SW50ZWdlcikKICAgICAgICAgICAgIHJldHVybiBpbnRlZ2VyID09IG90aGVyLmlu
dGVnZXI7Ci0gICAgICAgIGlmICh0eXBlID09IFR5cGU6OlN0cmluZykKLSAgICAgICAgICAgIHJl
dHVybiBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTgxLDEyICs3MywxMCBAQCBzdHJ1Y3QgRm9udFBhbGV0dGVJbmRleCB7CiAgICAgZW51
bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExpZ2h0LAogICAgICAgICBEYXJrLAot
ICAgICAgICBJbnRlZ2VyLAotICAgICAgICBTdHJpbmcKLSAgICB9IHR5cGUgeyBUeXBlOjpTdHJp
bmcgfTsKKyAgICAgICAgSW50ZWdlcgorICAgIH0gdHlwZSB7IFR5cGU6OkludGVnZXIgfTsKIAog
ICAgIHVuc2lnbmVkIGludGVnZXIgeyAwIH07Ci0gICAgQXRvbVN0cmluZyBzdHJpbmc7CiB9Owog
CiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgm
IHBhbGV0dGVJbmRleCkKQEAgLTk0LDI0ICs4NCwyMSBAQCBpbmxpbmUgdm9pZCBhZGQoSGFzaGVy
JiBoYXNoZXIsIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIHBhbGV0dGVJbmRleCkKICAgICBhZGQo
aGFzaGVyLCBwYWxldHRlSW5kZXgudHlwZSk7CiAgICAgaWYgKHBhbGV0dGVJbmRleC50eXBlID09
IEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkludGVnZXIpCiAgICAgICAgIGFkZChoYXNoZXIsIHBh
bGV0dGVJbmRleC5pbnRlZ2VyKTsKLSAgICBlbHNlIGlmIChwYWxldHRlSW5kZXgudHlwZSA9PSBG
b250UGFsZXR0ZUluZGV4OjpUeXBlOjpTdHJpbmcpCi0gICAgICAgIGFkZChoYXNoZXIsIHBhbGV0
dGVJbmRleC5zdHJpbmcpOwogfQogCiBjbGFzcyBGb250UGFsZXR0ZVZhbHVlcyB7CiBwdWJsaWM6
Ci0gICAgdXNpbmcgUGFsZXR0ZUNvbG9ySW5kZXggPSBWYXJpYW50PEF0b21TdHJpbmcsIHVuc2ln
bmVkPjsKLSAgICB1c2luZyBPdmVycmlkZGVuQ29sb3IgPSBzdGQ6OnBhaXI8UGFsZXR0ZUNvbG9y
SW5kZXgsIENvbG9yPjsKKyAgICB1c2luZyBPdmVycmlkZGVuQ29sb3IgPSBzdGQ6OnBhaXI8dW5z
aWduZWQsIENvbG9yPjsKIAogICAgIEZvbnRQYWxldHRlVmFsdWVzKCkgPSBkZWZhdWx0OwogCi0g
ICAgRm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUs
IFZlY3RvcjxPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCi0gICAgICAgIDogbV9i
YXNlUGFsZXR0ZShiYXNlUGFsZXR0ZSkKKyAgICBGb250UGFsZXR0ZVZhbHVlcyhzdGQ6Om9wdGlv
bmFsPEZvbnRQYWxldHRlSW5kZXg+JiYgYmFzZVBhbGV0dGUsIFZlY3RvcjxPdmVycmlkZGVuQ29s
b3I+JiYgb3ZlcnJpZGVDb2xvcnMpCisgICAgICAgIDogbV9iYXNlUGFsZXR0ZShXVEZNb3ZlKGJh
c2VQYWxldHRlKSkKICAgICAgICAgLCBtX292ZXJyaWRlQ29sb3JzKFdURk1vdmUob3ZlcnJpZGVD
b2xvcnMpKQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNl
UGFsZXR0ZSgpIGNvbnN0CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4
PiYgYmFzZVBhbGV0dGUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYmFzZVBhbGV0
dGU7CiAgICAgfQpAQCAtMTM3LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgRm9udFBhbGV0dGVJbmRleCBtX2Jhc2VQYWxldHRlOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFBhbGV0dGVJbmRleD4gbV9iYXNlUGFsZXR0ZTsKICAgICBWZWN0b3I8T3ZlcnJpZGRlbkNv
bG9yPiBtX292ZXJyaWRlQ29sb3JzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4
IDBiMDllNDQ2YzEzMGZkMWViNDYwZTVhYjlkMjRhYjYyYjE1OGRlNTkuLjVkZDU0NWU1NzE0Yjgy
ODI4MWQwMWJmNzc4YWJlOWU1YWExYjczYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAg
LTQ1NywzOSArNDU3LDMzIEBAIHN0YXRpYyB2b2lkIGFkZERhcmtQYWxldHRlKENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgYXR0cmlidXRlcykKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1
dGVzLCBrQ1RGb250UGFsZXR0ZUF0dHJpYnV0ZSwgbnVtYmVyLmdldCgpKTsKIH0KIAotc3RhdGlj
IHZvaWQgYWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyhDRk11dGFibGVEaWN0aW9u
YXJ5UmVmIGF0dHJpYnV0ZXMsIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRlLCBj
b25zdCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mIG92ZXJyaWRl
Q29sb3JzKQorc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyhD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9u
dFBhbGV0dGVJbmRleD4mIGJhc2VQYWxldHRlLCBjb25zdCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1
ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mIG92ZXJyaWRlQ29sb3JzKQogewotICAgIHN3aXRjaCAoYmFz
ZVBhbGV0dGUudHlwZSkgewotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6TGlnaHQ6
Ci0gICAgICAgIGFkZExpZ2h0UGFsZXR0ZShhdHRyaWJ1dGVzKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpEYXJrOgotICAgICAgICBhZGREYXJrUGFs
ZXR0ZShhdHRyaWJ1dGVzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUlu
ZGV4OjpUeXBlOjpJbnRlZ2VyOiB7Ci0gICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBiYXNlUGFs
ZXR0ZS5pbnRlZ2VyOyAvLyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KLSAgICAgICAg
YXV0byBudW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRk51bWJlclNJbnQ2NFR5cGUsICZyYXdJbmRleCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShhdHRyaWJ1dGVzLCBrQ1RGb250UGFsZXR0ZUF0dHJpYnV0ZSwgbnVtYmVyLmdldCgp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlw
ZTo6U3RyaW5nOgotICAgICAgICAvLyBUaGlzIGlzIHVuaW1wbGVtZW50YWJsZSBpbiBDb3JlIFRl
eHQuCi0gICAgICAgIGJyZWFrOworICAgIGlmIChiYXNlUGFsZXR0ZSkgeworICAgICAgICBzd2l0
Y2ggKGJhc2VQYWxldHRlLT50eXBlKSB7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6
VHlwZTo6TGlnaHQ6CisgICAgICAgICAgICBhZGRMaWdodFBhbGV0dGUoYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpE
YXJrOgorICAgICAgICAgICAgYWRkRGFya1BhbGV0dGUoYXR0cmlidXRlcyk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyOiB7
CisgICAgICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gYmFzZVBhbGV0dGUtPmludGVnZXI7IC8v
IFRoZXJlIGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgorICAgICAgICAgICAgYXV0byBudW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJ
bnQ2NFR5cGUsICZyYXdJbmRleCkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
YXR0cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFv
dmVycmlkZUNvbG9ycy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBvdmVycmlkZURpY3Rpb25h
cnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBvdmVycmlk
ZUNvbG9ycykgewotICAgICAgICAgICAgY29uc3QgYXV0byYgcGFsZXR0ZUNvbG9ySW5kZXggPSBw
YWlyLmZpcnN0OwogICAgICAgICAgICAgY29uc3QgYXV0byYgY29sb3IgPSBwYWlyLnNlY29uZDsK
LSAgICAgICAgICAgIFdURjo6c3dpdGNoT24ocGFsZXR0ZUNvbG9ySW5kZXgsIFtdIChjb25zdCBB
dG9tU3RyaW5nJikgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdW5pbXBsZW1lbnRhYmxl
IGluIENvcmUgVGV4dC4KLSAgICAgICAgICAgIH0sIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKLSAg
ICAgICAgICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0gaW5kZXg7IC8vIFRoZXJlIGlzIG5vIGtD
Rk51bWJlclVJbnRUeXBlLgotICAgICAgICAgICAgICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAm
cmF3SW5kZXgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbG9yT2JqZWN0ID0gY2FjaGVkQ0dD
b2xvcihjb2xvcik7Ci0gICAgICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUob3ZlcnJp
ZGVEaWN0aW9uYXJ5LmdldCgpLCBudW1iZXIuZ2V0KCksIGNvbG9yT2JqZWN0KTsKLSAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IHBhaXIuZmlyc3Q7IC8vIFRo
ZXJlIGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgorICAgICAgICAgICAgYXV0byBudW1iZXIgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2
NFR5cGUsICZyYXdJbmRleCkpOworICAgICAgICAgICAgYXV0byBjb2xvck9iamVjdCA9IGNhY2hl
ZENHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUob3ZlcnJp
ZGVEaWN0aW9uYXJ5LmdldCgpLCBudW1iZXIuZ2V0KCksIGNvbG9yT2JqZWN0KTsKICAgICAgICAg
fQogICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0Q291bnQob3ZlcnJpZGVEaWN0aW9uYXJ5Lmdl
dCgpKSkKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJpYnV0ZXMsIGtDVEZv
bnRQYWxldHRlQ29sb3JzQXR0cmlidXRlLCBvdmVycmlkZURpY3Rpb25hcnkuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMDdkZjlhYzNjMDlkNTQ2ZTAyM2NlNWE2YTcx
OGVkM2I4NTI3NGQ3Ni4uMjVjNjU0ZGNmMmFhODNjYmMwMzdiZWU1YWUwMzUwYjVhMDI4NTAzZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTAt
MDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBT
dG9wIHBhcnNpbmcgZm9udCBwYWxldHRlIHRoaW5ncyB0aGF0IHdlIGNhbid0IGltcGxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNzk5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzUzNzc3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZv
bnRzL3BhcnNpbmcvZm9udC1wYWxldHRlLXZhbHVlcy12YWxpZC5odG1sOgorCiAyMDIxLTEwLTA1
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVGVz
dCBhIGZvbnQgcGFsZXR0ZSBpZGVudGlmaWVyIG9mIGp1c3QgIi0tIgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnRzL3Bh
cnNpbmcvZm9udC1wYWxldHRlLXZhbHVlcy12YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnRzL3BhcnNpbmcvZm9udC1wYWxl
dHRlLXZhbHVlcy12YWxpZC5odG1sCmluZGV4IDllMTNlNzBjMjI0NDA4YzBkOGI4YThlZDIxMjI2
ZTg4N2Q0MDk4MmIuLjk3MmZkNDM4ODNkYjE1NDI4YWMzZWFmMWZiOWM5MDk3YjVkZmQyNjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1mb250cy9wYXJzaW5nL2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udHMv
cGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwKQEAgLTE0NCw4ICsxNDQsOCBA
QCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGFzc2VydF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNl
LXBhbGV0dGU6IFwiYmF6XCIiKSwgLTEpOwogICAgIGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5k
ZXhPZigiYmFzZS1wYWxldHRlOiAyOyIpLCAtMSk7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0Lmlu
ZGV4T2YoIm92ZXJyaWRlLWNvbG9yczogXCJhXCIiKSwgLTEpOwotICAgIGFzc2VydF9lcXVhbHMo
dGV4dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IDMiKSwgLTEpOwotICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiBcImJcIiIpLCAtMSk7CisgICAg
YXNzZXJ0X25vdF9lcXVhbHModGV4dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IDMiKSwgLTEp
OworICAgIGFzc2VydF9lcXVhbHModGV4dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IFwiYlwi
IiksIC0xKTsKIH0pOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewpAQCAtMTUzLDE0ICsxNTMsMTQgQEAg
dGVzdChmdW5jdGlvbigpIHsKICAgICBhc3NlcnRfZXF1YWxzKHJ1bGUubmFtZSwgIi0tQyIpOwog
ICAgIGFzc2VydF9lcXVhbHMocnVsZS5mb250RmFtaWx5LCAiYmFyIik7CiAgICAgYXNzZXJ0X2Vx
dWFscyhydWxlLmJhc2VQYWxldHRlLCAiMiIpOwotICAgIGFzc2VydF9lcXVhbHMocnVsZS5vdmVy
cmlkZUNvbG9ycywgIlwiYlwiIHJnYigxNywgMzQsIDUxKSIpOworICAgIGFzc2VydF9lcXVhbHMo
cnVsZS5vdmVycmlkZUNvbG9ycywgIjMgcmdiKDE3LCAzNCwgNTEpIik7CiB9KTsKIAogdGVzdChm
dW5jdGlvbigpIHsKICAgICBsZXQgdGV4dCA9IHJ1bGVzWzNdLmNzc1RleHQ7CiAgICAgYXNzZXJ0
X2VxdWFscyh0ZXh0LmluZGV4T2YoImJhc2UtcGFsZXR0ZTogXCJmb29cIjsiKSwgLTEpOwotICAg
IGFzc2VydF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6IDEiKSwgLTEpOwotICAg
IGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFzZS1wYWxldHRlOiBcImJhclwiOyIp
LCAtMSk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6
IDEiKSwgLTEpOworICAgIGFzc2VydF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6
IFwiYmFyXCI7IiksIC0xKTsKICAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJp
ZGUtY29sb3JzOiAzIiksIC0xKTsKICAgICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigib3Zl
cnJpZGUtY29sb3JzOiBcImJhelwiIiksIC0xKTsKICAgICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0
LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9yczogNCIpLCAtMSk7CkBAIC0xNzAsNyArMTcwLDcgQEAg
dGVzdChmdW5jdGlvbigpIHsKICAgICBsZXQgcnVsZSA9IHJ1bGVzWzNdOwogICAgIGFzc2VydF9l
cXVhbHMocnVsZS5uYW1lLCAiLS1EIik7CiAgICAgYXNzZXJ0X2VxdWFscyhydWxlLmZvbnRGYW1p
bHksICIiKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJ1bGUuYmFzZVBhbGV0dGUsICJiYXIiKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHJ1bGUuYmFzZVBhbGV0dGUsICIxIik7CiAgICAgYXNzZXJ0X2VxdWFs
cyhydWxlLm92ZXJyaWRlQ29sb3JzLmluZGV4T2YoIiksIiksIC0xKTsKICAgICBhc3NlcnRfZXF1
YWxzKHJ1bGUub3ZlcnJpZGVDb2xvcnMuaW5kZXhPZigiNCAiKSwgMCk7CiAgICAgYXNzZXJ0X25v
dF9lcXVhbHMocnVsZS5vdmVycmlkZUNvbG9ycy5pbmRleE9mKCJyZ2IiKSwgLTEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440471</attachid>
            <date>2021-10-06 23:24:15 -0700</date>
            <delta_ts>2021-10-07 15:06:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230799-20211006232414.patch</filename>
            <type>text/plain</type>
            <size>22712</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE1NDJlOTMyOWQxNDll
ODAyNTExNjBlOTI4MGUwOWY1NTI5NDRkMy4uYzljZTgwNGMyY2NkZGIyMDA0NWE5MjZkZTM3Yzgx
Y2RkN2ZlZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEwLTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBwYXJz
aW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc5OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuJ3QgaW1wbGVtZW50IHRoZSA8c3RyaW5nPiB2YWx1ZXMg
aW4gYmFzZS1wYWxldHRlIGFuZCBvdmVycmlkZS1jb2xvcnMuIEl0J3MgYmV0dGVyCisgICAgICAg
IG5vdCB0byBwYXJzZSB0aGVtLCBzbyB0aGlzIGJlaGF2aW9yIGNhbiBhdCBsZWFzdCBiZSBmZWF0
dXJlIGRldGVjdGVkIGJ5IEpTIHJlYWRpbmcgdGhlCisgICAgICAgIHNlcmlhbGl6ZWQgdmFsdWUg
dGhhdCB3YXMgcGFyc2VkLgorCisgICAgICAgIEknbSBpbnZlc3RpZ2F0aW5nIGNoYW5naW5nIHRo
ZSBzcGVjIHRvIGRpc2FsbG93IHRoZXNlIHVuaW1wbGVtZW50YWJsZSB0aGluZ3MgaW4KKyAgICAg
ICAgaHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzY2MjcuCisKKyAg
ICAgICAgRm9yIGJhc2UtcGFsZXR0ZSwgd2Ugd2VyZSByZXByZXNlbnRpbmcgdGhlIGFic2VuY2Ug
b2YgdGhlIGRlc2NyaXB0b3IgYnkgbWFraW5nIHRoZSBpbnRlcm5hbAorICAgICAgICByZXByZXNl
bnRhdGlvbiBob2xkIGEgbnVsbCBzdHJpbmcuIE5vdyB0aGF0IHdlJ3JlIHJlbW92aW5nIHRoZSBz
dHJpbmcgdmFsdWUgZnJvbSB0aGUgaW50ZXJuYWwKKyAgICAgICAgcmVwcmVzZW50YXRpb24sIHRo
aXMgaXMgbm93IGJlaW5nIHJlcHJlc2VudGVkIGJ5IHVzaW5nIGFuIHN0ZDo6b3B0aW9uYWwgaW5z
dGVhZC4KKworICAgICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZm9udHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFsdWVzLXZhbGlkLmh0bWwKKworICAg
ICAgICAqIGNzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6Om92ZXJyaWRlQ29sb3JzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMpOgor
ICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUZvbnRQ
YWxldHRlVmFsdWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzZVBhbGV0dGVEZXNjcmlwdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVPdmVycmlkZUNvbG9yc0Rlc2NyaXB0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGFsZXR0ZUluZGV4OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQYWxldHRlSW5kZXg6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQYWxldHRlVmFsdWVzOjpGb250
UGFsZXR0ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGFsZXR0ZVZhbHVlczo6YmFz
ZVBhbGV0dGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZEF0dHJpYnV0ZXNGb3JDdXN0
b21Gb250UGFsZXR0ZXMpOgorCiAyMDIxLTEwLTA2ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBQdXNoU3Vic2NyaXB0aW9uIHN0dWJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuY3BwCmluZGV4IGFmZmU5YzAxMzUxMDlm
NTgzNGExOGQ0ZWZhM2I4MzQxNTM3NzExMjIuLmI1MWI5ZDMzYzgyNjhiOWI2YTMwYjk5ZmRjNGRj
MTc2YzVhYTEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250UGFsZXR0
ZVZhbHVlc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250UGFsZXR0ZVZh
bHVlc1J1bGUuY3BwCkBAIC01OCwxNyArNTgsMTYgQEAgU3RyaW5nIENTU0ZvbnRQYWxldHRlVmFs
dWVzUnVsZTo6Zm9udEZhbWlseSgpIGNvbnN0CiAKIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVl
c1J1bGU6OmJhc2VQYWxldHRlKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVW
YWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnR5cGUpIHsKKyAgICBpZiAoIW1fZm9udFBhbGV0dGVW
YWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1w
dHkoKTsKKworICAgIHN3aXRjaCAobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRl
KCktPnR5cGUpIHsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0OgogICAg
ICAgICByZXR1cm4gImxpZ2h0Il9zOwogICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6
RGFyazoKICAgICAgICAgcmV0dXJuICJkYXJrIl9zOwogICAgIGNhc2UgRm9udFBhbGV0dGVJbmRl
eDo6VHlwZTo6SW50ZWdlcjoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobV9mb250UGFsZXR0
ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkuaW50ZWdlcik7Ci0gICAgY2FzZSBGb250UGFsZXR0
ZUluZGV4OjpUeXBlOjpTdHJpbmc6Ci0gICAgICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1
bGUtPmJhc2VQYWxldHRlKCkuc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG1f
Zm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLnN0cmluZzsKLSAgICAgICAgcmV0
dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZm9u
dFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT5pbnRlZ2VyKTsKICAgICB9CiB9CiAK
QEAgLTc5LDEyICs3OCw3IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6Om92ZXJy
aWRlQ29sb3JzKCkgY29uc3QKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCIsICIpOwogICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gbV9mb250UGFsZXR0ZVZhbHVl
c1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV07Ci0gICAgICAgIFdURjo6c3dpdGNoT24oaXRlbS5m
aXJzdCwgWyZdIChjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoc2VyaWFsaXplU3RyaW5nKHN0cmluZykpOwotICAgICAgICB9LCBbJl0gKGludDY0
X3QgaW5kZXgpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaW5kZXgpOwotICAgICAgICB9
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcsIHNlcmlhbGl6YXRpb25Gb3JDU1MoaXRlbS5z
ZWNvbmQpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLmZpcnN0LCAnICcsIHNlcmlhbGl6
YXRpb25Gb3JDU1MoaXRlbS5zZWNvbmQpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOwogfQpAQCAtOTYsMjAgKzkwLDE4IEBAIFN0cmluZyBDU1NGb250UGFsZXR0ZVZhbHVl
c1J1bGU6OmNzc1RleHQoKSBjb25zdAogICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUt
PmZvbnRGYW1pbHkoKS5pc051bGwoKSkKICAgICAgICAgYnVpbGRlci5hcHBlbmQoImZvbnQtZmFt
aWx5OiAiLCBtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+Zm9udEZhbWlseSgpLCAiOyAiKTsKIAot
ICAgIHN3aXRjaCAobV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkudHlwZSkg
ewotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6TGlnaHQ6Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6IGxpZ2h0OyAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpEYXJrOgotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiYmFzZS1wYWxldHRlOiBkYXJrOyAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb250
UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyOgotICAgICAgICBidWlsZGVyLmFwcGVuZCgiYmFz
ZS1wYWxldHRlOiAiLCBtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS5pbnRl
Z2VyLCAiOyAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpU
eXBlOjpTdHJpbmc6Ci0gICAgICAgIGlmICghbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQ
YWxldHRlKCkuc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoImJh
c2UtcGFsZXR0ZTogIiwgc2VyaWFsaXplU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5i
YXNlUGFsZXR0ZSgpLnN0cmluZyksICI7ICIpOwotICAgICAgICBicmVhazsKKyAgICBpZiAobV9m
b250UGFsZXR0ZVZhbHVlc1J1bGUtPmJhc2VQYWxldHRlKCkpIHsKKyAgICAgICAgc3dpdGNoICht
X2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS0+dHlwZSkgeworICAgICAgICBj
YXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0OgorICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoImJhc2UtcGFsZXR0ZTogbGlnaHQ7ICIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6RGFyazoKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6IGRhcms7ICIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6SW50ZWdlcjoKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJiYXNlLXBhbGV0dGU6ICIsIG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxl
LT5iYXNlUGFsZXR0ZSgpLT5pbnRlZ2VyLCAiOyAiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJp
ZGVDb2xvcnMoKS5pc0VtcHR5KCkpIHsKQEAgLTExNywxMyArMTA5LDcgQEAgU3RyaW5nIENTU0Zv
bnRQYWxldHRlVmFsdWVzUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKCkuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgV1RGOjpzd2l0Y2hPbihtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVDb2xvcnMo
KVtpXS5maXJzdCwgWyZdIChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSB7Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoc2VyaWFsaXplU3RyaW5nKG5hbWUuc3RyaW5nKCkpKTsKLSAgICAg
ICAgICAgIH0sIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChpbmRleCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJywgc2VyaWFsaXphdGlvbkZvckNTUyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3Zl
cnJpZGVDb2xvcnMoKVtpXS5zZWNvbmQpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
JywgbV9mb250UGFsZXR0ZVZhbHVlc1J1bGUtPm92ZXJyaWRlQ29sb3JzKClbaV0uZmlyc3QsICcg
Jywgc2VyaWFsaXphdGlvbkZvckNTUyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+b3ZlcnJpZGVD
b2xvcnMoKVtpXS5zZWNvbmQpKTsKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZCgi
OyAiKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IGI4ODljZTlkYWU5MGYw
NTZjMDA4YTk5NDRiZmQzODYwODhhMTY1NjAuLmE4NzMwMDllNDAzYzIzYTNjYjcwOWY3ZDlhNThl
YmQzNWZlN2M3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC0zMzAsMTEgKzMzMCwx
MSBAQCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBTdHlsZVJ1bGVGb250RmFjZTo6bXV0YWJsZVBy
b3BlcnRpZXMoKQogICAgIHJldHVybiBkb3duY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiht
X3Byb3BlcnRpZXMuZ2V0KCkpOwogfQogCi1TdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6U3R5
bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgZm9udEZhbWlseSwgY29uc3QgRm9udFBhbGV0dGVJbmRleCYgYmFzZVBhbGV0dGUs
IFZlY3RvcjxGb250UGFsZXR0ZVZhbHVlczo6T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29s
b3JzKQorU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM6OlN0eWxlUnVsZUZvbnRQYWxldHRlVmFs
dWVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRGYW1pbHks
IHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRleD4mJiBiYXNlUGFsZXR0ZSwgVmVjdG9yPEZv
bnRQYWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiYgb3ZlcnJpZGVDb2xvcnMpCiAgICAg
OiBTdHlsZVJ1bGVCYXNlKFN0eWxlUnVsZVR5cGU6OkZvbnRQYWxldHRlVmFsdWVzKQogICAgICwg
bV9uYW1lKG5hbWUpCiAgICAgLCBtX2ZvbnRGYW1pbHkoZm9udEZhbWlseSkKLSAgICAsIG1fZm9u
dFBhbGV0dGVWYWx1ZXMoYmFzZVBhbGV0dGUsIFdURk1vdmUob3ZlcnJpZGVDb2xvcnMpKQorICAg
ICwgbV9mb250UGFsZXR0ZVZhbHVlcyhXVEZNb3ZlKGJhc2VQYWxldHRlKSwgV1RGTW92ZShvdmVy
cmlkZUNvbG9ycykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCAxM2IzNDBlMzU4
NDY5MjAzYTJhZDc5MGI0MDU2YzhhMzVhNTg0NmM1Li44NTJlY2NhM2U3ODNkM2EyZjAyOTI2OGY1
ZDI0Yzg5ZWFmYTFlMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0xNTksOSArMTU5LDkg
QEAgcHJpdmF0ZToKIAogY2xhc3MgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMgZmluYWwgOiBw
dWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVG
b250UGFsZXR0ZVZhbHVlcz4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIGZvbnRGYW1pbHksIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQYWxldHRl
LCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNv
bG9ycykKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzPiBjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZhbWlseSwgc3Rk
OjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBh
bGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKG5h
bWUsIGZvbnRGYW1pbHksIGJhc2VQYWxldHRlLCBXVEZNb3ZlKG92ZXJyaWRlQ29sb3JzKSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcyhu
YW1lLCBmb250RmFtaWx5LCBXVEZNb3ZlKGJhc2VQYWxldHRlKSwgV1RGTW92ZShvdmVycmlkZUNv
bG9ycykpKTsKICAgICB9CiAgICAgCiAgICAgflN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKCk7
CkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9mb250UGFsZXR0
ZVZhbHVlczsKICAgICB9CiAKLSAgICBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFsZXR0
ZSgpIGNvbnN0CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4PiYgYmFz
ZVBhbGV0dGUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9udFBhbGV0dGVWYWx1
ZXMuYmFzZVBhbGV0dGUoKTsKICAgICB9CkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAg
IFJlZjxTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcz4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoKnRoaXMpKTsgfQogCiBwcml2
YXRlOgotICAgIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIGZvbnRGYW1pbHksIGNvbnN0IEZvbnRQYWxldHRlSW5kZXgm
IGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0dGVWYWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4m
JiBvdmVycmlkZUNvbG9ycyk7CisgICAgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMoY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgZm9udEZhbWlseSwgc3RkOjpvcHRp
b25hbDxGb250UGFsZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8Rm9udFBhbGV0dGVW
YWx1ZXM6Ok92ZXJyaWRkZW5Db2xvcj4mJiBvdmVycmlkZUNvbG9ycyk7CiAgICAgU3R5bGVSdWxl
Rm9udFBhbGV0dGVWYWx1ZXMoY29uc3QgU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMmKTsKIAog
ICAgIEF0b21TdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VySW1wbC5jcHAKaW5kZXggZWJmODkyYWYyMmUxNzkyZTQ4NjQwYjAwOWY3NTliYzRkNWE3ODdj
MS4uMjgzM2Y0YTZhNjRlYjQ3YTliOTM4YzY3OTFiNDhjNGNhNDg2YzFmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC02ODAsMTIgKzY4MCwxMCBA
QCBSZWZQdHI8U3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXM+IENTU1BhcnNlckltcGw6OmNvbnN1
bWVGb250UGFsZXR0ZVZhbHVlc1J1bGUoQwogICAgIGlmIChhdXRvIGZvbnRGYW1pbHlWYWx1ZSA9
IHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KSkK
ICAgICAgICAgZm9udEZhbWlseSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udEZh
bWlseVZhbHVlKS5mb250RmFtaWx5KCkuZmFtaWx5TmFtZTsKIAotICAgIEZvbnRQYWxldHRlSW5k
ZXggYmFzZVBhbGV0dGU7CisgICAgc3RkOjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4PiBiYXNl
UGFsZXR0ZTsKICAgICBpZiAoYXV0byBiYXNlUGFsZXR0ZVZhbHVlID0gcHJvcGVydGllcy0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhc2VQYWxldHRlKSkgewogICAgICAgICBjb25z
dCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqYmFz
ZVBhbGV0dGVWYWx1ZSk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmluZygpKQot
ICAgICAgICAgICAgYmFzZVBhbGV0dGUgPSBGb250UGFsZXR0ZUluZGV4KHByaW1pdGl2ZVZhbHVl
LnN0cmluZ1ZhbHVlKCkpOwotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJl
cigpKQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAg
IGJhc2VQYWxldHRlID0gRm9udFBhbGV0dGVJbmRleChwcmltaXRpdmVWYWx1ZS52YWx1ZTx1bnNp
Z25lZD4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUxpZ2h0KQogICAgICAgICAgICAgYmFzZVBhbGV0dGUgPSBGb250UGFsZXR0ZUluZGV4
KEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6OkxpZ2h0KTsKQEAgLTY5NywyMCArNjk1LDE3IEBAIFJl
ZlB0cjxTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUZv
bnRQYWxldHRlVmFsdWVzUnVsZShDCiAgICAgaWYgKGF1dG8gb3ZlcnJpZGVDb2xvcnNWYWx1ZSA9
IHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlPdmVycmlkZUNvbG9y
cykpIHsKICAgICAgICAgY29uc3QgYXV0byYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4o
Km92ZXJyaWRlQ29sb3JzVmFsdWUpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBs
aXN0KSB7Ci0gICAgICAgICAgICBGb250UGFsZXR0ZVZhbHVlczo6UGFsZXR0ZUNvbG9ySW5kZXgg
a2V5KG51bGxBdG9tKCkpOworICAgICAgICAgICAgdW5zaWduZWQga2V5ID0gMDsKICAgICAgICAg
ICAgIGNvbnN0IGF1dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJy
aWRlQ29sb3JzVmFsdWU+KGl0ZW0uZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHBhaXIua2V5KCku
aXNTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICBrZXkgPSBwYWlyLmtleSgpLnN0cmluZ1ZhbHVl
KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChwYWlyLmtleSgpLmlzTnVtYmVyKCkpCi0gICAgICAg
ICAgICAgICAga2V5ID0gcGFpci5rZXkoKS52YWx1ZTx1bnNpZ25lZD4oKTsKLSAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGlmICghcGFpci5rZXkoKS5pc051bWJlcigpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAga2V5ID0gcGFpci5rZXkoKS52YWx1ZTx1bnNp
Z25lZD4oKTsKICAgICAgICAgICAgIENvbG9yIGNvbG9yID0gcGFpci5jb2xvcigpLmlzUkdCQ29s
b3IoKSA/IHBhaXIuY29sb3IoKS5jb2xvcigpIDogU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29y
ZChwYWlyLmNvbG9yKCkudmFsdWVJRCgpLCB7IH0pOwogICAgICAgICAgICAgb3ZlcnJpZGVDb2xv
cnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGtleSwgY29sb3IpKTsKICAgICAgICAgfQogICAgIH0K
IAotICAgIHJldHVybiBTdHlsZVJ1bGVGb250UGFsZXR0ZVZhbHVlczo6Y3JlYXRlKG5hbWUtPnN0
cmluZ1ZhbHVlKCksIGZvbnRGYW1pbHksIGJhc2VQYWxldHRlLCBXVEZNb3ZlKG92ZXJyaWRlQ29s
b3JzKSk7CisgICAgcmV0dXJuIFN0eWxlUnVsZUZvbnRQYWxldHRlVmFsdWVzOjpjcmVhdGUobmFt
ZS0+c3RyaW5nVmFsdWUoKSwgZm9udEZhbWlseSwgV1RGTW92ZShiYXNlUGFsZXR0ZSksIFdURk1v
dmUob3ZlcnJpZGVDb2xvcnMpKTsKIH0KIAogUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NT
UGFyc2VySW1wbDo6Y29uc3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJraXRQcmVmaXhlZCwgQ1NT
UGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCA0
NGViODE2MmVlNTBhZmRhZmYzYzQ5NDliYWYxN2FhMDM2ZDJkZjRmLi4yODE4Zjc4NDA3YmQzYzQ4
MzRjOTE1OWI5MDE2ZmYzN2ZlOGRlN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNDg1MCw4ICs0ODUwLDYgQEAgc3RhdGljIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUJhc2VQYWxldHRlRGVzY3JpcHRvcihDU1NQ
YXJzZXJUb2tlblJhbmcKIHsKICAgICBpZiAoYXV0byByZXN1bHQgPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVMaWdodCwgQ1NTVmFsdWVEYXJrPihyYW5nZSkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZVN0cmluZyhyYW5nZSkpCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKIH0KIApA
QCAtNDg1OSwxMSArNDg1Nyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25zdW1l
T3ZlcnJpZGVDb2xvcnNEZXNjcmlwdG9yKENTU1BhcnNlclRva2VuUmFuZ2UmCiB7CiAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKICAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4ga2V5Owot
ICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBTdHJpbmdUb2tlbikKLSAgICAgICAg
ICAgIGtleSA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBrZXkgPSBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4ga2V5ID0gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOwogICAgICAgICBpZiAo
IWtleSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaAppbmRleCA1YzU2NjFh
NTNkZjA4MDEyNzZhZDg4OTFiZjRlYTJlYThhMzFhNzc5Li5lMzZlMmRiZTEzOGRmYTlkZmZkMWVk
OWEyZGVkZmJhOGM3ZjRhNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKQEAgLTUxLDE1ICs1MSw5IEBAIHN0cnVjdCBG
b250UGFsZXR0ZUluZGV4IHsKICAgICB7CiAgICAgfQogCi0gICAgRm9udFBhbGV0dGVJbmRleChj
b25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgIDogdHlwZShUeXBlOjpTdHJpbmcpCi0g
ICAgICAgICwgc3RyaW5nKHN0cmluZykKLSAgICB7Ci0gICAgfQotCiAgICAgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdHlwZSAhPSBUeXBlOjpTdHJpbmcgfHwg
IXN0cmluZy5pc051bGwoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgIT0gVHlwZTo6SW50ZWdlciB8
fCBpbnRlZ2VyOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFsZXR0
ZUluZGV4JiBvdGhlcikgY29uc3QKQEAgLTY4LDggKzYyLDYgQEAgc3RydWN0IEZvbnRQYWxldHRl
SW5kZXggewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAodHlwZSA9PSBU
eXBlOjpJbnRlZ2VyKQogICAgICAgICAgICAgcmV0dXJuIGludGVnZXIgPT0gb3RoZXIuaW50ZWdl
cjsKLSAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6U3RyaW5nKQotICAgICAgICAgICAgcmV0dXJu
IHN0cmluZyA9PSBvdGhlci5zdHJpbmc7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA
QCAtODEsMTIgKzczLDExIEBAIHN0cnVjdCBGb250UGFsZXR0ZUluZGV4IHsKICAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsKICAgICAgICAgTGlnaHQsCiAgICAgICAgIERhcmssCi0gICAg
ICAgIEludGVnZXIsCi0gICAgICAgIFN0cmluZwotICAgIH0gdHlwZSB7IFR5cGU6OlN0cmluZyB9
OworICAgICAgICBJbnRlZ2VyCisgICAgfTsKKyAgICBUeXBlIHR5cGUgeyBUeXBlOjpJbnRlZ2Vy
IH07CiAKICAgICB1bnNpZ25lZCBpbnRlZ2VyIHsgMCB9OwotICAgIEF0b21TdHJpbmcgc3RyaW5n
OwogfTsKIAogaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250UGFsZXR0
ZUluZGV4JiBwYWxldHRlSW5kZXgpCkBAIC05NCwyNCArODUsMjEgQEAgaW5saW5lIHZvaWQgYWRk
KEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBwYWxldHRlSW5kZXgpCiAg
ICAgYWRkKGhhc2hlciwgcGFsZXR0ZUluZGV4LnR5cGUpOwogICAgIGlmIChwYWxldHRlSW5kZXgu
dHlwZSA9PSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpJbnRlZ2VyKQogICAgICAgICBhZGQoaGFz
aGVyLCBwYWxldHRlSW5kZXguaW50ZWdlcik7Ci0gICAgZWxzZSBpZiAocGFsZXR0ZUluZGV4LnR5
cGUgPT0gRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6U3RyaW5nKQotICAgICAgICBhZGQoaGFzaGVy
LCBwYWxldHRlSW5kZXguc3RyaW5nKTsKIH0KIAogY2xhc3MgRm9udFBhbGV0dGVWYWx1ZXMgewog
cHVibGljOgotICAgIHVzaW5nIFBhbGV0dGVDb2xvckluZGV4ID0gVmFyaWFudDxBdG9tU3RyaW5n
LCB1bnNpZ25lZD47Ci0gICAgdXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpwYWlyPFBhbGV0
dGVDb2xvckluZGV4LCBDb2xvcj47CisgICAgdXNpbmcgT3ZlcnJpZGRlbkNvbG9yID0gc3RkOjpw
YWlyPHVuc2lnbmVkLCBDb2xvcj47CiAKICAgICBGb250UGFsZXR0ZVZhbHVlcygpID0gZGVmYXVs
dDsKIAotICAgIEZvbnRQYWxldHRlVmFsdWVzKGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIGJhc2VQ
YWxldHRlLCBWZWN0b3I8T3ZlcnJpZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQotICAgICAg
ICA6IG1fYmFzZVBhbGV0dGUoYmFzZVBhbGV0dGUpCisgICAgRm9udFBhbGV0dGVWYWx1ZXMoc3Rk
OjpvcHRpb25hbDxGb250UGFsZXR0ZUluZGV4PiYmIGJhc2VQYWxldHRlLCBWZWN0b3I8T3ZlcnJp
ZGRlbkNvbG9yPiYmIG92ZXJyaWRlQ29sb3JzKQorICAgICAgICA6IG1fYmFzZVBhbGV0dGUoV1RG
TW92ZShiYXNlUGFsZXR0ZSkpCiAgICAgICAgICwgbV9vdmVycmlkZUNvbG9ycyhXVEZNb3ZlKG92
ZXJyaWRlQ29sb3JzKSkKICAgICB7CiAgICAgfQogCi0gICAgY29uc3QgRm9udFBhbGV0dGVJbmRl
eCYgYmFzZVBhbGV0dGUoKSBjb25zdAorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0
dGVJbmRleD4mIGJhc2VQYWxldHRlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Jh
c2VQYWxldHRlOwogICAgIH0KQEAgLTEzNyw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIEZvbnRQYWxldHRlSW5kZXggbV9iYXNlUGFsZXR0ZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZvbnRQYWxldHRlSW5kZXg+IG1fYmFzZVBhbGV0dGU7CiAgICAgVmVjdG9yPE92ZXJy
aWRkZW5Db2xvcj4gbV9vdmVycmlkZUNvbG9yczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAppbmRleCAwYjA5ZTQ0NmMxMzBmZDFlYjQ2MGU1YWI5ZDI0YWI2MmIxNThkZTU5Li41ZGQ1NDVl
NTcxNGI4MjgyODFkMDFiZjc3OGFiZTllNWFhMWI3M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCkBAIC00NTcsMzkgKzQ1NywzMyBAQCBzdGF0aWMgdm9pZCBhZGREYXJrUGFsZXR0ZShDRk11
dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
YXR0cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQoKSk7CiB9CiAK
LXN0YXRpYyB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMoQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBjb25zdCBGb250UGFsZXR0ZUluZGV4JiBiYXNlUGFs
ZXR0ZSwgY29uc3QgVmVjdG9yPEZvbnRQYWxldHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiBv
dmVycmlkZUNvbG9ycykKK3N0YXRpYyB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFs
ZXR0ZXMoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEZvbnRQYWxldHRlSW5kZXg+JiBiYXNlUGFsZXR0ZSwgY29uc3QgVmVjdG9yPEZvbnRQYWxl
dHRlVmFsdWVzOjpPdmVycmlkZGVuQ29sb3I+JiBvdmVycmlkZUNvbG9ycykKIHsKLSAgICBzd2l0
Y2ggKGJhc2VQYWxldHRlLnR5cGUpIHsKLSAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6
OkxpZ2h0OgotICAgICAgICBhZGRMaWdodFBhbGV0dGUoYXR0cmlidXRlcyk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6RGFyazoKLSAgICAgICAgYWRk
RGFya1BhbGV0dGUoYXR0cmlidXRlcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udFBh
bGV0dGVJbmRleDo6VHlwZTo6SW50ZWdlcjogewotICAgICAgICBpbnQ2NF90IHJhd0luZGV4ID0g
YmFzZVBhbGV0dGUuaW50ZWdlcjsgLy8gVGhlcmUgaXMgbm8ga0NGTnVtYmVyVUludFR5cGUuCi0g
ICAgICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51bWJl
ci5nZXQoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZvbnRQYWxldHRlSW5k
ZXg6OlR5cGU6OlN0cmluZzoKLSAgICAgICAgLy8gVGhpcyBpcyB1bmltcGxlbWVudGFibGUgaW4g
Q29yZSBUZXh0LgotICAgICAgICBicmVhazsKKyAgICBpZiAoYmFzZVBhbGV0dGUpIHsKKyAgICAg
ICAgc3dpdGNoIChiYXNlUGFsZXR0ZS0+dHlwZSkgeworICAgICAgICBjYXNlIEZvbnRQYWxldHRl
SW5kZXg6OlR5cGU6OkxpZ2h0OgorICAgICAgICAgICAgYWRkTGlnaHRQYWxldHRlKGF0dHJpYnV0
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6
VHlwZTo6RGFyazoKKyAgICAgICAgICAgIGFkZERhcmtQYWxldHRlKGF0dHJpYnV0ZXMpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6SW50
ZWdlcjogeworICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IGJhc2VQYWxldHRlLT5pbnRl
Z2VyOyAvLyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KKyAgICAgICAgICAgIGF1dG8g
bnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJTSW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGF0dHJpYnV0ZXMsIGtDVEZvbnRQYWxldHRlQXR0cmlidXRlLCBudW1iZXIuZ2V0KCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICghb3ZlcnJpZGVDb2xvcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gb3ZlcnJpZGVE
aWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDog
b3ZlcnJpZGVDb2xvcnMpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHBhbGV0dGVDb2xvcklu
ZGV4ID0gcGFpci5maXJzdDsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNvbG9yID0gcGFpci5z
ZWNvbmQ7Ci0gICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHBhbGV0dGVDb2xvckluZGV4LCBbXSAo
Y29uc3QgQXRvbVN0cmluZyYpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVuaW1wbGVt
ZW50YWJsZSBpbiBDb3JlIFRleHQuCi0gICAgICAgICAgICB9LCBbJl0gKHVuc2lnbmVkIGluZGV4
KSB7Ci0gICAgICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IGluZGV4OyAvLyBUaGVyZSBp
cyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KLSAgICAgICAgICAgICAgICBhdXRvIG51bWJlciA9IGFk
b3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0
VHlwZSwgJnJhd0luZGV4KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBjb2xvck9iamVjdCA9IGNh
Y2hlZENHQ29sb3IoY29sb3IpOwotICAgICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KG92ZXJyaWRlRGljdGlvbmFyeS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdCk7Ci0g
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBwYWlyLmZpcnN0
OyAvLyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KKyAgICAgICAgICAgIGF1dG8gbnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJTSW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3Qg
PSBjYWNoZWRDR0NvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KG92ZXJyaWRlRGljdGlvbmFyeS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldENvdW50KG92ZXJyaWRlRGljdGlv
bmFyeS5nZXQoKSkpCiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVz
LCBrQ1RGb250UGFsZXR0ZUNvbG9yc0F0dHJpYnV0ZSwgb3ZlcnJpZGVEaWN0aW9uYXJ5LmdldCgp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDM4YmYzNTI0Mzg5OTIzMzAxYzFh
NDMyYWRlYzRiNDI3Y2QxMjU0YTIuLjlhY2Y4MzVhMDgyM2I2YjJjZTQ2OTJlN2YwMjdjMTlmNjEx
ZmIxOTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIxLTEwLTA2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3RvcCBwYXJzaW5nIGZvbnQgcGFsZXR0ZSB0aGluZ3MgdGhhdCB3ZSBjYW4ndCBpbXBs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDc5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM1Mzc3NzI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1mb250cy9wYXJzaW5nL2ZvbnQtcGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbDoKKwogMjAy
MS0xMC0wNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgUHVzaFN1
YnNjcmlwdGlvbiBzdHVicwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnRzL3BhcnNpbmcvZm9udC1wYWxldHRlLXZhbHVl
cy12YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWZvbnRzL3BhcnNpbmcvZm9udC1wYWxldHRlLXZhbHVlcy12YWxpZC5odG1sCmlu
ZGV4IDllMTNlNzBjMjI0NDA4YzBkOGI4YThlZDIxMjI2ZTg4N2Q0MDk4MmIuLjk3MmZkNDM4ODNk
YjE1NDI4YWMzZWFmMWZiOWM5MDk3YjVkZmQyNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mb250cy9wYXJzaW5nL2ZvbnQt
cGFsZXR0ZS12YWx1ZXMtdmFsaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udHMvcGFyc2luZy9mb250LXBhbGV0dGUtdmFs
dWVzLXZhbGlkLmh0bWwKQEAgLTE0NCw4ICsxNDQsOCBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAg
IGFzc2VydF9lcXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6IFwiYmF6XCIiKSwgLTEp
OwogICAgIGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5kZXhPZigiYmFzZS1wYWxldHRlOiAyOyIp
LCAtMSk7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9yczog
XCJhXCIiKSwgLTEpOwotICAgIGFzc2VydF9lcXVhbHModGV4dC5pbmRleE9mKCJvdmVycmlkZS1j
b2xvcnM6IDMiKSwgLTEpOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKHRleHQuaW5kZXhPZigib3Zl
cnJpZGUtY29sb3JzOiBcImJcIiIpLCAtMSk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHModGV4dC5p
bmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IDMiKSwgLTEpOworICAgIGFzc2VydF9lcXVhbHModGV4
dC5pbmRleE9mKCJvdmVycmlkZS1jb2xvcnM6IFwiYlwiIiksIC0xKTsKIH0pOwogCiB0ZXN0KGZ1
bmN0aW9uKCkgewpAQCAtMTUzLDE0ICsxNTMsMTQgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBh
c3NlcnRfZXF1YWxzKHJ1bGUubmFtZSwgIi0tQyIpOwogICAgIGFzc2VydF9lcXVhbHMocnVsZS5m
b250RmFtaWx5LCAiYmFyIik7CiAgICAgYXNzZXJ0X2VxdWFscyhydWxlLmJhc2VQYWxldHRlLCAi
MiIpOwotICAgIGFzc2VydF9lcXVhbHMocnVsZS5vdmVycmlkZUNvbG9ycywgIlwiYlwiIHJnYigx
NywgMzQsIDUxKSIpOworICAgIGFzc2VydF9lcXVhbHMocnVsZS5vdmVycmlkZUNvbG9ycywgIjMg
cmdiKDE3LCAzNCwgNTEpIik7CiB9KTsKIAogdGVzdChmdW5jdGlvbigpIHsKICAgICBsZXQgdGV4
dCA9IHJ1bGVzWzNdLmNzc1RleHQ7CiAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LmluZGV4T2YoImJh
c2UtcGFsZXR0ZTogXCJmb29cIjsiKSwgLTEpOwotICAgIGFzc2VydF9lcXVhbHModGV4dC5pbmRl
eE9mKCJiYXNlLXBhbGV0dGU6IDEiKSwgLTEpOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKHRleHQu
aW5kZXhPZigiYmFzZS1wYWxldHRlOiBcImJhclwiOyIpLCAtMSk7CisgICAgYXNzZXJ0X25vdF9l
cXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6IDEiKSwgLTEpOworICAgIGFzc2VydF9l
cXVhbHModGV4dC5pbmRleE9mKCJiYXNlLXBhbGV0dGU6IFwiYmFyXCI7IiksIC0xKTsKICAgICBh
c3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiAzIiksIC0xKTsKICAg
ICBhc3NlcnRfZXF1YWxzKHRleHQuaW5kZXhPZigib3ZlcnJpZGUtY29sb3JzOiBcImJhelwiIiks
IC0xKTsKICAgICBhc3NlcnRfbm90X2VxdWFscyh0ZXh0LmluZGV4T2YoIm92ZXJyaWRlLWNvbG9y
czogNCIpLCAtMSk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBs
ZXQgcnVsZSA9IHJ1bGVzWzNdOwogICAgIGFzc2VydF9lcXVhbHMocnVsZS5uYW1lLCAiLS1EIik7
CiAgICAgYXNzZXJ0X2VxdWFscyhydWxlLmZvbnRGYW1pbHksICIiKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHJ1bGUuYmFzZVBhbGV0dGUsICJiYXIiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJ1bGUuYmFz
ZVBhbGV0dGUsICIxIik7CiAgICAgYXNzZXJ0X2VxdWFscyhydWxlLm92ZXJyaWRlQ29sb3JzLmlu
ZGV4T2YoIiksIiksIC0xKTsKICAgICBhc3NlcnRfZXF1YWxzKHJ1bGUub3ZlcnJpZGVDb2xvcnMu
aW5kZXhPZigiNCAiKSwgMCk7CiAgICAgYXNzZXJ0X25vdF9lcXVhbHMocnVsZS5vdmVycmlkZUNv
bG9ycy5pbmRleE9mKCJyZ2IiKSwgLTEpOwo=
</data>
<flag name="review"
          id="464413"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>